sopc 開發 arm 與 pld 之結合運作

29
2004 –06-29 1 SOPC 開開 ARM 開 PLD 開開開開開

Upload: arien

Post on 04-Feb-2016

94 views

Category:

Documents


0 download

DESCRIPTION

SOPC 開發 ARM 與 PLD 之結合運作. Topics. SOPC 開發所需要的軟硬體工具 SOPC 開發流程 使用 QuartusⅡ 設定 EPXA1 撰寫程式控制 H/W 使用除錯軟體及下載 Case-study ARM922T 透過 PLD 內的解碼電路,控制 Creator Motherboard 上的 I/O. SOPC 開發所需要的軟硬體工具. SOPC Design Flow. .SBI 檔: Slave Binary Image file ,記錄 PLD 組態資料,在 EXPA1 boot-from-flash 模式下時要用 - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: SOPC 開發 ARM 與 PLD 之結合運作

2004 –06-29 1

SOPC 開發ARM 與 PLD 之結合運作

Page 2: SOPC 開發 ARM 與 PLD 之結合運作

2004 –06-29 2

Topics

• SOPC 開發所需要的軟硬體工具• SOPC 開發流程• 使用 QuartusⅡ 設定 EPXA1• 撰寫程式控制 H/W• 使用除錯軟體及下載• Case-study

ARM922T 透過 PLD 內的解碼電路,控制 Creator Motherboard 上的 I/O

Page 3: SOPC 開發 ARM 與 PLD 之結合運作

2004 –06-29 3

SOPC 開發所需要的軟硬體工具工具性質 工具名稱 公司 功能描述H/W Design

Tool QuartusⅡ Altera提供 SOPC Builder 設定 SOPC ,及 Altera PLD 的合成、佈局等功能

S/W Design Tool

IAR EW ARM / ARM ADS / GNU C

利用 ARM Compiler 可以將應用程式原始碼編譯成機器碼,供 ARM CPU 執行之。

JTAG Debug ICE H/W Carrier ICE Microtime 利用 Domingo 除錯軟體加上 Carrier ICE

ARM ,可以對應用軟體進行高階 C 語言除錯。Debug IDE

Tool Domingo Microtime

H/W platform

Creator Mother boardCreate ARM922T-EPXA1

Microtime

包括二塊模板:-Creator Mother Board 提供豐富的人機介面-EPXA1 Daughter Board 提供 CPU 、 PLD 、 Flash 、 SDRAM 及網路界面

Page 4: SOPC 開發 ARM 與 PLD 之結合運作

2004 –06-29 4

SOPC Design Flow .SBI 檔:

• Slave Binary Image file ,記錄 PLD 組態資料,在 EXPA1 boot-from-flash 模式下時要用

.SBD 檔:• System Build Descrip

tor 檔,記錄 MegaWizard 的設定值

.ELF 檔:• 供 Domingo 下載除錯

的檔,其實就是 .axf 檔

Page 5: SOPC 開發 ARM 與 PLD 之結合運作

2004 –06-29 5

使用 QuartusⅡ設定 EPXA1

Page 6: SOPC 開發 ARM 與 PLD 之結合運作

2004 –06-29 6

SOPC Design Flow( H/W Design)

.SBI 檔:• Slave Binary Image fil

e ,記錄 PLD 組態資料,在 EXPA1 boot-from-flash 模式下時要用

.SBD 檔:• System Build Descrip

tor 檔,記錄 MegaWizard 的設定值

.ELF 檔:• 供 Domingo 下載除錯

的檔,其實就是 .axf 檔

Page 7: SOPC 開發 ARM 與 PLD 之結合運作

2004 –06-29 7

ARM922T Processor如何和 PLD 溝通

PLD

Stripe

使用者自行開發的 SIP ( 矽智產 ) Core 和外部 Flash memory ,是連在 EBI( Expansion Bus Interface) 上,以 memory-mapped 方式供 Processor 存取, EBI 共有 4 個 Block ( EBI_Block0 ~ EBI_Block3 )

Page 8: SOPC 開發 ARM 與 PLD 之結合運作

2004 –06-29 8

使用 SOPC Builder 設定Memory-Map(1)

Step1: 我們要將 device 的 memory-map 設定在 EBI 中, QuartusⅡ 提供了精靈設定,首先啟動 Quartus ->SOPC BuilderⅡ

Step2: 選擇 Excalibur Stripe ,按下「 Add 」

Page 9: SOPC 開發 ARM 與 PLD 之結合運作

