【友晶科技】基于权电阻网络的VGA彩条显示(DE0-CV、DE10-Lite)

VGA简介

VGA的缩写来自Video Graphics Array(视频图形阵列),是一种使用模拟信号进行视频传输的标准。

VGA标准的引脚定义如下:

上图pin1、2和3是模拟输入(范围0v到0.714v),pin13和pin14是数字信号输入(TTL电平)。

在VGA传输标准中,视频图像由红、绿和蓝三原色信号组成。FPGA端产生的三原色数字信号要经过数模转换过程转换成模拟信号,然后在行同步信号(pin13)和场同步信号(pin14)的同步下在三个通道(pin1、2和3)上独立传输。

VGA彩色原理

像素是产生各种颜色的基本单元。根据混色原理,每个像素的 R、G、B 三基色发光亮度比例不同可以出现不同的颜色。

当然,VGA 可以显示的色彩非常丰富,远不止表格里面这8种。R、G、B三个分量的每个分量都可以通过一个n位的二进制码来编码,二进制码的数值的大小最终反映在电压的大小上,从而控制每个基色的深浅。

一般VGA 显示真彩色需要R、G、B三个分量各8位,也就是24位来表示一个像素值。但为了节省引脚或者节省存储空间,在能满足显示效果的前提下可适当减少位数,比如DE10-Lite和DE0-CV开发板 用R、G、B各4位来表示,这样比真彩色图像数据量少一半多。DE10-Standard、DE1-SOC和DE2-115开发板是RGB三分量各占8位。

VGA 的 R、G、B 三信号都是模拟信号,其电压的高低可以表示颜色的深浅。 所以FPGA 端产生的视频信号需要通过数模转换的过程才能输出到 外部的VGA接口上去。

这个DA转换过程可以用专门的视频转换芯片ADV7123去实现(参考:友晶科技FPGA:基于FPGA和ADV7123的VGA彩条显示(DE10-Standard、DE1-SOC、DE2-115)),也可以用更简单的方案:使用一系列的电阻将数字信号转换撑模拟信号(权电阻网络)。

VGA显示原理

1. 行同步

VGA显示器图像由一个个像素点组成, 显示器电子束从左到右进行扫描。一行扫描结束以后,回到下一行继续扫描。每扫描一行所需的时间称为一个行扫描周期。下图是VGA行同步时序图:

添加图片注释,不超过 140 字(可选)

行同步时序的基本单位是完成一个像素点显示所需要的时间, 所以 a、b、c、d、e 的基本单位 是一个像素的扫描周期。

2. 场同步

当扫描完显示器上所有的行,就形成一帧。每扫描一帧所需的时间称为一个场扫描周期。下图是VGA场同步时序图:

场同步时序的基本单位是完成一行图像显示所需要的时间, 所以 o、p、q、r、s 的基本单位是一个完整的行扫描周期。

3. VGA分辨率

拿640x480@60的举例:

  • 640是指VGA显示器每一行有640个有效像素点;

  • 480是指VGA显示器每一帧有480个有效行;

  • 60 是VGA 显示器每秒钟刷新60次,也就是每秒显示60帧图像。

4. 像素时钟

结合上面的表格,从分辨率和行同步时序以及场同步时序可以计算得到像素的时钟, 比如640*480@60分辨率的像素时钟是:

800*525*60=25.2M

权电阻网络

前面提到FPGA端产生的三原色数字信号要经过数模转换转换成模拟信号传输到VGA显示器进行显示,这个数模转换过程可以用专门的视频转换芯片ADV7123去实现(如开发板DE10-Standard、DE1-SOC 、DE2-115),也可以用一系列并联的电阻来完成转换(如开发板DE10-Lite、DE0-CV),这种电路称之为权电阻网络。下面是一个权电阻网络示意图:

权电阻网络中,并联的电阻之间阻值成倍数关系,且电阻R越大,权值D越小。

根据并联电路计算Rx阻值:

即:

友晶科技的DE10-Lite和DE0-CV开发板的VGA电路都是采用的权电阻网络。

DE10-Lite的VGA电路:

DE0-CV的VGA电路:

拿DE-CV举例,为什么它的权电阻网络选用的是2K排阻和1K排组呢?

因为VGA显示器的VGA接口内部有一个 75ohm的电阻用于阻抗匹配 :

根据权电阻网络要求电阻值成倍数关系,我们可以计算如下:

但选贴片电阻有时可能没有一模一样阻值的电阻, 那就选阻值相近的电阻即可,所以针对2037ohm 近似选择2K的贴片电阻。

代码解析

本设计是在VGA显示器上显示分辨率为640x480@60Hz的三色彩条。

实现方法是在vga_ctrl.v模块里将场同步信号的中间480行依次分成三段,每一段(占160行)显示一种颜色。

1. VGA_top模块

在top层例化PLL和VGA控制模块(vga_ctrl.v)。

2. PLL模块

PLL 参考时钟来自系统50MHz时钟:

根据前面的计算得到640x480@60Hz像素时钟是25MHz:

3. VGA控制模块

先定义640x480@60Hz的行同步和场同步时序的参数:

然后是设计行计数器(计数器满代表一行结束):

以及设计场计数器(计数器满代表一帧结束):

接着就可以按照前面的时序图将行同步信号vga_hs和场同步信号vga_vs设计出来:

产生使能信号,并在使能信号的控制下输出R、G、B三色(根据cnt_vs计数到哪一行产生相应颜色的使能脉冲,然后根据使能脉冲输出相应颜色。):

管脚分配

DE10-Lite VGA管脚分配参考DE10-Lite_User_Manual.pdf 第36页:

DE0-CV的VGA管脚分配参考DE0_CV_User_Manual.pdf 第32页:

测试结果

以DE10-Lite为例进行测试:

源码下载

DE10-Lite工程:http://mail.terasic.com.tw/~dongliu/DE10-Lite/DE10-Lite_VGA.rar

DE0-CV工程:http://mail.terasic.com.tw/~dongliu/DE0-CV/DE0_CV_VGA.rar

  • 20
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值