教育部顧問室超大型積體電路與系統設計教育改進計劃access.ee.ntu.edu.tw/course/soc2004/version...

39
Contents 7. ASIC Logic............................7-1 7.1. 實實實實...........................................7-1 7.2. 實實實實...........................................7-1 7.2.1. Introduction.............................7-1 7.2.2. Basics and Work Flow for Prototyping with Logic Module...................................7-1 7.2.3. FPGA Tools...............................7-3 7.2.4. Basic Platforms: AHB and ASB.............7-4 7.2.5. Logic Module Registers and System Memory Map 7-6 7.2.6. Interrupt Controller.....................7-7 7.3. 實實實實...........................................7-8 7.3.1. File Descriptions: Example 0.............7-9 7.3.2. File Descriptions: Example 1.............7-9 7.3.3. File Descriptions: Example 2.............7-9 7.3.4. 實實實實....................................7-10 7.4. 實實實實..........................................7-29 7.5. 實實實實實.........................................7-30 7.6. 實實實實實實實.......................................7-30

Upload: others

Post on 27-Jan-2021

3 views

Category:

Documents


0 download

TRANSCRIPT

教育部顧問室超大型積體電路與系統設計教育改進計劃

ASIC Logic

ASIC Logic

Contents

7.ASIC Logic7-1

17.1.實驗目的7-

17.2.實驗原理7-

17.2.1.Introduction7-

17.2.2.Basics and Work Flow for Prototyping with Logic Module7-

37.2.3.FPGA Tools7-

47.2.4.Basic Platforms: AHB and ASB7-

67.2.5.Logic Module Registers and System Memory Map7-

7.2.6.Interrupt Controller7-7

7.3.引導實驗7-8

7.3.1.File Descriptions: Example 07-9

7.3.2.File Descriptions: Example 17-9

7.3.3.File Descriptions: Example 27-9

107.3.4.實驗步驟7-

7.4.實驗要求7-29

7.5.問題與討論7-30

7.6.參考文件及網頁7-30

7. ASIC Logic

7.1. 實驗目的

了解如何運用ARM Logic Module及ARM Integrator驗證自己設計的IP。

7.2. 實驗原理

7.2.1. Introduction

While designing an IP, it is important to make sure the design could work as part of the system. The simplest and the most direct way is to port our design to an FPGA and verify the results.

Note that prototyping using FPGA cannot be done before the designer starts the HDL hardware design procedure, therefore the designer can only verify the design after the design’s HDL coding has been completed. Yet using virtual prototyping, the designer would have more design space to explore. It allows the designer to know how their IP might work with the system, and know their options and limitations more before detailed architectural design, especially from the system’s point of view.

ARM Integrator’s Logic Module can work alone like most FPGA development board provided by ALTERA or XILINX. Still it can also be attached to ARM Integrator’s Application Platform and operates with Core Module together. This configuration provides a complete system which represents as a basic platform model in SOC design.

7.2.2. Basics and Work Flow for Prototyping with Logic Module

ARM Logic Module (LM) provides a platform for developing Advanced Microcontroller Bus Architecture (AMBA), Advanced High-performance Bus (AHB) and Advanced Peripheral Bus (APB), and peripherals for the use with ARM-based system.

The LM can be used as a standalone system like an FPGA test board, or used with a Core Module (CM) and an Application Platform (AP). It can also work as a CM with AP if a synthesized ARM core is programmed into the FPGA. The last option is to stack several LMs together without an AP motherboard if one of the LMs provides the system controller functions of a motherboard.

The LM contains several components as shown in Figure 1. An LM has an ALTERA or XILINX FPGA, our LM uses ALTERA FPGA. It has a configuration PLD and a flash memory for storing FPGA configurations. A 1MB ZBT SSRAM is provided for local storage. There’s a prototyping grid where the user can attach small circuits to LM. The system bus connector provides connection to AP motherboard or to other modules. The LM also incorporates with several peripherals such as LEDs, user-definable push button and switches. The layout of the LM is illustrated in Figure 2. Please refer to “Integrator/LM-XCV600E+ User Guide” “Integrator/LM-EP20K600E+ User Guide” for further architecture details.

Figure 1. The architecture of a Logic Module.

Figure 2. Logic Module’s board layout.

The LM can be linked with JTAG, Trace, or logic analyzer connectors. There is a configuration mode, which changes the JTAG signal routing and is used to download new PLD or FPGA configurations.

7.2.3. FPGA Tools

Quartus II is a GUI synthesis tool for Altera FPGA. Figure 3 illustrates the general FPGA synthesis flow. The HDL design is imported into the GUI synthesis tool, and the synthesis tool generates the FPGA binary bit data. The FPGA binary bit data is used to program the FPGA on the LM.