2004 –06-29 9

使用 SOPC Builder 設定Memory-Map(2)

Step3: 會出現 Megawizard Plug-In Manager 對話窗,如圖,可以設定Registers 、 SRAM0 、 SRAM1 、 DPRAM0 、 EBI0 ~ EBI3 等 Peripheral 的 Memory-Map ,設定完成請按下「 Next 」

Page 10: SOPC 開發 ARM 與 PLD 之結合運作

2004 –06-29 10

使用 SOPC Builder 設定Memory-Map(3)

Step4: SOPC Builder 會根據我們的設定自動產生供軟體開發、軟硬體整合所需要的檔案。

Page 11: SOPC 開發 ARM 與 PLD 之結合運作

2004 –06-29 11

使用 SOPC Builder 設定Memory-Map(4)

Step5 :成功完成系統中所有 peripheral 的 memory-map 設定。

Page 12: SOPC 開發 ARM 與 PLD 之結合運作

2004 –06-29 12

使用 SOPC Builder 加入自己的RTL Design(1)

Step1: 啟動 Quartus ->SOPC BuilderⅡ Step2: 選擇 Interface to User Logic ,按下「 Add 」

Page 13: SOPC 開發 ARM 與 PLD 之結合運作

2004 –06-29 13

使用 SOPC Builder 加入自己的RTL Design(2)

Step3 :出現對話窗,選擇 「 Bus Interface Type 」 Step4 :將 「 Import Verilog, VHDL,… 」打勾

Page 14: SOPC 開發 ARM 與 PLD 之結合運作

2004 –06-29 14

使用 SOPC Builder 加入自己的RTL Design(3)

Step5 :按下「 Add 」,將 使用者自己的 RTL Design 檔案 (*.v,*.vhd,*bdf ) 加進來

Page 15: SOPC 開發 ARM 與 PLD 之結合運作

2004 –06-29 15

使用 SOPC Builder 加入自己的RTL Design(4)

Step6 :指定 Top module Step7 :按下 「 Read port-list from files 」,最上層的 I/O 腳會自動顯

示 ,將所有 Port 的 Type 都指定好,就完成了。

Page 16: SOPC 開發 ARM 與 PLD 之結合運作

2004 –06-29 16

使用 SOPC Builder 加入自己的RTL Design(5)

Step8 :成功將自己的 RTL Design 加入到系統中

Page 17: SOPC 開發 ARM 與 PLD 之結合運作

2004 –06-29 17

SOPC Builder 產生出來系統

VHDL

Verilog

VHDL

Page 18: SOPC 開發 ARM 與 PLD 之結合運作

2004 –06-29 18

以 S/W 撰寫程式控制 H/W(Code 解說 )

Page 19: SOPC 開發 ARM 與 PLD 之結合運作

2004 –06-29 19

SOPC Design Flow( 軟體開發 )

.SBI 檔:• Slave Binary Image fil

e ,記錄 PLD 組態資料,在 EXPA1 boot-from-flash 模式下時要用

.SBD 檔:• System Build Descrip

tor 檔,記錄 MegaWizard 的設定值

.ELF 檔:• 供 Domingo 下載除錯

的檔,其實就是 .axf 檔

Page 20: SOPC 開發 ARM 與 PLD 之結合運作

2004 –06-29 20

範例程式 ---ARM9 透過 PLD 控制Creator Mother Board 週邊電路 (1)

// 使 LED 出現跑馬效果的程式, C 程式的寫法如下:

while(KEYPAD_chk_key(&key) != OK) { mask = DIPSW_get_sw();

huhu = 1; for(i=0; i<8; i++) { HUHU_put_led( (UC)(~huhu) & mask ); huhu <<= 1; Delay(125); } }

Page 21: SOPC 開發 ARM 與 PLD 之結合運作

2004 –06-29 21

UC DIPSW_get_sw(void){

return((UC)(IO_REG1));}

範例程式 ---ARM9 透過 PLD 控制Creator Mother Board 週邊電路 (2)

#define IO_REG1 (*(unsigned short *)(ECS0_BASE+0x0C02))

void HUHU_put_led(UC led){

scan_led = (UI)(led);scan_led <<= 8;

}

Page 22: SOPC 開發 ARM 與 PLD 之結合運作

2004 –06-29 22

範例程式 ---ARM9 透過 PLD 控制Creator Mother Board 週邊電路 (3)

; 系統控制暫存器的位址宣告

