在这周里边,学习的内容包括两个主要的部分: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显示器驱动篇相关推荐

  1. RK3568平台开发系列讲解(设备驱动篇)中断下文之tasklet的使用

  2. RK3568平台开发系列讲解(设备驱动篇)V4L2程序实现流程

  3. RK3568平台开发系列讲解(设备驱动篇)内核空间与用户空间数据交互实验

  4. VGA显示器驱动设计与验证

    VGA显示器驱动设计与验证 1.VGA显示原理 VGA显示器显示图像,并不是直接让图像在显示器上显示出来,而是采用扫描的方式,将构成图像的像素点,在行同步信号和场同步信号的同步下,按照从上到下.由左到 ...

  5. vga分配器 计算机无显示,为什么我用了VGA切换器后显示器再直接连接主机

    公告: 为响应国家净网行动,部分内容已经删除,感谢读者理解. 话题:为什么我用了VGA切换器后显示器再直接连接主机会不显示回答:我遇到的问题是,切换到其中一台电脑能正确显示分辨率,切换到另一台电脑不能 ...

  6. VGA系列之一:VGA显示网络图片

    一休哥是在读研究生的时候开始正式接触FPGA的,之所以这么说呢,是因为之前本科参加电赛的时候也学过一点FPGA的知识,可惜学习周期太短导致那次电赛惨败.可能世上就是有这么巧的事,刚上研究生的第一天,老 ...

  7. FPGA—HDMI 显示器驱动设计与验证(附代码)

    目录 1.理论 2.实操 2.1 顶层模块 2.2 时钟生成模块 2.3 HDMI 驱动控制模块 2.3.1 编码模块 2.3.2 并行转串行模块 2.4 顶层仿真验证 3.总结 1.理论 HDMI简 ...

  8. VMware View 5.0从菜鸟到高手系列 10 –远程图形工作站配置篇

    本文档依照PCoIP设备供应商丽台(Leadtek)提供的零客户机VP200P以及PCoI卡VP200H为例,为了介绍整个安装步骤.以下配置在VMware view 4.5中安装,但在更新的版本中如V ...

  9. VGA协议及VGA显示

    VGA协议及VGA显示 一.VGA 1. 外部接口 2. 色彩原理 3. 扫描方式 二.彩色条纹显示 三.字符显示 四.图片显示 五.总结 参考 一.VGA 1. 外部接口 VGA并没有特殊的外部芯片 ...

最新文章

  1. 新手UI设计师必需要掌握的知识和技能
  2. debian手动安装java两种方法
  3. java random构造方法_Java中的Random()函数及两种构造方法
  4. 简单快速开发C\S架构程序用最简单的不分层最快的效率
  5. JMeter接口测试通过企业微信API记录(二)创建审批接口并测试
  6. python 多进程multiprocessing进程池pool tensorflow-yolov3 报错TypeError: 'ApplyResult' object is not iterable
  7. 前端技术以及工程化工具
  8. activiti脚本任务_Activiti中的安全脚本如何工作
  9. jersey put 服务_项目学生:带有Jersey的Web服务服务器
  10. 安全登录代码 php,PHP登录怎么写安全
  11. 又拍云,音视频CDN加速利器
  12. java的ssh获取id,使用SSH公钥(id_dsa.pub)实现免密码登录
  13. VisualSVN https 钩子失效 关闭服务器信任
  14. python编程新手常犯的错误_Python新手常犯的10个错误 - 里维斯社
  15. 怎么发文件到服务器异常,大神帮我看看,我用async-http框架上传文件到服务器发生异常...
  16. 人工智能的变革趋势: 从弱人工智能到强人工智能,再到生物智能
  17. cad批量选择相同块_怎样在cad中快速选定同一个块的所有对象?
  18. static、static inline、entern inline
  19. DW与JavaScript
  20. 使用maven打war包时报[ERROR] Failed to execute goal org.apache.maven.plugins:maven-war-plugin:2.2:war...

热门文章

  1. 单片机之震动传感器、继电器、433M无线发射接收等模块介绍及应用
  2. 433M发送接收模块
  3. 轻量级关系数据库SQLite的安装和SpringBoot整合
  4. Chrome浏览器如何完美实现滚动截图技巧
  5. AD9364 测试平台开发——第六篇,SPI配置内容解析
  6. glove安装,以及安装中个各种坑
  7. 百练 4151:电影节
  8. 学习笔记——String类常用方法(字符、字节、比较、查找、替换、拆分、截取、结构、格式化、连接、入池、驱除空格、长度计算、大小写转换等)
  9. 哔哩哔哩弹幕api及一些解释
  10. (附源码)计算机毕业设计SSM智能仓储进出货管理系统