7.2.4. Basic Platforms: AHB and ASB

The example contains two versions of implementation which support the following two configurations:

· AHB MB and AHB peripherals

· ASB MB and AHB peripherals

Figure 4 supports the first configuration, and Figure 5 supports the second one.

Figure 4. Implementation the support AHB system.

Figure 5. Implementation that supports ASB system.

The alphanumerical LED display on the Integrator AP motherboard can show whether it is AHB or ASB. The letter shown corresponds to either of the two systems, which will be shown below:

· H: AHB

· S: ASB

In this course, our configuration is illustrated in Figure 6. The blocks inside the dashed bounding box represent the architecture to be programmed into the LM’s FPGA.

Figure 6. The AHB platform and its block diagram used in this course.

7.2.5. Logic Module Registers and System Memory Map

The memory space within a LM and its relation with Integrator’s system memory space is illustrated in Figure 7. The custom IP design should use the address space from 0xC2100000 to 0xCFFFFFFF. The description of each LM registers is described in Table 1. The offset address represents the register’s offset from the base address. The Integrator’s system memory map is shown in Figure 8.

Core Module /

Motherboard

memory

and peripherals

PCI

Core module

alias memory

Logic module 0

Logic module 1

Logic module 2

Logic module 3

LM registers

Interrupt

SSRAM

Bus Error response

test_register

0xC0000000

0xD0000000

0xE0000000

0xF0000000

0xC0000000

0xC1000000

0xC2000000

0xC2100000

0xC2100004

0xCFFFFFFF

Figure 7. Relations between LM’s memory space and the Integrator system’s memory space

Offset Address

Name

Type

Size

Function

0x0000000

LM_OSC1

R/W

19

Oscillator divisor register 1

0x0000004

LM_OSC2

R/W

19

Oscillator divisor register 2

0x0000008

LM_LOCK

R/W

17

Oscillator lock register

0x000000C

LM_LEDS

R/W

9

User LEDs control register

0x0000010

LM_INT

R/W

1

Push button interrupt reg.

0x0000014

LM_SW

R

8

Switches register

Table 1. Register map of an LM.

Bits

Name

Name

Function

0

LM_INT

Read

This bit when SET is a latched indication that the push button has been pressed.

Write

Write 0 to this register to CLEAR the latched indication.

Writing 1 to this register has same effect as pressing the puchs button

Table 2. Push button interrupt register.

Logic modules

Core module alias memory

PCI

ROM/RAM and

peripherals

Boot ROM

Flash

SSRAM

EXPM

CM regs

Sys control

Counter/Timer

Int control

RTC

UART0

UART1

Keyboard

Mouse

LED/Switch

GPIO

Spare

Reserved

EBI (External Bus

Interface)

Peripheral registers

CM 0, 1, 2, 3

256MB SDRAM

(CM 3)

256MB SDRAM

(CM 2)

256MB SDRAM

(CM 1)

256MB SDRAM

(CM 0)

0x4000_0000

0x8000_0000

0xC000_0000

LM 1

LM 0

LM 2

LM 3

0xD000_0000

0xF000_0000

0xE000_0000

0x1000_0000

0x2000_0000

0x3000_0000

0x8000_0000

0x9000_0000

0xA000_0000

0xB000_0000

0x2000_0000

0x2400_0000

0x2800_0000

0x2C00_0000

Figure 8. System memory map

7.2.6. Interrupt Controller

The interrupt controller in LM manages the IRQs from the user’s design and the peripheral devices on LM. The Integrator system treats the LM as a single slave device, therefore there’s only one IRQ signal connected from LM to the motherboard.

Figure 9 shows the basic bit-slice structure of the interrupt controller. The Set-Clear register and the “AND” gate can perform interrupt enable masking, so that only the enabled interrupt requests are allowed. The corresponding control registers for interrupt controller are listed in Table 3.

Figure 9.Bit-slice of LM’s interrupt controller’s structure.

Offset Address

Name

Type

Size

Function

0x10000000

LM_ISTAT

R

8

Interrupt status register

0x10000004

LM_IRSTAT

R

8

Interrupt raw status reg.

0x10000008

LM_IENSET

R/W

8

Interrupt enable set

0x1000000C

LM_IENCLR

R

8

Interrupt enable clear

0x10000010

LM_SOFTINT

R

4

Software interrupt register

Table 3. Interrupt controller’s registers.

7.3. 引導實驗

