在PAL→VGA的實時視頻采集系統(tǒng)中,,由于視頻數(shù)據(jù)流的數(shù)據(jù)量大、實時性要求高,。需要高速大容量的存儲器作為圖像數(shù)據(jù)的緩存,。SDRAM作數(shù)據(jù)緩存不僅具有大容量和高速度的特點,而且在價格和功耗方面也占有很大的優(yōu)勢,。但是SDRAM控制較復(fù)雜,,需要處理預(yù)充、刷新,、換行等操作,,因此有必要設(shè)計SDRAM控制器來完成和SDRAM的接口。并且為了保證數(shù)據(jù)流的連續(xù)性,,實時視頻采集系統(tǒng)通常采用通過對兩片SDRAM的乒乓操作來完成圖像數(shù)據(jù)的緩存,。針對SDRAM是高速設(shè)備,工作頻率上限最高可以達(dá)到166 MHz,,而該系統(tǒng)中前端圖像采集模塊的像素時鐘為27 MHz,,后端VGA顯示的像素時鐘為31.5 MHz。在此介紹了一種使用1片SDRAM的不同BANK進(jìn)行乒乓操作,,且相對容易實現(xiàn)的SDRAM控制器設(shè)計方法,。
1 SDRAM基本操作原理
SDRAM的主要操作包括初始化、讀寫訪問,、刷新,、激活、預(yù)充電等,。以MICRON公司的MT48LC4M3282(1M×32 b×4 BANKS)為例,,簡要介紹一下SDRAM的操作,。
如圖1所示,SDRAM的初始化操作過程如下:
(1)在電源管腳上電(電壓不得超過標(biāo)稱值的0.3 V)并且時鐘穩(wěn)定后經(jīng)過200μs延遲,,執(zhí)行一次空操作命令(該命令在延遲周期的后期發(fā)出)且保持時鐘使能信號為高,;
(2)對所有的BANK進(jìn)行預(yù)充電,所有的BANK都進(jìn)入空閑狀態(tài),;
(3)預(yù)充電后執(zhí)行兩個自動刷新命令,,等待八個刷新周期完畢;
(4)發(fā)出模式設(shè)置命令來設(shè)置模式寄存器,。由于上電后模式寄存器的狀態(tài)是不確定的,,所以在進(jìn)行SDRAM操作之前一定要先設(shè)置模式寄存器。模式寄存器設(shè)置值如圖2所示,。
對SDRAM的讀寫訪問先要以激活命令選擇具體的BANK和行,,地址線BA1/BA0用來選擇BANK,A0~A11用來選擇所要訪問的行,;然后發(fā)出讀或?qū)懨?,地址線A0~A7用來選擇所要訪問的起始列。在讀命令發(fā)出后,,要等待一個CAS延遲時間,,有效數(shù)據(jù)才會出現(xiàn)在數(shù)據(jù)總線上,CAS延遲時間可以設(shè)置為2或3個時鐘,。在寫命令發(fā)出后,,不需要等待CAS延遲時間有效數(shù)據(jù)會立即出現(xiàn)在數(shù)據(jù)總線上。對SDRAM的讀寫操作一般以突發(fā)模式進(jìn)行,,突發(fā)長度可以設(shè)置成1,,2,4,,8以及全頁,,常用的長度為8個。該系統(tǒng)的CAS延遲時間設(shè)置為2,,突發(fā)長度為1,。
SDRAM的存儲單元可以理解為一個電容,總是傾向于放電,,必須有定時的刷新周期以避免數(shù)據(jù)丟失,。只要保證在64 ms時間內(nèi)所有有效數(shù)據(jù)行都完成刷新就可以保證數(shù)據(jù)不丟。SDRAM提供兩種類型的刷新模式:自動刷新和自刷新,。在該系統(tǒng)中,,前端PAL制式信號一幀的時間為40 ms,因此SDRAM的同一地址讀寫操作的時間相隔為40 ms,。又由于系統(tǒng)為實時視頻采集系統(tǒng),,前端采集的視頻數(shù)據(jù)是連續(xù)不斷的,,所以該系統(tǒng)不需要進(jìn)行刷新操作即可保證數(shù)據(jù)不丟。
2 SDRAM控制器的設(shè)計實現(xiàn)
在實時視頻采集系統(tǒng)中,,為了保證數(shù)據(jù)的穩(wěn)定和連續(xù)性,,通常采用的方法是對存儲器進(jìn)行乒乓操作。一般所指的乒乓操作針對兩片存儲器芯片,,如圖3所示,,其原理是通過控制模塊對兩片存儲器分別做讀寫操作,寫存儲器滿時控制模塊發(fā)出交換命令,,切換兩片存儲器的操作狀態(tài),。
該系統(tǒng)采用的是一片SDRAM實現(xiàn)乒乓操作。設(shè)計時是利用SDRAM的不同BANK間的存取操作來實現(xiàn)乒乓操作,。由于SDRAM總共有4個BANK,,所以讀取第一幀圖像時使用SDRAM的1,2 BANK為讀緩存,,3,,4 BANK為寫緩存。第二幀圖像時SDRAM的3,,4 BANK切換為讀緩存,,1,2 BANK切換為寫緩存,。采用一幀圖像讀寫完畢作為切換標(biāo)志反復(fù)切換讀寫緩存,就充分利用SDRAM的不同BANK來實現(xiàn)乒乓操作,。另一方面由于SDRAM的數(shù)據(jù)線和地址線只有1組,,所以實際控制的時候讀寫操作是不能同時進(jìn)行的。設(shè)計中考慮到SDRAM的工作頻率與前端圖像采集的像素頻率以及后端VGA顯示的像素頻率相比要高得多,,因此將讀寫操作利用時分的方式分開控制,。所以在控制器中設(shè)計了一個指令計數(shù)器(Countcmd),通過計數(shù)的方式來切換讀寫操作,。只要選取適當(dāng)?shù)腟DRAM工作頻率以及指令計數(shù)器的規(guī)定值就可以完成SDRAM讀寫操作的連續(xù)切換,。實際設(shè)計中采用的SDRAM工作頻率為100 MHz,指令計數(shù)器的規(guī)定值為240,。SDRAM控制器狀態(tài)轉(zhuǎn)換概圖如圖4所示,。
SDRAM控制器的具體狀態(tài)轉(zhuǎn)換流程如下:首先初始化SDRAM,然后向SDRAM的1,,2 BANK寫入第一幀圖像,,當(dāng)?shù)谝粠瑘D像寫入完畢后進(jìn)入乒乓操作階段。此時SDRAM的1,,2 BANK為讀緩存,,3,,4 BANK為寫緩存。
首先進(jìn)入讀緩存激活行,,開始讀操作,,讀操作開始的同時啟動指令計數(shù)器。此時每執(zhí)行一條指令(包括讀指令,,空操作指令,,不包括預(yù)充電指令和行激活指令),指令計數(shù)器自加1,,當(dāng)指令計數(shù)器到達(dá)規(guī)定值時將指令計數(shù)器清0并切換到寫狀態(tài),。進(jìn)入寫狀態(tài)前先判斷寫緩存的行激活標(biāo)志,如果沒有激活,,先執(zhí)行行激活,,然后開始寫操作,如果已經(jīng)激活則直接開始寫操作,。寫操作開始的同時啟動指令計數(shù)器,。此時和讀狀態(tài)時一樣,每執(zhí)行一條指令,,指令計數(shù)器自加1,,當(dāng)指令計數(shù)器到達(dá)規(guī)定值時同樣將指令計數(shù)器清0后切換到讀狀態(tài)。如此反復(fù)切換操作,,直至讀完一幀或者寫滿一幀,。如果是讀完一幀,則判斷寫緩存中一幀寫滿沒有,。如果已經(jīng)寫滿,,則進(jìn)入讀寫B(tài)ANK切換狀態(tài)。如果沒有,,則進(jìn)入寫狀態(tài)并不再切換讀寫狀態(tài),,一直保持寫狀態(tài)直至寫滿一幀為止,然后進(jìn)入讀寫B(tài)ANK切換狀態(tài),。如果是寫滿一幀,,則同理于讀完一幀的情況,首先判斷讀緩存中讀完一幀沒有,,然后根據(jù)判斷結(jié)果進(jìn)行操作,,最后進(jìn)入讀寫B(tài)ANK切換狀態(tài)。在讀寫B(tài)ANK切換狀態(tài)中,,讀緩存切換為3,,4 BANK,寫緩存切換為1,2 BANK,。反復(fù)上述操作步驟,,就可以完成使用一片SDRAM不同BANK的乒乓操作。整個SDRAM控制器在Altera的QuartusⅡ7.2環(huán)境下采用Verilog設(shè)計完成,,然后在ModelSim SE 6.0環(huán)境下仿真通過,。隨后通過Altera的QuartusⅡ7.2進(jìn)行綜合和布局布線,并最終在Al-teraCyclone系列FPGA芯片EP1C6Q240C8上完成,。所設(shè)計的SDRAM控制器在PAL→VGA的實時視頻采集系統(tǒng)中調(diào)試通過,,能夠?qū)崿F(xiàn)圖像數(shù)據(jù)的存儲和讀取,完全滿足系統(tǒng)的要求,。
3 結(jié) 語
介紹在PAL→VGA的實時視頻采集系統(tǒng)中使用SDRAM作為圖像緩存的基本操作,,設(shè)計一種使用1片SDRAM的不同BANK進(jìn)行乒乓操作的相對容易實現(xiàn)的SDRAM控制器設(shè)計方法。在PAL→VGA的實時視頻采集系統(tǒng)中,,使用了所設(shè)計的SDRAM控制器,,并通過硬件驗證,采集得到的圖像質(zhì)量較好,。另外,,這里設(shè)計的SDRAM控制器稍加改動就可以應(yīng)用到其他實時視頻采集系統(tǒng)中去,具有很強的通用性,。