吳瓊
摘要
近年來(lái),隨著大規(guī)模集成電路的發(fā)展,可編程邏輯陣列FPGA在當(dāng)前嵌入式系統(tǒng)中得到廣泛應(yīng)用,同時(shí),可編程邏輯陣列對(duì)數(shù)據(jù)并行處理,在片上操作系統(tǒng)和圖像處理方面有很大優(yōu)勢(shì),鑒于此,本文論述基于FPGA的圖像翻轉(zhuǎn)技術(shù)。本論文論述了在液晶顯示器設(shè)計(jì)研發(fā)過(guò)程中用FPGA結(jié)合SRAM實(shí)現(xiàn)圖像翻轉(zhuǎn)的功能,考慮到實(shí)現(xiàn)成本及圖像分辨率的多樣性,我們使用RAM組對(duì)圖像翻轉(zhuǎn)進(jìn)行設(shè)計(jì)實(shí)現(xiàn),實(shí)現(xiàn)過(guò)程中考慮RAM的選取、硬件原理設(shè)計(jì)及FPGA對(duì)多RAM的控制等,圖像翻轉(zhuǎn)后畫(huà)面顯示清晰無(wú)干擾,且該技術(shù)可用于任意分辨率圖像的翻轉(zhuǎn)。
【關(guān)鍵詞】FPGA 圖像翻轉(zhuǎn) SRAM
多功能液晶顯示器設(shè)計(jì)研發(fā)過(guò)程中對(duì)液晶顯示模塊的選擇會(huì)受限于貨架模塊己有的結(jié)構(gòu)設(shè)計(jì),除此之外,正常情況下,液晶顯示模塊的起始點(diǎn)(0,0)位于模塊左上角,在選擇液晶顯示模塊時(shí)難免會(huì)遇到光學(xué)指標(biāo)符合要求但結(jié)構(gòu)安裝翻轉(zhuǎn)180°的情況,亦或是液晶顯示模塊的起始點(diǎn)(0,0)位于模塊右下角的情況,如此,我們?cè)趫D像顯示處理過(guò)程中需對(duì)其翻轉(zhuǎn)180°,通過(guò)FPGA操作SRAM對(duì)像素的存取,使其在畫(huà)面顯示時(shí)正立不變形,符合人眼正常視角觀察習(xí)慣。而視頻翻轉(zhuǎn)由FPGA結(jié)合SRAM實(shí)現(xiàn)。
1 RAM選取
一般RAM的選取需考慮兩方面的因素——存儲(chǔ)容量和操作響應(yīng)速度。
由于成本因素和國(guó)外禁運(yùn)等因素,目前市場(chǎng)上使用較多的SRAM為Cypress公司產(chǎn)品,己CY7C1061為例,該SRAM為1M(地址空間)×l6位的靜態(tài)RAM,也就是說(shuō)每片RAM可存放1024×1024個(gè)16位數(shù)據(jù)。
圖像翻轉(zhuǎn)的前提是需將一幀完整的圖像存放于存儲(chǔ)器中并通過(guò)算法將像素逆序取出并顯示,因此先考慮像素完整存放的問(wèn)題。
現(xiàn)常用的較為簡(jiǎn)單的圖像分辨率為1024×768@60Hz,若顏色位數(shù)R:G:B=6:6:6時(shí),我們可權(quán)衡舍掉紅色和藍(lán)色最低位變?yōu)镽:G:B=5:6:5,這樣一個(gè)像素的顏色可由16位數(shù)據(jù)表示,存放于SRAM的一個(gè)地址中。一幀畫(huà)面中有效的1024×768個(gè)像素?cái)?shù)據(jù)可存放于1024×768個(gè)地址當(dāng)中,其中行地址由十位地址位組成,分別指示0?1023行,我們需要用到的僅0?767行,列地址也由十位地址位組成,分別指示0?1023列。因此,該RAM一片可實(shí)現(xiàn)1024×768像素R:G:B=5:6:5圖像存儲(chǔ)需求。
若每色灰度級(jí)要求為256級(jí),即R:G:B=8:8:8時(shí),每個(gè)像素的24位數(shù)據(jù)需存放于兩片RAM的同一地址中。這樣需要在原有基礎(chǔ)上對(duì)RAM進(jìn)行擴(kuò)展,變?yōu)?M×32位容量,將24位數(shù)據(jù)完整存放,保證圖像不失真。
而在操作速度方面,要將每一個(gè)像素?cái)?shù)據(jù)進(jìn)行存取,RAM的響應(yīng)速度不得低于圖像像素時(shí)鐘頻率,即點(diǎn)頻。根據(jù)VISA標(biāo)準(zhǔn),對(duì)于1024×768@60Hz的圖像顯示而言,像素點(diǎn)頻約為65MHz,因此FPGA對(duì)像素?cái)?shù)據(jù)的存取速度以及RAM的響應(yīng)速度均需大于65MHz。一般情況下,目前常用的FPGA的操作速度均在400MHz以上,完全可以滿(mǎn)足要求,而SRAM的響應(yīng)速度需小于1/(65×106),約15ns。
2 硬件設(shè)計(jì)
以1600×1200@60Hz,R:G:B=5:6:5圖像為例,以雙像素模式進(jìn)行顯示,奇偶場(chǎng)有效像素分別為800×1200,在視頻翻轉(zhuǎn)硬件設(shè)計(jì)時(shí),存放一場(chǎng)奇像素或偶像素需要兩片RAM,800×1024像素的16位顏色用一片,超出1024行像素的16位顏色需另外一片RAM予以存放,這樣便于FPGA的操作。為保證圖像刷新率不變,圖像顯示流暢,F(xiàn)PGA對(duì)SRAM采用“乒乓”操作,即場(chǎng)同步信號(hào)(VS)分頻,將圖像按幀輪流存放于兩組RAM中,向一組寫(xiě)入時(shí)從另一組讀取顯示,原理圖如圖1,這樣顯示的圖像與源相比僅推遲一幀的速度,即16ms。
為避免FPGA對(duì)RAM的操作沖突,F(xiàn)PGA對(duì)各組RAM的地址線、數(shù)據(jù)線以及控制線不進(jìn)行復(fù)用,數(shù)據(jù)線為圖像顏色數(shù)據(jù),地址線為RAM的A0?A19共20位地址,控制線包括該RAM的使能信號(hào)/CE1、CE2,讀寫(xiě)控制信號(hào)/OE、/WE,以及高八位數(shù)據(jù)和低八位數(shù)據(jù)的使能控制線/BHE、/BLE。由于RAM—直被FPGA進(jìn)行讀寫(xiě)操作,其中數(shù)據(jù)的使能控制線可在原理設(shè)計(jì)時(shí)直接接低,其余控制線可接至FPGA的IO引腳。
3 FPGA的程序?qū)崿F(xiàn)
首先對(duì)場(chǎng)信號(hào)(VS)計(jì)數(shù)分頻,當(dāng)分頻信號(hào)為高時(shí),對(duì)一組RAM進(jìn)行數(shù)據(jù)存放從另一組RAM組進(jìn)行數(shù)據(jù)讀取,存放數(shù)據(jù)的地址由行頻計(jì)數(shù)和點(diǎn)頻時(shí)鐘計(jì)數(shù)組成,在圖像使能(DE)有效時(shí)開(kāi)始計(jì)數(shù),行頻計(jì)數(shù)和點(diǎn)頻計(jì)數(shù)器分別定義為11位邏輯矢量和10位邏輯矢量,滿(mǎn)足每行800個(gè)像素和1200行的數(shù)據(jù)要求,當(dāng)行計(jì)數(shù)超過(guò)1024時(shí),地址計(jì)數(shù)自動(dòng)溢出,此時(shí)可開(kāi)啟下一片RAM的片選,將超出1024地址的部分存入同組第二片RAM當(dāng)中。由此可將一幀的圖像完整的存儲(chǔ)在RAM組當(dāng)中。因此行計(jì)數(shù)的最高位可控制一組RAM組中兩片RAM的使能信號(hào)/CE1、CE2。
從另一組RAM中取出數(shù)據(jù)顯示時(shí),地址尋址與存儲(chǔ)時(shí)相反,用每行像素總數(shù)800減去當(dāng)前點(diǎn)頻計(jì)數(shù)為需要操作的列地址,用總行數(shù)1200減去當(dāng)前行頻計(jì)數(shù)為需要操作的行地址,由這兩個(gè)地址組合而成的20位地址邏輯矢量為當(dāng)前要操作的RAM地址。用上述方式可將圖像信號(hào)翻轉(zhuǎn)180°,滿(mǎn)足使用要求。
參考文獻(xiàn)
[1]李洪革.FPGA/ASIC高性能數(shù)字系統(tǒng)設(shè)計(jì)[M].北京:電子工業(yè)出版社,2011:1.