This lab has three examples. The example 0 demonstrates how to move data between the Core Module and the Logic Module. The example 1 demonstrates how to program the Logic Module by programming into the FPGA or into the flash. The example 2 demonstrates the basics to implement a design prototype by writing the FPGA into the flash on the Logic Module.

The features of each example are shown below:

Example 0:

· Backup the data in the CM’s SSRAM at locations 0x30000 to 0x38000 range to the LM’s ZBTRAM at locations 0xC2000000 to 0XC2008000.

· Write values to the CM’s SSRAM at locations 0x30000 to 0x38000.

· Verify the values in the CM’s SSRAM at locations 0x30000 to 0x38000.

· Restore the backup data back to their original locations.

Example 1:

· Flashes the LEDs on the Logic Module from left to right.

· The speed of flashing the LEDs from left to right can be set by changing the configuration of the 8-way switch.

· FPGA version: programs the FPGA by writing the bitstream image into the FPGA directly. The image will start running right after programming into the FPGA.

· Flash version: programs the FPGA by writing the bitstream image into the flash. The image will start after next power up of the development system.

Example 2:

· Determines the DRAM size on the Core Module and sets up the system controller.

· Checks that the Logic Module is present in the AP expansion position.

· Reports module information.

· Sets the Logic Module clock frequencies.

· Test SSRAM for word, halfword, and byte accesses.

· Flashes the LED.

· Remain in a loop that displays the 8-way switch value of the Logic Modules on its LEDs.

7.3.1. File Descriptions: Example 0

The program SSRAM.c moves data between the SSRAM of Core Module and the ZBTRAM of Logic Module.

7.3.2. File Descriptions: Example 1

There’s only one Verilog HDL file for this example, namely, example1.v. The rest are used for bitstream generation and downloading.

File

Description

Example1.v

Verilog HDL for example1.

Example1.csf

Compiler setting file. (reference Pinout.csf )

Example1.rbf

Bitstream that is used to program FPGA in flash program mode.

Example1.sof

Bitstream that is used with ByteBlasterMV Cable.

Pinout.csf

The pinout.csf for cnmplete logic moduleFPGA pin allocation is supplied on CD.This is intended as a starting point for any design , and you must reference it. You need to edit in your design(.csf).

Table 4. Files for example 1.

7.3.3. File Descriptions: Example 2

HDL Files Descriptions

Each block in the LM is described with an HDL design file. The HDL files of this example include AHBAHBTop.v, AHBDecoder.v, AHBMuxS2M.v, AHBZBTRAM.v, AHB2APB.v, AHBAPBSys.v, APBIntCon.v, and APBRegs.v. The detailed description of each HDL file can be found in Table 3 of Lab06_On_Chip_Bus.

Software File Descriptions

There are four software files in this example. The description of each software file is provided in Table 5.

File

Description

Logic.c

These files are the top-level HDL that instantiate all of the high-speed peripherals, decoder, and all necessary support and glue logic to make a working system. The files are named so that, for example, ASBAHBTop.vhd is the top level for AHB peripherals connected to an ASB system bus.

Logic.h

This is the bridge required to connect AHB peripherals to an ASB Integrator system.

Platform.h

The decoder block provides the high-speed peripherals with select lines. These are generated from the address lines and the module ID (position in stack) signals from the motherboard. The decoder blocks also contain the default slave peripheral to simplify the example structure. The Integrator family of boards uses a distributed address decoding system

Rw_support.s

This is the AHB multiplexor that connects the read data buses from all of the slaves to the AHB master(s).

Table 5. The description for each software file.

7.3.4. 實驗步驟

Example 0:

1. Start CodeWarrior IDE.

2. Select File → New to create a new project.

(1) Select ARM Executable Image under the Project tab.

(2) Type the project name, EX0 for example. You can see the result in Figure 10.

(3) Specify the project path.

Figure 10

3. Adding source files to the project.

(1) Copy file SSRAM.C to your EX0 directory.

(2) Select Project → Add Files. (Lab07_ASIC Logic\Codes\SW\example0 )

(3) Navigate to the EX1 directory and click on SSRAM.C.

(4) Click Open. Then, add all files to target (Figure 11)

Figure 11

4. Hit the Make button to compile and link the project.

(1) A compiling and linking status windows would appear to indicate making progress.

(2) After finishing compiling and linking, a result message window would appear (Figure 12). Check for errors and warnings.

Figure 12

5. Hit the Run button to run the program.

(1) The CodeWarrior IDE calls AXD debugger to load and then execute the image (Figure 13).

(2) Press key F5, AXD debugger starts memory test. It shows SSRAM test finished when AXD is done (Figure 14).

Figure 13

Figure 14

