基于FPGA的VGA彩色圖片的顯示_第1頁
基于FPGA的VGA彩色圖片的顯示_第2頁
基于FPGA的VGA彩色圖片的顯示_第3頁
基于FPGA的VGA彩色圖片的顯示_第4頁
基于FPGA的VGA彩色圖片的顯示_第5頁
已閱讀5頁,還剩3頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、基于FPGA的VGA彩色圖片的顯示摘要:本論文依據(jù)VGA接口原理采用了Verilog HDL語言對Altera的Cyclone系列的FPGA進行了設(shè)計,通過MATLAB二值化得到圖片顏色的數(shù)據(jù),將得到的數(shù)據(jù)存儲到ROM中,然后讀取ROM中的數(shù)據(jù)直接送到顯示器,節(jié)省了計算機的處理過程,加快了數(shù)據(jù)的處理速度,節(jié)約了硬件本錢。此方案可以廣泛應(yīng)用于各種儀器,數(shù)字視頻系統(tǒng)、高分辨率的彩色圖片圖像處理、視頻信號再現(xiàn)等。論文關(guān)鍵詞:現(xiàn)場可編程門陣列,VerilogHDL,VGA圖像控制器,MATLAB,只讀存儲VGA接口顯示器是計算機系統(tǒng)以及智能儀器中重要的顯示終端設(shè)備。標準的VGA接口需要提供以下幾組根本

2、的信號:行同步信號Hsync場同步信號Vsync以及紅黃藍3路模擬信號。因此要使數(shù)字圖像信息在VGA接口顯示器正確、完整地顯示,就涉及到了時序的構(gòu)建和數(shù)字圖像信息的模擬化兩方面。如果接口前端無可供利用的時序信息,那么就可參照有關(guān)標準來構(gòu)造時序,這可利用可編程器件很方便地實現(xiàn);另外由于VGA是一個模擬的接口標準,因此數(shù)字圖像信息模擬化可用視頻DA 轉(zhuǎn)換器來實現(xiàn)。VGA標準是當前最常用的視頻顯示標準,還包括SVGA、XVGA等子標準。本文主要以640 x480,60Hz下VGA顯示標準為例,實現(xiàn)一個滿足多方面需求的VGA 顯示終端接口。設(shè)計可應(yīng)用于圖像處理、視頻信號再現(xiàn)、數(shù)據(jù)可視化分析等方面,實現(xiàn)

3、方法和器件的選取以及設(shè)計應(yīng)用列舉都具有典型的代表意義。理論分析VGA 顯示接口的硬件設(shè)計和原理(1) 根本原理說明這次系統(tǒng)設(shè)計使用的顯示器是滿足VGA標準的常用的彩色顯示器,由CRT陰極射線管構(gòu)成,彩色由G、R、B綠:Green,紅:Red,藍:Blue三基色組成。顯示那么用逐行掃描的方式解決,陰極射線槍發(fā)出電子束打在涂有熒光粉的熒光屏上,產(chǎn)生GRB三基色,合成一個彩色像素。硬件選用了Analog Device公司的ADV7123。ADV7123由三個10位高速DAC組成,最高時鐘速率為240MHZ,即可以到達最高240MS/s的數(shù)據(jù)吞吐率。當f(CLK)=140MHZ,f(OUT)=40MH

4、Z時,DAC的SFDR無雜散動態(tài)范圍為-53dB;當f(CLK)=40MHZ,f(OUT)=1MHZ時,DAC的SFDR為-70dB。ADV7123的BLANK引腳可以用來輸出空白屏幕。ADV7123在100Hz的刷新率下最高分辨率為1600 x1200。顯示器的顯示原理掃描從屏幕的左上方開始,從左到右,從上到下,進行掃描,每掃完一行,電子束回到屏幕的左邊下一行的起始位置,在這個回掃的時間內(nèi),CRT對電子束進行消隱,每行結(jié)束時,用行同步信號進行行同步;掃描完所有行,用場同步信號進行場同步,并使掃描回到屏幕的左上方,在離開屏幕右下角回到屏幕左上角的時間內(nèi)進行場消隱,預備下一場的掃描。信號接口對于

