基于FPGA實(shí)現(xiàn)VGA的彩色圖片顯示
視頻圖形陣列顯示接口是微機(jī)系統(tǒng)使用的一種通用顯示接口,廣泛應(yīng)用于智能控制系統(tǒng)中,作為系統(tǒng)的顯示終端。對(duì)于由嵌入式微處理器構(gòu)成的圖像處理系統(tǒng)來(lái)說(shuō),采用VGA顯示輸出具有兼容性強(qiáng)、顯示內(nèi)容豐富的優(yōu)勢(shì)。同時(shí),VGA顯示接口具有結(jié)構(gòu)簡(jiǎn)單、性能可靠、兼容性強(qiáng)、時(shí)序容易控制的特點(diǎn)。因此,結(jié)合FPGA的 VGA圖像控制器在嵌入式的圖像處理系統(tǒng)中有廣泛的應(yīng)用前景。
本文引用地址:http://www.ex-cimer.com/article/201710/367174.htm目前大多數(shù)計(jì)算機(jī)與外部顯示設(shè)備之間都是通過(guò)模擬VGA接口連接,計(jì)算機(jī)內(nèi)部以數(shù)字方式生成的顯示圖像信息,被顯卡中的數(shù)字/模擬轉(zhuǎn)換器轉(zhuǎn)變?yōu)镽、G、B三原色信號(hào)和行場(chǎng)同步信號(hào),信號(hào)通過(guò)電纜傳輸?shù)斤@示設(shè)備中。
1 VGA顯示
常見(jiàn)的VGA接口的彩色顯示器,一般由cRT(陰極射線管)構(gòu)成,色彩由R、G、B(紅:Red,綠:Green,藍(lán):Blue三基色組成。顯示采用逐行掃描的方式進(jìn)行,即當(dāng)掃描完一行時(shí),再進(jìn)行下一行的掃描,直到最后一行掃描完為止。VGA接口為顯示器提供兩類信號(hào),一類是數(shù)據(jù)信號(hào),一類是控制信號(hào)。
數(shù)據(jù)信號(hào)包括紅、綠、藍(lán)信號(hào),簡(jiǎn)稱RGB信號(hào)??刂菩盘?hào)包括水平同步信號(hào)(HSYNC)和垂直同步信號(hào)(VsYNc)。向顯示器輸出不同的分辨率時(shí),水平同步信號(hào)和垂直同步信號(hào)的頻率也不同。但是水平同步信號(hào)和垂直同步信號(hào)時(shí)序分析相同,在掃描時(shí)均需要經(jīng)過(guò)同步信號(hào)、同步后信號(hào)、行同步信號(hào)、同步后信號(hào)四個(gè)時(shí)段。僅以水平同步信號(hào)為例,其結(jié)構(gòu)如圖1所示。
VGA接口的顯示器原理其實(shí)就相當(dāng)于點(diǎn)陣,通過(guò)控制器的控制,點(diǎn)亮所在的行和列。所以水平同步信號(hào)是針對(duì)列像素而言的,而垂直同步信號(hào)是針對(duì)行像素而言的。
以顯示800×600的圖片大小為例,根據(jù)VGA的時(shí)序標(biāo)準(zhǔn),選擇6hz的刷新頻率。水平同步信號(hào)的同步信號(hào)包含128個(gè)列像素,同步后沿信號(hào)為 88個(gè)列像素,同步前沿信號(hào)為40個(gè)列像素,而屏幕顯示部分為800個(gè)列像素,所以一共需要1 28+88+40+800=1 056個(gè)列像素。場(chǎng)同步信號(hào)的同步信號(hào)包含4個(gè)行像素,同步后沿信號(hào)包含23個(gè)行像素,同步前沿信號(hào)包含1個(gè)行像素,而屏幕顯示部分為600個(gè)行像素,所以一共需要4+23+l+600=628個(gè)行像素,由此,液晶顯示器顯示一幅800×600的圖像,需要的行列像素分別為1056和628。
2 系統(tǒng)總體框架設(shè)計(jì)
本系統(tǒng)以FPGA EP2C8Q208C8為核心芯片,通過(guò)對(duì)VGA接口的控制,實(shí)現(xiàn)彩色圖像的顯示,系統(tǒng)結(jié)構(gòu)框圖如圖2所示。
2.1鎖相環(huán)PLL
鎖相環(huán)路是一種反饋控制電路,簡(jiǎn)稱鎖相環(huán)(PLL),一種輸出一定頻率信號(hào)的振蕩電路,也稱為相位同步環(huán)(回路)。該回路利用使外部施加的基準(zhǔn)信號(hào)與PLL 回路內(nèi)的振蕩器輸出的相位差恒定的反饋控制來(lái)產(chǎn)生振蕩信號(hào)。在網(wǎng)絡(luò)領(lǐng)域中,PLL用于從接收的信號(hào)中分離出時(shí)鐘信號(hào),可以通過(guò)實(shí)際電路或軟件的方式實(shí)現(xiàn)。
由于FPGA的系統(tǒng)時(shí)鐘為50MHz,而控制VGA的時(shí)鐘為40MHz,所以在對(duì)VGA接口的控制時(shí)需要進(jìn)行時(shí)鐘轉(zhuǎn)換,通常可以通過(guò)分頻或者是調(diào)用 IP核的方式實(shí)現(xiàn)轉(zhuǎn)換,但是由于通過(guò)自己寫的分頻程序假如在數(shù)據(jù)上處理不得當(dāng),容易產(chǎn)生毛刺,而調(diào)用quanersII軟件自帶的PLL內(nèi)核,不僅可以做到與系統(tǒng)時(shí)鐘同相,而且時(shí)鐘穩(wěn)定,能夠?qū)崿F(xiàn)對(duì)VGA時(shí)序的嚴(yán)格控制,與硬件電路來(lái)實(shí)現(xiàn)鎖相環(huán)相比,調(diào)用PLJ。內(nèi)核不僅可以做到操作簡(jiǎn)單,而且也節(jié)約了設(shè)計(jì)成本。
2.2存儲(chǔ)模塊ROM
只讀存儲(chǔ)(Read一0nly Memory,ROM)是一種只能讀出事先所存數(shù)據(jù)的固態(tài)半導(dǎo)體存儲(chǔ)器圈。在系統(tǒng)框圖中的三個(gè)ROM均用來(lái)存儲(chǔ)顏色信息,由于本設(shè)計(jì)中使用圖片的大小為 128×128,即一共有128×128=16384個(gè)像素點(diǎn),所以ROM的大小設(shè)置為16384。這里通過(guò)quanerII軟件調(diào)用FPGA的ROM內(nèi)核,將MATLAB提取的紅、綠、藍(lán)三基色數(shù)據(jù)經(jīng)quanusII軟件的處理,分別存入FPGA的ROMl、ROM2、ROM3中。在控制模塊中寫入 ROM的地址,在分頻后的時(shí)鐘控制下,將數(shù)據(jù)讀到vGA的RGB三個(gè)引腳,實(shí)現(xiàn)液晶顯示器的圖片顯示。
2.3 MATLAB的數(shù)據(jù)提取
MATLAB 作為強(qiáng)大的數(shù)據(jù)處理工具,其基本數(shù)據(jù)單位是矩陣,它的指令表達(dá)式與數(shù)學(xué)工程中常用的表達(dá)形式十分相似,故用MATLAB來(lái)解算問(wèn)題要比用 c,F(xiàn)ORTRAN等語(yǔ)言簡(jiǎn)捷得多。在新的版本中也加入了對(duì)C,F(xiàn)ORTRAN,C++,JAVA的支持,可以直接調(diào)用,用戶也可以將自己編寫的實(shí)用程序?qū)薓ATIAB函數(shù)庫(kù)中方便自己以后調(diào)用,此外許多的MATLAB愛(ài)好者都編寫了一些經(jīng)典的程序,用戶可以直接進(jìn)行下載就可以用,非常的方便。
由于MATLAB軟件中默認(rèn)的圖片格式為.JPc和.BNP,因此在使用MATLAB前需將原始圖片通過(guò)Photo sh叩軟件進(jìn)行格式轉(zhuǎn)換,轉(zhuǎn)換后保存圖片為.BMP格式,在彈出的位寬選擇對(duì)話框選擇24位,,然后再通過(guò)MATLAB提取紅基色數(shù)據(jù),程序如下所示,結(jié)果被保存在Red.mif文件里:
由于本設(shè)計(jì)所使用的VGA是三位的數(shù)據(jù)接口,因此藍(lán)基色和綠基色數(shù)據(jù)也按照此方法提取。Red.mif中的數(shù)據(jù)是24位的,所以還需要對(duì)提取到的紅基色數(shù)據(jù)進(jìn)行轉(zhuǎn)換。在MATLAB中做如下判斷將24位數(shù)據(jù)轉(zhuǎn)換為3位數(shù)據(jù)。
3 結(jié)果分析
圖像的顯示如圖3所示,顯示結(jié)果表明,由于原圖像是24位,即224種顏色,而FPGA控制的VGA只有3位即23種顏色,相比之下,以24位的圖像作為標(biāo)準(zhǔn),VGA顯示的3位圖像有明顯失真的現(xiàn)象。
如果希望顯示的圖像更加清晰,那么需要將vGA的顯示接口重新作出電路修改,這樣才能達(dá)到清晰顯示的效果。
4 結(jié)束語(yǔ)
在許多圖像處理系統(tǒng)中,需要將經(jīng)過(guò)處理的圖像顯示出來(lái),如果采用傳統(tǒng)的辦法將圖像數(shù)據(jù)傳回電腦并通過(guò)顯示器顯示出來(lái),那么在傳輸?shù)倪^(guò)程中就需要嵌入式系統(tǒng)的 CPU不斷的對(duì)所傳輸?shù)膱D像數(shù)據(jù)信號(hào)進(jìn)行控制,這樣就造成了CPU資源的浪費(fèi),同樣系統(tǒng)還需要依賴電腦,降低了系統(tǒng)的靈活性。如果采用FPGA對(duì)顯示器的 VGA接口進(jìn)行設(shè)計(jì),數(shù)據(jù)流只需要在整個(gè)系統(tǒng)的內(nèi)部流動(dòng),而不需要依靠計(jì)算機(jī),實(shí)現(xiàn)了系統(tǒng)的最小化,大大減少了電路板的尺寸,增強(qiáng)了系統(tǒng)的可靠性和設(shè)計(jì)的靈活性。
VGA接口同樣也是LCD液晶顯示設(shè)備的標(biāo)準(zhǔn)接口,通過(guò)VGA控制LCD可以使整個(gè)系統(tǒng)變得小巧,攜帶方便,使得應(yīng)用的范圍大大擴(kuò)展。作者所在的全景視覺(jué)圖象處理項(xiàng)目中,正是需要把經(jīng)過(guò)處理的圖像實(shí)時(shí)地直接地顯示出來(lái),撇開(kāi)對(duì)計(jì)算機(jī)的需求,以滿足各種不同應(yīng)用環(huán)境的需要。
通過(guò)FPGA對(duì)VGA接口的控制,不僅實(shí)現(xiàn)了FPGA對(duì)任一圖像的顯示,而且其內(nèi)部時(shí)鐘可調(diào)性為設(shè)計(jì)帶來(lái)了很大的方便,節(jié)約了硬件成本。此方案可以廣泛應(yīng)用于數(shù)字視頻系統(tǒng)、高分辨率的彩色圖片圖像處理、視頻信號(hào)再現(xiàn)等各種領(lǐng)域。
作者黃文杰,李燦平,丁然
評(píng)論