RGB565转VGA接口设计与匹配问题浅析

http://bbs.ednchina.com/BLOG_ARTICLE_2009641.HTM

最近所做的工作涉及到RGB565信号到VGA接口的转换问题,于是简单地研究了一下VGA接口设计相关的东西,写的有点长,可能大家看起来会比较累,见谅~

VGA(Video Graphics
Array)是IBM在1987年随PS/2机一起推出的一种视频传输标准,具有分辨率高、显示速率快、颜色丰富等优点,在彩色显示器领域得到了广泛的应用。目前VGA技术的应用还主要基于VGA显示卡的计算机、笔记本等设备。根据分辨率不同,VGA分为VGA(640x480)、SVGA(800x600)、XGA(1024x768)、SXGA(1280x1024)等。虽然VGA接口对于当前的PC机而言已经十分“老土”了,但不可否认的是目前它依然是PC机上应用最为广泛的视频接口。几乎所有的PC机都默认支持VGA接口。

VGA物理连接器接口共有15针,分成3排,每排5个孔,是显卡上应用最为广泛的接口类型,绝大多数显卡都带有此种接口。它传输红、绿、蓝模拟信号以及同步信号(水平和垂直信号)。
一般在VGA接头上,会标明每个接口编号。VGA接口15根针,其对应接口定义如下: 1.红基色 red  2.绿基色 green  3.蓝基色 blue
 4.地址码 ID Bit(也有部分是RES,或者为ID2显示器标示位2)  5.自测试 ( 各家定义不同 )(一般为GND)  6.红地  7.绿地
 8.蓝地  9.保留 ( 各家定义不同 )(KEY··我也不是很理解)  10. 数字地  11.地址码(ID0显示器标示位0)
 12.地址码(ID1显示器标示位1)  13.行同步  14.场同步  15.地址码 ( ID3或显示器标示位3 )。

VGA接口的时序总体来说比较简单,图1和图2分别为VGA接口行信号时序和场信号时序图。

图1 行信号时序

图2 场信号时序

行信号时序图主要给出了两方面的参数:一是行同步信号HSYNC的时间e,包括同步脉冲信号SYNC(a),后沿Back
porch(b),有效信号时间Active video time(c),前沿Front porch(d)。即e = a + b + c +
d;二是有效信号时间,这段时间内给出行像素的数据DATA,即每个像素点的RGB值。场信号时序与行信号时序类似。其中a,b,c,d,e,o,p,q,r,s各个参数的值与分辨率、刷新频率有关。图3为VGA接口常见显示模式的时序表,其中给出了各常见显示模式下行时序与场时序的参数。

表1 VGA常见显示模式时序表

以上是VGA接口的一些基础知识,这次研究的内容主要在于RGB565信号转VGA信号的接口设计与匹配问题,对VGA接口时序部分就不作深入研究了。

在应用中,经常用到的VGA接口信号只有5个,分别是红、绿、蓝三基色信号(1、2、3),行同步信号(13),场同步信号(14)。在这5个主要信号中,三基色信号相对比较特别,因为它们是电压值范围在0~0.714V的模拟信号,对应每一种基色的0.714V最多可被等分为256个电压值,即每种基色最多对应有256种颜色,对应可用8bit数字信号来表示,则三基色信号可用对应的24bit数字信号表示,因此24bitRGB信号所表示的色彩信号也被称为真彩色。低于24bit的RGB信号表示的彩色信号被称为伪彩色。行同步和场同步信号相对简单,为TTL电平。

在大多数情况下处理器输出的信号都是数字信号,因此要用到VGA接口就必须先将数字的三基色信号转换为电压值在0~0.714V之间的模拟电压信号。这次研究的重点就是将RGB565格式的数字信号转换为适应VGA接口的三基色模拟信号。所谓RGB565格式的数字信号就是一个16bit的数字信号,其中R、G、B这三种基色分别为5bit,6bit,5bit。故其实质为一个数模转换问题。

