FPGA 20个例程篇:15.VGA显示八种颜色的彩条

news/2024/5/6 2:56:42/文章来源:https://blog.csdn.net/wandou0511/article/details/126936936

第六章 图像显示处理,经典再现

15.VGA显示八种颜色的彩条

        图像和视频处理可以说是FPGA中又一个经典地应用,使用FPGA做图像处理最核心的优势就在于:FPGA能进行实时流水线运算,从而达到更高的实时性,围绕着图像处理又有很多常用算法例如插值、翻转、变换、滤波、拼接等。VGA和HDMI是两个常见的视频传输接口,在这一章节中我们去熟悉VGA和HDMI成像的时序逻辑,并结合例程从入门到提高,循循渐进,带大家走进FPGA图像处理的世界!

        VGA即视频图形阵列,是IBM于1987年提出的一个使用模拟信号的电脑显示标准,VGA接口即电脑采用VGA标准输出数据的专用接口。VGA接口一共有15针,分成3排,每排5个孔,作为显卡上应用最为广泛的接口类型,绝大多数显卡都带有这种接口,它传输红、绿、蓝模拟信号和同步信号(水平和垂直信号)。因为VGA接口具有成本低、结构简单、应用灵活的优点,所以广泛应用于超市、车站、飞机场等公共场所的广告宣传和提示信息显示,也可以应用于工厂车间生产过程中的操作信息显示,还能以多媒体形式应用于日常生活。

     如图1所示是VGA接口的引脚定义,VGA接口是一种D型接口,采用非对称分布的 15针连接方式,一般在VGA接头上,通常会有1、5、6、10、11、15等标明每个接口的编号。VGA接口15根针,其对应接口定义如下:

1.红基色

2.绿基色

3.蓝基色

4.地址码 ID2显示器标示位2

5.自测试 一般为GND

6.红地

7.绿地

8.蓝地

9.保留

10. 数字地

11.地址码 ID0显示器标示位0

12.地址码 ID1显示器标示位1

13.行同步

14.场同步

15.地址码 ID3显示器标示位3

https://img-blog.csdnimg.cn/20210201104000799.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80MzU1MDc1Mg==,size_16,color_FFFFFF,t_70

图1 VGA接口引脚定义

       其实对于FPGA逻辑设计来说,我们关注更多的信号种类是红基色、绿基色、蓝基色、行同步和场同步信号,其他信号则是原理图和PCB设计时应该去关心的,通过控制红基色、绿基色、蓝基色、行同步和场同步信号这5个接口,即可以让显示器显示丰富多彩的颜色和各种各样的图像。

       在中学的物理课中我们可能做过棱镜的试验,白光通过棱镜后被分解成多种颜色逐渐过渡的色谱,色依次为红、橙、黄、绿、青、蓝、紫,这就是可见光谱。其中人眼对红、绿、蓝最为敏感,人的眼睛就像一个三色接收器的体系,大多数的颜色可以通过红、绿、蓝三色按照不同的比例合成产生,同样绝大多数单色光也可以分解成红绿蓝三种色光,这也就是三基色的原理。三种基色是相互独立的,任何一种基色都不能由其它两种颜色合成。红绿蓝是三基色,这三种颜色合成的颜色范围最为广泛,红绿蓝三基色按照不同的比例相加合成混色称为相加混色。

颜色

绿

R

0

0

1

1

0

0

1

1

G

0

0

0

0

1

1

1

1

B

0

1

0

1

0

1

0

1

表1 三基色的颜色编码

      如表1所示是三基色的颜色编码,从数学上的排列组合学来说RBG一共有8组合,也就是可以产生8种颜色,但显示器显示的色彩却是非常丰富,显然要远多于8种颜色。原因便是对于显示器来说,RGB三个信号其实是模拟信号,利用电压的高低,即可以表示颜色的深浅,于是根据这个原理我们就能产生丰富的色彩。比如R=3.3V,G=0V,B=0V,则显示器会示相当鲜艳的红色。如果G和B仍然是0V,而R改为1.8V,则显示器会显示比较浅的红色。R、G、B的电压范围控制从0~3.3V,而这种任意组合就可以表示非常多的颜色了。

       通过控制红绿蓝三基色,就可以控制1个像素的颜色,一幅图像是由非常多的像素组成的。举个例子对于640*480分辨率的图像,是由一行有640个且一共480行,这么多像素组合起来显示的图像,为了让显示器显示这么一幅图像,那么就要控制显示器的扫描枪一个一个像素地将颜色显示起来,像素变化的时间非常快,从而使人眼误认为所有像素是一起显示的。

