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