VGA系列之一:VGA显示器驱动篇
在这周里边,学习的内容包括两个主要的部分:UART通信和VGA显示器。串口通信是这周的前半周讲的,下半周讲的是VGA。在我们的这篇文章中,先来讲下VGA。当然在VGA实验中,我们暂时只做了5个小实验:1.显示器显示3栏颜色;2.在第一个的基础上,在显示器左上角显示一个200×200的白框;3.在第二实验的基础上,让白框以一定的速度在显示器中跳来跳去(遇到边界时便往回跳);4.在第三个实验的基础上,将白框弄成“透明框”,在显示器中跳;5.在第三或第四个实验的基础上,在跳动的白框中显示一幅200×200的图像。
对于VGA显示器,大家可能会觉得比较高端,在玩单片机的时候,也就只是驱动一个1602或是12864液晶屏,但当你了解了VGA显示的原理之后,就不会有什么压力,特别是当你把VGA显示器驱动起来之后,还是会觉得VGA显示器也算比较简单的。
下面我们来说下VGA显示器的驱动原理,大家知道,我们的显示器是不同的分辨率,而大多显示器的分辨率都是接近4:3的,所以我们采用640×480@60Hz这样的一个分辨率来做我们的实验,后边做的4个实验也是基于这个分辨率。
这是我们的开发板与VGA接口的电路图:
电路中的信号名总共有两类:VGA的场同步和行同步信号(VGA_VS,VGA_HS),控制VGA颜色的(R,G,B)。
行同步和场同步,是来驱动我们的VGA显示的两个信号,而GRB是控制VGA显示的颜色。
下面这个图是基于640×480@60Hz这个分辨率的具体参数:(VGA显示协议下载)
而下面这个图是关于VGA显示的时序图,这只是咱们让显示器亮起来的一个时序图,并不指定在什么区域显示什么颜色。
接下来解释下这个图中信号,HSync和VSync分别是行同步信号和场同步信号,而其中的Video部分,就是显示的信号,但是真正有效的区域还是属于video中的“Addressable”Video,其余部分都是无效的,就是说在其他部分,都让其输出信号为“0”.可能这样说起来还是显得比较空洞,大家看下面这个图就会显得比较直接了。
在我们理解VGA时序的时候,我们也可以把VGA显示理解成“扫描”,而VGA扫描的开始是从屏幕的左上角开始,然后开始扫描第一行,第一行扫描完了,扫第二行,一直扫到屏幕的最后一行,然后回到初始位置开始扫描。在扫描的过程中,每一行的开始,有一个同步信号,就是图中的HSync,扫完整个屏幕结束后重新开始扫描有一个场同步信号VSync.
VGA显示的原理现在基本上已经讲清楚了,关于前面图中的具体参数的含义,相信大家也能看懂。
接下来就说下设计的思路:
1.图中Pixel clock = 25.175MHz说明每一个像素点刷新的时钟频率为25.175MHz,为了方便,咱们取25MHz,但是我们的开发板上的时钟为50MHz,所以为了实现分频,我们可以调用PLL这个ip核来生成我们的25MHz时钟。
2.Hor Total Time = 31.778; // (usec) = 100 chars = 800 Pixels 代表每一行占用800个像素点(实际显示的只有640个像素点)
3.Ver Total Time = 16.683; // (msec) = 525 lines 代表每一场有525行
4.根据其他的参数可以得知,行同步占用刷新96个像素点的时间,场同步占用2行,而行信号的有效显示为146~(146+640),场信号的有效显示为35~(35+480)。在其余的区域,是不给VGA显示信息的,就是说我们输出的RGB为0。
5.若要使我们的显示器显示出3种颜色,我们可以先给显示的有效区域分成3个部分,在有效区域的0~180行显示一种颜色,在180~360显示另外一种颜色,在剩下的360~480显示第三种颜色。
根据上面的思路,我们需要两个计数器,分别来计行信号刷新到了哪个像素点和场信号计到了哪一行。然后在场信号计到了某一行的时候,就控制显示的颜色。当然,最重要的一点,需要记得给行信号和场信号加上同步信号(我们的板子上的同步信号是为低电平,同步信号为高或低,需要根据板子的实际情况而定)。这样,就基本上完成了我们的这个小实验。
http://dengkanwen.com/70.html
VGA系列之一:VGA显示器驱动篇相关推荐
- RK3568平台开发系列讲解(设备驱动篇)中断下文之tasklet的使用
- RK3568平台开发系列讲解(设备驱动篇)V4L2程序实现流程
- RK3568平台开发系列讲解(设备驱动篇)内核空间与用户空间数据交互实验
- VGA显示器驱动设计与验证
VGA显示器驱动设计与验证 1.VGA显示原理 VGA显示器显示图像,并不是直接让图像在显示器上显示出来,而是采用扫描的方式,将构成图像的像素点,在行同步信号和场同步信号的同步下,按照从上到下.由左到 ...
- vga分配器 计算机无显示,为什么我用了VGA切换器后显示器再直接连接主机
公告: 为响应国家净网行动,部分内容已经删除,感谢读者理解. 话题:为什么我用了VGA切换器后显示器再直接连接主机会不显示回答:我遇到的问题是,切换到其中一台电脑能正确显示分辨率,切换到另一台电脑不能 ...
- VGA系列之一:VGA显示网络图片
一休哥是在读研究生的时候开始正式接触FPGA的,之所以这么说呢,是因为之前本科参加电赛的时候也学过一点FPGA的知识,可惜学习周期太短导致那次电赛惨败.可能世上就是有这么巧的事,刚上研究生的第一天,老 ...
- FPGA—HDMI 显示器驱动设计与验证(附代码)
目录 1.理论 2.实操 2.1 顶层模块 2.2 时钟生成模块 2.3 HDMI 驱动控制模块 2.3.1 编码模块 2.3.2 并行转串行模块 2.4 顶层仿真验证 3.总结 1.理论 HDMI简 ...
- VMware View 5.0从菜鸟到高手系列 10 –远程图形工作站配置篇
本文档依照PCoIP设备供应商丽台(Leadtek)提供的零客户机VP200P以及PCoI卡VP200H为例,为了介绍整个安装步骤.以下配置在VMware view 4.5中安装,但在更新的版本中如V ...
- VGA协议及VGA显示
VGA协议及VGA显示 一.VGA 1. 外部接口 2. 色彩原理 3. 扫描方式 二.彩色条纹显示 三.字符显示 四.图片显示 五.总结 参考 一.VGA 1. 外部接口 VGA并没有特殊的外部芯片 ...
最新文章
- 新手UI设计师必需要掌握的知识和技能
- debian手动安装java两种方法
- java random构造方法_Java中的Random()函数及两种构造方法
- 简单快速开发C\S架构程序用最简单的不分层最快的效率
- JMeter接口测试通过企业微信API记录(二)创建审批接口并测试
- python 多进程multiprocessing进程池pool tensorflow-yolov3 报错TypeError: 'ApplyResult' object is not iterable
- 前端技术以及工程化工具
- activiti脚本任务_Activiti中的安全脚本如何工作
- jersey put 服务_项目学生:带有Jersey的Web服务服务器
- 安全登录代码 php,PHP登录怎么写安全
- 又拍云,音视频CDN加速利器
- java的ssh获取id,使用SSH公钥(id_dsa.pub)实现免密码登录
- VisualSVN https 钩子失效 关闭服务器信任
- python编程新手常犯的错误_Python新手常犯的10个错误 - 里维斯社
- 怎么发文件到服务器异常,大神帮我看看,我用async-http框架上传文件到服务器发生异常...
- 人工智能的变革趋势: 从弱人工智能到强人工智能,再到生物智能
- cad批量选择相同块_怎样在cad中快速选定同一个块的所有对象?
- static、static inline、entern inline
- DW与JavaScript
- 使用maven打war包时报[ERROR] Failed to execute goal org.apache.maven.plugins:maven-war-plugin:2.2:war...