当然,除了数模转换的方法之外可能还有其它更加巧妙的方法,比如曾经看到特权同学在一篇博文中提出的在保证整体刷新频率不变的前提下,在每个行像素的时间内串行送出一个基色的多位数据,这样利用视觉暂留效果也可以达到不错的显示效果,唯一的缺点就是对于系统时钟的要求比较高,如果要实现16bit或者24bit的色彩信号的话难度会比较大。但对于较低分辨率下256色显示的实现还是很不错的方案。

对于解决RGB565信号到VGA的三基色模拟电压信号转换的问题,主要有两种解决方案,一种是利用通用的三通道视频DA转换芯片来实现(如ADI公司的ADV7125芯片),这种方案的主要优点在于转换速度快,可靠性高,缺点是成本高。另一种方案是通过自己搭建电阻网络来实现模数转换,这种方案相对采用DA转换芯片的方案而言,缺点在于转换速度和可靠性不如DA转换芯片,但优点在于成本低。

值得注意的是,VGA接口的三基色信号为模拟电压信号,且信号的速率较高,在1024*[email protected]的显示模式下就已经达到78.8MHz的频率,在如此高的频率下,对于VGA接口三基色模拟电压信号的阻抗匹配也就成为了一个不容忽视的问题。关于阻抗匹配问题,很多同学通常都是“谈虎色变”,在设计中对于这类问题也是视而不见。在频率不高的时候,对阻抗问题视而不见通常不会有什么问题,但一旦频率上去了,随之而来的各种诡异的问题就会让我们头疼不已。我想说的是,其实阻抗匹配问题本身也并不是那么高深。在这里,我不打算做任何让人头疼的数学公式和推导,只是想以这个VGA接口为例说一说我对于阻抗匹配问题的理解:为什么要做阻抗匹配,在什么地方该考虑阻抗匹配,怎样去做阻抗匹配。当然,这些理解很可能不正确,只是希望给同学们一个更加感性的认识,希望大家能够去其糟粕,取其精华,也欢迎各位前辈拍砖,帮助我树立起正确的认识~

在高速信号的传输中,传输线如果终端开路或接入高阻器件,就类似将一个小球(信号)丢向一堵墙,将会反向弹回,甚至回到源端以致对后续信号造成干扰。但如果那堵是橡皮泥墙(与传输线路上的阻抗接近的终端),小球(信号)就会嵌入到里面而不发生反弹,这就是“终端匹配”。当然,这里所说的只是阻抗匹配的一个作用,以便同学们对阻抗匹配的作用,即为什么要进行阻抗匹配有一个感性的认识。

接下来说在什么地方需要进行阻抗匹配的问题。其实需要进行阻抗匹配的原因主要是因为大多数集成电路芯片的输出阻抗都很小,而输入阻抗都很大。阻抗匹配的目的就在于使得上一级电路的输出阻抗与传输线的阻抗和下一级电路的输入阻抗尽量接近,以避免或减少前面所提到的问题以及其它问题的发生。在VGA接口中要求三基色的源端和终端匹配电阻均为75欧。

在利用通用的三通道视频DA转换芯片来实现VGA接口时就会遇到这个问题。这里以AD7125芯片为例。VGA接口为RS-343A电平标准。对于电流型的DA芯片AD7125而言,其标准负载要求为37.5欧,因而ADI公司的手册中对于DA芯片在RS-343A电平标准下的输出端连接给出了如图3所示的方案,即在源端和终端都并联75欧到地的电阻。在此方案中考虑了连接线(通常为同轴电缆,对地阻抗为75欧)的阻抗,故可得到DA芯片的负载刚好为源端电阻和同轴电缆对地阻抗并联,为75欧/2
= 37.5欧。

图3 RS-343A电平标准下DA芯片输出VGA三基色信号

但对于电压型的集成电路芯片(如视频缓冲器AD848)而言,在源端则应该采用串联电阻的形式实现匹配。图4中是ADI公司给出的DA芯片经视频缓冲器AD848后的输出端连接方案。由图中可以看到,在AD848的输出端采用了串联75欧电阻的方式进行匹配,在终端依然是并联75欧到地电阻。

