VGA彩条信号显示控制

一、实验目的:

1. 熟练掌握 Verilog HDL语言和QuartusII 软件的使用;

2. 理解状态机的工作原理和设计方法;

3. 熟悉 VGA 接口协议规范。

4.通过对VGA接口的显示控制设计,理解VGA接口的时序工作原理,掌握通过计数器产生时序控制信号的方法以及用MEGEFUNCTION制作锁相环的方法。

实验原理

显示控制原理

常见的彩色显示器一般由阴极射线管(CRT)构成,彩色由GRB(Green Red Blue)基色组成。显示采用逐行扫描的方式解决,阴极射线枪发出电子束打在涂有荧光粉的荧光屏上,产生GRB基色,合成一个彩色像素。扫描从屏幕的左上方开始,从左到右,从上到下,逐行扫描,每扫完一行,电子束回到屏幕的左边下一行的起始位置,在这期间,CRT、对电子束进行消隐,每行结束时,用行同步信号进行行同步;扫描完所有行,用场同步信号进行场同步,并使扫描回到屏幕的左上方,同时进行场消隐,并预备进行下一次的扫描。

2、VGA时序信号

计算机内部以数字方式生成的显示图像信息,被显卡中的数字/模拟转换器转变为R、G、B 三原色信号和行、场同步信号,信号通过电缆传输到显示设备中。对于模拟显示设备,如模拟CRT 显示器,信号被直接送到相应的处理电路,驱动控制显像管生成图像。设计 VGA 控制器的关键是产生符合VGA 接口协议规定的行同步和场同步信号,它们的时序关系如下图所示:

h_sync:水平同步信号(负脉冲),每个水平扫描周期显示器刷新一行;

v_sync:垂直同步信号(负脉冲),每个垂直扫描周期显示器刷新一帧;

行同步信号(HS)场同步信号(VS)时序名称时钟数(像素数)时序名称行数前沿16前沿10行同步96场同步2数据640数据480后沿48后沿33总像素数800总行数525

按照每秒60帧的刷新速度来计算,所需要的时钟频率为:

频率=60Hz(帧数)×525(行)×800(每一行像素数)=25.2MHz

所以我们通过开发系统的50MHz时钟资源,通过时钟分频产生25MHz的频率即可。虽然没有达到精确的25.2MHz的时钟频率(刷新率可能会是59Hz),但是并不会造成影响。

3、VGA显示器的工作过程

以屏幕左上角的那个像素作为原点(1,1)。当显示器接收到控制器输出的v_sync信号,则开始一个新的垂直刷新循环,同时控制器输出h_sync信号。当经过P+Q=1.084ms的时间后,准备开始水平刷新循环,当h_sync信号的下降沿到来时,即开始刷新第一行(行数加1)。再经过B+C = 5.66?s的时间后,开始刷新第一行的第一个像素(列数加1),并按照所需的时钟频率,刷新此行中其余像素。直到显示器接收到下一个h_sync信号,又开始刷新第二行。

重复此过程,直到刷新到屏幕的底部。当刷新了最下面一行的最后一个像素后,显示器即完成了一帧的刷新,控制器又输出v_sync信号,显示器又开始一个新的垂直刷新循环。

实验内容:

输入源程序;

2.全程编译;

3.时序仿真;

引脚锁定;

5.编译文件下载;

四、最终硬件测试结果:

实验体会:

通过对EDA课程的学习,我对电路的软件和硬件方面的知识有了进一步的了解,至少对于QuartusII经历了由陌生到熟悉应用的过程,这次VGA实验是我本科到现在做过的最有意思的实验之一。刚开始实验时,简单地认为实验是简单而愉快的。但在一次上课时老师的一句幽默“我很欣慰,果然没有一个人理解了状态机的设计”让我认识到自己的浅薄与无知。状态机和系统的设计当时在我的脑海里就是一团乱麻,“剪不断,理还乱”。这都什么跟什么啊,我突然意识到我是不是跟我的学科脱节啦,所以,我决定在本科的有限时间里多动手实验、学习,努力去发现自己的不足,于是我申请进了学院的实验室学习,感觉这门课对我的影响还是恨大的,张老师质朴的教学方式和把我们当成自己孩子的教诲,让我很是欣慰。在这次课程以前从来没有了解过VGA的显示原理和工作模式,刚开始学习的时候觉得非常茫然,不知道从何处下手。在老师的引导下,我按照实验的整体过程,先看了课本,了解了VGA显示和时序控制的相关原理。于是明白这次实验设计的重点就是VGA时序控制模块的设计。再仔细分析时序关系,画出状态转移图,同步区、显示区、消隐区时计数器的数值,便可很方便的编出程序。虽然在实验中也遇到了各种各样的问题,但最终都一一解决,也更让我体会到实验中的乐趣。同时,通过VGA显示实验,我加深了对EDA技术的理解,初步掌握了QuartusII软件图形编辑的使用。我接触了使用VHDL编程的一些基本技术和方法,初步掌握QuartusII软件的使用方法、进一步熟悉了数字系统VHDL设计

