热门标签 | HotTags
当前位置:  开发笔记 > 前端 > 正文

VGA原理详解

部分资料来源:https:www.cnblogs.comspartanarchive201108162140546.html最近要用ZYNQ开发版的HDMI做一些计

部分资料来源:https://www.cnblogs.com/spartan/archive/2011/08/16/2140546.html

最近要用ZYNQ开发版的HDMI做一些计算机视觉算法的显示功能,看着硬件管脚和例程只能发呆,于是决心去弄清楚HDMI的工作原理,查找了很多资料,都是碎片化的,不易懂。于是我加以整理,再以初学者(没有接触过任何视频传输接口)的角度在这篇博客里阐述。

       说起HDMI,就要先说起VGA了。为什么要先说VGA,因为VGA的原理容易理解。在理解VGA后,HDMI理解起来就也变得容易多了。HDMI原理会在我的下一篇博客详细介绍。VGA就是如今很多显示器上连接主机的信号传输接口。有三排15个引脚。如下图所示

 


标号

名称

描述

标号

名称

描述

1

RED

视频红色

分量

9

KEY

保留

2

GREEN

视频绿色

分量

10

SGND

同步信号地

3

BLUE

视频蓝色

分量

11

ID0

显示器ID

0

4

ID2

显示器ID

2

12

ID1

显示器ID

1

5

GND

13

HSYNC

行同步信号

6

RGND

红色地

14

VSYNC

场同步信号

7

GGND

绿色地

15

ID3

显示器ID

3

8

BGND

蓝色地

 

 

 

       VGA的显示效果取决于RGB三个分量的位数,最高24位(即RGB8位),16位,12位也都存在。

       那么我们传输显示数据是不是把每个像素点对应的三通道的数值传输到显示屏就行了?这是当然。那么对于分辨率800X600@60Hz,我们的传输的时钟频率是不是800*600*60=28.8MHz?答案是:否。为什么呢?我们先了解一下显示的原理。

      显示器的扫描方式:逐行扫描是扫描从屏幕左上角一点开始,从左像右逐点扫描,每扫描完一行,电子束回到屏幕的左边下一行的起始位置,在这期间,CRT对电子束进行消隐,每行结束时,用行同步信号进行同步;当扫描完所有的行,形成一帧,用场同步信号进行场同步,并使扫描回到屏幕左上方,同时进行场消隐,开始下一帧。

       从扫描方式中我们知道,行同步,场同步以及消隐区的概念。回到时钟上来。以行扫描为例子,在一行中由于需要行消隐,所以要求一定的时钟周期用于行消隐,当然也有行同步信号。那他们的时序是怎样的?

       上图中,要注意一点,就是a同步脉冲,b显示后沿,c显示时序段,d显示后沿。这四段组成了一个完整的时序。图中最后的同步脉冲a是下一个时序的。所以我们的消隐间隔就是上一个时序的显示前沿+本时序的同步脉冲+本时序的显示后沿。同步脉冲是包含在消音间隔中的。而显示时序段,就是我们上面提到的,用来传输像素点的时钟周期。

HSYNC                    行同步信号  VSYNC                      场同步信号

Hor Sync                行同步脉冲  Vcr Sync                    场同步脉冲

H Back Proch          行显示后沿  V Back Proch            场显示后沿

H Front Proch         行显示前沿  V Front Proch           场显示前沿

HorActiveVideo:行视频段      VerActiveVideo:场视频段

       上面参数与之前的行时序和场时序图中的a同步脉冲,b显示后沿,c显示时序段,d显示后沿,相对应。那么图中的三个矩形是什么呢?

       最大的矩形就是显示区加上消隐区(由每个行消隐段和每个场消隐段组成)。消隐段的组成在上面已经讲过。第二个矩形其实就是显示区。那么第3 个矩形中有4 个参数H Left BorderH Right BorderV Top Border V Bottom Border,在不同分辨率中这4 个参数不同,在800x600 及其以上的分辨率中这4 个参数为0。(第三个矩形的参数,老实说我在实际中,还没有遇到过,不知道具体作用)。

       VGA 的行时序是以像素为单位的,场时序是以行为单位的。VGA时序对同步时间、显示后沿时间、视频有效时间和显示前沿时间有特定要求,常用VGA 分辨率时序参数如下表所示。(a行同步脉冲,b行显示后沿,c行显示时序段,d行显示后沿,e行总时序,场时序类同)

       其中800x600以上分辨率的时钟频率 = 行总时序X场总时序X刷新频率,800x600640X480按照以上计算有偏差(可能这个偏差就是之前提到的第二个矩形的Border参数)。