Example 1:

1. First Copy example1.csf to Quartus II 2.2 project directory.

(Lab07_ASICLogic\Codes\HW\example1\Altera\Download)

And then start the Quartus II 2.2

2. Execute File → New Project Wizard

Create a New Project

3. Set up the Project Path.

4. Open the verilog file. (Lab07_ASIC Logic\Codes\HW\example1\Verilog)

5. Set up the Project Name and the Top-Level Name.

6. Choose which Library Files to include.

7. EDA Tool Settings.

8. Choose Device.

9. Select a Target Device.

10. Display the New Project Summary

11. Compile Example1.v to generate bit file .

12. Full compilation was successful.

NOTE:

(1) To ensure that Quartus generate a file that operates correctly with logic module, you use some setting (reference “Integrator/LM-XCV600E+ User Guide” “Integrator/LM-EP20K600E+ User Guide” CHAPTER 4 Configuring Altera Logic Modules at page 4-5), and then compile your design to generate .rbf file.

(2) Be careful !! Before programming the FPGA, you must generate a *.csf file (modified from Pinout.csf which defines the pin assignment) and then compile your design. Then, Quartus will generate .rbf file.

Downloading the Binary Bitstreams:

1. Produce a .brd file for your design. This is a configuration file for progcards.exe (Figure 15).

.brd file : (Lab07_ASIC Logic\Codes\HW\example1\Altera\Configure)

Figure 15

2. Connect ARM MultiICE onto LM. (Be SURE to power down first!! …$$)

3. Set the LM in Config Mode by shorting the CFGLNK jumper on the LM board. The CFGLED on the LM is lit as an indication for configure mode. LM’s FPGA can only be detected by MultiICE Server in configure mode. Yet CM cannot be found by MultiICE Server while LM is in configure mode.

4. Auto-config again in the MultiICE Server program. Remember to auto-configure again each time the MultiICE link is modified.

5. Execute progcards.exe to download the bitstream to the FPGA. This download program only searches for the .brd files in the same directory. If only one .brd file exists, the downloading would start directly without any prompt.

Running the Downloaded Bitstream from Flash(0x00)

1. Execute progcards.exe and select EXAMPLE1 EP20K1000E->flash(addr 0x0).

2. This will take about numeral minutes. And then Remove the CONFIG link after downloading.

3. Power down the LM.

4. Select the flash image to be executed. Which flash image to be executed is selected by the position of the 4-way switch S1 on the LM. It is only active in power-up blink. Consult Table 6 and change the position of S1 while in stand-by mode. The circled positions are better than the crossed ones because of being independent of CFGSEL[1:0].

Table 6. The relation between the 4-way switch positions and the selected flash image.

5. Power the LM up again and observe the LM. You will see the LEDs on the LM flashing from left to right. The combination of the switch S2[1:0] can changed the flashing frequency.

Note (Consult Table 7):

You can download volatile FPGA images using the ALTERA ByteblasterMV cable. Select ByteblasterMV mode by setting S1[4] to OPEN and fitting the CONFIG link. (please refer to “Integrator/LM-XCV600E+ User Guide” “Integrator/LM-EP20K600E+ User Guide” CHAPTER 4 Configuring Altera Logic Modules)

A Timing Information:

We observe example1 outcome. As can be seen, Fitter occupies 82% of the Processing total time. Therefore we strongly suggest users to perform your design on a faster PC with enough memory, since it’s the most time-consuming work. (Table 8)

Table 8

Example 2: Working Hardware & Software Together

1. Program your example2 into LM just like example1.

2. Check the LM and be sure that the flash image of AHB subsystem (example2 AHB XCV2000E->flash(addr 0x0),not addr 0x200000!!)has been configured and the switch has been on the right position to select the correct flash image.

3. Connect the Multi-ICE onto CM (Be SURE under the stand-by mode!!)…$$

4. Start Multi-ICE server program and press Auto-Configure.