5、普通的VGA顯示器,其引出線共含5個信號:G、R、B:三基色信號;HS:行同步信號;VS:場同步信號。對于5個信號的時序驅(qū)動,對于VGA顯示器要嚴格遵循640 x480 x60Hz模式。其中640是指每一行中顯示的像素個數(shù),而480是指屏幕每一列所包含的像素個數(shù)。(2) Hs與Vs驅(qū)動信號的產(chǎn)生我們常把要顯示的數(shù)據(jù)如圖像處理結(jié)果存放到存儲器里,如果要把顯示存儲器里的圖像在VGA 接口顯示器顯示,大多情況下,掃描時序是需要我們構(gòu)造的。以640 x480,59. 94 Hz(60 Hz)為例。VGA工業(yè)標準規(guī)定具體地,在掃描過程中的時序圖如圖1所示:圖1 VGA行掃描、場掃描時序圖,每場信號對應(yīng)5

6、25個行周期,其中480行為圖像顯示行,每場有場同步信號,該脈沖寬度為2個行周期的負脈沖;每顯示行包括800點時鐘,其中640點為有效顯示區(qū),每行有一個行同步信號負脈沖,該脈沖寬度為96 個點時鐘。這樣我們可以知道,行頻為525x59. 94 Hz 即31469 Hz ,需要的點時鐘頻率為:525x800 x59.94 Hz約25 MHz。由上圖可知,實際上在真正的實現(xiàn)過程中,每一行掃描所花的時間實際上比顯示一行的像素所需的時間多了800-640=160個像素的時間而每一屏的掃描時間那么是顯示525行的時間,而不是480行的時間。VGA 顯示接口的驗證方法在正式調(diào)試或使用接口前,對設(shè)計進行根本

7、測試、論證是有必要的,通常方法是盡可能脫離其它不確定因素,只對關(guān)心這局部電路進行測試。如果在FPGA 里構(gòu)造的數(shù)據(jù)能夠按要求在顯示器上顯示,那么表示根本可以使用了。例如把計數(shù)器輸出作為DA的紅綠藍數(shù)字信號輸入,以H_Cnt作為計數(shù)脈沖,并引入上述的時序信號,正常情況下顯示器顯示結(jié)果是水平方向是反復由亮到暗,或是由暗到亮顯示。還可以利用FPGA 里的LPM_ROM 預存顯示數(shù)據(jù)輸出作為顯示數(shù)據(jù)。仍以H_Cnt作為計數(shù)脈沖,計數(shù)器作為地址發(fā)生器,輸出到LPM_ROM ,作為地址。簡便起見,我們把128*128的彩色圖像的信息保存到ROM中,每個像素點的顏色值保存為一個30位ADV7123由三個10

8、位高速DAC組成的數(shù)據(jù),其保存的順序為先第一行從左到右的128個像素顏色數(shù)據(jù),然后保存下一行的數(shù)據(jù),其他地址線共有14位。圖片RGB顏色的值通過用matlab將圖片二值化得到。步驟如下1、從文件讀取圖像到MATLABRGB=imread(1.bmp)命令窗口會一次顯示出圖像的R,G,B值2、 imtool(RGB)顯示讀入的圖片3、用紅,綠,藍 三色顯示圖片 r(:,:,1)=RGB(:,:,1);r(:,:,2)=0;r(:,:,3)=0;g(:,:,2)=RGB(:,:,2);g(:,:,1)=0;g(:,:,3)=0;b(:,:,3)=RGB(:,:,3);b(:,:,1)=0;b(:,

9、:,2)=0;subplot(1,3,1),imshow(r);subplot(1,3,2),imshow(g);subplot(1,3,3),imshow(b);4、獲取單色值 for i=1:128for j=1:128R(i,j)=RGB(i,j,1);G(i,j)=RGB(i,j,2);B(i,j)=RGB(i,j,3);endend;5、將R,G,B的值取出存放到R.txt G.txt B.txt 中6、將R,G,B數(shù)據(jù)按要求存放到mif文件中例如 R=255d G=10d B=1d,存儲的數(shù)據(jù)為 00FF0A01由于要轉(zhuǎn)化的數(shù)據(jù)量較多,可寫段程序來完成。#includevoid m

