FPGA——VGA协议

news/2024/9/20 1:24:19/ 标签: fpga开发

VGA协议

  • VGA简介
    • 接口及引脚定义
    • 显示原理
    • 显示电路原理
      • VGA协议电压标准
      • 数字信号转化标准模拟信号方案
      • 数字信号时序标准
    • 模块设计

VGA简介

VGA,英文全称“Video Graphics Array”,译为视频图形阵列,是一种使用模拟信号进行视频传输的标准协议,由 IBM 公司于 1987 年推出,因其分辨率高、显示速度快、颜色丰富等优点,广泛应用于彩色显示器领域。由于 VGA 接口体积较大,与追求小巧便携的笔记本电脑背道而驰,在笔记本电脑领域,VGA 接口已被逐渐淘汰,但对于体积较大的台式机,这种情况并未发生,虽然 VGA 标准在当前个人电脑市场中已经过时,但因其在显示标准中的重要性和良好的兼容性,VGA 仍然是最多制造商所共同支持的一个标准,个人电脑在加载自己独特驱动程序之前,都必须支持 VGA 的标准。

接口及引脚定义

在这里插入图片描述

引脚定义引脚定义
1红基色(RED)9保留(各厂家使用)
2绿基色(GREEN)10数字地(GND)
3蓝基色(BLUE)11地址码0(ID BIT0)
4地址码 2(ID BIT2)12地址码 1(ID BIT1)
5保留(各厂家使用)13行同步(HSYNC)
6红色地(RGND)14场同步(VSYNC)
7绿色地(GGND)15地址码3(ID BIT3)
8蓝色地(BGND)

显示原理

VGA 显示器显示图像,是采用扫描的方式,将构成图像的像素点,在行同步信号和场同步信号的同步下,按照从上到下、由左到右的顺序扫描到显示屏上。
在VGA标准刚兴起的时候,彩色显示器通常基于CRT技术实现,其中色彩由RGB三基色组成。显示过程采用逐行扫描的方式,即阴极射线枪发出的电子束打击涂有荧光粉的荧光屏,产生RGB三基色,这些颜色合成一个彩色像素。扫描从屏幕的左上方开始,从左到右、从上到下进行。每扫完一行后,电子束回到下一行的左边起始位置继续扫描。
在扫描过程中,为了防止电子束在回到左上方的过程中破坏已有图像,需要进行行消隐和场消隐。行消隐是在每行结束时通过行同步信号进行同步,而场消隐则是在扫描完所有行后,通过场同步信号进行同步,并使扫描回到屏幕的左上方。
随着显示技术的发展,虽然出现了液晶显示器等新技术,但为了兼容传统的显示接口,液晶显示器通过内部电路实现了对VGA接口的完全兼容。这意味着,只要显示器带有标准的VGA接口,就可以直接使用标准的VGA时序来驱动显示器,而无需关心其内部的成像原理。
在这里插入图片描述

显示电路原理

VGA协议电压标准

由于是模拟信号,三色模拟信号分别对应颜色及电压值为:

RGB颜色
0.714V0V0V红色
0V0.714V0V绿色
0V0V0.714V蓝色
0V0V0.357V深蓝色
0V0V0V黑色

数字信号转化标准模拟信号方案

有两个方案:

  • 一种是采用AD高速数模转化芯片——ADV7123芯片
  • 另一种是采用低成本权电阻网络

采用AD芯片的会有官方文档讲解外围电路,本文在此处讲解权电阻网络。
请添加图片描述
为了让权重分配符合二进制数值权值,讲电阻设计为2的倍数。根据电流比例计算,由于 D 0 D_0 D0输出电压为VCC, D 1 D_1 D1输出电压也为VCC,因此根据电阻大小比值 I 1 = 2 I 0 I_1=2I_0 I1=2I0,则数值全值表如下:

{D1,D0} I I I
2’b000
2’b01 I I I
2’b10 2 I 2I 2I
2’b11 3 I 3I 3I

由表可知,该设计完美符合对模拟数值的二进制编码设计。于是,完整RGB565接口(除此之外,还有24位颜色RGB888,8位颜色显示RGB332,区别是颜色显示数量的不同)一共需要16根信号线,565也分别对应Red信号线5根,Green信号线6根,Blue信号线5根,其信号图如下。
请添加图片描述
由于VGA内部接口含有75欧姆的电阻,用于检测红绿蓝三种颜色对应的电压。如下图。
请添加图片描述
由此可以计算,对应所需的权电阻网络基础数值。先计算权值网络的等效电阻 R x R_x Rx
1 R x = 1 R + 1 2 R + 1 4 R + 1 8 R + 1 16 R \frac{1}{R_x}=\frac{1}{R}+\frac{1}{2R}+\frac{1}{4R}+\frac{1}{8R}+\frac{1}{16R} Rx1=R1+2R1+4R1+8R1+16R1
再计算最大电压 V r = 0.714 V V_r=0.714V Vr=0.714V
V r = 75 V c c R x + 75 V_r=\frac{75V_{cc}}{R_x+75} Vr=Rx+7575Vcc
计算得:
R = 500 Ω R=500\varOmega R=500Ω
计算得R后,根据R数值可以计算出其他对应的电阻。由于,电阻阻值可能选择相近的数值,因此,Vr、Vg、Vb可能最大值并不相同,因此,也会影响显示器的RGB显示范围。如使用AD芯片可以使得RGB动态显示范围更为精准。
到此,模拟部分电路讲解完毕。