推荐阅读
  • 本文详细介绍了如何安全地手动卸载Exchange Server 2003,以确保系统的稳定性和数据的完整性。根据微软官方支持文档(https://support.microsoft.com/kb833396/zh-cn),在进行卸载操作前,需要特别注意备份重要数据,并遵循一系列严格的步骤,以避免对现有网络环境造成不利影响。此外,文章还提供了详细的故障排除指南,帮助管理员在遇到问题时能够迅速解决,确保整个卸载过程顺利进行。 ... [详细]
  • SQL Server 2005 在安装过程中通常会伴随 VS2005 一起安装,并且为了便于数据库管理,还会安装 Management Studio Express 管理工具。然而,在实际使用中,用户可能会遇到登录故障。本文综合分析了这些登录问题的常见原因,并提供了多种有效的解决方法,包括检查配置设置、验证账户权限和网络连接等。通过这些措施,用户可以有效地诊断并解决 SQL Server 2005 的登录问题。 ... [详细]
  • 动态壁纸 LiveWallPaper:让您的桌面栩栩如生(第二篇)
    在本文中,我们将继续探讨如何开发动态壁纸 LiveWallPaper,使您的桌面更加生动有趣。作为 2010 年 Google 暑期大学生博客分享大赛 Android 篇的一部分,我们将详细介绍 Ed Burnette 的《Hello, Android》第三版中的相关内容,并分享一些实用的开发技巧和经验。通过本篇文章,您将了解到如何利用 Android SDK 创建引人入胜的动态壁纸,提升用户体验。 ... [详细]
  • SQLite数据库CRUD操作实例分析与应用
    本文通过分析和实例演示了SQLite数据库中的CRUD(创建、读取、更新和删除)操作,详细介绍了如何在Java环境中使用Person实体类进行数据库操作。文章首先阐述了SQLite数据库的基本概念及其在移动应用开发中的重要性,然后通过具体的代码示例,逐步展示了如何实现对Person实体类的增删改查功能。此外,还讨论了常见错误及其解决方法,为开发者提供了实用的参考和指导。 ... [详细]
  • 本文深入探讨了CGLIB BeanCopier在Bean对象复制中的应用及其优化技巧。相较于Spring的BeanUtils和Apache的BeanUtils,CGLIB BeanCopier在性能上具有显著优势。通过详细分析其内部机制和使用场景,本文提供了多种优化方法,帮助开发者在实际项目中更高效地利用这一工具。此外,文章还讨论了CGLIB BeanCopier在复杂对象结构和大规模数据处理中的表现,为读者提供了实用的参考和建议。 ... [详细]
  • 2014年3月16日 长沙多所高校联合举办第三次学术交流活动
    2014年3月16日,长沙多所高校联合举办了第三次学术交流活动。此次活动旨在促进各高校间的学术合作与交流,吸引了众多师生参与。交流内容涵盖了计算机科学、工程技术等多个领域,为参会者提供了丰富的学习和讨论机会。 ... [详细]
  • 本文介绍了UUID(通用唯一标识符)的概念及其在JavaScript中生成Java兼容UUID的代码实现与优化技巧。UUID是一个128位的唯一标识符,广泛应用于分布式系统中以确保唯一性。文章详细探讨了如何利用JavaScript生成符合Java标准的UUID,并提供了多种优化方法,以提高生成效率和兼容性。 ... [详细]
  • Golomb 编码是一种高效的变长编码技术,专门用于整数的压缩。该方法通过预定义的参数 \( M \) 将输入整数分解为商 \( q \) 和余数 \( r \) 两部分。具体而言,输入整数除以 \( M \) 得到商 \( q \) 和余数 \( r \),其中商 \( q \) 采用一元编码表示,而余数 \( r \) 则使用二进制编码。这种编码方式在数据压缩和信息传输中具有显著的优势,特别是在处理具有特定概率分布的数据时表现出色。 ... [详细]
  • Java 中 print、println 和 printf 的功能与区别详解
    在 Java 中,`print` 方法将参数内容输出到控制台,并将光标停留在最后一个字符的后面。而 `println` 方法不仅显示参数内容,还会在输出结束后自动添加一个换行符,使下一次输出从新的一行开始。此外,`printf` 方法则提供了更灵活的格式化输出选项,允许用户通过指定格式字符串来控制输出的格式和样式。这三种方法各有特点,适用于不同的输出需求。 ... [详细]
  • 在 Angular Google Maps 中实现图片嵌入信息窗口的功能,可以通过使用 `@agm/core` 库来实现。该库提供了丰富的 API 和组件,使得开发者可以轻松地在地图上的信息窗口中嵌入图片。本文将详细介绍如何配置和使用这些组件,以实现动态加载和显示图片的功能。此外,还将探讨一些常见的问题和解决方案,帮助开发者更好地集成这一功能。 ... [详细]
  • 深入探讨:Java 8 中 HashMap 链表为何选择红黑树而非 AVL 树
    深入探讨:Java 8 中 HashMap 链表为何选择红黑树而非 AVL 树 ... [详细]
  • 投融资周报 | Circle 达成 4 亿美元融资协议,唯一艺术平台 A 轮融资超千万美元 ... [详细]
  • 本文提出了一种高效的数据结构与算法,旨在解决超大整数(超出常规 `long` 类型范围)的加法运算问题。通过引入自定义的数据结构,该方法能够有效地存储和处理任意大小的整数,并在保证计算精度的同时,显著提升运算效率。实验结果表明,该方法在处理大规模数据时表现出色,具有较高的实用价值。 ... [详细]
  • FastDFS Nginx 扩展模块的源代码解析与技术剖析
    FastDFS Nginx 扩展模块的源代码解析与技术剖析 ... [详细]
  • 通过以下步骤可以确定SharePoint网站集对应的W3WP进程及其运行状态:首先,打开命令提示符(CMD),然后输入 `iisapp` 命令,该命令将列出当前IIS中所有Web应用程序及其对应的w3wp.exe进程。此外,还可以使用任务管理器或PowerShell脚本来进一步检查这些进程的详细信息和运行状态,以确保网站集的正常运行。 ... [详细]
author-avatar
pS看云梦山水Tn
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有