10、ain()FILE *R,*G,*B,*out;long start=6,t;int r,g,b;char buf【6】;R=fopen(R.txt,r);G=fopen(G.txt,r);B=fopen(B.txt,r);out=fopen(out.txt,w);while(!feof(R) | !feof(G) | !feof(B)fscanf(R,%d,r);fscanf(G,%d,g);fscanf(B,%d,b);t=start+;for(int i=5;i=0;i-)buf=t%16;t=t4;/輸出數(shù)據(jù)地址for(i=0;ifprintf(out,%X,buf);/數(shù)據(jù)打印局部f

11、printf(out,: 00);fprintf(out,%X,b/16);fprintf(out,%X,b%16);fprintf(out,%X,g/16);fprintf(out,%X,g%16);fprintf(out,%X,r/16);fprintf(out,%X,r%16);fputc( ,out);printf(任務(wù)以結(jié)束! );時鐘信號50MHZ進過FPGA上的鎖相環(huán)進行分頻處理得到25MHZ的時鐘信號。parameter Length = 128;/定義圖片顯示的大小parameter Width = 128;always (posedge VGA_CLK ) /行計數(shù)到達計數(shù)

12、周期將重置beginif(H_Cnt=H_Tg-1) H_Cnt else H_Cntendalways ( negedge Hs)/場計數(shù)到達計數(shù)周期將重置beginif(V_Cnt=V_Tg-1) V_Cnt else V_Cnt endalways ( posedge VGA_CLK )/產(chǎn)生行同步信號beginif(H_Cntelse Hsendalways (V_Cnt)/產(chǎn)生場同步信號beginif(V_Cntelse Vsendalways ( posedge VGA_CLK )begin /在顯示器上顯示范圍的控制if(H_Cnt=H_Ta+H_Tb+H_Tc H_Cnt V_

13、Cnt=V_Ta+V_Tb+V_Tc V_Cnt begin / ROM讀取控制和數(shù)據(jù)處理RGBaddressendelsebeginRGBend要把一幅圖像的數(shù)據(jù)寫入ROM,首先必須解決的就是寫入文件的格式問題。一般的方法是通過編程器把Intel Hex,或者二進制文件.bin逐字節(jié)寫入ROM。而圖像都具有固定的格式,如BMP,JPEG,GIF等,其中的BMP格式圖像是一種很常見的圖像格式,沒有經(jīng)過壓縮處理,且文件結(jié)構(gòu)相對簡單,易于處理,在本設(shè)計中采用了BMP圖像作為研究對象。將BMP文件直接轉(zhuǎn)化為Intel Hex文件比擬困難,因此可先將BMP格式文件轉(zhuǎn)化成mif格式文件,再由Quartus II 9.0直接將mif文件轉(zhuǎn)化為Intel Hex文件,最后再將圖像數(shù)據(jù)燒寫入ROM中,本設(shè)計中,我們首先通過MATLAB將要顯示的圖片進行處理得到RGB三個顏色的分量,然后通過編程將各顏色分量生成一個mif文件,用于初始化LPM_ROM,利用Quartus II 9.0自帶的MegaWizard Plug-In Manager創(chuàng)立存儲RGB值的ROM模塊, 同樣利用Quartus II 軟件生產(chǎn)一個存儲器初始化.mif文件,其大小為Word size=32,Number of words =16384,將生產(chǎn)的RGB顏色值導入到mif

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論