一種基于ARM內(nèi)核SoC的FPGA 驗(yàn)證環(huán)境設(shè)計(jì)方法
時(shí)鐘信號(hào)電路的設(shè)計(jì)時(shí)鐘電路如圖3 所示。
ARM7TDMI 核有2 個(gè)時(shí)鐘:存儲(chǔ)器時(shí)鐘MCLK 和內(nèi)部TCK產(chǎn)生的時(shí)鐘DCLK。在正常操作期間,內(nèi)核由MCLK 供給時(shí)鐘, 內(nèi)部邏輯保持DCLK 為低。當(dāng)ARM7TDMI 核處于調(diào)試狀態(tài)(nWAIT 必須為高) 時(shí),內(nèi)核在TAP 狀態(tài)機(jī)控制下由DCLK供給時(shí)鐘,且MCLK可以自由運(yùn)行。所選時(shí)鐘在信號(hào)ECLK上輸出,以便外部系統(tǒng)使用。在監(jiān)控模式下,內(nèi)核由MCLK供給時(shí)鐘,且不使用DCLK。所以,首先應(yīng)供給存儲(chǔ)器時(shí)鐘MCLK。由于該系統(tǒng)除了擁有ARM7TDMI 核外,還包括電源管理模塊、復(fù)位管理模塊、狀態(tài)和控制寄存器等,應(yīng)當(dāng)額外供給時(shí)鐘MCLK1 和MCLK2。用以驗(yàn)證可復(fù)用IP 的芯片APEX20K,也需要提供至少2 個(gè)時(shí)鐘(FP2GA2CLK1 和FPGA2CLK2);用做配置芯片的PLD 也需要提供一個(gè)時(shí)鐘(PLD2CLK) ;各個(gè)FPGA 和整個(gè)FPGA電路設(shè)計(jì)都采用全局時(shí)鐘控制方式,所有的時(shí)鐘都是由ICS525201 芯片產(chǎn)生,該芯片是一種可調(diào)時(shí)鐘芯片。
圖3 時(shí)鐘電路
時(shí)鐘頻率f CLK用下式調(diào)節(jié):
式中:f i 為輸入頻率;v 為4~511 中的自然數(shù);r 為0~127 中的自然數(shù);OD 值由S[0 ,1 ,2 ]的3 位決定,S2S1S0的組合為:000 對(duì)應(yīng)十進(jìn)制10 ,001 對(duì)應(yīng)2 ,010 對(duì)應(yīng)8 ,011 對(duì)應(yīng)4 ,100 對(duì)應(yīng)5 ,101 對(duì)應(yīng)7 ,110 對(duì)應(yīng)9 ,111 對(duì)應(yīng)6。注意:時(shí)鐘電路的頻率調(diào)節(jié)最終通過驅(qū)動(dòng)軟件進(jìn)行各個(gè)參數(shù)的配置,在FPGA 內(nèi)應(yīng)有相應(yīng)的配置寄存器,同樣,下面的復(fù)位控制模塊也應(yīng)有復(fù)位配置。
復(fù)位電路的設(shè)計(jì)
復(fù)位信號(hào)包括接口模塊中的外部硬件按鍵復(fù)位信號(hào)reset 、上電復(fù)位信號(hào)power on reset 、聯(lián)合測(cè)試訪問專家組(JTAG) 復(fù)位信號(hào)nTRST 和軟件調(diào)試復(fù)位信號(hào)nSRST。以上幾個(gè)信號(hào)都是必須的常用復(fù)位信號(hào),但ARM7TDMI 核只提供了兩個(gè)復(fù)位信號(hào)接口reset 和nTRST ,為此,以上4 個(gè)信號(hào)必須加入適當(dāng)?shù)倪壿嬰娐肥蛊渥罱K形成2 個(gè)復(fù)位信號(hào),復(fù)位信號(hào)通路必須滿足復(fù)位時(shí)序要求且與時(shí)鐘信號(hào)通路一樣越短越好。
JTAG鏈的設(shè)計(jì)
通過ARM處理器內(nèi)的JTAG測(cè)試接口,可對(duì)整個(gè)系統(tǒng)進(jìn)行探測(cè)和配置。使用Altera 公司的QUARTUSII軟件對(duì)APEX20K器件進(jìn)行配置時(shí),JTAG鏈?zhǔn)瞧渲械囊粭l重要配置通路。因此,JTAG鏈的設(shè)計(jì)十分重要,其主要設(shè)計(jì)任務(wù)是對(duì)FPGA 內(nèi)的JTAG鏈與ARM 處理器內(nèi)的JTAG測(cè)試接口進(jìn)行匹配連接,形成一個(gè)統(tǒng)一的JTAG鏈,它主要包括TCK、RTCK、TDI、TDO 、TMS 和FPGA 配置成功(DONE) ,以及調(diào)試請(qǐng)求(DBGRQ) 應(yīng)答信號(hào)(DBGACK) 、系統(tǒng)復(fù)位(SRST) 和測(cè)試復(fù)位(TRST)等信號(hào),其中時(shí)鐘信號(hào)TCK和RTCK通路應(yīng)當(dāng)設(shè)計(jì)得越短越好。至于使用JTAG模式對(duì)器件進(jìn)行編程和配置,可依據(jù)參考文獻(xiàn)[ 1 ]第5 章進(jìn)行設(shè)計(jì)。JTAG數(shù)據(jù)通路在配置和調(diào)試時(shí)各不相同,在設(shè)計(jì)時(shí)應(yīng)當(dāng)選擇幾乎無導(dǎo)通電阻的多路選擇器對(duì)該信號(hào)作出合理的分配,對(duì)FPGA 器件進(jìn)行配置和調(diào)試時(shí),JTAG數(shù)據(jù)通路分別如圖4、圖5 所示。
圖4 配置時(shí)JTAG數(shù)據(jù)通路
圖5 調(diào)試時(shí)JTAG數(shù)據(jù)通路
存儲(chǔ)器電路的設(shè)計(jì)
ARM7TDMI 核雖給出了存儲(chǔ)器接口信號(hào),但這些信號(hào)對(duì)存儲(chǔ)器的訪問是單一有限、擴(kuò)展極為不方便的,不能適應(yīng)不同用戶對(duì)多種存儲(chǔ)器系統(tǒng)( Flash、NANDFlash、SRAM 和SDRAM) 的使用需求,所以大多數(shù)SoC都在片內(nèi)集成了存儲(chǔ)器控制器(我們開發(fā)的SoC 的片外存儲(chǔ)器控制器稱為EMI) ,所以該驗(yàn)證平臺(tái)上設(shè)計(jì)了以上4 種存儲(chǔ)器, 用以驗(yàn)證該EMI IP 核。由于ARM7TDMI 核除了可以實(shí)現(xiàn)32 位訪問存儲(chǔ)器的方式外,也可以支持16 位訪存方式,所以,通過在控制線上設(shè)置軟件可配置的開關(guān)實(shí)現(xiàn)了3 種數(shù)據(jù)寬度的訪存方式,即8 位(byte) 、16 位(half word) 和32 位(word) 的訪存方式。
驗(yàn)證平臺(tái)的調(diào)試和檢驗(yàn)
當(dāng)該系統(tǒng)中的各個(gè)模塊在PCB 上調(diào)試成功后,該驗(yàn)證平臺(tái)能否很好地驗(yàn)證SoC 的IP 核的開發(fā)呢? 我們將已經(jīng)成熟的AMBA 總線IP 核的Verilog 代碼,通過Synplify 綜合,利用Altera 公司的QUARTUS Ⅱ軟件作布局布線,燒入APEX20K1500E ,再用同樣方式將新開發(fā)的EMI IP 核的Verilog 代碼燒入該FPGA(注意:在該過程中有很多綜合和布局布線技巧) ,將其中的SDRAM控制器作為驗(yàn)證示例,選取其中最簡(jiǎn)單的訪問方式,來驗(yàn)證該平臺(tái)能否使用。該驗(yàn)證平臺(tái)中使用的SDRAM型號(hào)為W981216BH26。上電后,首先要對(duì)所有內(nèi)存區(qū)(bank) 預(yù)充電,經(jīng)8 個(gè)自刷新周期后需要設(shè)置訪問模式,即編程模式寄存器。以上3 個(gè)過程要求如下:
a) 預(yù)充電命令的發(fā)出要求:在時(shí)鐘周期的上升沿處CS、RAS、WE 為低,CAS 為高。
b) 自刷新命令的發(fā)出要求:在時(shí)鐘周期的上升沿處CS、RAS、CAS 和CKE 保持低,WE 為高。
c) 模式寄存器的激活:在時(shí)鐘的上升沿處RAS、CAS、CS 和WE 為低。
剛開始時(shí),外部端口根本不能出現(xiàn)有用的波形,通過AMBA 總線的一些控制線能夠正確地引出,從而排除了該驗(yàn)證平臺(tái)原理的正確性和PCB 上的硬件可靠性的疑問,再將內(nèi)部狀態(tài)機(jī)的各個(gè)信號(hào)采出進(jìn)行分析后,發(fā)現(xiàn)狀態(tài)機(jī)設(shè)計(jì)得不能工作,經(jīng)過修改代碼后,重新采集端口信號(hào)如圖6 所示。
評(píng)論