韓 剛
(西北工業(yè)大學(xué) 電子信息學(xué)院,陜西 西安 710072)
利用現(xiàn)場可編程門陣列(Field Programmable Gate Array,F(xiàn)PGA)進行高速數(shù)字圖像信號處理,需解決大容量圖像數(shù)據(jù)高速緩存的問題[1-3]。雙倍數(shù)據(jù)率同步動態(tài)隨機存取存儲器(Double Data Rate 2Synchronous Dynamic Random Access Memory,DDR2SDRAM)是一種新型高速、大容量的雙速率存儲器,與DDR相比,DDR2的數(shù)據(jù)傳輸速率更高,并已成為主流。利用DDR2SDRAM可以滿足高速圖像處理對高速率和大容量存儲的要求[4-7]。
文獻[4-7]所用DDR2SDRAM 容量小,不適合于G容量超大圖像處理。通過分析DDR2SDRAM的工作原理,本文擬采用硬件描述語言和模塊化思想,設(shè)計一種4Gbit大容量的DDR2SDRAM控制器,并借助Xilinx公司Virtex-5系列FPGA,和MICRON公司DDR2SDRAM[8],搭建測試電路對其加以驗證。
DDR2SDRAM使用差分時鐘采樣,數(shù)據(jù)傳輸在時鐘的上升和下降沿交叉處進行,其片內(nèi)工作頻率可以降低。采用差分DQS/DQS#信號作為數(shù)據(jù)的同步信號,寫入時由控制器發(fā)出,與寫數(shù)據(jù)的中心對齊,讀出時由DDR2產(chǎn)生,與讀數(shù)據(jù)的邊沿對齊,以此減少信號間的串?dāng)_。
對DDR2SDRAM器件的讀/寫訪問均為突發(fā)式,以對幾個地址進行連續(xù)操作來完成。控制信號有行地址選擇信號、列地址選擇信號和寫使能信號。激活命令寄存器后開始訪問,然后根據(jù)需要進行讀/寫命令操作。寄存地址位在激活命令時刻完成對待訪問組或行的選擇,在讀/寫命令時刻完成對突發(fā)訪問選擇組或起始列位置[6]的操作。
DDR2SDRAM的命令模式如表1所示。
表1 DDR2命令模式
設(shè)計不妨針對單片內(nèi)存大小為2Gbit,有3個bank,14條行地址線,10條列地址線,數(shù)據(jù)位寬為16的DDR2SDRAM。設(shè)計使用2片DDR2 SDRAM按位擴展,總存儲量為4Gbit,芯片接口數(shù)據(jù)位寬為32,這樣對2片DDR2SDRAM的同時讀寫,不僅查擴展存儲容量,還可加快數(shù)據(jù)讀寫速率。
DDR2SDRAM控制器由4個模塊組成,其頂層模塊設(shè)計如圖1所示。
圖1 DDR2SDRAM控制器的頂層模塊設(shè)計
(1)基礎(chǔ)模塊(Infrastructure)
基礎(chǔ)模塊用來產(chǎn)生控制器中所有模塊的時鐘信號。外部用戶時鐘通過鎖相環(huán)(Phase Locking Loop,PLL)處理后,提供控制器所需時鐘信號。該模塊通過延遲校準(zhǔn)模塊,完成對讀數(shù)據(jù)選通脈沖延遲的校準(zhǔn),以便DQS(Data Strobe)的邊沿能正確對齊數(shù)據(jù)質(zhì)量(data quality,DQ)信號有效電平的中間位置。
(2)物理層模塊(Phy top)
物理層模塊對用戶的訪問地址和指令進行解釋和匹配,它通過DDR2SDRAM控制指令信號協(xié)調(diào)指令、地址和數(shù)據(jù)的同步,以及維持在此期間信號的有效性。
(3)用戶接口模塊(User Interface top)
用戶接口模塊在控制信號的控制下接收和存儲用戶的數(shù)據(jù)、命令和地址等信息。它提供讀、寫數(shù)據(jù)和地址三類FIFO,用戶可利用該FIFO機制緩沖和同步數(shù)據(jù)。
(4)控制模塊(Ctrl)
控制模塊在系統(tǒng)加電復(fù)位時,與初始化模塊一起對控制器以及DDR2SDRAM進行初始化設(shè)置和復(fù)位延時保護等操作,在系統(tǒng)正常工作期間,為用戶接口模塊、物理層模塊產(chǎn)生相應(yīng)的控制信號,為系統(tǒng)提供控制器狀態(tài)指示信號,系統(tǒng)接收和應(yīng)答讀寫請求指令,以及采樣與同步訪問地址,從而實現(xiàn)任務(wù)調(diào)度、總線仲裁、狀態(tài)轉(zhuǎn)換和時序同步[7]。該模塊的狀態(tài)機結(jié)構(gòu)圖如圖2所示。
圖2 DDR2SDRAM控制器狀態(tài)機
DDR2SDRAM在正常工作之前首先要進行初始化,初始化過程是設(shè)計的難點。DDR2初始化時序如圖3所示。
圖3 DDR2初始化時序
系統(tǒng)上電復(fù)位完成后,根據(jù)命令模式,控制器首先向DDR2SDRAM發(fā)送初始化指令,設(shè)置控制器的初始化參數(shù),完成上電初始化操作,如200us上電等待后cke信號拉高、400ns所有bank預(yù)充電、OCD校準(zhǔn)、寄存器參數(shù)裝載和DLL重置等。系統(tǒng)初始化完成之后,DDR2SDRAM芯片的初始化完成(phy_init_done)信號由低電平變?yōu)楦唠娖?。在DDR2SDRAM初始化完成之后,系統(tǒng)就可以對DDR2SDRAM進行正常的讀寫操作。
由圖3可知,系統(tǒng)寫數(shù)據(jù)之前要先發(fā)布一個組激活命令,使行地址選擇信號ddr2_ras_n為低電平,列地址選擇信號ddr2_cas_n和寫使能信號ddr2_we_n為高電平。
DDR2SDRAM寫時序如圖4所示。3個時鐘周期之后發(fā)布寫命令,ddr2_ras_n為高電平,ddr2_cas_n和ddr2_we_n為低電平,同時給出寫地址0000,2個時鐘周期之后數(shù)據(jù)總線ddr2_dq開始傳輸數(shù)據(jù),差分隨路時鐘dd2_dqs和dd2_dqs_n邊沿與數(shù)據(jù)中心對齊,以保證數(shù)據(jù)的正確采樣。寫完數(shù)據(jù)之后需發(fā)布一個空操作命令,ddr2_ras_n,ddr2_cas_n和ddr2_we_n均為高電平,才可以進行下一次寫操作。
圖4 DDR2寫操作時序
DDR2SDRAM讀時序如圖5所示。系統(tǒng)讀數(shù)據(jù)時需發(fā)布讀命令,設(shè)置ddr2_cas_n為低電平,ddr2_ras_n和ddr2_we_n為高電平,并同時給出寫地址0000,3個時鐘周期之后數(shù)據(jù)總線ddr2_dq開始傳輸數(shù)據(jù),差分隨路時鐘dd2_dqs和dd2_dqs_n邊沿與數(shù)據(jù)邊沿對齊,以保證讀出數(shù)據(jù)與時鐘的同步。讀完數(shù)據(jù)之后需發(fā)布一個空操作命令,ddr2_ras_n,ddr2_cas_n和ddr2_we_n均為高電平,才可以進行下一次讀操作。
為了驗證DDR2SDRAM工作的可行性,圖像處理系統(tǒng)模擬5路CMOS圖像傳感器的輸出,F(xiàn)PGA采用 Xilinx公司的 Virtex-XC5VLX130T,DDR2SDRAM選用美光的 MT47H128M16,將兩片DDR2SDRAM并聯(lián),并選用ISE12.2軟件進行設(shè)計。系統(tǒng)支持DDR2SDRAM工作頻率最高為200MHz,因此最大總線傳輸率可達12.8Gbps。
圖5 DDR2讀操作時序
高速CMOS圖像數(shù)據(jù)輸出測試結(jié)果如圖6所示。
圖6 圖像數(shù)據(jù)輸出
給DDR2SDRAM中寫入仿真圖像數(shù)據(jù)。寫入完畢后,將CMOS模塊使能信號Cpsl_CmosEn_i置高。從圖6可見,圖像數(shù)據(jù)不是在Cpsl_CmosEn_i低電平使能有效時直接、不間斷的寫入DDR2 SDRAM,它需先往DDR2寫讀地址,經(jīng)過一段延遲才有效,即有效數(shù)據(jù)才輸出。
為了滿足目前高速圖像處理對大容量和高速緩存的設(shè)計需求,給出了一種大容量高速DDR2 SDRAM控制器的設(shè)計方法,它所支持的數(shù)據(jù)寬度為32位,最高頻率為200MHz,最大總線傳輸率為12.8Gbit/s,可以應(yīng)用于高速高性能系統(tǒng)。
[1]須文波,胡丹.DDR2SDRAM控制器的FPGA實現(xiàn)[J].江南大學(xué)學(xué)報,2006,5(2):145-148.
[2]陳雨,陳科,安濤.高速圖像處理系統(tǒng)中 DDR2-SDRAM 接口的設(shè)計[J].現(xiàn)代電子技術(shù),2011(12):104-107.
[3]莫迪涵,杜慧敏,沈緒榜.基于線性插值法圖像縮放的設(shè)計與FPGA實現(xiàn)[J].西安郵電大學(xué)學(xué)報,2013,18(3):52-55.
[4]趙天云,王洪迅,郭雷,等.DDR2SDRAM控制器的設(shè)計與實現(xiàn)[J].微電子學(xué)與 計 算 機,2005,22(3):203-207.
[5]舒展.DDR2控制器IP的設(shè)計與FPGA實現(xiàn)[D].合肥:合肥工業(yè)大學(xué),2009:1-33.
[6]任穎,黃建國.基于FPGA的DRR2-SDRAM控制器接口的簡化設(shè)計方法及實現(xiàn)[J].電子質(zhì)量,2008(11):31-33.
[7]黎德文,胡小文.基于FPGA的PCI總線接口設(shè)計[J].硅谷,2009(8):49-51.
[8]Xilinx.Memory interface generator(MIG)user guide[M].USA:Xilinx,2008.