VGA(Video Graphics Array接口是IBM制定的一种视频数据的传输标准,一种电脑显示器的典型接 口。VGA接口输出的是模拟图像。传统CRT显示器使用的是VGA接口,现在也有不少的液晶显示器或投 影仪也支持VGA接口。
##1. VGA接口外观和引脚
VGA接口是15pin的梯形插头,分成三排,每排五个,接口信号主要有五个:
- R(Red)
- G(Green)
- B(Blue)
- HS(Horizontal Synchronization)
- VS(Vertical Synchronization)
Note:VS和HS又称为帧同步(场同步)和行同步
2. VGA工作原理
图像的显示是以像素点为单位,标准的VGA分辨率是640x480,也有更高的分辨率如1024x768、1280x1024、1920x1200等,VGA显示器的一般刷新率为60Hz。每一帧图像的显示都是从屏幕左上角开始一行一行进行,行同步信号是一个负脉冲,行同步信号有效后,由RGB端输出到当前行显示各像素点的RGB电压值,当一帧显示结束后,由帧同步信号发送一个负脉冲,重新开始从屏幕的左上角开始显示下一帧图像。
由于CRT显示器是靠电子管发射的电子显示信息,因此CRT的电子束从一行的行尾到下一行的行头需要时间、电子束从屏幕的右下角回到左上角开始下一帧也需要时间。这些时间成为电子束的行消隐时间和场消隐时间,行消隐时间以像素为单位,帧消隐时间以行为单位;电子束处于消隐时间时,RGB端输出的电压为0,屏幕此时显示的是黑色。 VGA行扫描、场扫描时序示意图如下:
由上图可知,在标准的 640×480 的VGA上有效地显示一行信号需要96+48+640+16=800个像素点的时间,其中行同步负脉冲宽度为96个像素点时间,行消隐后沿需要48个像素点时间,然后每行显示640个像素点,最后行消隐前沿需要16个像素点的时间。所以一行中显示像素的时间为640个像素点时间,一行消隐时间为160个像素点时间。在标准的 640×480 的VGA上有效显示一帧图像需 2+33+480+10=525行时间,其中场同步负脉冲宽度为2个行显示时间,场消隐后沿需要33个行显示时间,然后每场显示480行,场消隐前沿需要10个行显示时间,一帧显示时间为525行显示时间,一帧消隐时间为45行显示时间。因此,在 640×480 的VGA上的一幅图像需要 525×800=420k 个像素点的时间。而每秒扫描60帧共需要约25M个像素点的时间。
2.1 不同分辨率下的VGA参数:
以分辨率1280*1024
、60 FPS为例,此分辨率下的时钟频率
##3. VGA显示的实现
VGA DAC ADV7123芯片完成数字信号到VGA模拟信号的转换,该芯片是三路高速、10bit输入的视频DA转换器,最大采样速度330M Hz(330 MSPS:330 Million Samples per Second),与多种高精度的显示系统兼容,可以广泛应用于HDTV、数字视频系统(1600*1200@100Hz)、高分辨率彩色图像处理、视频信号再现等。FPGA和ADV7123芯片之间的接口引脚包括3组 8bit 的颜色信号;
3.1 ADV7123 芯片
主要引脚功能描述:
芯片与FPGA连接参考:
FPGA开发板和ADV7123芯片之间的接口引脚包括3组8bit的颜色信号VGA_R[7:0], VGA_G[7:0],VGA_B[7:0],行同步信号VGA_HS,帧同步信号VGA_VS,VGA时钟信号VGA_CLK,VGA同步(低有效)VGA_SYNC_N, 和VGA消隐信号(低有效)VGA_BLANK_N
Verilog实现VGA显示:
1 | module vga_ctrl( |