丁培培(通訊作者),鄭 列,李 宏
(西安石油大學<電子工程學院> 陜西 西安 710065)
隨著現代科技的高速發展,在雷達、無線通信、圖像處理等領域需要高速傳輸大量的數據,高速數據采集作為系統中比較關鍵的部分,對數據處理的速度、穩定性、實時性以及功耗提出了更高的要求[1]。
從現有的存儲器來看,當DDR2內核的工作頻率達到200MHz時,數據傳輸速率將提高到極限值800MHz[2]且不會再有顯著提升。由此可見,一般的存儲器已不能滿足目前高速度、高寬帶、大容量的數據存儲和訪問,并制約存儲器的發展和應用。DDR3作為一種雙倍數據速率的同步動態隨機存儲器,相比DDR2的不足,DDR3具有高帶寬、高可靠性、低功耗和低成本的特點,因此成為高速數據采集系統的首選方案[3]。
Xilinx公司推出新一代低成本Kintex-7系列FPGA與Virtex-6系列FPGA相比[4],其功耗和成本都降低了50%,而性價比卻提高了2倍。并且Kintex-7 FPGA可提供高密度邏輯、高性能收發器、存儲器、DSP以及靈活混合信號,通過這些功能可以提高數據采集速度、優化圖像質量。因此,在介紹DDR3的工作原理的基礎上,結合Kintex-7自帶的IP核,采用Verilog HDL描述語言來設計一種DDR3控制器接口的設計方案,并在Kintex-7系列FPGA平臺上實現。
本文選擇Micron公司提供的型號為MT8JFT12864AZ-1G4G1的DDR3作為研究對象,與鎂光公司其它型號DDR3相比,該型號DDR3具有數據傳輸速率快、內存時鐘響應時間短的特點。單顆DDR3中,有14根行(Row)地址線,10根列(Column)地址線,8個Bank,而IO Buffer的對外通信則需要8組數位線(DQ0-DQ7)才能完成,故此單顆DDR3芯片的容量為2的14次方乘2的10次方乘8乘8,結果為1Gbit,因為1B包含8bit,1GB/8=128MB[2]。所以內存條的容量為1GB時就需要有8顆這樣的DDR3內存芯片,每顆芯片含8根數位線(DQ0-DQ7),則總數寬為64bit,這樣正好用一個Rank。
通過查看JEDEC協會所制定的規格,從技術層面來分析DDR3與DDR2的異同點[5]:DDR3擁有高頻率低功耗的特點,比DDR2運作時功耗降低30%,1.5V的電壓比DDR2的1.8V降低了7%;速度方面DDR3從800Mbps上升到1600Mbps時,速度是DDR2的2倍,數據傳輸量也是DDR2的2倍。由此可知,新一代存儲器DDR3 SDRAM在提高了帶寬的同時也大大降低了系統的功耗。表1總結了DDR,DDR2,以及DDR3的一些重要的區別。

表1 DDR3內存的規格比較表
DDR3操作過程主要包括:讀命令、寫命令、預充電命令、刷新命令與激活命令,DDR3根據接收命令的不同順序執行相應的操作。上電后,為使DDR3進入正常工作狀態,需要初始化操作,并且必須按照預先設定的順序進行,與此同時,還需要對四種模式寄存器(MRS)進行配置,否則會引起未知錯誤。初始化后,DDR3進入有效工作狀態,通過狀態機控制狀態跳變,并根據接收的命令執行相應的操作。
本文中DDR3 SDRAM控制器采用Xilinx MIG IP核來設計,可以大大降低設計人員的開發周期和工作量。用戶需要在Xilinx ISE中MIG IP核的GUI圖形界面選擇DDR3芯片的型號,總線寬度和速度級別,并設置CAS延遲,突發長度,引腳分配等參數,得到包含Verilog HDL代碼和UCF 約束文件控制器[6]。選用的FPGA芯片為Kintex-7,型號為XC7K70T,封裝為FBG484,速度等級-2。Xilinx Kintex-7系列FPGA的存儲器接口解決方案模型如圖1所示,用戶設計模塊通過用戶界面直接調用IP內核來控制DDR3 SDRAM的讀寫。

圖1 Xilinx Kintex-7 FPGA內存接口解決方案模型
該方案由用戶控制模塊,用戶接口模塊,內存控制模塊和物理層接口模塊組成[7]。其中,內存控制模塊位于用戶界面模塊和物理層接口模塊之間,前端為用戶界面模塊提供數據傳輸機制,后端從物理層接口接收并處理請求;物理層模塊直接與DDR3進行通信,其功能是捕獲由DDR3發送的數據,并通過緩存發送和接收DDR3控制信號,地址信號和數據信號,同時確保命令和地址、數據保持信號同步[8-9]。
使用Xilinx ISE軟件的MIG工具生成基于Verilog HDL的DDR3控制器的IP核代碼,然后進行綜合優化、綜合后仿真、布局布線和時序仿真,其軟件實現流程如圖2所示。

