首页 VGA学习笔记

VGA学习笔记

举报
开通vip

VGA学习笔记 基于 Verilog的 VGA驱动设计(一)VGA时序分析 VGA时序分析 电阻 DAC转换网络和 640X480的 VGA时序图: 图 1 扫描频率 显示器采用光栅扫描方式,即轰击荧光屏的电子束在 CRT屏幕上从左到右 (受水平同步信号 HSYNC控制)、从上到下(受垂直同步信号 VSYNC控制) 做有规律的移动。光栅扫描又分逐行扫描和隔行扫描。电子束采用光栅扫描方式, 从屏幕左上角一点开始,向右逐点进行扫描,形成一条水平线;到达最右端后, 又回到下一条水平线的左端,重复上面的过程;当电子束完成右下角一点...

VGA学习笔记
基于 Verilog的 VGA驱动设计(一)VGA时序分析 VGA时序分析 电阻 DAC转换网络和 640X480的 VGA时序图: 图 1 扫描频率 显示器采用光栅扫描方式,即轰击荧光屏的电子束在 CRT屏幕上从左到右 (受水平同步信号 HSYNC控制)、从上到下(受垂直同步信号 VSYNC控制) 做有规律的移动。光栅扫描又分逐行扫描和隔行扫描。电子束采用光栅扫描方式, 从屏幕左上角一点开始,向右逐点进行扫描,形成一条水平线;到达最右端后, 又回到下一条水平线的左端,重复上面的过程;当电子束完成右下角一点的扫描 后,形成一帧。此后,电子束又回到左上方起点,开始下一帧的扫描。这种方法 也就是常说的逐行扫描显示。 Horizonal Timing 图 2 L 标注 通过不同的分压实现不同电压 L 高亮 L 标注 这些代表数据(RGB)每一个时钟周期一种有RGB三个信号构成不同的显示色彩 A (us) Line Period B (us) Sync pulse lenght C (us) Back porch D (us) Active video time E (us) Front porch Vertical Timing 图 3 O (ms) Frame Period P (ms) Sync length Q (ms) Back porch R (ms) Active video time S (ms) Front porch Horizonal timing information 水平扫描时序 图 4 Notes:  Active area is actually an active area added with 6 overscan bord er pixels (in some other VGA timing tables those border pixels are includ ed in back and front porch) L 标注 像素时钟频率,就是FPGA的时钟频率 L 标注 pix表示的是每一个像素 L 标注 表示需要800个像素,每个像素时间为1/25.175M =39.72ns。那么800个像素为800*39.72=31.777us ,也就是每行这么多时间 L 线条 Vertical timing information 垂直扫描时序 图 5 Notes:  Active area is actually an active area added with 4 overscan bord er lines (in some other VGA timing tables those border lines are included in back and front porch)  Note than when the active part of VGA page is widened, it passe s by the rising edge of the vertical sync signal in some modes (marked with *) 根据上面的水平和垂直扫描时序可以分析显示 800x600模式,FPGA系统时 钟采用 Spartan-3E Starter Kit板上的 50MHz的有源晶振。为了显示器显示效果 好,采用刷新频率为 72Hz。 以下以系统时钟频率为 50MHz,显示器显示 800x600模式为例分析水平扫 描和垂直扫描时序:系统时钟周期为 1/50MHz=20ns 水平扫描 Horizonal(Line) A 水平(行)周期为 1040个像素(Pix),时间为 1040x20ns=20.8us; L 标注 表示总共525行扫描。那么每帧数据是525*31.777=16.68ms.也就是60HZ L 线条 B 同步脉冲为 120像素(Pix); C 后沿为 61个像素(Pix); D 有效时间为 806个像素(Pix); E 前沿为 53个像素。 //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ////////// 水平扫描参数的设定 //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// parameter LinePeriod =12'd1040; parameter H_SyncPulse=10'd120; parameter H_BackPorch=10'd61; parameter H_ActivePix=10'd806; //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ////////// 水平扫描计数 //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// always @ (posedge clk or negedge rst_n) if(!rst_n) x_cnt <= 1; else if(x_cnt == LinePeriod) x_cnt <= 1; else x_cnt <= x_cnt+ 1; //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ////////// 水平扫描信号 hsync产生 //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// always @ (posedge clk or negedge rst_n) if(!rst_n) hsync_r <= 1'b1; else if(x_cnt == 1) hsync_r <= 1'b0; //产生 hsync信号 else if(x_cnt == H_SyncPulse) hsync_r <= 1'b1; 垂直扫描 Vertical(Frame) O 垂直扫描周期为 666个行扫描,时间为 666x1040x20ns=13853us; P 同步脉冲为 6个行扫描,时间为 6x1040x20ns=125us; Q 后沿为 21个行扫描,时间为 21x1040x20ns=436us; R 有效时间为 604个行扫描,时间为 604x1040x20ns=12563us; S 前沿为 35个行扫描,时间为 35x1040x20ns=728us。 //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ////////// 垂直扫描参数的设定 //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// parameter FramePeriod="10"'d666; parameter V_SyncPulse=10'd6; parameter V_BackPorch=10'd21; parameter V_ActivePix=10'd604; //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ////////// 垂直扫描计数 //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// always @ (posedge clk or negedge rst_n) if(!rst_n) y_cnt <= 1; else if(y_cnt == FramePeriod) y_cnt <= 1; else if(x_cnt == LinePeriod) y_cnt <= y_cnt+1; //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ////////// 垂直扫描信号 hsync产生 //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// always @ (posedge clk or negedge rst_n) if(!rst_n) vsync_r <= 1'b1; else if(y_cnt == 1) vsync_r <= 1'b0; //产生 vsync信号 else if(y_cnt == V_SyncPulse) vsync_r <= 1'b1; 并不是每个像素都能显示的,只有在有效区域像素区域内才能显示 RGB //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ////////// 垂直扫描信号 hsync产生 //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// wire valid; //有效显示区标志 assign valid = (x_cnt >= (H_SyncPulse+H_BackPorch)) && (x_cnt < (H_SyncPulse+H_BackPorch+H_ActivePix)) && (y_cnt >= (V_SyncPulse+V_BackPorch)) && (y_cnt < (V_SyncPulse+V_BackPorch+V_ActivePix)); 下面是测量逐行扫描 60HZ的电视盒的 VGA时序波形: 图 6水平—垂直同步信号 图 7水平—垂直同步信号 图 8 RED-BLUE颜色信号 图 9水平同步-R颜色 图 10颜色 R-垂直同步 图 11 初步整理的时序 行周期 32us(频率 31.3Hz) 行同步脉冲时间 7us 场频率 60Hz 基于 Verilog的 VGA驱动设计(二)VGA硬件结构 基于 Verilog的 VGA驱动设计(二)VGA硬件结构 一个 VGA显示器接口显示一个图片需要五个信号: 1)R、G和 B信号,也就是红、绿、蓝三原色。 2)HS和 VS(水平同步信号和垂直同步信号)。 R、G、B三原色是模拟信号,HS和 VS是数字信号。 下面介绍如何驱动 VGA连接器: L 线条 L 线条 L 标注 VGA的信号都是模拟信号,所以此处是这种连续变换的信号形式 VGA接口的脚 13和 14(HS和 VS)是数字信号,所以可以直接通过 FPG A的两个 IO口来控制(或者还可以接上低阻值的电阻,比如:10欧或者 20欧)。 脚 1、2和 3(R、 G和 B)是常值为 0.7V的 75欧的模拟信号。由 3.3V的 FP GA管脚输出,用三个 270欧的电阻刚好满足要求。连接头输入的电压驱动电阻 为 75欧,所以 3.3V变成为:3.3*75/(270+75)=0.72V , 非常接近 0.7V。 5, 6, 7, 8 和 10脚接地。 VGA的扫描方式是非交叉式扫描。 同步的极性: 水平和垂直方向都是低电平有效。 8色 VGA接口定义 管脚 定义 1 红基色 red 2 绿基色 green 3 蓝基色 blue 4 地址码 ID Bit 5 自测试 ( 各家定义不同 ) 6 红地 7 绿地 8 蓝地 9 保留 ( 各家定义不同 ) 10 数字地 11 地址码 12 地址码 13 行同步 14 场同步 15 地址码 ( 各家定义不同 ) 管脚对应的 VGA接口如下: RGB显示 FPGA直接用 IO口去连接 VGA的五个信号接口了,并且三原色信号接口输 入的只可能是数字信号(0或 1),因此驱动液晶屏上显示的颜色最多也就 8种, 一般来说,可以在 FPGA和 VGA接口间加一个 DA模块的设计,根据 DA位数 的大小决定实现的配色效果。理论上来说每个信号是可以有 256(就是把 0-0.7V 电压 256等分)个电平值,那么 RGB三个信号接口一共最多就会有 256的 3次 方就是 1400多万种色彩,在需要做真彩色的设计中一般都是需要 AD模块的。 但是如果仅仅用 VGA来显示诸如工业上的一些简单的菜单,就不需要那么丰富 的色彩,也许 8色,也许 64色或者 256色就足够了。 利用上图的电阻网络实现 DA的效果,使 VGA能得到 4x4x4=64种颜色的。 这样在工业控制中已经足够了。 (实现 8色显示)
本文档为【VGA学习笔记】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_112160
暂无简介~
格式:pdf
大小:1MB
软件:PDF阅读器
页数:13
分类:互联网
上传时间:2013-11-23
浏览量:36