1 / 29

SOPC 開發 ARM 與 PLD 之結合運作

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 模式下時要用

arien
Download Presentation

SOPC 開發 ARM 與 PLD 之結合運作

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


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

  2. Topics • SOPC 開發所需要的軟硬體工具 • SOPC 開發流程 • 使用QuartusⅡ設定EPXA1 • 撰寫程式控制H/W • 使用除錯軟體及下載 • Case-study ARM922T透過PLD內的解碼電路,控制Creator Motherboard上的I/O

  3. SOPC 開發所需要的軟硬體工具

  4. SOPC Design Flow • .SBI檔: • Slave Binary Image file,記錄PLD組態資料,在EXPA1 boot-from-flash 模式下時要用 • .SBD檔: • System Build Descriptor 檔,記錄MegaWizard的設定值 • .ELF檔: • 供Domingo下載除錯的檔,其實就是.axf檔

  5. 使用QuartusⅡ設定EPXA1

  6. SOPC Design Flow( H/W Design) • .SBI檔: • Slave Binary Image file,記錄PLD組態資料,在EXPA1 boot-from-flash 模式下時要用 • .SBD檔: • System Build Descriptor 檔,記錄MegaWizard的設定值 • .ELF檔: • 供Domingo下載除錯的檔,其實就是.axf檔

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

  8. 使用SOPC Builder設定Memory-Map(1) • Step1: 我們要將device的memory-map設定在EBI中,QuartusⅡ提供了精靈設定,首先啟動 QuartusⅡ->SOPC Builder • Step2: 選擇 Excalibur Stripe,按下「Add」

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

  10. 使用SOPC Builder設定Memory-Map(3) • Step4: SOPC Builder 會根據我們的設定自動產生供軟體開發、軟硬體整合所需要的檔案。

  11. 使用SOPC Builder設定Memory-Map(4) • Step5:成功完成系統中所有 peripheral 的memory-map 設定。

  12. 使用SOPC Builder加入自己的RTL Design(1) • Step1: 啟動 QuartusⅡ->SOPC Builder • Step2: 選擇 Interface to User Logic,按下「Add」

  13. 使用SOPC Builder加入自己的RTL Design(2) • Step3:出現對話窗,選擇 「Bus Interface Type」 • Step4:將 「Import Verilog, VHDL,… 」打勾

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

  15. 使用SOPC Builder加入自己的RTL Design(4) • Step6:指定 Top module • Step7:按下 「Read port-list from files」,最上層的I/O腳會自動顯示 ,將所有Port的Type都指定好,就完成了。

  16. 使用SOPC Builder加入自己的RTL Design(5) • Step8:成功將自己的 RTL Design 加入到系統中

  17. SOPC Builder產生出來系統 Verilog VHDL VHDL

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

  19. SOPC Design Flow(軟體開發) • .SBI檔: • Slave Binary Image file,記錄PLD組態資料,在EXPA1 boot-from-flash 模式下時要用 • .SBD檔: • System Build Descriptor 檔,記錄MegaWizard的設定值 • .ELF檔: • 供Domingo下載除錯的檔,其實就是.axf檔

  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); } }

  21. 範例程式---ARM9透過PLD控制Creator Mother Board週邊電路(2) UC DIPSW_get_sw(void) { return((UC)(IO_REG1)); } void HUHU_put_led(UC led) { scan_led = (UI)(led); scan_led <<= 8; } #define IO_REG1 (*(unsigned short *)(ECS0_BASE+0x0C02))

  22. 範例程式---ARM9透過PLD控制Creator Mother Board週邊電路(3) ;系統控制暫存器的位址宣告 MMAP_REGISTERS EQU 0x7FFFC080 MMAP_SRAM0 EQU 0x7FFFC090 MMAP_SRAM1 EQU 0x7FFFC094 MMAP_SDRAM0 EQU 0x7FFFC0B0 MMAP_SDRAM1 EQU 0x7FFFC0B4 MMAP_EBI0 EQU 0x7FFFC0C0 MMAP_EBI1 EQU 0x7FFFC0C4 MMAP_EBI2 EQU 0x7FFFC0C8 MMAP_EBI3 EQU 0x7FFFC0CC EBI_CR EQU 0x7FFFC380 EBI_SR EQU 0x7FFFC380 EBI_INT_ADDRSR EQU 0x7FFFC3A4 EBI_BLOCK0 EQU 0x7FFFC390 EBI_BLOCK1 EQU 0x7FFFC394 EBI_BLOCK2 EQU 0x7FFFC398 EBI_BLOCK3 EQU 0x7FFFC39C INT_MASK_SET EQU 0x7FFFCC00 INT_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之中

  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;

  24. 使用除錯軟體及下載

  25. SOPC Design Flow(載入到platform) • .SBI檔: • Slave Binary Image file,記錄PLD組態資料,在EXPA1 boot-from-flash 模式下時要用 • .SBD檔: • System Build Descriptor 檔,記錄MegaWizard的設定值 • .ELF檔: • 供Domingo下載除錯的檔,其實就是.axf檔

  26. 使用Domingo將產生的hex檔燒錄到EXPA1中(1) • Step1: 將Creator Mother用Carrier ICE與除錯軟體 Domingo連接

  27. 使用Domingo將hex檔燒錄到EXPA1中(2) • Step2: 選擇Config->Flash Program

  28. 使用Domingo將hex檔燒錄到EXPA1中(3) • Step3: 選擇Flash型號並設定,開始燒錄。

  29. 使用Domingo將hex檔燒錄到EXPA1中(4) • Step4: 燒錄完成後,重新啟動platform電源,可以看到EPXA1子板上有跑馬燈、母板上的LED亮起,七段顯示器計數,LCD有文字選單出現。

More Related