圖2 ISE下FPGA設計流程
利用Verilog HDL完成控制器和物理層中的代碼之后,需要對控制器進行功能性仿真驗證。在功能仿真時忽略電路中邏輯門的時延,著重驗證理想情況下電路的行為和設計思路的一致性[10]。
此次設計采用DDR3內存核心頻率是200MHz,總線位寬數是64位,一次預讀取8位,根據內存帶寬的計算公式:帶寬=內存時鐘頻率×內存總線位數×倍增系數/8[1]。DDR3的內存帶寬可以達到12.5GB,傳輸速率可達到1600MB/s。由于數的傳輸速率非常快,采用Chipscope很難抓取到由控制器接口寫入到DDR3中的數據,因此采用動態時序分析的方法來觀測寫入與讀出的數據是否正確。
其中,仿真工具使用Xilinx ISE 14.7編譯環境中自帶的仿真工具Simulate Behavioral Model,仿真驗證結果如圖3所示。

圖3 動態仿真結果
由圖3可知,c3_calib_done信號被設置為1,表示初始化完成,否則為0。只有rst_nr為高電平時,c3_p0_wr_en和c3_p0_rd_en才會有效。對于突發長度BL,將其值設置為8,地址位每增加64,數據端口就會同時寫入兩個256位數據,可以通過c3_p0_wr_error和c3_p0_rd_error這兩個比較信號判斷DDR3控制器是否讀寫正確。從仿真結果看出比較信號c3_p0_wr_error和c3_p0_rd_error始終為低電平,表明從接口傳輸過來的數據能夠準確寫入到DDR3內存中,且寫入的數據和讀取的數據相同,所以該測試模塊仿真通過。
該DDR3控制器已成功應用于遙感圖像壓縮系統中[11],選用Xilinx公司的Kintex-7系列型號為XC7K325T-2FGG900I的FPGA芯片,用ISE綜合圖像壓縮系統中的DDR3控制模塊,其資源占用情況如表2所示,該模塊占用很少的片上資源,在存儲速度和可移植性方面均能滿足要求。

表2 DDR3控制器模塊資源利用
通過比較分析DDR3 SDRAM的新特性及工作過程,給出基于FPGA的DDR3控制器的設計與實現,并結合軟件仿真分析,證明該DDR3控制器能夠實現等效頻率高達1600MHz的數據讀寫操作。設計者根據用戶需求靈活改變參數設置來對DDR3內存模塊進行管理,可以最大限度提高訪問內存的速度和帶寬。由于DDR3具有存儲速度快、高帶寬等特點,該DDR3控制器在遙感圖像壓縮系統中有較好的應用效果,在未來的云計算、服務器和消費類電子上前景也更加廣泛。
[1]丁寧,馬游春,秦麗,等.基于FPGA的DDR3-SDRAM控制器用戶接口設計[J].科學技術與工程,2014,14(17):225-229.
[2]黃萬偉.XilinxFPGA應用進階:通用IP核詳解和設計開發[M].電子工業出版社,2014.
[3]劉天祥.基于片上標準總線接口的SDRAM控制器設計與驗證[D].西安電子科技大學,2015.
[4]孫俊杰.賽靈思7系列FPGA統一可擴展架構[J].中國電子商情:基礎電子,2010(8):30-31.
[5]楊軍.基于FPGA的DDR3控制器IP設計與驗證[D].南昌航空大學,2015.
[6]焦淑紅,程仁濤.基于FPGA的DDR3控制器設計[J].電子科技,2015,28(7):41-43.
[7]宋明,趙英瀟,林錢強.基于FPGA的DDR3SDRAM控制器的設計與優化[J].電子科技,2016,29(11):47-50.
[8]夏宇聞.Verilog數字系統設計教程[J].單片機與嵌入式系統應用,2003(6):51-51.
[9]吳進,劉路.同步動態隨機存儲器的控制器設計與實現[J].西安郵電大學學報,2012,17(5):78-80.
[10]陳芳,黃秋萍.基于多種EDA工具的ASIC設計[J].半導體行業,2006(5):42-46.
[11]陳占良,金龍旭,陶宏江,等.高速圖像壓縮系統中DDR3控制器的實現[J].電光與控制,2016(8):85-88.