5. Run ADS( Execute the CodeWarrior.

6. File → Open open the sw.mcp

sw.mcp : (Lab07_ASIC Logic\Codes\SW\example2)

7. The window after open the sw.mcp file.

8. Mark the project.

9. Execute AXD

10. Press F5 to execute.

11. Program is halted at main function…

12. Remove the interrupt point

13. Go! (or press F5)

Press the Go button in the AXD window to run the image.

14. Observe the result on the Console window and AP board. If you are running using ARMulator, an error message would be shown as below.

15. So you must Choose the Options(Configure target

16.Choose the Multi-ICE and then press the run bottom

17. If the example is running correctly, the AXD Console window will show the hardware information and the LM’s SSRAM test results as shown in Figure 16. After the tests are done, the LEDs on LM would be flashed for several seconds, then the LEDs will be mapped to the 8-way switch value.

Figure 16

7.4. 實驗要求

This exercise provides a template system that carries out RGB-to-YUV conversion and then YUV-to-RGB conversion. RGB-to-YUV and YUV-to-RGB transfer equations are listed in Figure 17. The template system performs RGB-to-YUV conversion with hardware and YUV-to-RGB conversion with software. The template system includes the following files:

HDL Files Descriptions

The HDL files of this example include AHBAHBTop.v, AHBDecoder.v, AHBMuxS2M.v, AHBZBTRAM.v, AHB2APB.v, AHBAPBSys.v, APBIntCon.v, APBRegs.v, and MYIP.v. MYIP.v is an RGB-to-YUV converter, which performs RGB to YUV conversion and raises IRQ0 when 8 RGB data have been converted into 8 YUV data to inform ARM processor to read the 8 YUV data. AHBAHBTop.v has been modified to connect the interrupt signal from MYIP. AHBAHBTop.csf defines the pin assignment.

Software File Descriptions

File

Description

Input.bmp

test bitmap file

rw_support.s

assembly functions for access data in logic module

yuv2rgb.c

the main C code, perform the YUV to RGB conversion, and read 8 YUV data from and write 8 RGB data to logic module when IRQ0 raised

Based on the template system:

1. Implement the RGB-to-YUV and YUV-to-RGB conversions with pure software, compare the performance of the template system with that of pure software implementation

2. Design a system that performs RGB-to-YUV conversion with software and YUV-to-RGB conversion with hardware. The synchronization scheme used in the system is polling.

Figure 17. RGB-to-YUV and YUV-to- RGB transfer equations.

7.5. 問題與討論

1. Discuss the following items about Flash, RAM, and ROM.

(1) Speed, (2) Capacity, and (3) Internal/External

2. In example 1, explain the differences between the flash version and the FPGA one.

3. In example 2, draw the detailed interconnect.

4. Please explain the differences between polling and interrupt.

7.6. 參考文件及網頁

· http://twins.ee.nctu.edu.tw/courses/ip_core_02/index.html

· http://twins.ee.nctu.edu.tw/courses/ip_core_01/index.html

· http://www.arm.com/

· Integrator ASIC Platform [DUI_0098B_AP_UG]

· System Memory Map [DUI_0098B_AP_UG 4.1]

· Counter/Timer [DUI_0098B_AP_UG 3.7, 4.6]

· Interrupt [DUI_0098B_AP_UG 3.6, 4.8]

Push the Bottom to execute the next step.

Push the Bottom to execute the next step.

An error message is displayed because the program

is executing on ARMulator. Not a correct result!

Choose your device.

Push the Bottom to execute the next step.

Set up the Project Path.

Push the Bottom to execute the next step.

Push the Bottom to execute the next step.

Set up the Project Name.

Push the Bottom to execute the next step.

Set up the Top-Level design Name.

Push the Bottom to execute the next step.

Push the Bottom to execute the next step.

Mark these items.

Push the Bottom to execute the next step.

Push the Bottom to Compile.

Push the Bottom to execute the next step.

Push the Bottom to execute the next step.

0個Error,

1個warning.

Table 7 FPGA programming modes

Load the Image.

Figure � SEQ Figure \* ARABIC �3�. FPGA synthesis flow.

Push the Bottom to execute the next step.

8

SOC Lab Material

9

SOC Lab Material

_1104331472.vsd
_1135465210.vsd

Logic modules�

Core module alias memory�

PCI�

ROM/RAM and peripherals�

Reserved�

EBI (External Bus Interface)�

Peripheral registers�

Boot ROM�

Flash�

SSRAM�

EXPM�

CM 0, 1, 2, 3�

CM regs�

Sys control�

Counter/Timer�

Int control�

RTC�

UART0�

UART1�

Keyboard�

Mouse�

LED/Switch�

GPIO�

Spare�

256MB SDRAM(CM 3)�

256MB SDRAM(CM 2)�

256MB SDRAM(CM 1)�

256MB SDRAM(CM 0)�

0x4000_0000�

0x8000_0000�

0xC000_0000�

0x1000_0000�

LM 1�

LM 0�

LM 2�

LM 3�

0xD000_0000�

0xF000_0000�

0xE000_0000�

0x2000_0000�

0x3000_0000�

0x8000_0000�

0x9000_0000�

0x2000_0000�

0xA000_0000�

0xB000_0000�

0x2400_0000�

0x2800_0000�

0x2C00_0000