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