集成电路技术分享

 找回密码
 我要注册

QQ登录

只需一步,快速开始

搜索
查看: 1065|回复: 0

至芯入门实验|基于 FPGA 的屏幕自检程序设计

[复制链接]
zxopenljx 发表于 2021-3-26 15:00:16 | 显示全部楼层 |阅读模式
原文链接:https://mp.weixin.qq.com/s/qDqdtn9aJmANwhgx9iUfZA
1.  实验 引言
图片
图片
VGA (Video Graphics Array,视频图形阵列):是 IBM 于 1987 年提出的一个使用类比讯号的电脑显示标准。VGA 是最多制造商所共同支持的一个低标准,个人电脑在加载自己的独特驱动程式之前,都必须支持 VGA 的标准。
图片
图片
2.  实验 目的
图片
图片
学习用 FPGA 编写 VGA 驱动,驱动液晶屏分时显示不同的颜色,模拟计算机的屏幕自检程序。

图片
图片
3 . 实验内容
图片
图片


本实验我们用 FPGA 驱动液晶屏分时显示六种不同的颜色,首先编写出一个通用的 VGA 驱动,然后通过状态机每隔一段时间就改变待显示的数据,以此来实现显示不同色彩的功能。
图片
图片
4.  实验 原理
图片
图片
1)VGA 扫描方式
显示器扫描方式分为逐行扫描和隔行扫描:逐行扫描是扫描从屏幕左上角一点开始,从左向右逐点扫描,每扫描完一行,电子束回到屏幕的左边下一行的起始位置,在这期间,CRT对电子束进行消隐,每行结束时,用行同步信号进行同步;当扫描完所有的行,形成一帧,用场同步信号进行场同步,并使扫描回到屏幕左上方,同时进行场消隐,开始下一帧。隔行扫描是指电子束扫描时每隔一行扫一线,扫完一屏后再返回来扫描剩下的线,隔行扫描的显示器闪烁快速,可能会使使用者眼睛疲劳(本实验采用逐行扫描的方式)
2)VGA 行、列同步时序
图片
说明:VGA 中定义行时序和列时序都需要同步脉冲(a 段),显示后沿(b 段)、显示时序段(c 段)和显示前沿(d 段)四部分。VGA 工业标准显示模式要求:行同步、列同步都为负极性,即同步脉冲要求是负脉冲。
由 VGA 行时序可知:每一行都有一个负极性行同步脉冲(a 段),是数据行的结束标志,同时也是下一行的开始标志。在同步脉冲之后为显示后沿(b 段),在显示时序段(c 段)显示器为亮的过程,RGB 数据驱动一行上的每一个像素点,从而显示一行。在一行的最后为显示前沿(d 段)。在显示时间段之外没有图像投射到屏幕,而是插入消隐信号。同步脉冲、显示后沿和显示前沿都是在行消隐间隔内,当消隐有效时,RGB 信号无效,屏幕不显示数据。VGA 的行时序与列时序基本一致,此处不再赘述。
3)VGA 显示标准
图片
说明:以本实验的显示标准 640*480*60Hz 为例。(640 为列数,480 为行数,60Hz 为刷新一屏的频率)
行时序:屏幕对应的行数为 525(a+b+c+d=e 段),其中 480(c 段)为显示行;每行均有行同步信号(a 段),为 2 个行周期的低电平;
列时序:每个显示行包括 800 列(a+b+c+d=e 段),其中 640(c 段)为有效显示区,每列均有列同步信号(a 段),为 96 个行周期的低电平。
时钟频率:25MHz

图片
图片
5.  硬件 设计
图片
图片


图片

由原理图可知,R、G、B 的位宽分别为 3、3、2。一共可以出现 256 种颜色组合。

图片
图片
6.  系 统 结构框 图
图片
图片


图片

系统端口及其意义如下:
图片


图片
图片
7.  代码解释
图片
图片


以下代码是根据 640*480*60Hz 显示模式下的具体行、场扫描时序参数而列出的具体各时序范围,由于“C 段”才是像素有效显示区,因此我们可以计算出有效显示区范围内的坐标点。

图片
由于我们在驱动 VGA 的时候选择的是逐行扫描的方式,因此只有在当前行扫描结束以后,才能开始扫描下一行(场扫描切换),以下代码实现的功能就是从屏幕最左侧开始先扫描第一行,第一行扫描结束再跳转到屏幕最左侧,开始扫描第二行,以此类推,直到扫描结束整个屏幕,实现逐行扫描。
图片
图片
以下代码中,dat_act 为高电平代表有效显示区域(行、列都处在 C 段),说明可以显示颜色。同时我们需要给出行、场同步信号,根据时序图可知,在 a段范围内,行同步信号 hsync 和场同步信号 vsync 都为低电平,否则为高电平。
程序清单 有效显示区域标定
图片
以下代码,我们通过一个延时计数器产生 switch 信号,状态机检测到 switch信号为高电平时,状态跳转,同时改变待显示数据的值,驱动液晶显示不同颜色,从而实现颜色切换。
图片
图片

图片
图片
8.  程序清单
图片
图片


(1)工程顶层模块(文件名 VGA.v)
该模块为工程顶层模块,负责将时钟分频模块(PLL.v)、VGA 驱动模块(vga_driver.v)按照逻辑关系级联。
图片
图片
(2) VGA 驱动模块(文件名 vga_driver.v)
该模块为 VGA 驱动模块,负责驱动液晶显示出分时变换的颜色。
图片
图片
图片
图片
图片
图片

图片
您需要登录后才可以回帖 登录 | 我要注册

本版积分规则

关闭

站长推荐上一条 /1 下一条

QQ|小黑屋|手机版|Archiver|fpga论坛|fpga设计论坛 ( 京ICP备20003123号-1 )

GMT+8, 2024-11-29 05:34 , Processed in 0.060815 second(s), 20 queries .

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表