图4 DA芯片经视频缓冲器AD848输出VGA三基色信号

在弄清楚上述问题之后,还有一点值得注意,那就是在VGA接口连接头输入的电压驱动电阻即为75欧,也就是通常情况下终端的75欧电阻是不需要我们自己去做的。这点从AD7125的芯片手册中也得到了验证,如图5所示,终端电阻是在显示器连接头内部的。

图5 AD7125典型输出电路

现在再来考虑用权电阻网络来实现RGB565信号到VGA接口三基色信号转换的电路。最基本的权电阻网络实现DA转换的原理这里就不说了,不熟悉的同学可以参考数字电路的教材。

在RGB565格式的数据中,红色占5位数据,绿色占6位数据,蓝色占5位数据。即红色信号R需要5位权电阻网络来实现,绿色信号G需要6位权电阻网络来实现,蓝色信号B需要5位权电阻网络来实现。

以红色信号R为例来说明权电阻网络参数的选取。由于R对应的数字信号为5位,故当该5位全为1的时候对应的模拟电压信号值应为0.714V,当5位全为0的时候对应的模拟电压信号值应为0。等效电路如图6所示。

图6 等效电路

其中Rx为5位权电阻网络的等效电阻,当5位全为1时

Rx = R || 2R || 4R || 8R || 16R

由图中电路可知,有如下关系

3.3/(Rx + 75) =  0.714/75

可以得出,等效电阻Rx = 271.6欧,R
=526.225欧。考虑到所有电阻都必须取标称值的原因,故将R取为500欧,这样跟理论值会存在一些误差。

根据同样的方法可以计算出,对于绿色信号G,权电阻R =
534.7125,考虑到所有电阻都必须取标称值的原因,故将R取为500欧。

这里有同学会提到匹配的问题,在前面我们已经说过,在终端,连接头输入的电压驱动电阻即为75欧,也就是通常情况下终端的75欧电阻是不需要我们自己去做的。而在源端,由于我们的权电阻网络是电流型的,因此若要做匹配的话可以采取并联电阻的方式。但要注意的是,在这里我们并没有用到集成DA芯片,源端匹配的负载阻抗并没有明确要求,因此在这里索性不做源端匹配。

最终用权电阻实现RGB565信号到VGA三基色模拟电压信号转换电路的原理图如图7所示。

图7 转换电路原理图

时间: 2024-08-26 12:02:35

RGB565转VGA接口设计与匹配问题浅析的相关文章

Atitit.自定义存储引擎的接口设计 api 标准化 attilax 总结  mysql

Atitit.自定义存储引擎的接口设计 api 标准化 attilax 总结  mysql 1. 图16.1:MySQL体系结构1 2. 16.7. 创建表create()虚拟函数:2 3. 16.8. 打开表 open()2 4. ---------------------------------------------------------------------------------------------------------------------2 5. 16.9. 实施基本的

[接口设计]从客户端的角度设计后端的接口

前言 兵马未动,粮草先行.在一款APP产品的各个版本迭代中,兵马的启动指的是真正开始敲代码的时候,粮草先行则是指前期的需求,交互,UI等评审准备阶段,还有本文要说的接口的设计与评审.虽然很多时候一个api接口的业务,数据逻辑是后端提供的,但真正使用这个接口的是客户端,一个前端功能的实现流程与逻辑,有时候只有客户端的RD才清楚,从某种意义来说,客户端算是接口的需求方.所以建议在前期接口设计和评审时,客户端的RD应该更多的思考和参与,什么时机调什么接口?每个接口需要哪些字段?数据含义怎么给?只有这些

基于FPGA的VGA显示设计(二)