图2 VGA电子束的成像原理

      如上图2所示即为VGA电子束的成像原理,显示器的扫描方式则是逐行扫描是扫描从屏幕左上角一点开始,从左向右逐点扫描,每扫描完一行,电子束再回到屏幕的左边下一行的起始位置,在这期间阴极射线管CRT对电子束进行消隐,每行结束时,用行同步信号进行同步;当扫描完所有的行,即形成了一帧图像,用场同步信号进行场同步,并使扫描回到屏幕左上方,同时进行场消隐,开始下一帧图像的显示。

       VGA 的行时序是以像素为单位的,场时序是以行为单位的,而VGA时序对同步时间、显示后沿时间、视频有效时间和显示前沿时间也有着特定要求,常用VGA 分辨率时序参数如下表2所示。

分辨率

时钟

行时序参数/像素

列时序参数/行

同步脉冲

显示后沿

显示区域

显示前沿

行总时序

同步脉冲

显示后沿

显示区域

行总时序

列总时序

640*480

@60Hz

25.175

 Mhz

96

48

640

16

800

2

33

480

10

525

800*600

@60Hz

40

Mhz

128

88

800

40

1056

4

23

600

1

623

1024*768

@60Hz

65

Mhz

136

160

1024

24

1344

6

29

768

3

806

1280*720

@60Hz

74.25

Mhz

40

220

1280

110

1650

5

20

720

5

750

1280*1024

@60Hz

108

Mhz

112

248

1280

48

1688

3

38

1024

1

1066

1920*1080

@60Hz

148.5

Mhz

44

148

1920

88

2200

5

36

1080

4

1125

表2 VGA常用分辨率时序参数

      如图3所示是豌豆开发板Artix7上VGA电路,VGA接口常用的是RGB565数据输出,也就是16位的高彩色VGA显示,其中红色信号占5位,绿色信号占6位,蓝色信号占5位,PCB设计上通过电阻匹配网络实现RGB数字信号到模拟信号的转换。

图3 豌豆开发板Artix7上VGA电路

       如图4和图5所示是VGA行时序和场时序的示意图,举例来说对于分辨率大小是640*480的图像,640*480的规格即显示屏幕上每行有640个像素且一共有480行。

图4 VGA行时序示意图

图5 VGA场时序示意图

        但需要注意的是,虽然大家看到的屏幕大小是640*480的,但是它的实际大小并不只有那么大,或者更通俗点地说,VGA扫描的范围是包含了肉眼能看到的640*480这块区域的更大区域,它会在周围一圈你看不到的区域部分进行扫描,所以在程序设计上,我们在处理扫描信号的时候要注意只有扫描到有效区域的时候才能把像素点数据传给VGA显示,如图6所示形象地描述VGA成像的显示原理。

图6 VGA成像的显示原理

        在这个例程中我们使用VGA接口实现一个基本的功能,即使用1024*768像素在每秒60帧图像分辨率的情况下,通过VGA接口连接屏幕从左到右依次显示白、黄、青、绿、紫、红、蓝、黑的8种颜色的彩条。

        注意到原理图中,对于RGB565成像有5根红基色、6根绿基色、5根蓝基色、行同步和场同步信号与FPGA芯片相连,通过这些信号按照上面说明的行场时序逻辑即可完成通过VGA接口传输各种各样的图像信息,如表6-3所示是video_driver模块的信号列表,在这个模块中我们去实现VGA显示白、黄、青、绿、紫、红、蓝、黑的8种颜色的彩条时序逻辑,如图7所示是VGA驱动模块的代码设计。

信号列表

信号名

I/O

位宽

pixel_clk

I

1

rst_n