MMAP_REGISTERS EQU 0x7FFFC080MMAP_SRAM0 EQU 0x7FFFC090MMAP_SRAM1 EQU 0x7FFFC094MMAP_SDRAM0 EQU 0x7FFFC0B0MMAP_SDRAM1 EQU 0x7FFFC0B4MMAP_EBI0 EQU 0x7FFFC0C0MMAP_EBI1 EQU 0x7FFFC0C4MMAP_EBI2 EQU 0x7FFFC0C8MMAP_EBI3 EQU 0x7FFFC0CC

EBI_CR EQU 0x7FFFC380EBI_SR EQU 0x7FFFC380EBI_INT_ADDRSR EQU 0x7FFFC3A4EBI_BLOCK0 EQU 0x7FFFC390EBI_BLOCK1 EQU 0x7FFFC394EBI_BLOCK2 EQU 0x7FFFC398EBI_BLOCK3 EQU 0x7FFFC39C

INT_MASK_SET EQU 0x7FFFCC00INT_MASK_CLEAR EQU 0x7FFFCC04

(1)此處控制暫存器基底位址是0x7FFFC00軟體只要以這個位址為基底,加上 offset ,就可以存取到硬體的控制暫存器,這是我們先前在 QuartusⅡ 中使用 SOPC Builder 精靈所設定的

(2)我們使用基底位址 (0x7FFFC00)加上一個 offset ,來對 Memory-Map Control Registers , EBI 控制暫存器等作設定

(3)要控制 Creator Mother Board 上的IO ,需要控制 EBI 的 Block2 ,硬

體的部份我們己經實作一個解碼電路在 PLD 之中

Page 23: SOPC 開發 ARM 與 PLD 之結合運作

2004 –06-29 23

範例程式 ---ARM9 透過 PLD 控制Creator Mother Board 週邊電路 (4)

-- ##### PLD 內的解碼電路 -- #####--

BUF_IO_RCS0 <= EBI_CS1 when(EBI_A23='0' and EBI_A24 = '0') else '1';BUF_IO_RCS3 <= EBI_CS1 when(EBI_A23='1' and EBI_A24 = '0') else '1';BUF_IO_ECS3 <= EBI_CS1 when(EBI_A23='0' and EBI_A24 = '1') else '1';

CS_GEN : process(RST_IN, EBI_CLK)begin if (RST_IN = '0') then

IO_nRCS0 <= '1'; IO_nRCS3 <= '1'; IO_nECS0 <= '1'; IO_nECS3 <= '1';

elsif (falling_edge(EBI_CLK)) then IO_nRCS0 <= BUF_IO_RCS0;

IO_nRCS3 <= BUF_IO_RCS3; IO_nECS0 <= EBI_CS2; IO_nECS3 <= BUF_IO_ECS3;

end if;

Page 24: SOPC 開發 ARM 與 PLD 之結合運作

2004 –06-29 24

使用除錯軟體及下載

Page 25: SOPC 開發 ARM 與 PLD 之結合運作

2004 –06-29 25

SOPC Design Flow( 載入到 platform)

.SBI 檔:• Slave Binary Image fil

e ,記錄 PLD 組態資料,在 EXPA1 boot-from-flash 模式下時要用

.SBD 檔:• System Build Descrip

tor 檔,記錄 MegaWizard 的設定值

.ELF 檔:• 供 Domingo 下載除錯

的檔,其實就是 .axf 檔

Page 26: SOPC 開發 ARM 與 PLD 之結合運作

2004 –06-29 26

使用 Domingo 將產生的 hex 檔燒錄到EXPA1 中 (1)

Step1: 將 Creator Mother 用 Carrier ICE 與除錯軟體 Domingo 連接

Page 27: SOPC 開發 ARM 與 PLD 之結合運作

2004 –06-29 27

使用 Domingo 將 hex 檔燒錄到 EXPA1中 (2)

Step2: 選擇 Config->Flash Program

Page 28: SOPC 開發 ARM 與 PLD 之結合運作

2004 –06-29 28

使用 Domingo 將 hex 檔燒錄到 EXPA1中 (3)

Step3: 選擇 Flash 型號並設定,開始燒錄。

Page 29: SOPC 開發 ARM 與 PLD 之結合運作

2004 –06-29 29

使用 Domingo 將 hex 檔燒錄到 EXPA1中 (4)

Step4: 燒錄完成後,重新啟動 platform 電源,可以看到 EPXA1子板上有跑馬燈、母板上的 LED 亮起,七段顯示器計數, LCD 有文字選單出現。