李炳乾,王勇,劉達(dá),譚小虎
(空軍工程大學(xué) 航空航天工程學(xué)院,,陜西 西安 710038)
摘要:航電光纖通道接口板是實(shí)現(xiàn)航電系統(tǒng)統(tǒng)一網(wǎng)絡(luò)的基礎(chǔ),,在高速傳輸過(guò)程中,光纖通道接口板需要及時(shí)對(duì)未處理的幀進(jìn)行緩存,。文章基于DDR2的大容量,、高速率存儲(chǔ)模塊為這一問(wèn)題提出了解決方案。對(duì)DDR2的功能及結(jié)構(gòu)進(jìn)行了簡(jiǎn)要闡述,,根據(jù)輸入和輸出需求,,設(shè)計(jì)實(shí)現(xiàn)了DDR2芯片組電路,,采用FPGA IP核實(shí)現(xiàn)DDR2控制器,,測(cè)試仿真控制器的讀寫時(shí)序。測(cè)試結(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)的開(kāi)發(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ù)傳輸速率的加倍增長(zhǎng)。
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ì),能夠很好地減小板上功率消耗和熱量生成,。設(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)過(guò)穩(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ù)測(cè)的后果。因此,,利用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ǔ)器控制器通過(guò)控制片選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ì)更為簡(jiǎn)化和精確,。通過(guò)離線驅(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的接口板,更重要的是通過(guò)嚴(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ā)長(zhǎng)度為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)過(guò)20 μs的穩(wěn)定期,CKE時(shí)鐘使能信號(hào)置高,,400 ns后開(kāi)始預(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開(kāi)發(fā)套件中提供有存儲(chǔ)器接口生成器(Memory Interface Generator,MIG)IP核開(kāi)發(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ì)過(guò)程中無(wú)需再了解DDR2嚴(yán)格的物理層時(shí)序及工作特性就可以設(shè)計(jì)實(shí)現(xiàn)DDR2的讀寫功能,,用戶操作流程如圖4所示,,滿足設(shè)計(jì)需求。
上電后,,通過(guò)初始化配置,,得到置高的init_over信號(hào),,說(shuō)明初始化成功;將標(biāo)識(shí)START信號(hào)置1,,并通過(guò)WRITE_BUSY[1]和READ_BUSY[1]信號(hào)判斷是否滿足命令發(fā)送條件,當(dāng)兩位均為1時(shí)允許命令發(fā)送,。若發(fā)送命令條件滿足,則通過(guò)用戶接口發(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)試過(guò)程與結(jié)果分析
4.1測(cè)試過(guò)程
設(shè)計(jì)采用內(nèi)部狀態(tài)機(jī)實(shí)現(xiàn)對(duì)FPGA DDR2 IP核控制信號(hào),、讀寫數(shù)據(jù)信號(hào)、地址信號(hào)輸出和輸入的數(shù)據(jù)采集,。測(cè)試機(jī)理為:利用FPGA上DDR2控制器對(duì)外部硬件DDR2執(zhí)行一個(gè)burst寫操作,,然后在同一地址執(zhí)行相同burst的讀操作,讀取剛寫入的數(shù)據(jù),,對(duì)比寫入數(shù)據(jù)與讀出數(shù)據(jù)是否一致,。
DDR2硬件驗(yàn)證測(cè)試流程如下:
(1)系統(tǒng)復(fù)位,;
?。?)等待用戶接口信號(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é)果
測(cè)試程序向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ù)一致,,說(shuō)明數(shù)據(jù)操作正確,。
5結(jié)束語(yǔ)
基于FPGA設(shè)計(jì)的DDR2控制器可以很好地滿足時(shí)序關(guān)系,經(jīng)過(guò)對(duì)輸入輸出數(shù)據(jù)的比較表明,,數(shù)據(jù)一致,,讀寫速度達(dá)到了光纖通道接口板的設(shè)計(jì)需求,。
參考文獻(xiàn)
[1] 支超有,,唐長(zhǎng)紅.機(jī)載數(shù)據(jù)總線技術(shù)及其應(yīng)用[M].北京:國(guó)防工業(yè)出版社,,2009.
[2] 陳平,,張春,,張一山,等.DDR2 SDRAM 控制器IP功能測(cè)試與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.
[4] 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.
?。?] 范澤明.DDR2 SDRAM 控制器設(shè)計(jì)與驗(yàn)證[D].西安:西安電子科技大學(xué),2009.