日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

vivado实现VGA

發(fā)布時間:2025/3/15 编程问答 42 豆豆
生活随笔 收集整理的這篇文章主要介紹了 vivado实现VGA 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

vivado實現(xiàn)VGA

VGA原理

VGA 的英文全稱是Video Graphic Array,即顯示繪圖陣列。 VGA 支持在640X480 的較高分辨率下同時顯示16種色彩或256 種灰度,同時在320X240 分辨率下可以同時顯示256 種顏色。肉眼對顏色的敏感遠大于分辨率,所以即使分辨率較低圖像依然生動鮮明。 VGA 由于良好的性能迅速開始流行,廠商們紛紛在VGA 基礎上加以擴充,如將顯存提高至1M 并使其支持更高分辨率如800X600或1024X768,這些擴充的模式就稱之為VESA(Video Electronics Standards Association,視頻電子標準協(xié)會) 的Super VGA 模式,簡稱SVGA,現(xiàn)在的顯卡和顯示器都支持SVGA 模式。不管是VGA 還是SVGA,使用的連線都是15針的梯形插頭,傳輸模擬信號。

VGA接口信號
目前大多數(shù)計算機與外部顯示設備之間都是通過模擬VGA 接口連接,計算機內部以數(shù)字方式生成的顯示圖像信息,被顯卡中的數(shù)字/模擬轉換器轉變?yōu)镽、G、 B三原色信號和行、場同步信號,信號通過電纜傳輸?shù)斤@示設備中。本例中,VGA 接口是標準的15 針接口,有五個接口信號。

行同步(水平同步)與場同步(垂直同步)
為了實現(xiàn)發(fā)送端與接受端圖像各點一一正確對應,發(fā)送端與接收端的掃描必須同步。同步脈沖是周期穩(wěn)定,邊沿陡峭的脈沖。按我國電視標準,行同步脈沖的頻率等于行頻為15.625KHZ,行周期為64us。在電視技術中常以64us 作為時間單位,并以H 表示,即1H=64us。場同步脈沖頻率等于場頻為50HZ,場周期為20ms,312.5H。行同步脈沖寬度為4.7us 左右,場同步脈沖寬度為2.5~3H。

Verilog代碼實現(xiàn)VGA

輸入信號分別為: clk、 switch。 clk 是時鐘信號, switch 是選擇模式信號,分別對應橫彩條、豎彩條及兩種棋盤格。

module vga( clock, switch, disp_RGB, hsync, vsync ); input clock; //系統(tǒng)輸入時鐘 100MHz input [1:0]switch; output [2:0]disp_RGB; //VGA 數(shù)據(jù)輸出 output hsync; //VGA 行同步信號output vsync; //VGA 場同步信號 reg [9:0] hcount; //VGA 行掃描計數(shù)器 reg [9:0] vcount; //VGA 場掃描計數(shù)器 reg [2:0] data; reg [2:0] h_dat; reg [2:0] v_dat; reg flag; reg [1:0]cnt; wire hcount_ov; wire vcount_ov; wire dat_act; wire hsync; wire vsync; reg vga_clk; //VGA 行、場掃描時序參數(shù)表 parameter hsync_end = 10'd95, hdat_begin = 10'd143, hdat_end = 10'd783, hpixel_end = 10'd799, vsync_end = 10'd1, vdat_begin = 10'd34, vdat_end = 10'd514, vline_end = 10'd524; always @(posedge clock) beginif(cnt==3)cnt <= 0;elsecnt <= cnt + 1;endalways @(posedge clock) beginif(cnt < 2)vga_clk <= 1;elsevga_clk <= 0;end //************************VGA 驅動部分*******************************//行掃描 always @(posedge vga_clk)beginif (hcount_ov)hcount <= 10'd0;elsehcount <= hcount + 10'd1;end assign hcount_ov = (hcount == hpixel_end); //場掃描 always @(posedge vga_clk)beginif (hcount_ov)beginif (vcount_ov)vcount <= 10'd0;elsevcount <= vcount + 10'd1;endend assign vcount_ov = (vcount == vline_end); //數(shù)據(jù)、同步信號輸 assign dat_act = ((hcount >= hdat_begin) && (hcount < hdat_end)) && ((vcount >= vdat_begin) && (vcount < vdat_end)); assign hsync = (hcount > hsync_end); assign vsync = (vcount > vsync_end); assign disp_RGB = (dat_act) ? data : 3'h00; //************************顯示數(shù)據(jù)處理部分*******************************// always @(posedge vga_clk)begincase(switch[1:0])2'd0: data <= h_dat; //選擇橫彩條2'd1: data <= v_dat; //選擇豎彩條2'd2: data <= (v_dat ^ h_dat); //產生棋盤格2'd3: data <= (v_dat ~^ h_dat); //產生棋盤格endcaseend always @(posedge vga_clk) //產生豎彩條 beginif(hcount < 223)v_dat <= 3'h7; //白else if(hcount < 303)v_dat <= 3'h6; //黃else if(hcount < 383)v_dat <= 3'h5; //青else if(hcount < 463)v_dat <= 3'h4; //綠else if(hcount < 543)v_dat <= 3'h3; //紫else if(hcount < 623)v_dat <= 3'h2; //紅else if(hcount < 703)v_dat <= 3'h1; //藍elsev_dat <= 3'h0; //黑end always @(posedge vga_clk) //產生橫彩條 beginif(vcount < 94)h_dat <= 3'h7; //白else if(vcount < 154)h_dat <= 3'h6; //黃else if(vcount < 214)h_dat <= 3'h5; //青else if(vcount < 274)h_dat <= 3'h4; //綠else if(vcount < 334)h_dat <= 3'h3; //紫else if(vcount < 394)h_dat <= 3'h2; //紅else if(vcount < 454)h_dat <= 3'h1; //藍elseh_dat <= 3'h0; //黑end endmodule

總結

以上是生活随笔為你收集整理的vivado实现VGA的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。