基于 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,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。