0 引 言
SDRAM作為大容量,、高速度,、低價(jià)格,、低功耗的存儲(chǔ)器件,在嵌入式實(shí)時(shí)圖像處理系統(tǒng)中具有很高的應(yīng)用價(jià)值,,但其控制機(jī)制復(fù)雜,,因此需要設(shè)計(jì)控制器,以簡(jiǎn)化系統(tǒng)對(duì)SDRAM的訪問,。雖然目前許多微處理器及DSP都提供了與SDRAM的直接接口,,但這種通用控制器的執(zhí)行效率很低,難以滿足實(shí)時(shí)系統(tǒng)對(duì)速度的要求,。鑒于此,,介紹一種基于FPGA設(shè)計(jì)而實(shí)現(xiàn)高效SDRAM控制器的方案。結(jié)合實(shí)際系統(tǒng),,該方案將SDRAM配置為全頁突發(fā)模式,,并采用異步FIFO作為FPGA與SDRAM間的數(shù)據(jù)緩沖器。分析表明,,全頁突發(fā)操作模式能夠很好地發(fā)揮SDRAM高速讀寫的性能,;同時(shí),設(shè)計(jì)成乒乓操作結(jié)構(gòu)的異步FIFO,,在保證數(shù)據(jù)連續(xù)性的同時(shí),,更能降低低速前端對(duì)高速SDRAM訪問的影響。
1 SDRAM簡(jiǎn)介
1.1 SDRAM的特點(diǎn)
相對(duì)于其他存儲(chǔ)器件,,SDRAM具備以下特性,。
(1)上電后必須通過一個(gè)初始化進(jìn)程配置模式寄存器的值,以決定SDRAM的工作模式,;
(2)基于三極管和電容的存儲(chǔ)結(jié)構(gòu)SDRAM決定了必須對(duì)其定時(shí)執(zhí)行刷新操作,以免數(shù)據(jù)丟失,;
(3)訪問SDRAM時(shí),,先由Active命令激活要讀寫的Bank及行并鎖存行址,然后在Read/Write命令有效時(shí)鎖存列址,。當(dāng)訪問當(dāng)前Bank的其他行時(shí),,須先使用Pre-charge命令關(guān)閉當(dāng)前行;
(4)SDRAM的內(nèi)部操作由命令控制,,CS_N,,RAS_N,CAS_N和WE_N在時(shí)鐘上升沿的狀態(tài)決定了具體的操作,,Bank及行列地址線在部分操作中作為輔助參數(shù)輸入,。
1.2 全頁(Full-page)模式突發(fā)操作
進(jìn)行大量數(shù)據(jù)讀寫時(shí),全頁突發(fā)模式是充分利用SDRAM性能,,提高讀寫速度的良好選擇,。
激活Bank的某一行后即可對(duì)該行進(jìn)行讀寫操作。
寫入數(shù)據(jù)在發(fā)出寫命令的當(dāng)前時(shí)鐘周期即可有效,因此寫操作可以在單周期內(nèi)完成,;而讀出數(shù)據(jù)將在發(fā)出讀命令之后CL(CAS Latency)時(shí)鐘周期才能輸出到總線,,即隨機(jī)讀取單個(gè)數(shù)據(jù)至少需要1+CL時(shí)鐘周期??梢?,隨機(jī)讀操作會(huì)大大降低系統(tǒng)效率。若采用全頁突發(fā)方式,,對(duì)于列寬度為n的SDRAM存儲(chǔ)器,,整頁輸出所需的總周期數(shù)為2n+CL,平均單個(gè)數(shù)據(jù)輸出所需周期為(2n+CL)/2n△1,,由此讀操作延遲對(duì)系統(tǒng)效率的影響可降至最低,。
2 SDRAM控制器設(shè)計(jì)
實(shí)際的實(shí)時(shí)紅外熱成像系統(tǒng)采用了ISSI公司生產(chǎn)的型號(hào)為IS42S16160B的SDRAM作為數(shù)據(jù)緩存,其存儲(chǔ)單元組織結(jié)構(gòu)為4 Bank×8 192行×512列×16位,。
SDRAM控制器主要由時(shí)鐘鎖相環(huán)模塊,、初始化模塊、刷新計(jì)數(shù)模塊,、數(shù)據(jù)通路模塊,、輸入/輸出FIFO模塊、FIFO接口模塊和主控制器模塊組成,,如圖1所示,。
在該SDRAM控制器中,片上時(shí)鐘鎖相環(huán)模塊的作用是將輸入時(shí)鐘倍頻為所需要的時(shí)鐘,,并根據(jù)電路板布局進(jìn)行移相,,以保證在時(shí)鐘上升沿準(zhǔn)確采樣命令及數(shù)據(jù)。初始化模塊負(fù)責(zé)產(chǎn)生規(guī)定了時(shí)間,、順序和個(gè)數(shù)的控制命令對(duì)SDRAM進(jìn)行配置,,并在進(jìn)程結(jié)束后發(fā)出ini_end信號(hào),以啟動(dòng)主控制器,。刷新控制模塊的作用是每隔最長7.812 5μs發(fā)出刷新請(qǐng)求信號(hào)ref_req,,并接收主控制器發(fā)出的ref_ack信號(hào)重置刷新計(jì)數(shù)器。數(shù)據(jù)通路模塊用于控制數(shù)據(jù)的有效輸入/輸出,。
由于系統(tǒng)對(duì)控制器中讀寫操作的數(shù)據(jù)連續(xù)性要求很高,,且讀寫速度比較低,而控制器對(duì)SDRAM中讀寫操作的數(shù)據(jù)連續(xù)性并無要求,,且讀寫速度很高,,因此需要使用異步FIFO作為輸入/輸出緩存。輸入/輸出FIFO的數(shù)據(jù)寬度為16 b,,深度可視系統(tǒng)需要而定,,但應(yīng)大于一次讀寫的數(shù)據(jù)長度LENGTH,。另外,為配合SDRAM的全頁突發(fā)模式,,并充分發(fā)揮SDRAM高速讀寫的特點(diǎn),,F(xiàn)IFO采用了乒乓操作的流水線結(jié)構(gòu)。現(xiàn)以輸入FIFO為例,,當(dāng)某個(gè)輸入FIFO寫滿LENGTH數(shù)據(jù)時(shí),,主控制器從該輸入FIFO讀出數(shù)據(jù)寫入SDRAM,同時(shí)系統(tǒng)向另一個(gè)輸入FIFO寫入數(shù)據(jù),。
FIFO接口模塊的主要信號(hào)如圖2所示,。其作用是將FIFO的狀態(tài)信號(hào)轉(zhuǎn)換為主控制器的讀寫請(qǐng)求信號(hào),并控制切換輸入/輸出的兩個(gè)FIFO,。以向SDRAM寫入數(shù)據(jù)為例,,若某個(gè)輸入FIFO的寫人數(shù)據(jù)個(gè)數(shù)標(biāo)志信號(hào)in_wr_used與LENGTH相等,則向主控制器發(fā)出寫SDRAM請(qǐng)求,,并將該輸入FIFO中的LENGTH數(shù)據(jù)一次寫入SDRAM,,同時(shí)控制系統(tǒng)向另一個(gè)輸入FIFO寫入數(shù)據(jù)。
SDRAM支持多種工作模式,,將其全部包含在主控制器狀態(tài)機(jī)中會(huì)大大增加設(shè)計(jì)難度,,并降低運(yùn)行速度??紤]到一些模式在實(shí)時(shí)圖像處理系統(tǒng)中并不需要,,所以對(duì)SDRAM主控制器韻狀態(tài)進(jìn)行了簡(jiǎn)化,如圖3所示,。
對(duì)該主控制器有以下兩點(diǎn)需要說明:
(1)器件僅在上電后進(jìn)行一次初始化配置,,進(jìn)入正常工作狀態(tài)后就不再改變工作模式。初始化時(shí)序仿真結(jié)果,,如圖4所示,。
(2)當(dāng)SDRAM工作在全頁突發(fā)模式時(shí),讀寫操作所訪問的地址將在頁內(nèi)循環(huán),,直至收到Burst-Termi-nate命令或Pre-charge命令。由于在Burst-Termi-nate命令后還需發(fā)出Pre-charge命令,,才能保證芯片正常工作,,因此設(shè)計(jì)采用了Pre-charge命令終止頁模式。為保證LENGTH數(shù)據(jù)中正確讀出或?qū)懭隨DRAM,,發(fā)出Pre-charge命令時(shí)必須滿足一定的時(shí)序要求,。對(duì)于讀操作,Pre-charge應(yīng)在最后一個(gè)有效輸出數(shù)據(jù)之前CL-l時(shí)鐘發(fā)出,;對(duì)于寫操作,,Pre-charge應(yīng)在最后一個(gè)有效輸入數(shù)據(jù)之后tDPL時(shí)間發(fā)出,。圖5和圖6給出SDRAM控制器的讀寫操作時(shí)序仿真結(jié)果,其中,,OUT_VALID及IN_VALID信號(hào)分別表明輸出及輸入數(shù)據(jù)有效,。
3 結(jié) 語
針對(duì)實(shí)時(shí)圖像處理系統(tǒng)的特點(diǎn),定制SDRAM控制器,。在Altera公司的主流芯片Cyclone II(EP2C70F896C6)上成功地使用了Verilog HDL編程語言,,其占用355個(gè)邏輯單元(不到FPGA總邏輯資源的1%);4個(gè)M4K塊和1個(gè)PLL鎖相環(huán),。在320×240的實(shí)時(shí)紅外熱成像系統(tǒng)中,,該SDRAM控制器的工作狀態(tài)良好,并可通過改變LENGTH參數(shù)而方便地用于任意分辨率的實(shí)時(shí)圖像處理系統(tǒng)中,,可移植性強(qiáng),。