简单的eda实验vga在linux系统中,EDA实验报告-VGA彩条显示.doc相关推荐

  1. python画图中文显示_解决Linux系统中python matplotlib画图的中文显示问题

    最近想学习一些python数据分析的内容,就弄了个爬虫爬取了一些数据,并打算用Anaconda一套的工具(pandas, numpy, scipy, matplotlib, jupyter)等进行一些 ...

  2. 解决Linux系统中python matplotlib画图的中文显示问题

    解决Linux系统中python matplotlib画图的中文显示问题 参考文章: (1)解决Linux系统中python matplotlib画图的中文显示问题 (2)https://www.cn ...

  3. MOOS-ivp 实验一 在linux系统中安装moos-ivp遇到的各种问题汇总

    在linux系统中安装moos-ivp遇到的各种问题汇总 文章目录 在linux系统中安装moos-ivp遇到的各种问题汇总 前言 一.安装yum工具 二.执行:sudo apt-get -f ins ...

  4. 简单的eda实验vga在linux系统中,《EDA实验报告VGA彩条显示.doc

    <EDA实验报告VGA彩条显示 VGA彩条信号显示控制 一.实验目的: 1. 熟练掌握 Verilog HDL语言和QuartusII 软件的使用: 2. 理解状态机的工作原理和设计方法: 3. ...

  5. Linux系统中-文件名中含汉字,显示乱码

    [出现问题] 在Linux系统中,含有汉字的文件名显示乱码. [原因分析] 在Windows系统中 ,文件名中文编码方式默认为 GBK ,Linux系统中文件名默认编码方式为 UTF-8 .当文件从W ...

  6. jenkins linux虚拟机,Linux系统中jenkins使用的简单介绍

    jenkins是一个开放的软件平台,在Linux系统中的软件平台也不少,但是jenkins一直是比较受欢迎的那一个.本文就来简单介绍一下Linux系统中jenkins安装配置和使用. 安装jenkin ...

  7. linux系统下定时备份,在Linux系统中简单地实现定时备份的方法 -电脑资料

    运行一个简单的脚本 假设你有一个脚本叫:/usr/local/bin/myscript. ,你想要每隔一小时就运行一次, Service 文件 第一步,创建一个service文件,根据你Linux的发 ...

  8. 粤嵌实验板 linux 环境,粤嵌linux基础入门学习 linux系统中添加系统调用

    linux系统中添加系统是怎样调用的?从linux基础入门学习出发,一起来看看: 1.每个体系下面均有对应的系统调用列表: arch/arm/kernel/calls.S 在最后添加一个新的系统调用标 ...

  9. linux 内核日志等级,Linux系统中日志级别详情

    日志信息分类 1.等级由低到高:debug 2.区别: debug 级别最低,可以随意的使用于任何觉得有利于在调试时更详细的了解系统运行状态的东东: info  重要,输出信息:用来反馈系统的当前状态 ...

最新文章

  1. mysql+PHP源码编译安装
  2. nginx中的数组结构ngx_array_t
  3. openmv 飞机巡线
  4. oracle遍历表做查询,oracle 语句之对数据库的表名就行模糊查询,对查询结果进行遍历,依次获取每个表名结果中的每个字段(存储过程)...
  5. ubuntu 系统中如何截图
  6. Centos7 单台服务器搭建Elasticsearch6.0.1集群
  7. 基于@Bean声明lazy-queue
  8. php 打印对象到文件,php实现将数组或对象写入到文件的方法小结【三种方法】...
  9. nn.Conv2d(nc, ndf, 4, 2, 1, bias=False),nc、ndf是什么?
  10. abb变频器580系列改中文_ABBACS580一01变频器选择使用语言错误后怎么办?
  11. Java微信公众号开发之微信公众平台账号申请注册
  12. 软件构建中的设计(二)
  13. mysql中gender要用什么类型,如何选择合适的MySQL数据类型
  14. 【手写汉字识别】基于深度学习的脱机手写汉字识别技术研究
  15. 解决FTP上传时报错“父路径不存在”问题
  16. linux运维每天都要做什么,Linux运维工作清闲吗?每天需要干什么?
  17. 【vultr使用流程笔记】
  18. jenkins docker 编译verify出现crash的问题
  19. 技术合同相关优惠政策概览
  20. 【解决】开始→运行框中的命令无法记录历史的问题

热门文章

  1. python实现决策树数据直接赋值导入_Python3.0 实现决策树算法的流程
  2. axure文本框提示文字_Axure教程:一个中继器实现密码验证
  3. get请求,参数值为json字符串如何传值
  4. 分布式和微服务是什么?二者的区别又是什么?
  5. Java中replace、replaceAll和replaceFirst函数的用法小结
  6. 博途变量类型_PLC数据类型(UDT)
  7. Linux查看lvm元数据,LVM元数据服务lvmetad分析
  8. mysql主键unsigned_mysql – 主键应该总是unsigned?
  9. 不删除旧版本java_Linux 卸载旧版jdk 并安装新版jdk(转)
  10. android获取未知字符串,android – 未知的URL内容:// downloads / my_dow...