I

1

video_hs

O

1

video_vs

O

1

video_rgb

O

16

表3 video_driver模块信号列表

图7 VGA驱动模块的代码设计

        如图8所示则是VGA显示八种颜色的彩条顶层文件的例化,同样地在顶层模块中,我们通过例化VGA驱动模块即可实现8种颜色彩条显示的效果,需要注意的是这里我们需要用PLL IP核倍频一个65Mhz的时钟给VGA驱动模块作为模块时钟使用,感兴趣的同学也可以手工计算下1*109ns/1344/806/60=15.3856ns,即大约折合成65Mhz的驱动时钟,下载程序后通过VGA接口连接到屏幕即可看到如图9所示的八种颜色的彩条。

图8 VGA显示八种颜色的彩条顶层文件的例化

图9 VGA显示八种颜色的彩条

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_10290.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【VUE】process.env,require,vite.config.js等问题的解决

一、简介 这个系列是想将自己做过的Cesium项目整理回顾,同时也希望能给看到的文章的朋友一点帮助。大部分内容规划都是简单的功能应用,后面可能会选我自己感兴趣的功能做分享。 本文主要介绍工程的技术选型,环境搭建和代码的简单实现。首先…

Spring Security(一)- SpringSecurity 框架简介

文章目录一、SpringSecurity 框架简介1. 概要2. Spring Security 与 Shiro 对比2.1 Spring Security2.2 SpringSecurity特点2.3 Shiro2.4 Shiro特点2.5 小结3. SpringSecurity项目模块和依赖二、SpringSecurity 入门案例1. 添加相关依赖2. 运行项目3. 权限管理中的相关概念&…

大字节数组和 MemoryStream 的替代方案

发表于2019 年 12 月 9 日 在 .NET 中,处理二进制数据时通常使用字节数组;例如,在方法之间传递文件的内容、编码/解码文本、从套接字读取数据等。这些数组可能会变得非常大(最大为兆字节),OutOfMemoryException如果运行时无法运行,最终可能会导致被抛出分配足够大的内存…

redis数据结构基本语法

