李炳乾,王勇,劉達(dá),譚小虎
(空軍工程大學(xué) 航空航天工程學(xué)院,陜西 西安 710038)
摘要:航電光纖通道接口板是實(shí)現(xiàn)航電系統(tǒng)統(tǒng)一網(wǎng)絡(luò)的基礎(chǔ),在高速傳輸過程中,光纖通道接口板需要及時(shí)對(duì)未處理的幀進(jìn)行緩存。文章基于DDR2的大容量、高速率存儲(chǔ)模塊為這一問題提出了解決方案。對(duì)DDR2的功能及結(jié)構(gòu)進(jìn)行了簡要闡述,根據(jù)輸入和輸出需求,設(shè)計(jì)實(shí)現(xiàn)了DDR2芯片組電路,采用FPGA IP核實(shí)現(xiàn)DDR2控制器,測試仿真控制器的讀寫時(shí)序。測試結(jié)果表明,所設(shè)計(jì)的DDR2控制器能夠按照規(guī)則的時(shí)序進(jìn)行操作,實(shí)現(xiàn)了高速讀寫,可以實(shí)現(xiàn)功能集成并節(jié)約成本,很好地滿足光纖通道接口板的設(shè)計(jì)需求。
關(guān)鍵詞:光纖通道;DDR2控制器;FPGA;IP核
中圖分類號(hào):TP27文獻(xiàn)標(biāo)識(shí)碼:ADOI: 10.19358/j.issn.16747720.2016.23.010
引用格式:李炳乾,王勇,劉達(dá),等. 航電FC接口板存儲(chǔ)模塊設(shè)計(jì)與硬件電路實(shí)現(xiàn)[J].微型機(jī)與應(yīng)用,2016,35(23):35-37,41.
0引言
光纖通道(Fibre Channel,FC)總線接口板是綜合模塊化航電系統(tǒng)結(jié)構(gòu)中的重要組成部分,依據(jù)航電系統(tǒng)網(wǎng)絡(luò)中心化設(shè)計(jì)要求,光纖通道總線接口板要實(shí)現(xiàn)數(shù)據(jù)的接收與發(fā)送[1]。由于數(shù)據(jù)傳輸量巨大,為減輕主機(jī)CPU收發(fā)處理負(fù)擔(dān),還要具備包括數(shù)據(jù)緩存在內(nèi)的多種功能。數(shù)據(jù)緩存功能就是要構(gòu)建光纖通道接口板數(shù)據(jù)的接收和發(fā)送隊(duì)列,緩存未及時(shí)處理的數(shù)據(jù)和接口板狀態(tài)信息。
DDR2作為當(dāng)前主流的內(nèi)存芯片,具有存取速度快、儲(chǔ)量大、成本較低等特點(diǎn)[2-3],被廣泛地運(yùn)用到通用計(jì)算機(jī)系統(tǒng)、嵌入式系統(tǒng)等電子行業(yè)的各大領(lǐng)域當(dāng)中。根據(jù)課題要求,采用DDR2可以滿足需求,因此,充分利用板上已有硬件資源,包括FPGA、DDR2芯片等,在FPGA中進(jìn)行DDR2控制器設(shè)計(jì),實(shí)現(xiàn)航電光纖通道接口卡上的存儲(chǔ)模塊設(shè)計(jì)。
光纖通道接口板的整體功能模塊設(shè)計(jì)如圖1所示。
光纖通道接口板傳輸速率為1~2 Gb/s,緩存數(shù)據(jù)讀寫量大,必須采用高速電路設(shè)計(jì),因此時(shí)序的嚴(yán)格約束十分必要,存儲(chǔ)模塊的合理設(shè)計(jì)占據(jù)光纖通道板卡設(shè)計(jì)十分關(guān)鍵的地位。
1DDR2性能與結(jié)構(gòu)特點(diǎn)
1.1DDR2性能特點(diǎn)
DDR2(全稱為Double Data Rate 2) 是一種可以在時(shí)鐘上升沿和下降沿進(jìn)行數(shù)據(jù)傳輸?shù)膬?nèi)存技術(shù)標(biāo)準(zhǔn),由電子設(shè)備工程聯(lián)合委員會(huì)(JEDEC)負(fù)責(zé)標(biāo)準(zhǔn)的開發(fā)和制定[1]。由于DDR2芯片采用4n-bit 預(yù)抽取架構(gòu)以實(shí)現(xiàn)高速操作[4],每個(gè)IO引腳被設(shè)計(jì)為每個(gè)時(shí)鐘周期可傳輸2個(gè)數(shù)據(jù)字,在不改變內(nèi)核時(shí)鐘頻率的情況下實(shí)現(xiàn)了數(shù)據(jù)傳輸速率的加倍增長。
1.2DDR2結(jié)構(gòu)特點(diǎn)
光纖通道接口板設(shè)計(jì)選用的是2G容量的DDR2芯片MT47H128M16RT[4],其芯片內(nèi)部包括控制邏輯、地址注冊(cè)、BANK控制邏輯、存儲(chǔ)陣列、IO接口和時(shí)鐘等,存儲(chǔ)陣列設(shè)有8個(gè)內(nèi)部Bank,每個(gè)Bank大小為16 384×256×64=256 MB,以實(shí)現(xiàn)并行讀寫操作。
在芯片外部,雙向數(shù)據(jù)選通引腳DQS和DQS#用于接收端及時(shí)獲取數(shù)據(jù),當(dāng)處于READ工作狀態(tài)時(shí)信號(hào)由DDR2發(fā)送出去,反之由存儲(chǔ)器控制器發(fā)送,本設(shè)計(jì)選取的芯片數(shù)據(jù)寬度為16 bit,分為高8位和低8位。此雙向數(shù)據(jù)選通分別由LDQS、LDQS#和UDQS、UDQS#信號(hào)進(jìn)行控制。與此同時(shí),DDR2 SDRAM工作于差分時(shí)鐘下,當(dāng)CK上升、CK#下降時(shí),表示時(shí)鐘的正邊沿。控制命令(地址A[13:0]/BA[2:0]和控制信號(hào)CS#等)在時(shí)鐘的正邊沿觸發(fā),數(shù)據(jù)在DQS(同時(shí)也是時(shí)鐘CK)的雙邊沿觸發(fā)。
2光纖通道接口板存儲(chǔ)模塊硬件設(shè)計(jì)
2.1存儲(chǔ)模塊供電設(shè)計(jì)
光纖通道接口板采用美光(Micro)公司生產(chǎn)的MT47H128M16RT-25E:C型號(hào)84腳FBGA封裝DDR2 SDRAM芯片。DDR2工作電壓采用的SSTL_1.8標(biāo)準(zhǔn)較DDR的SSTL_2.5有較大的優(yōu)勢,能夠很好地減小板上功率消耗和熱量生成。設(shè)計(jì)中,將FPGA生成的1.8 V電源引腳接入DDR2電源引腳VDD、VDDQ、VDDL等,為DDR2芯片供電。
與此同時(shí),DDR2芯片還需要直流0.9 V的參考電壓VREF輸入,參考了Xilinx公司ML555 developing kit中的電源電路設(shè)計(jì),利用PTH05050Y芯片對(duì)DDR2的0.9 V供電電源進(jìn)行穩(wěn)壓。由于DDR電路VREF消耗電流很小,因此將1.8 V直流電源電壓經(jīng)串聯(lián)電阻分壓處理,得到0.9 V作為芯片輸入?yún)⒖茧妷篤REF,PTH05050Y輸出電壓為0.9 V經(jīng)過穩(wěn)壓的DDR2參考電壓。
2.2接收/發(fā)送緩存芯片組設(shè)計(jì)
DDR2 SDRAM負(fù)責(zé)存儲(chǔ)從FC-1層發(fā)往FC-0層的待發(fā)送幀和從FC-0層發(fā)往協(xié)議層的接收幀,由于光纖傳輸速率快,需要大容量的緩存單元,同時(shí),接收與發(fā)送端口同時(shí)對(duì)存儲(chǔ)器中某一地址進(jìn)行操作可能引起未知錯(cuò)誤,產(chǎn)生不可預(yù)測的后果。因此,利用4片MT47H128M16RT DDR2芯片兩兩組合分別設(shè)置為發(fā)送緩存和接收緩存,如圖2所示為兩片DDR2芯片組成的接收/發(fā)送數(shù)據(jù)緩存模塊。
兩片DDR2構(gòu)成的數(shù)據(jù)緩存需要32條數(shù)據(jù)線,而選用的MT47H128M16RT芯片只有16條數(shù)據(jù)引腳,因此將32位數(shù)據(jù)線分為高位和低位,分別接入兩片DDR2存儲(chǔ)芯片,存儲(chǔ)器控制器通過控制片選CS#、命令輸入RAS#、CAS#和WE#等引腳,實(shí)現(xiàn)數(shù)據(jù)的讀寫操作。
利用DDR2所具有的OCD、ODT和POST CAS功能可以很好地對(duì)輸出信號(hào)品質(zhì)進(jìn)行控制和調(diào)整,使內(nèi)存單元模塊的設(shè)計(jì)更為簡化和精確。通過離線驅(qū)動(dòng)調(diào)整(OCD)功能設(shè)置上拉/下拉電阻,實(shí)現(xiàn)對(duì)DQS和DQS#、DQ和DQ#的電壓調(diào)整,使DQ與DQS的電壓相同,減小DQ-DQS傾斜,提高信號(hào)完整性和信號(hào)品質(zhì)。參考上一節(jié)DDR2芯片內(nèi)部結(jié)構(gòu),DDR2芯片數(shù)據(jù)DQ、數(shù)據(jù)選擇DQS端引腳設(shè)有內(nèi)建核心終結(jié)電阻(ODT),因此在設(shè)計(jì)中,將ODT引腳經(jīng)下拉電阻接地,芯片初始化時(shí)接低電平,在讀寫數(shù)據(jù)時(shí)置高啟動(dòng)ODT功能,減少主板上電阻的設(shè)置數(shù)量,同時(shí)也提高了信號(hào)質(zhì)量。
3DDR2控制器設(shè)計(jì)
3.1DDR2控制器功能
DDR2 SDRAM是光纖通道接口板的核心組件,硬件的搭建基于DDR2的接口板,更重要的是通過嚴(yán)整的時(shí)序和規(guī)范的操作控制對(duì)DDR2進(jìn)行初始化、數(shù)據(jù)讀寫等,DDR2控制器就是完成這樣工作的部件[5]。根據(jù)實(shí)際使用需要,本文設(shè)計(jì)的DDR2控制器主要實(shí)現(xiàn)的功能如下:
?。?)完成DDR2的初始化操作;
?。?)可對(duì)DDR2參數(shù)進(jìn)行配置;
(3)完成突發(fā)長度為4的讀寫操作;
?。?)自動(dòng)發(fā)送激活和預(yù)充電控制命令,減少用戶對(duì)底層控制時(shí)序的復(fù)雜定義;
?。?)自動(dòng)刷新操作。
3.2基于FPGA的DDR2控制器設(shè)計(jì)
DDR2控制器設(shè)計(jì)包含4個(gè)主要模塊:時(shí)鐘生成模塊、存儲(chǔ)控制模塊、數(shù)據(jù)鏈路模塊和用戶接口模塊,如圖3所示。
時(shí)鐘生成模塊為控制器提供時(shí)鐘信號(hào),輸出多相位時(shí)鐘,同時(shí)對(duì)DQ與DQS間的時(shí)延進(jìn)行校準(zhǔn),使DQS邊沿準(zhǔn)確對(duì)齊DQ有效窗口的中心位置。
讀寫接口模塊負(fù)責(zé)將用戶數(shù)據(jù)DQ和數(shù)據(jù)選擇DQS信號(hào)按照規(guī)定時(shí)序?qū)懭隓DR2;從DDR2讀取數(shù)據(jù)時(shí),DDR2發(fā)送DQ和DQS信號(hào),F(xiàn)PGA將DQS信號(hào)經(jīng)延時(shí)校準(zhǔn)后作為其寫時(shí)鐘,讀取DDR2數(shù)據(jù)。
存儲(chǔ)控制模塊為數(shù)據(jù)讀寫提供地址和命令信號(hào)。組成在DDR2上電復(fù)位后進(jìn)入初始化進(jìn)程。DDR2經(jīng)過20 μs的穩(wěn)定期,CKE時(shí)鐘使能信號(hào)置高,400 ns后開始預(yù)充電操作,配置寄存器后再次預(yù)充電和刷新,判斷時(shí)鐘是否鎖定后配置離線驅(qū)動(dòng)電壓,完成初始化。在初始化完成后,可進(jìn)行數(shù)據(jù)讀寫。刷新操作優(yōu)先級(jí)高于讀寫操作,因此兩者沖突時(shí)控制器將通知用戶停止發(fā)送讀寫命令,待刷新操作完成后進(jìn)行讀寫操作。
DDR2讀寫操作采用的是突發(fā)(burst)模式,需要讀寫命令、讀寫數(shù)據(jù)和讀寫地址,在讀寫突發(fā)操作完成時(shí)發(fā)送突發(fā)信號(hào)完成(burst_done),保持兩個(gè)時(shí)鐘周期有效后終止讀寫操作。
光纖通道板卡采用Xilinx公司生產(chǎn)的Virtex-5系列XC5VLX85T進(jìn)行邏輯設(shè)計(jì),在設(shè)計(jì)光纖通道協(xié)議邏輯后,F(xiàn)PGA的空置邏輯可以進(jìn)行DDR2控制器的邏輯設(shè)計(jì),在充分利用FPGA上資源的同時(shí)節(jié)約了板上另外焊接專用DDR2控制器芯片的成本和空間。
在Xilinx ISE開發(fā)套件中提供有存儲(chǔ)器接口生成器(Memory Interface Generator,MIG)IP核開發(fā)工具,可以直接根據(jù)用戶需求例化與硬件設(shè)備相適應(yīng)的DDR2存儲(chǔ)控制器設(shè)計(jì)模塊[6]。MIG具有GUI界面,根據(jù)需要可以對(duì)存儲(chǔ)器件的類型、位寬、速度級(jí)別、控制參數(shù)和引腳分配進(jìn)行準(zhǔn)確配置,大大縮短設(shè)計(jì)DDR2控制器的時(shí)間周期,尤其對(duì)系統(tǒng)設(shè)計(jì)很有幫助。
在設(shè)計(jì)過程中無需再了解DDR2嚴(yán)格的物理層時(shí)序及工作特性就可以設(shè)計(jì)實(shí)現(xiàn)DDR2的讀寫功能,用戶操作流程如圖4所示,滿足設(shè)計(jì)需求。
上電后,通過初始化配置,得到置高的init_over信號(hào),說明初始化成功;將標(biāo)識(shí)START信號(hào)置1,并通過WRITE_BUSY[1]和READ_BUSY[1]信號(hào)判斷是否滿足命令發(fā)送條件,當(dāng)兩位均為1時(shí)允許命令發(fā)送。若發(fā)送命令條件滿足,則通過用戶接口發(fā)送CMD、操作首地址CMD_ADDR和數(shù)據(jù)操作計(jì)數(shù)CMD_CNT,若WRITE_BUSY[0]和READ_BUSY[0]互斥取0值時(shí),用戶接口完成響應(yīng)的寫入或讀取數(shù)據(jù)的操作。
4調(diào)試過程與結(jié)果分析
4.1測試過程
設(shè)計(jì)采用內(nèi)部狀態(tài)機(jī)實(shí)現(xiàn)對(duì)FPGA DDR2 IP核控制信號(hào)、讀寫數(shù)據(jù)信號(hào)、地址信號(hào)輸出和輸入的數(shù)據(jù)采集。測試機(jī)理為:利用FPGA上DDR2控制器對(duì)外部硬件DDR2執(zhí)行一個(gè)burst寫操作,然后在同一地址執(zhí)行相同burst的讀操作,讀取剛寫入的數(shù)據(jù),對(duì)比寫入數(shù)據(jù)與讀出數(shù)據(jù)是否一致。
DDR2硬件驗(yàn)證測試流程如下:
?。?)系統(tǒng)復(fù)位;
(2)等待用戶接口信號(hào)“init_over”為高;
?。?)對(duì)DDR2進(jìn)行寫操作;
(4)對(duì)DDR2進(jìn)行讀操作;
?。?)對(duì)比讀出數(shù)據(jù)與寫入數(shù)據(jù)是否相同,若相同ERROR置0,反之置1。
4.2調(diào)試結(jié)果
測試程序向DDR2中發(fā)送一個(gè)Burst=4的數(shù)據(jù),寫入數(shù)據(jù)的時(shí)序如圖5所示。
然后對(duì)數(shù)據(jù)進(jìn)行讀取,讀取數(shù)據(jù)的時(shí)序如圖6所示。
在init_over得到高電平后,初始化完成,在相同地址進(jìn)行數(shù)據(jù)的寫入和讀取,從中可以看到寫入DDR2和讀取到FPGA中的數(shù)據(jù)一致,說明數(shù)據(jù)操作正確。
5結(jié)束語
基于FPGA設(shè)計(jì)的DDR2控制器可以很好地滿足時(shí)序關(guān)系,經(jīng)過對(duì)輸入輸出數(shù)據(jù)的比較表明,數(shù)據(jù)一致,讀寫速度達(dá)到了光纖通道接口板的設(shè)計(jì)需求。
參考文獻(xiàn)
?。?] 支超有,唐長紅.機(jī)載數(shù)據(jù)總線技術(shù)及其應(yīng)用[M].北京:國防工業(yè)出版社,2009.
[2] 陳平,張春,張一山,等.DDR2 SDRAM 控制器IP功能測試與FPGA驗(yàn)證[J].微電子學(xué),2016,46(2):251-254.
?。?] JEDEC solid state technology association. JEDEC Standard: DDR2 SDRAM Specification[EB/OL].(2006-07-01)[2016-07-10], http://www.jedec.org/download/search/JESD792C .pdf.
?。?] Micron. DDR2 SDRAM MT47H128M16XX Datasheet,2010[EB/OL].[2016-07-01].http://download.micron.com/pdf/datasheet/dram/2g_ddr2.pdf.
?。?] Xilinx Inc. Ug086.pdf. 2011[EB/OL].(2006-07-01)[2016-07-10].http://www.xilinx.com/support/documentation/ip_documentation.
[6] 范澤明.DDR2 SDRAM 控制器設(shè)計(jì)與驗(yàn)證[D].西安:西安電子科技大學(xué),2009.