2 SDRAM控制器的設(shè)計(jì)
在視頻圖像處理中SDRAM主要用作數(shù)據(jù)緩存,也就是FPGA對(duì)SDRAM操作最頻繁的為讀命令、寫(xiě)命令,在這兩個(gè)命令中間插著激活、預(yù)充電、猝發(fā)終止、刷新等命令。對(duì)于高分辨率的視頻流,分辨率都在1 280×1 024以上,也就是每行的點(diǎn)像素都要大于1 280個(gè),數(shù)據(jù)量非常的龐大。
為了降低SDRAM的操作時(shí)鐘的頻率和提高視頻處理的實(shí)時(shí)性,采用猝發(fā)的模式對(duì)SDRAM進(jìn)行操作。對(duì)于SDRAM MT48LC4M32B2TG地址為A[7:0],猝發(fā)操作的最大長(zhǎng)度為256.也就是說(shuō)為了存儲(chǔ)和讀出一行的視頻數(shù)據(jù)要對(duì)SDRAM的多行進(jìn)行操作。如 1 280×1 024分辨率,需要5行SDRAM空間(256×5=1 280)。
對(duì)于不能被256整除的列數(shù)如1 600,就要采用控制猝發(fā)長(zhǎng)度的方式,為了控制方便采用8行SDRAM空間存儲(chǔ)一行視頻數(shù)據(jù)(200×8=1 600)。標(biāo)準(zhǔn)的VESA分辨率都可以用此方式存儲(chǔ)。在SDRAM控制器中設(shè)置了SDRAM的猝發(fā)長(zhǎng)度的選擇功能,只要修改需要的猝發(fā)長(zhǎng)度即可,不要重新設(shè)計(jì)代碼。
為了保證SDRAM的刷新要求,在每一行的SDRAM操作完成后就進(jìn)行一次刷新操作,此操作經(jīng)由輸入的視頻行同步信號(hào)(HSY)的觸發(fā),如果外部視頻信號(hào)突然無(wú)輸入,為了保證最后存儲(chǔ)的數(shù)據(jù)不丟失,進(jìn)入自刷新模式。一當(dāng)控制器檢測(cè)到HSY無(wú)變化就會(huì)啟用自刷新模式,周期對(duì)SDRAM刷新。
SDRAM控制器主狀態(tài)機(jī)如圖2所示。
在主狀態(tài)機(jī)完成初始化狀態(tài),進(jìn)入等待狀態(tài)后,等待讀/寫(xiě)命令和視頻數(shù)據(jù)輸入信號(hào)。如果無(wú)視頻輸入,狀態(tài)機(jī)始終在等待狀態(tài),并周期性的對(duì)SDRAM進(jìn)行刷新,直到有視頻和讀/寫(xiě)命令輸入。這部分的狀態(tài)圖如圖3所示。
由于猝發(fā)的最大長(zhǎng)度為256,在每?jī)尚胁僮髦g都要進(jìn)行激活、讀/寫(xiě)命令、猝發(fā)終止、刷新等操作。由于讀/寫(xiě)數(shù)據(jù)都使用的是像素時(shí)鐘的頻率,這樣總個(gè) FPGA系統(tǒng)只有一個(gè)時(shí)鐘域,能保證整個(gè)系統(tǒng)完全按照同步系統(tǒng)來(lái)設(shè)計(jì),能提高整個(gè)系統(tǒng)的可靠性。這樣會(huì)帶來(lái)一個(gè)問(wèn)題,要想僅僅在視頻的有效時(shí)間,即DEN 高電平部分完成一行視頻數(shù)據(jù)的讀/寫(xiě)工作,這是不能滿(mǎn)足要求的。為了解決這個(gè)問(wèn)題,需要借用行同步、前廊和后廊的時(shí)間,但是DEN無(wú)效后不傳輸視頻數(shù)據(jù)的,為了解決這個(gè)矛盾在SDRAM控制器和數(shù)據(jù)流輸入/輸出接口之間要分別設(shè)計(jì)兩個(gè)FIFO,深度大于一行的視頻數(shù)據(jù),采用乒乓操作保證視頻流的流暢。
3 SDRAM控制器應(yīng)用實(shí)例
在某型號(hào)的機(jī)載大屏顯示器系統(tǒng)中,視頻圖像處理系統(tǒng)中使用該SDRAM控制器進(jìn)行了調(diào)試,實(shí)現(xiàn)FPGA對(duì)SDRAM的控制,完成相應(yīng)的視頻處理算法和實(shí)現(xiàn)了圖像的翻轉(zhuǎn)功能。此部分系統(tǒng)簡(jiǎn)要框圖如圖4所示。
該系統(tǒng)輸入的為多路DVI信號(hào),輸入視頻分辨率均為1 280×1 024,DVI信號(hào)經(jīng)過(guò)DVI解碼后輸入FPGA.
為了完成FPGA內(nèi)部的視頻處理算法和圖像翻轉(zhuǎn)的功能,在FPGA外部掛了兩組SDRAM,實(shí)現(xiàn)了乒乓操作,保證了系統(tǒng)的處理速度。處理后的視頻經(jīng)過(guò)LVDS信號(hào)轉(zhuǎn)化,輸出到液晶屏上顯示。
對(duì)于左右翻轉(zhuǎn)在FPGA內(nèi)部采用雙口RAM進(jìn)行操作能夠輕易實(shí)現(xiàn)。而圖像的上下翻轉(zhuǎn),由于涉及到一幀數(shù)據(jù)的處理,需要經(jīng)過(guò)外部緩存SDRAM實(shí)現(xiàn)。在采用上述SDRAM控制器的基礎(chǔ)上,控制SDRAM的讀方式就能實(shí)現(xiàn),在將視頻數(shù)據(jù)寫(xiě)入SDRAM的時(shí)候,寫(xiě)地址從第一行按順序?qū)懭?。讀的過(guò)程相反,要從最后行開(kāi)始讀。
由于SDRAM的一行容量不能裝下整行的視頻信息,所以讀的行地址要求每次從讀過(guò)的行的地址減去存一行視頻需要的SDRAM的物理行數(shù),在一行視頻數(shù)據(jù)沒(méi)有讀完前要從當(dāng)前行不斷的自增。如1 280×1 024的視頻數(shù)據(jù),共需要5 120(5×1 024)SDRAM行存一幀數(shù)據(jù)。要上下翻轉(zhuǎn)輸出圖像,首先要輸出視頻數(shù)據(jù)的第1 024行,也就是要從SDRAM的5 115行開(kāi)始按順序讀出,讀完第5 120行后,SDRAM地址轉(zhuǎn)到5 110行讀視頻流的第1 023行,如此類(lèi)推,直到讀完整幀的視頻數(shù)據(jù)。該視頻處理系統(tǒng)與顯示效果如圖5所示。
4結(jié)論
該設(shè)計(jì)針對(duì)高分辨率視頻圖像處理的SDR SDRAM控制器的設(shè)計(jì),采用統(tǒng)一像素時(shí)鐘進(jìn)行系統(tǒng)操作,降低系統(tǒng)的復(fù)雜度,提高系統(tǒng)的可靠性;通過(guò)寫(xiě)修改相關(guān)參數(shù),能夠適應(yīng)所有VESA分辨率的視頻處理,通用性強(qiáng);具有自刷新功能,在無(wú)外部信號(hào)輸入情況下能夠自動(dòng)刷新,保證最后存儲(chǔ)數(shù)據(jù)不會(huì)丟失;能夠通過(guò)增加外部模塊,控制讀寫(xiě)地址,實(shí)現(xiàn)圖像翻轉(zhuǎn)功能。此控制器在Al-tera的StratixⅡ系列FPGA EP2S60F1020I4平臺(tái)上,成功實(shí)現(xiàn)各種視頻處理功能,驗(yàn)證了此控制器的實(shí)用性。
評(píng)論