上一篇:基于FPGA的VGA显示设计(一)     参照 CrazyBingo 的 基于FPGA的VGA可移植模块终极设计代码  的工程代码风格,模块化处理了上一篇的代码,并增加了一点其它图形. 顶层模块: 1 /**************************************************** 2 * Module Name : VGA_color_all.v 3 * Author : yllinux 博客:http://www.cnblogs.com/yllinux/

微信小程序的Web API接口设计及常见接口实现

微信小程序给我们提供了一个很好的开发平台,可以用于展现各种数据和实现丰富的功能,通过小程序的请求Web API 平台获取JSON数据后,可以在小程序界面上进行数据的动态展示.在数据的关键 一环中,我们设计和编写Web API平台是非常重要的,通过这个我们可以实现数据的集中控制和管理,本篇随笔介绍基于Asp.NET MVC的Web API接口层的设计和常见接口代码的展示,以便展示我们常规Web API接口层的接口代码设计.参数的处理等内容. 1.Web API整体性的架构设计 我们整体性的架构设计

2.35 Java基础总结①抽象②接口③设计抽象类和接口的原则④接口和抽象类的区别

java基础总结①抽象②接口③设计抽象类和接口的原则④接口和抽象类的区别 一.抽象 abstract作用:不能产生对象,充当父类,强制子类正确实现重写方法和类相比仅有的改变是不能产生对象,其他的都有,包括构造.属性等等任何一个类只要有一个抽象的方法就成了抽象类 抽象方法 public abstract A();①方法是抽象的,这个类也是抽象的:②子类必须重写抽象方法,除非子类也是抽象类 抽象类可以没有抽象方法,但一般不这么设计 二.接口 interface 接口也是Java的一种引用数据类型(J

php后台对接ios,安卓,API接口设计和实践完全攻略,涨薪必备技能

2016年12月29日13:45:27 关于接口设计要说的东西很多,可能写一个系列都可以,vsd图都得画很多张,但是由于个人时间和精力有限,所有有些东西后面再补充 说道接口设计第一反应就是restful api 请明白一点,这个只是设计指导思想,也就是设计风格 ,比如你需要遵循这些原则 原则条件REST 指的是一组架构约束条件和原则.满足这些约束条件和原则的应用程序或设计就是 RESTful.Web 应用程序最重要的 REST 原则是,客户端和服务器之间的交互在请求之间是无状态的.从客户端到服务

App接口设计原则-b

1.记住密码不是真的让你记住密码,这里仅仅指的是一种自动登录的手段.不管在任何地方,明文存储的密码都是安全隐患,是必须尽量避免的.你可以采用某种方式对用户名.密码以及时间戳(重要)进行签名,再次登录时使用签名后的数据进行登录. 2.客户端要包含超时机制,见过不止一次的服务端设计是通过客户端发送的userid来区分用户的.对此我真的已经无力吐槽了.最简单的办法是用session来记录用户状态.当然,考虑到客户端的特性,用户可能好几天都没有关闭一次,必须配合自动登录机制来保证客户端的在线. 3.接口

蓝牙(BLE)应用框架接口设计和应用开发——以TI CC2541为例

本文从功能需求的角度分析一般蓝牙BLE单芯片的应用框架(SDK Framework)的接口设计过程,并以TI CC2541为例说明BLE的应用开发方法. 一.应用框架(Framework) 我们熟知的Framework包括Android Framework.Linux QT.Windows MFC.应用框架抽象并封装实现了一般应用场景的需求,完成应用开发的80%,剩下的20%则以回调(callback)和接口的方式供应用开发人员调用以完成具体的需求. 一般Framework完成的工作包括:任务分

C++ 11可变参数接口设计在模板编程中应用的一点点总结

概述 本人对模板编程的应用并非很深,若要用一句话总结我个人对模板编程的理解,我想说的是:模板编程是对类定义的弱化. 如何理解“类定义的弱化”? 一个完整的类有如下几部分组成: 类的名称: 类的成员变量(或属性,C#中属性和成员变量还是有区别的): 类的成员方法: 从编译器的角度看,我们必须明确指定以上3部分,才算完整地定义了一个类并且编译通过. 所谓的“类弱化”,是指类的设计者在定义类的时候,并没有完整定义一个类,而是把类的其中一部分的定义留给类的使用者. 从传统才c++98看,通过模板类,使用