一種基于ARM內核SoC的FPGA 驗證環境設計方法
時鐘信號電路的設計時鐘電路如圖3 所示。
ARM7TDMI 核有2 個時鐘:存儲器時鐘MCLK 和內部TCK產生的時鐘DCLK。在正常操作期間,內核由MCLK 供給時鐘, 內部邏輯保持DCLK 為低。當ARM7TDMI 核處于調試狀態(nWAIT 必須為高) 時,內核在TAP 狀態機控制下由DCLK供給時鐘,且MCLK可以自由運行。所選時鐘在信號ECLK上輸出,以便外部系統使用。在監控模式下,內核由MCLK供給時鐘,且不使用DCLK。所以,首先應供給存儲器時鐘MCLK。由于該系統除了擁有ARM7TDMI 核外,還包括電源管理模塊、復位管理模塊、狀態和控制寄存器等,應當額外供給時鐘MCLK1 和MCLK2。用以驗證可復用IP 的芯片APEX20K,也需要提供至少2 個時鐘(FP2GA2CLK1 和FPGA2CLK2);用做配置芯片的PLD 也需要提供一個時鐘(PLD2CLK) ;各個FPGA 和整個FPGA電路設計都采用全局時鐘控制方式,所有的時鐘都是由ICS525201 芯片產生,該芯片是一種可調時鐘芯片。

圖3 時鐘電路
時鐘頻率f CLK用下式調節:

式中:f i 為輸入頻率;v 為4~511 中的自然數;r 為0~127 中的自然數;OD 值由S[0 ,1 ,2 ]的3 位決定,S2S1S0的組合為:000 對應十進制10 ,001 對應2 ,010 對應8 ,011 對應4 ,100 對應5 ,101 對應7 ,110 對應9 ,111 對應6。注意:時鐘電路的頻率調節最終通過驅動軟件進行各個參數的配置,在FPGA 內應有相應的配置寄存器,同樣,下面的復位控制模塊也應有復位配置。
復位電路的設計
復位信號包括接口模塊中的外部硬件按鍵復位信號reset 、上電復位信號power on reset 、聯合測試訪問專家組(JTAG) 復位信號nTRST 和軟件調試復位信號nSRST。以上幾個信號都是必須的常用復位信號,但ARM7TDMI 核只提供了兩個復位信號接口reset 和nTRST ,為此,以上4 個信號必須加入適當的邏輯電路使其最終形成2 個復位信號,復位信號通路必須滿足復位時序要求且與時鐘信號通路一樣越短越好。
JTAG鏈的設計
通過ARM處理器內的JTAG測試接口,可對整個系統進行探測和配置。使用Altera 公司的QUARTUSII軟件對APEX20K器件進行配置時,JTAG鏈是其中的一條重要配置通路。因此,JTAG鏈的設計十分重要,其主要設計任務是對FPGA 內的JTAG鏈與ARM 處理器內的JTAG測試接口進行匹配連接,形成一個統一的JTAG鏈,它主要包括TCK、RTCK、TDI、TDO 、TMS 和FPGA 配置成功(DONE) ,以及調試請求(DBGRQ) 應答信號(DBGACK) 、系統復位(SRST) 和測試復位(TRST)等信號,其中時鐘信號TCK和RTCK通路應當設計得越短越好。至于使用JTAG模式對器件進行編程和配置,可依據參考文獻[ 1 ]第5 章進行設計。JTAG數據通路在配置和調試時各不相同,在設計時應當選擇幾乎無導通電阻的多路選擇器對該信號作出合理的分配,對FPGA 器件進行配置和調試時,JTAG數據通路分別如圖4、圖5 所示。

圖4 配置時JTAG數據通路

圖5 調試時JTAG數據通路
存儲器電路的設計
ARM7TDMI 核雖給出了存儲器接口信號,但這些信號對存儲器的訪問是單一有限、擴展極為不方便的,不能適應不同用戶對多種存儲器系統( Flash、NANDFlash、SRAM 和SDRAM) 的使用需求,所以大多數SoC都在片內集成了存儲器控制器(我們開發的SoC 的片外存儲器控制器稱為EMI) ,所以該驗證平臺上設計了以上4 種存儲器, 用以驗證該EMI IP 核。由于ARM7TDMI 核除了可以實現32 位訪問存儲器的方式外,也可以支持16 位訪存方式,所以,通過在控制線上設置軟件可配置的開關實現了3 種數據寬度的訪存方式,即8 位(byte) 、16 位(half word) 和32 位(word) 的訪存方式。
驗證平臺的調試和檢驗
當該系統中的各個模塊在PCB 上調試成功后,該驗證平臺能否很好地驗證SoC 的IP 核的開發呢? 我們將已經成熟的AMBA 總線IP 核的Verilog 代碼,通過Synplify 綜合,利用Altera 公司的QUARTUS Ⅱ軟件作布局布線,燒入APEX20K1500E ,再用同樣方式將新開發的EMI IP 核的Verilog 代碼燒入該FPGA(注意:在該過程中有很多綜合和布局布線技巧) ,將其中的SDRAM控制器作為驗證示例,選取其中最簡單的訪問方式,來驗證該平臺能否使用。該驗證平臺中使用的SDRAM型號為W981216BH26。上電后,首先要對所有內存區(bank) 預充電,經8 個自刷新周期后需要設置訪問模式,即編程模式寄存器。以上3 個過程要求如下:
a) 預充電命令的發出要求:在時鐘周期的上升沿處CS、RAS、WE 為低,CAS 為高。
b) 自刷新命令的發出要求:在時鐘周期的上升沿處CS、RAS、CAS 和CKE 保持低,WE 為高。
c) 模式寄存器的激活:在時鐘的上升沿處RAS、CAS、CS 和WE 為低。
剛開始時,外部端口根本不能出現有用的波形,通過AMBA 總線的一些控制線能夠正確地引出,從而排除了該驗證平臺原理的正確性和PCB 上的硬件可靠性的疑問,再將內部狀態機的各個信號采出進行分析后,發現狀態機設計得不能工作,經過修改代碼后,重新采集端口信號如圖6 所示。
評論