数字信号时序标准

为了适应匹配不同厂家的 VGA 显示器,VGA 视频传输接口有自己的一套 VGA 时序标准,只有遵循 VGA 的时序标准,才能正确的进行图像信息的显示。由显示原理,我们可以知道,显示时序应该会分为行扫描和列扫描。在术语里,列扫描叫做场扫描。
在这里插入图片描述
行扫描周期包含:同步、后沿、左边框、有效图像、右边框、前沿。基本单位是一个时钟周期。
在这里插入图片描述
场扫描周期同样包含:同步、后沿、上边框、有效图像、底边框、前沿。基本单位是一个行的时钟周期。
在这里插入图片描述
实际参数表如下:
在这里插入图片描述
由相关数据,行扫描周期x场扫描周期x刷新率=时钟频率,因此,640x280
@60hz的时钟计算为:800x525x60=25.2MHz。在此处,由于25.2Mhz或者25.175不便于生成,因此通常使用25Mhz的时钟频率,则对应的显示帧率59.5hz。

模块设计

在这里插入图片描述
clk_gen:时钟生成模块,为了讲FPGA内部时钟进行分频或者倍频处理得到模块所需的时钟信号。(可以由PLL锁相环生成)
vga_pic模块:用于生成图像数据,得到对应点的坐标来产生对应位置的图像数据。
vga_ctrl模块:VGA驱动模块,用于生成VGA驱动信号及rgb颜色数据。
在这里插入图片描述


http://www.ppmy.cn/news/1523457.html

相关文章

ElementUI2.x El-Select组件 处理使用远程查找时下拉箭头丢失问题

1、问题描述 elementui2.x版本使用el-select组件的remote-method远程查找时&#xff0c;发现下拉箭头丢失了&#xff0c;且当查找接口返回数据为空时&#xff0c;也不会展开下拉列表来显示暂无数据提示&#xff1b; 2、源码解析 官网使用示例&#xff1a; <template>…

Java设计模式【命令模式】-行为型

1. 介绍 命令模式&#xff08;Command Pattern&#xff09; 是一种行为型设计模式&#xff0c;它将一个请求封装为一个对象&#xff0c;从而使我们可以用不同的请求对客户端进行参数化&#xff0c;并且支持请求的排队、记录日志以及撤销、重做等功能。命令模式将请求的发送者与…

JavaScript高级——函数

1、函数的含义&#xff1a; ① 实现特定功能的n条语句的封装体。 ② 只有函数是可以执行的&#xff0c;其他类型的数据不能执行。 2、为什么要用函数&#xff1f; ① 提高代码复用 ② 便于阅读交流 3、如何定义函数&#xff1f; ① 函数声明 ② 表达式 4、如何调用&#…

vue3+ant design vue实现文件上传(阿里云oss)~

1、效果图 2、自定义上传 <a-upload v-model:file-list"fileList" name"导入员工" action"" :customRequest"upDown" :beforeUpload"beforeUpload" :onChange"handleChange" remove"removeFile" ac…

使用MATLAB进行动力学分析与可视化

目录 一、动力学与MATLAB概述 二、动力学系统的建模 1. 简谐振子 2. 单摆 三、动力学系统的仿真 1. 使用ode45求解简谐振子 2. 使用ode45求解单摆 四、动力学结果的可视化 1. 二维曲线图 2. 相空间图 3. 三维曲面图 4. 动画制作 五、复杂动力学系统的建模与仿真 1…

数据恢复的基石:MySQL中的存储管理策略

在企业数据管理中&#xff0c;数据恢复的存储管理是确保数据安全和业务连续性的关键环节。MySQL作为广泛使用的数据库系统&#xff0c;其数据恢复的存储管理对于优化备份存储、提高恢复效率和保障数据完整性至关重要。本文将深入探讨如何在MySQL中实现数据恢复的存储管理&#…

OpenCV仿射变换和透视变换函数(C++)

文章目录 引言图像仿射变换 warpAffine()图像的旋转仿射变换 透视变换 warpPerspective()透视变换例子参考文献 **仿射变换相关函数** cv::transform()&#xff1a;对一组点进行仿射变换 cv::warpAffine()&#xff1a;对整幅图像进行仿射变换 cv::getAffineTransform()&#xf…

Qt篇——Qt在msvc编译下提示“C2001:常量中有换行符“的错误

在pro文件中添加以下配置即可&#xff1a; msvc{QMAKE_CFLAGS /utf-8QMAKE_CXXFLAGS /utf-8 }

Flask中的上下文(Context)

