基于Verilog的VGA顯示控制_第1頁
基于Verilog的VGA顯示控制_第2頁
基于Verilog的VGA顯示控制_第3頁
基于Verilog的VGA顯示控制_第4頁
基于Verilog的VGA顯示控制_第5頁
已閱讀5頁,還剩4頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、一、vga時(shí)序下面的圖是本人畫了一個(gè)晚上的結(jié)果,個(gè)人認(rèn)為能夠比較詳細(xì)的闡述vga的信號時(shí)序。vga的時(shí)序根據(jù)不同的顯示分辨率和刷新頻率會(huì)有變化,具體各種類型的時(shí)序信息可以參考下面的網(wǎng)站,這里非常詳細(xì)的說明的每一種顯示模式的vga時(shí)序信息。/vga-timing二、vga電平vsync,hsync為標(biāo)準(zhǔn)ttl電平,0v3.3v。rgb的電平在0v0.7v之間(0v為黑色,0.7v為全色)。三、程序頂層框圖vga產(chǎn)生行同步(hsync),場同步信號(vsync),并產(chǎn)生每個(gè)像素的地址輸入單口rom(顯存)中,rom輸出該點(diǎn)需要顯示的顏色值。四、單口rom(

2、顯存)設(shè)計(jì)程序的顯示模式為800*600,72hz刷新頻率,像素頻率為50mhz。每個(gè)像素需要顯示的顏色存儲(chǔ)在單口ram中,每種顏色用8個(gè)字節(jié)表示,則如果要顯示800*600分辨率,則需要800*600字節(jié)(480kb)的單口rom,由于fpga內(nèi)部沒有這么大的ram(我用的是ep2c8),因此我把屏幕上100*100個(gè)像素組成的矩形作為一個(gè)邏輯像素(即顯示同一種顏色),這樣只要8*6字節(jié)(48字節(jié)),用fpga自帶的ram是很容易實(shí)現(xiàn)的。rom中顏色存儲(chǔ)地址表將全屏劃分成8*6的方格,每個(gè)方格的顏色存儲(chǔ)在rom中,vga控制器不斷產(chǎn)生行坐標(biāo)(rom水平地址)和場坐標(biāo)(rom垂直地址),最后組

3、合成rom實(shí)際地址輸入rom中,rom輸出該地址的顏色值,顯示在lcd中。五、程序設(shè)計(jì)vga控制器程序module vga(clk,rst_n,hsync,vsync,vga_r,vga_g,vga_b);input clk; /50mhzinput rst_n; /復(fù)位信號output hsync; /行同步信號output vsync; /場同步信號/ r、g、b信號輸出output1:0 vga_r;output2:0 vga_g;output2:0 vga_b;/-reg10:0 x_cnt; /行坐標(biāo)(這里包括了行同步、后沿、有效數(shù)據(jù)區(qū)、前沿)reg9:0 y_cnt; /列坐標(biāo)(這

4、里包括了場同步、后沿、有效數(shù)據(jù)區(qū)、前沿)reg5:0 xcoloradd;reg2:0 ycoloradd;parameter left = 184, pixelwidth = 100, top = 29; always (posedge clk or negedge rst_n) if(!rst_n) x_cnt = 10d0; else if(x_cnt = 11d1040) x_cnt = 10d0; /行計(jì)數(shù)記到1040 else x_cnt = x_cnt+1b1;always (posedge clk or negedge rst_n)/產(chǎn)生行地址(rom水平地址) if(!rst

5、_n) xcoloradd = left & x_cnt left + pixelwidth) xcoloradd = left + pixelwidth & x_cnt left + 2*pixelwidth) xcoloradd = left + 2*pixelwidth & x_cnt left + 3*pixelwidth) xcoloradd = left + 3*pixelwidth & x_cnt left + 4*pixelwidth) xcoloradd = left + 4*pixelwidth & x_cnt left + 5*pixelwidth) xcoloradd

6、= left + 5*pixelwidth & x_cnt left + 6*pixelwidth) xcoloradd = left + 6*pixelwidth & x_cnt left + 7*pixelwidth) xcoloradd = left + 7*pixelwidth & x_cnt left + 8*pixelwidth) xcoloradd = 6b000111; else xcoloradd = 6b110000;/背景顏色地址always (posedge clk or negedge rst_n) if(!rst_n) y_cnt = 10d0; else if(y

7、_cnt = 10d666) y_cnt = 10d0; /場同步記到666 else if(x_cnt = 11d1040) y_cnt = y_cnt+1b1;/每計(jì)數(shù)完一行,場同步就加一 always (posedge clk or negedge rst_n)/產(chǎn)生列地址(rom垂直地址) if(!rst_n) ycoloradd = top & y_cnt top + pixelwidth) ycoloradd = top + pixelwidth & y_cnt top + 2*pixelwidth) ycoloradd = top + 2*pixelwidth & y_cnt t

8、op + 3*pixelwidth) ycoloradd = top + 3*pixelwidth & y_cnt top + 4*pixelwidth) ycoloradd = top + 4*pixelwidth & y_cnt top + 5*pixelwidth) ycoloradd = top + 5*pixelwidth & y_cnt top + 6*pixelwidth) ycoloradd = 3b101; else ycoloradd 10d184) & (x_cnt 10d29) & (y_cnt 10d629); /-reg hsync_r,vsync_r;always

9、 (posedge clk or negedge rst_n) if (!rst_n) begin hsync_r = 1b0; vsync_r = 1b0; end else begin hsync_r = 10d120; /產(chǎn)生hsync信號(行同步)when x_cnt=50,then hsync_r=1,else 0;低電平同步 vsync_r = 10d6; /產(chǎn)生vsync信號(場同步)my lcd is low sync endassign hsync = hsync_r;assign vsync = vsync_r;/- /顏色輸出assign vga_r1 = valid ? color7 : 1b0;assign vga_r0 = valid ? color6 : 1b0;assign vga_g2 = valid ? color5 : 1b0;assign vga_g1 = valid ? color4 : 1b0;assign vga_g0 = valid ? color3 :

溫馨提示

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

評論

0/150

提交評論