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