Flask中的上下文&#xff08;Context&#xff09;是一个核心概念&#xff0c;它对于理解和使用Flask框架进行Web开发至关重要。上下文在编程中通常指的是程序执行到某一时刻时&#xff0c;环境所提供的一系列状态信息&#xff0c;这些状态信息可以是变量、函数、类等&#xff0…

[Redis] Redis中的String类型

&#x1f338;个人主页:https://blog.csdn.net/2301_80050796?spm1000.2115.3001.5343 &#x1f3f5;️热门专栏: &#x1f9ca; Java基本语法(97平均质量分)https://blog.csdn.net/2301_80050796/category_12615970.html?spm1001.2014.3001.5482 &#x1f355; Collection与…

【机器学习】12. 线性回归 Residual 残差系数 R方

Sum of Squares Total (SST) 单个数据点&#xff08;观测值&#xff09;于响应变量的均值差的平方和。 Sum of Squares Regression (SSR) 预测值ŷi与响应变量均值差的平方和。 Sum of Squares Error (SSE) 预测值ŷi与观测值差的平方和。 R 2 1 − S S E / S S T S S R / …

前端技术(七)——less 教程

一、less简介 1. less是什么&#xff1f; less是一种动态样式语言&#xff0c;属于css预处理器的范畴&#xff0c;它扩展了CSS语言&#xff0c;增加了变量、Mixin、函数等特性&#xff0c;使CSS 更易维护和扩展LESS 既可以在 客户端 上运行 &#xff0c;也可以借助Node.js在服…

一台笔记本电脑的硬件都有哪些以及对应的功能

一台笔记本电脑的硬件通常包括多个关键组件&#xff0c;这些组件共同协作&#xff0c;确保电脑的正常运行。以下是笔记本电脑的主要硬件及其功能&#xff1a; 1. 中央处理器&#xff08;CPU&#xff09; 功能&#xff1a;CPU 是电脑的“大脑”&#xff0c;负责处理所有的计算…

bit-fields 生成macros

‌Bit-Fields Macros定义‌ Bit-fields macros是在C或C语言中&#xff0c;‌利用宏定义&#xff08;‌macros&#xff09;‌来方便地创建和操作位字段&#xff08;‌bit-fields&#xff09;‌的一种方式。‌位字段常用于节省内存&#xff0c;‌通过在一个字节中打包多个布尔值或…

【PHP小课堂】简单入门PHP中的过滤器相关函数

简单入门PHP中的过滤器相关函数 一般在业务开发中&#xff0c;我们对于一些参数数据的过滤大部分还是使用传统的 if 以及正则进行判断过滤。但其实 PHP 中也提供了一些过滤器&#xff0c;可以帮助我们方便地进行数据的过滤筛选以及部分替换操作。今天我们就来简单的学习一下这些…

设计模式之状态模式 (C++ 实现)

设计模式是软件开发中的一项重要技能&#xff0c;它提供了一种通用的解决方案以应对不同的设计问题。状态模式是一种行为型设计模式&#xff0c;适用于对象在不同状态下表现出不同的行为。通过实现状态模式&#xff0c;可以让代码更清晰、更易扩展与维护。本文将通过C实现状态模…

【开发工具】Maven Dependency Helper:IntelliJ IDEA的贴心助手,助力梳理依赖关系

一、引言 在Java项目开发过程中&#xff0c;依赖管理是一个至关重要的环节。Maven作为一个优秀的构建工具&#xff0c;已经成为了Java项目标配。然而&#xff0c;在管理项目依赖时&#xff0c;我们常常会遇到各种问题&#xff0c;如依赖冲突、依赖版本不兼容等。为了让开发者更…

菜鸟养成记第10集(滑窗算法)

固定窗口 示例 假设有一个数组 nums [1, 3, -1, -3, 5, 3, 6, 7]&#xff0c;我们需要找到长度为 3 的最大子数组之和。 nums [1, 3, -1, -3, 5, 3, 6, 7] window_size 3 max_sum float(-inf)for i in range(len(nums) - window_size 1):current_sum sum(nums[i:i wi…

华为OD机试 - 最大相连男生数 - 矩阵(Java 2024 E卷 200分)

华为OD机试 2024E卷题库疯狂收录中&#xff0c;刷题点这里 专栏导读 本专栏收录于《华为OD机试&#xff08;JAVA&#xff09;真题&#xff08;E卷D卷A卷B卷C卷&#xff09;》。 刷的越多&#xff0c;抽中的概率越大&#xff0c;私信哪吒&#xff0c;备注华为OD&#xff0c;加…

数据结构代码集训day16(适合考研、自学、期末和专升本)

本题来自B站up&#xff1a;白话拆解数据结构 今日题目就一个&#xff1a;约瑟夫环问题。 一个圈共有N个人&#xff08;N为不确定的数字&#xff09;&#xff0c;第一个人的编号为0或者1&#xff08;两个都可以&#xff0c;看你的程序如何编写&#xff09;&#xff0c;假设这边我…