sopc 開發 arm 與 pld 之結合運作
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 PresentationTRANSCRIPT
2004 –06-29 1
SOPC 開發ARM 與 PLD 之結合運作
2004 –06-29 2
Topics
• SOPC 開發所需要的軟硬體工具• SOPC 開發流程• 使用 QuartusⅡ 設定 EPXA1• 撰寫程式控制 H/W• 使用除錯軟體及下載• Case-study
ARM922T 透過 PLD 內的解碼電路,控制 Creator Motherboard 上的 I/O
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 及網路界面
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 檔
2004 –06-29 5
使用 QuartusⅡ設定 EPXA1
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 檔
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 )
2004 –06-29 8
使用 SOPC Builder 設定Memory-Map(1)
Step1: 我們要將 device 的 memory-map 設定在 EBI 中, QuartusⅡ 提供了精靈設定,首先啟動 Quartus ->SOPC BuilderⅡ
Step2: 選擇 Excalibur Stripe ,按下「 Add 」
2004 –06-29 9
使用 SOPC Builder 設定Memory-Map(2)
Step3: 會出現 Megawizard Plug-In Manager 對話窗,如圖,可以設定Registers 、 SRAM0 、 SRAM1 、 DPRAM0 、 EBI0 ~ EBI3 等 Peripheral 的 Memory-Map ,設定完成請按下「 Next 」
2004 –06-29 10
使用 SOPC Builder 設定Memory-Map(3)
Step4: SOPC Builder 會根據我們的設定自動產生供軟體開發、軟硬體整合所需要的檔案。
2004 –06-29 11
使用 SOPC Builder 設定Memory-Map(4)
Step5 :成功完成系統中所有 peripheral 的 memory-map 設定。
2004 –06-29 12
使用 SOPC Builder 加入自己的RTL Design(1)
Step1: 啟動 Quartus ->SOPC BuilderⅡ Step2: 選擇 Interface to User Logic ,按下「 Add 」
2004 –06-29 13
使用 SOPC Builder 加入自己的RTL Design(2)
Step3 :出現對話窗,選擇 「 Bus Interface Type 」 Step4 :將 「 Import Verilog, VHDL,… 」打勾
2004 –06-29 14
使用 SOPC Builder 加入自己的RTL Design(3)
Step5 :按下「 Add 」,將 使用者自己的 RTL Design 檔案 (*.v,*.vhd,*bdf ) 加進來
2004 –06-29 15
使用 SOPC Builder 加入自己的RTL Design(4)
Step6 :指定 Top module Step7 :按下 「 Read port-list from files 」,最上層的 I/O 腳會自動顯
示 ,將所有 Port 的 Type 都指定好,就完成了。
2004 –06-29 16
使用 SOPC Builder 加入自己的RTL Design(5)
Step8 :成功將自己的 RTL Design 加入到系統中
2004 –06-29 17
SOPC Builder 產生出來系統
VHDL
Verilog
VHDL
2004 –06-29 18
以 S/W 撰寫程式控制 H/W(Code 解說 )
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 檔
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); } }
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;
}
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 之中
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;
2004 –06-29 24
使用除錯軟體及下載
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 檔
2004 –06-29 26
使用 Domingo 將產生的 hex 檔燒錄到EXPA1 中 (1)
Step1: 將 Creator Mother 用 Carrier ICE 與除錯軟體 Domingo 連接
2004 –06-29 27
使用 Domingo 將 hex 檔燒錄到 EXPA1中 (2)
Step2: 選擇 Config->Flash Program
2004 –06-29 28
使用 Domingo 將 hex 檔燒錄到 EXPA1中 (3)
Step3: 選擇 Flash 型號並設定,開始燒錄。
2004 –06-29 29
使用 Domingo 將 hex 檔燒錄到 EXPA1中 (4)
Step4: 燒錄完成後,重新啟動 platform 電源,可以看到 EPXA1子板上有跑馬燈、母板上的 LED 亮起,七段顯示器計數, LCD 有文字選單出現。