Redis Study 学到技巧 快捷键 ctrl [ typora很好用,有个问题就是换行会自动跟上面的格式,按删除键也无效 ctrl [就会把前面的格式给稀释掉。 经验 有关typora上传博客园图片缩放的问题,办法就是在typora中粘贴图片以后发现缩放没有效果&#xf…

Windows中使用SMB共享文件夹

SMB共享文件夹 简单步骤:打开【控制面板】 打开【启动或关闭windows功能】 打开【SMB1.0/CIFS 文件共享支持】 重启电脑 到磁盘中选择需要共享的文件夹 选中文件夹【属性】-> 【共享】->【共享】->添加【Everyone】用户 -> 权限【读取/写入】->确定共享 打开【…

那么我们应该如何优化Youtube的视频呢?

除了ins,Facebook,Twitter这类日常发帖分享型的社交网站外,还有其他的视频类网站也可以用于跨境电商的营销推广。作为视频类的社媒网站,YouTube可以说是全球第一大视频类社媒营销网站,在拓展视频内容的同时&#xff0c…

第3章 Kafka架构深入

3.1 Kafka工作流程及文件存储机制 Kafka中消息是以topic进行分类的,生产者生产消息,消费者消费消息,都是面向topic的。 topic是逻辑上的概念,而partition是物理上的概念,每个partition对应于一个log文件,该…

java线程池

目录 一、浅谈对线程池的理解 二、线程池常用类和接口 三、线程池的核心参数 四、线程池的状态 五、线程池的执行流程 六、常见的线程池 FixedThreadPool:线程数固定的线程池 CachedThreadPool:可缓存线程池,线程数根据任务动态调整的…

肯德尔(Kendall)相关系数概述及计算例

目录 1. 何谓相关(correlation)? 2. 肯德尔相关 3. 肯德尔相关的假设 4. 计算公式及代码示例 4.1 Tau-a 4.2 Tau-b 1. 何谓相关(correlation)? 相关是指一种双变量分析(bi-variate analysis&#xff…

不知道数字化转型有什么意义?实现数字化转型价值都有哪些路径

近些年来,随着人工智能、云计算、大数据、物联网、区块链等新一代前沿技术的普及应用,社会的方方面面都有了信息化、数字化的身影,并通过相关技术、理念、应用创造了从未体验过的数字化社会,对整个社会形式进行了一次深层次的转型…

JVM原理及优化_垃圾回收器

文章目录JVM原理及调优_垃圾回收器什么是垃圾收集器?垃圾回收器详解SerialParNewParallel ScavengeSerial OldParallnel oldCMSG1JVM原理及调优_垃圾回收器 什么是垃圾收集器? 垃圾收集器是垃圾回收算法(引用计数法、标记清除法、标记整理法…

PLM是什么?为什么要上PLM?有什么好处?

PLM是什么?或许早在五年前还有这个疑问,但如今已成为行业竞争的必需品。 PLM即对产品从创建、使用到最终报废,是一种对全生命周期产品数据信息进行管理的理念;是一种应用于在单一地点的企业内部、分散在多个地点的企业内部&#…

SpringBoot JavaBean对象拷贝 orika

前言: 日常开发中,经常会遇到将一个对象bean值复制到另一个bean,一般通过set方法一个一个属性写上去,比较麻烦。当然也有spring、apache的属性拷贝工具,这里介绍一下orika orika 是什么? Orika 是一个 Java Bean 映射框架,它可以递归地将数…

Oracle 11g第一次启动SQL Developer所出现的问题

Oracle 11g第一次启动SQL Developer提示缺少快捷方式 1)问题复刻 当第一次启动SQL Developer的时候提示我 :“Windows 正在查找SQLDEVELOPER.BAT。如果想亲自查找文件,请单击"浏览” 。这个时候如果没有点击浏览,过一会他会自动跳到图二,此时就算点击了修复也无济于事…

zabbix服务器搭建

文章目录zabbix1. 环境准备2. zabbix服务器安装3. 监控本机4. 通过zabbix-agent监控远程机器5. zabbix用户与用户群组6. 监控项与应用集7. 为监控项创建图形8. 自定义监控项9. 为自定义监控项创建图形10zabbix zabbix官网 1. 环境准备 主机ipzabbix_server192.168.44.10agen…

什么是自动采矿卡车autonomous mining trucks

自动采矿卡车 (AMT) 是无人驾驶的矿山重型车辆,可以感知环境并在矿山运输路面上导航,无需任何人工干预。AMT 降低了设备与辅助设备或配备的手动车辆 (EMV) 接触的风险。 矿业在世界经济中发挥着重要作用。随着发达国家追求零伤亡,进入技术工人…

Jenkins Pipeline项目实战

一、项目流程 Jenkins从git拉取指定tag代码 Jenkins构建代码、镜像以及推送镜像到镜像库 Jenkins通过Publish Over SSH通知远程服务器拉取镜像、远程服务器通过镜像启动容器二、实现流程 1、从代码仓中拉取Jenkinsfile文件 2、从git拉取指定tag代码 配置Git参数: 剩下的部分需…

Spring学习的第二天

1. Spring 管理第三方资源导入Druid 坐标<dependency> <groupId>com.alibaba</groupId> <artifactId>druid</artifactId> <version>1.1.16</version> </dependency> <dependency>配置数据源对象作为Spr…

【牛客刷题】每日一练—ArrayList的实例强化

✨hello&#xff0c;进来的小伙伴们&#xff0c;你们好呐&#xff01;✨ &#x1f362;&#x1f362;系列专栏&#xff1a;【牛客刷题】 &#x1f32f;&#x1f32f;作者简介&#xff1a;一名大三在读的科班Java编程小白&#xff0c;星夜漫长&#xff0c;你我同行! &#x1f37…

383.赎金信

题目来源&#xff1a; 力扣https://leetcode.cn/problems/ransom-note/题目简介&#xff1a; 判断字符串a中的字母能不能构成字符串b&#xff0c;能的话就返回true&#xff0c;不能就返回false&#xff0c;字符串a里的字母每个都只能用一次&#xff0c;不能重复使用 思路&am…