FPGA常见接口及逻辑实现(四)—— VGA

目录

一、VGA接口简介

二、VGA接口实现思路

三、VGA接口的Verilog实现

四、VGA接口仿真

五、VGA接口的板级验证

六、视频相关


一、VGA接口简介

        VGA,全称为Video Graphics Array,是一种视频传输接口,传输模拟视频信号,早期的CRT显示器使用的都是VGA视频接口。

        首先讲讲CRT显示器的显示原理,CRT是阴极射线管,CRT显示器使用射线管发射电子撞击荧光屏来产生图像,每个撞击点就是一个像素,每个像素有RGB三个分量,分别是像素点的三个基本颜色Red红,Blue蓝,Green绿。射线管从屏幕的最左上角开始向右扫描,扫描到最右时即显示了一行图像。射线管扫描到最右之后,为了让射线管回到左侧,并且在回来的时候不要发射多余的电子,系统会产生一个水平同步信号,接收到同步信号的射线管会经过一段时间回到左侧继续进行下一行扫描。当一整个屏幕扫描完成时,即显示了完整一帧图像后,射线管位于最右下角,为了让射线管回到左上角,系统会产生一个垂直同步信号,接收到同步信号后,射线管会经过一段时间回到左上角继续下一帧的扫描。

        有了CRT显示原理的基础,再来看看VGA接口信号,VGA接口信号主要有R,G,B,水平同步,垂直同步这五个,每个信号的作用从CRT显示原理中都能很清晰的认识到,接下来的问题就是VGA接口的时序。众所周知视频有两大基本参数,分辨率和帧率,分辨率和帧率不同,对应的VGA时序也不同,VESA标准规定了各种常见分辨率下VGA的信号时序,以下以最常见的1920x1080@60Hz为例:

图1.1 - VGA时序

图1.2 - 1920x1080@60Hz时序

        简单概括一下,1920x1080@60Hz的视频一帧实际上总共有2200x1125个像素,其中有1920x1080个有效像素,其余为消隐像素。完整的一行中有280个消隐像素,在这280个像素期间,在第88个像素拉高水平同步,再计数44个像素之后拉低水平同步;完整的一帧中有45行消隐行,在这45行中,在4行拉高垂直同步,再计数5行之后拉低垂直同步。

        以上就是VGA时序的关键信息,不难看出,实现VGA接口主要就是产生正确的水平同步信号和垂直同步信号,至于RGB数据,在有效数据期间并行发送即可。

二、VGA接口实现思路

        VGA接口逻辑简单,通过两个计数器就能实现其功能,一个行计数器来计数每一行的像素,一个场计数器来计数每一场的行数。在计数的过程中产生其他的控制信号。

        VGA的接口信号只有RGB和Hsync和Vsync,但是目前的数字显示接口在VGA的基础上又增加了一个DE信号,为了方便兼容数字显示接口,我们设计VGA接口时将DE信号也加入其中。DE信号是Display Enable信号,即显示使能,此信号有效时表示当前传输的RGB数据为有效图像数据。顾名思义,DE信号应该仅在时序图中的Addr Time拉高,同样可以通过计数器简单控制。

        还有一点需要注意的是,不同的分辨率下VGA的时序是不同的,为了兼容不同的分辨率,要留出分辨率配置接口,具体包括水平方向的total,active,syncstart,syncend,垂直方向的total,active,syncstart,syncend,这种配置方式是和赛灵思的图像传输IP保持一致的,使用相同的配置接口可以增加对赛灵思IP核的理解。

        由于前面已经放过VESA标准手册里的时序图,本期我就不自己画时序图了~下面直接进入代码环节。

三、VGA接口的Verilog实现

        话不多说,直接看代码:

`timescale 1ns / 1ps

//     wire    [15:0]      h_total;
//     wire    [15:0]      h_active;
//     wire    [15:0]      h_syncstart;
//     wire    [15:0]      h_syncend;

//     wire    [15:0]      v_total;
//     wire    [15:0]      v_active;
//     wire    [15:0]      v_syncstart;
//     w
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值