VGA介绍

以下内容来自正点原子FPGA开发指南,觉得讲的不错,就搬了过来。

一、VGA简介

VGA的全称是Video Graphics Array,即视频图形阵列,是一个使用模拟信号进行视频传输的标准。早期的CRT显示器由于设计制造上的原因,只能接收模拟信号输入,因此计算机内部的显卡负责进行数模转换,而VGA接口就是显卡上输出模拟信号的接口。如今液晶显示器虽然可以直接接收数字信号,但是为了兼容显卡上的VGA接口,也大都支持VGA标准。
在这里插入图片描述

VGA接口定义及各引脚功能说明如图 18.1.2所示,我们一般只用到其中的1(RED)、2 (GREEN)、3(BLUE)、13(HSYNC)、14(VSYNC)信号。引脚1、2、3分别输出红、绿、蓝三原色模拟信号,电压变化范围为 0~0.714V,0V代表无色,0.714V 代表满色;引脚13、14输出TTL电平标准的行/场同步信号。
在这里插入图片描述
在VGA视频传输标准中,视频图像被分解为红、绿、蓝三原色信号,经过数模转换之后,在行同步(HSYNC)和场同步(VSYNC)信号的同步下分别在三个独立通道传输。VGA在传输过程中的同步时序分为行时序和场时序,如图 18.1.3、图 18.1.4所示。

在这里插入图片描述
从上面两幅图中我们可以看到VGA传输过程中的行同步时序和场同步时序非常类似,一行 或一场(又称一帧)数据都分为四个部分:低电平同步脉冲、显示后沿、有效数据段以及显示前沿。

行同步信号HSYNC在一个行扫描周期中完成一行图像的显示,其中在a段维持一段时间的低电平用于数据同步,其余时间拉高;在有效数据期间(c段),红绿蓝三原色数据通道上输出一行图像信号,其余时间数据无效。

与之类似,场同步信号在在一个场扫描周期中完成一帧图像的显示,不同的是行扫描周期的基本单位是像素点时钟,即完成一个像素点显示所需要的时间;而场扫描周期的基本单位是完成一行图像显示所需要的时间。

早期的VGA特指分辨率为640X480的显示模式,后来根据分辨率的不同,VGA又分为VGA(640x480)、SVGA(800x600)、XGA(1024x768)、SXGA(1280x1024)等。不同分辨率的VGA显示时序是类似的,仅存在参数上的差异,如图 18.1.5所示。

需要注意的是,即便分辨率相同,刷新速率(每秒钟图像更新次数)不一样时,对应的VGA像素时钟及时序参数也存在差异。例如,显示模式 “640480@75”刷新速率为75hz,与相同分辨率下刷新速率为60hz的“640480@60”模式相比,像素时钟更快,其他时序参数也不尽相同。

在这里插入图片描述

二、FPGA上VGA接口部分的原理图

以正点原子的开拓者开发板为例

这部分的原理图很关键,因为我们并不是在代码中直接将图像数据转换成RGB三路模拟信号,而是由开发板上的转换电路实现的。我们在代码中要做的,就是获取正确的RGB565格式的数据,然后由转换电路转换成RGB三路模拟信号输出给显示器。

在这里插入图片描述

从上图中可以看到,FPGA管脚输出的颜色数据位宽为16bit,数据格式为RGB565,即数据高5位表示红色,中间6位表示绿色,低5位表示蓝色。RGB565格式的数据一共可表示65536种颜 色,此外常用的颜色数据格式还有RGB888,数据位宽越大,可以表示的颜色种类就越丰富。

由前面的简介我们知道,VGA传输的是模拟信号,因此需要对FPGA输出的RGB565颜色数据进行数模转换。此过程可以通过专用的视频转换芯片(如ADV7123)来实现,在这里我们采用另外一种更简单的方案——利用电阻匹配网络来实现数字信号到模拟信号的转换,如图18.3.1所示。

posted @ 2021-01-26 20:45  耐心的小黑  阅读(2268)  评论(0编辑  收藏  举报