VGA控制器设计与验证

本文系学习小梅哥教程后的总结整理。

1.原理介绍

在这里插入图片描述
对于普通的显示器( 无论是液晶还是 CRT),标准的VGA接口有15个接口,但是真正用到的只有5个接口:三个色彩信号,R,G,B,场同步信号VSYNC,行同步信号HSYNC,时序部分要通过控制行同步信号和场同步信号(场可以当做是扫描完了的行的计数的意思),色彩部分要控制RGB。

2.时序分析

在这里插入图片描述

行扫描时序图

在这里插入图片描述

列扫描时序图

在这里插入图片描述

此处参考博客http://bbs.elecfans.com/jishu_475402_1_1.html

以800*525的分辨率的显示器为例,像素的刷新是从左到右,从上到下一行一行的刷新的,每一行要刷新的点称为行同步信号的帧长,有多少行称为场同步信号的帧长,从上到下刷新完一遍称为一帧,我们电脑上说的屏幕刷新频率就是说屏幕一秒钟能够刷新多少帧,当达到一定的帧数,我们的肉眼也就分辨不出来了,这样我们就看到我们的电脑屏幕,我们在操作的时候是连续的了。

下图为VGA图像显示扫描示意图,在设计时,可用两个计数器进行计数( 行、场扫描计数器), 行计数器的驱动时钟为 25MHz,场计数器的驱动时钟为行计数器的溢出信号。 计数的同时控制行、 场同步信号输出。并在适当的时候送出数据,就能显示相应的图像。
TFT 控制器的像素时钟为 9MHz。
消隐器件送出的数据应该为 0x00。 显示器的刷新频率为 25MHz/800/525 = 59.52Hz,接近 VGA 工业标准场帧频 59.94Hz在这里插入图片描述
VGA 工业标准所要求的频率如下:
时钟频率 25.175MHz(像素输出的频率)
行频率 31469 Hz
场频率 59.94Hz( 每秒图像刷频率)
在这里插入图片描述

3.模块设计

在这里插入图片描述

4. 代码

代码部分主要是计数器、帧扫描控制、行列同步、PLL调用的一些操作,总体来说比较简单,需要用到的话调用现成模块最合适,这里不再赘述。

5.仿真

输入数据data_in,看输出

wire VGA_HS; //VGA 行同步信号
wire VGA_VS; //VGA 场同步信号
reg [11:0]V_cnt = 0;//扫描行数统计计数器

initial 
	begin
		Rst_n = 0;
		data_in = 8'd0;
		#(`clk_period *20 +1);
		Rst_n = 1;
		data_in = 24'hffffff;
	end
	
always @(posedge VGA_VS)//扫描帧数计数
V_cnt <= V_cnt + 1'b1;

initial 
	begin
		wait(V_cnt == 5);//等待扫描 5帧后结束仿真
		$stop;
	end
6.板级验证

VGA 的板级验证, 主要验证以下三个方面:
1、 能够正确的全屏点亮屏幕,显示稳定
2、能否正确的显示颜色,即按照需求制定需要显示的颜色
3、能否正确的定位坐标, 即实现在指定的位置显示对应的数据
板级验证电路设计
为此,我们设计一个测试工程,该工程中我们测试上述提到的 8 种颜色, 通过颜色的位置,不但能确定是否能够正确输出指定颜色的图像,还能间接确定是否能够精确指定像素位置。
具体代码略。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值