打算机显示器有许多现实标准,常见的有VGA、SVGA等,在这里我们用VGA接口来掌握显示器,VGA是Video Graphics Adapter(Array)的缩写,即视频图形阵列。作为一种标准的显示接口得到广泛的运用。VGA接口常利用15针的DB15接口,该接口引脚功能如下表所示:
VGA 扫描办法

在VGA标准兴起的时候。常见的彩色显示器一样平常由CRT(阴极射线管)构成,色彩是由RGB(红、绿、蓝)三基色组成。显示是用逐行扫描的办法办理。阴极射线枪发出电子束打在涂有荧光粉的荧光屏上,产生RGB三基色,合成一个彩色像素,扫描从屏幕的左上方开始,从左到右,从上到下进行扫描,每扫完一行,电子束都回到屏幕的左边下一行的起始位置。在这期间,CRT对电子束进行消隐。每行结束时,用行同步旗子暗记进行行同步;扫描完所有行,用场同步旗子暗记进行场同步,并使扫描回到屏幕的左上方。同时进行场消隐,预备下一场的扫描。

随着显示技能的发展,涌现了液晶显示器,液晶显示器的成像事理与CRT不同,液晶显示器是通过对液晶像素点单元施加电压与否,来实现液晶单元的透明程度,并添加三色滤光片、分别使R、G、B这3中光芒透过滤光片,末了通过3个像素点合成一个彩色像素点,从而实现彩色显示。但是由于液晶显示技能后于CRT显示技能出身,因此在液晶显示器出身的时候,为了能够兼容传统的显示接口,因此液晶显示器通过内部电路实现了对VGA接口的完备兼容。因此,我们在利用显示器时,只要该显示器带有标准的VGA接口,我们就不用去关系其成像事理,直策应用标准的VGA时序即可驱动。
对付普通的显示器(无论是液晶还是CRT),共有5个旗子暗记:R、G、B三基色旗子暗记,行同步旗子暗记HS,场同步旗子暗记VS。对付时序驱动,VGA显示器要严格遵照“VGA工业标准”,即64048060Hz模式,否则可能会危害VGA显示器。
VGA标准时序剖析
常日我们所用的显示器都知足工业标准,因此我们设计VGA掌握器时要参考显示器的技能规格,下图是VGA行扫描、场4扫描的时序图。
行扫描时序哀求(单位:输出一个像素的韶光间隔,即像素时钟):
Ta(行同步头):96
Tb:40
Tc:8
Td(行图像):640
Te:8
Tf:8
Tg:800
场扫描时序哀求(单位:输出一行Line的韶光间隔):
Ta(场同步头):2
Tb:25
Tc:8
Td(场图像):480
Te:8
Tf:2
Tg:525
VGA工业标准所哀求的频率如下:
时钟频率 25.175MHz(像素输出的频率)
行频率 31469 Hz
场频率 59.94Hz(每秒图像刷频率)
VGA 工业标准显示模式哀求:行同步、列同步都为负极性,即同步脉冲哀求是负脉冲。
下图为VGA图像显示扫描示意图,在设计时,可用两个计数器进行计数(行、场扫描计数器),行计数器的驱动时钟为25MHz,场计数器的驱动时钟为行计数器的溢出旗子暗记。计数的同时掌握行、场同步旗子暗记输出。并在适当的时候送出数据,就能显示相应的图像。把稳消隐器件送出的数据该当为0x00。显示器的刷新频率为25MHz/800/525 = 59.52Hz,靠近VGA工业标准场帧频59.94Hz
芯航线FPGA学习套件VGA电路先容
芯航线FPGA学习套件供应两种VGA接口输出,分别为8bit输出和高质量24位输出。24位高质量的VGA视频输出模块利用专用视频DAC芯片GM7123(兼容ADV7123),实现高达16001200分辨率、60Hz刷新频率,24位动态色彩输出。该模块性能精良,价格较高,紧张用于视频图像处理系统中。本例由于设计的逻辑剖析仪不须要如此高的动态色彩范围,因此利用8bit输出型VGA模块。8位VGA输出电路设计在“VGA_数码管_PS2”三合一模块上,下图为VGA_数码管_PS2模块图和VGA接口电路图:
该VGA接口三基色旗子暗记R、G、B共专用8位(分别是R为3位、G为3位、B为2位),因此可以显示256种颜色。RGB数据的格式如下表所示:
以下为常见的几种颜色对应的数据编码:
小结
通过以上先容,我们理解了实现VGA驱动的行列扫描方法,即利用两个计数器分别进行行、场计数,根据计数值确定像素数据内容和行、场同步旗子暗记的电平状态。同时,也知道了要显示不同的颜色,只须要给D0~D7不同的数据,即可显示不同的颜色。
VGA 掌握器设计第一步,设计行扫描计数器
行扫描计数器即每个像素时钟自加1,一旦加满到799(刚好800个时钟周期),计数器清零并重新技能,该部分代码可如下设计:
第二步,设计场扫描计数器
由于场扫描计数器是在每次一行扫描完成后加1的,即场扫描计数器的自加条件是行扫描计数器溢出。以是,场扫描计数器的自加条件为行扫描完成,即
“hcount_r==10'd799”,场扫描计数器代码如下所示:
第三步,产生行同步旗子暗记和场同步旗子暗记
根据VGA工业标准时序,我们知道每一个完全的VGA帧都包含了数据段和消隐段,在消隐段期间,行同步旗子暗记和列同步旗子暗记有一段行同步头和场同步头,在同步期间,对应行同步旗子暗记或者场同步旗子暗记为低电平,因此我们可以根据行、场计数器的值来确定行、场同步旗子暗记的电平状态。对付行同步旗子暗记,其行同步头为一行扫描的前96个像素时钟周期,因此行同步旗子暗记可用如下的大略办法掌握:
对付场同步旗子暗记,其场同步头为一行扫描的前2个像素时钟周期,因此行同步旗子暗记可用如下的大略办法掌握:
第四步,输出数据
VGA掌握器的设计目的是为了驱动VGA显示器显示需求的图像内容,因此须要设计数据输出部分,这里,数据来源可以为其它部分产生的图像旗子暗记,如摄像头数据、BMP图片数据。我们在驱动VGA时,只须要担保在扫描精确的像素点时,其它部分产生的图像旗子暗记能够与该像素点位置对应上,则不须要对图像数据再进行二次处理,但是,在行、场消隐期间,须要担保输出到VGA的RGB数据线上的数据全部为0,因此可以设置一个二选一多路器,只有在非消隐期间,VGA掌握器才直接输出其他部分输入的图像数据,而消隐器件则逼迫输出全0。
我们可以首先产生一个图像数据有效标志旗子暗记,然后利用该标志旗子暗记掌握VGA输出数据的内容,即切换二选一多路器的通道,从而实现消隐器件数据全0的功能。
图像数据有效标志旗子暗记产生代码如下所示:
dat_act即为图像数据有效标志旗子暗记。
消隐逼迫输出0二选一多路器代码如下所示:
个中,VGA_RGB是输出到VGA接口上的数据,而data_in则是其他模块通报过来的精确的图像数据。
第五步,输出精确的行列扫描位置
为了使其他模块能够根据当前扫描位置精确的输出图像数据,因此须要将VGA掌握器的实时扫描位置输出,以供其他模块利用。
完全VGA掌握器设计
以上为我们根据直不雅观思维设计的驱动电路,在代码中,直策应用了数字作为运算和比较的内容,这样不利于修正。因此,为了实现易于修正的掌握器设计,方便后期大略修正后兼容其他分辨率,对代码进行优化,利用参数化设计。将代码中利用到的一些与时序干系的数字直策应用parameter这样的参数进行定义,这样在往后须要修正韶光参数时,只须要修正parameter定义的内容即可,不须要再深入到代码中一个一个修正。这里不再逐一先容如何修正,只贴出终极设计修正完成的代码,请用户自行比对领悟。
设计完成后,在Quartus II15.1中综合出来的电路符号如下所示:
每个端口的功能如下表所示:
VGA掌握器仿真验证
本小节对设计的VGA掌握器进行仿真验证,通过仿真查看行场同步旗子暗记是否知足设计需求。
Testbench设计
Testbench的设计思路非常大略,只须要产生一个25MHz的时钟旗子暗记,然后在data_in端口上给一个固定的数据编码,为了与消隐时候的逼迫输出全0相区分,因此只须要是data_in上的数据不为0即可。testbench内容如下所示:
仿真结果剖析VGA_HS旗子暗记:
由图可见,VGA_HS在0~95这一行扫描段内为低电平,即行同步头,其他韶光为高电平,行扫描一次,行扫描计数器计数最大值为799,即刚好800个像素时钟周期,与设计同等,因此可知行扫描旗子暗记知足时序设计哀求。
VGA_VS旗子暗记:
由图可见,VGA_VS旗子暗记在0~1这一段场扫描韶光内为低电平,即场同步头,其他韶光为高电平。场扫描一次,场扫描计数器计数最大值为524,即刚好525个行扫描周期,与设计同等,知足VGA工业标准,因此可知场扫描旗子暗记满速时序设计哀求。
其他旗子暗记本文不再进行详细剖析比对,在进行板级调试中,如果创造显示效果不对,则可根据实际显示效果,判断缺点位置,如行同步旗子暗记缺点、场同步旗子暗记缺点等。
VGA掌握器板级验证
在上一节,我们简述了VGA掌握器的设计思路并给出了详细的VGA掌握器设计过程,同时通过仿真验证了设计的合理性。本节,我们将对该VGA掌握器进行板级验证,通过板级验证来进一步确定我们设计的精确性。
板级验证需求
VGA的板级验证,紧张验证以下三个方面:
能够精确的全屏点亮屏幕,显示稳定
能否精确的显示颜色,即按照需求制订须要显示的颜色
能否精确的定位坐标,即实现在指定的位置显示对应的数据
板级验证电路设计
为此,我们设计一个测试工程,该工程中我们测试上述提到的8种颜色,通过颜色的位置,不但能确定是否能够精确输出指定颜色的图像,还能间接确定是否能够精确指定像素位置。
因此,我们对屏幕进行划分,将屏幕划分成4行2列统共八个像素阵列,每个阵列分别显示一种颜色。据此,我们可以首先定义每种颜色的详细数据编码,然后再定义每个像素阵列的基本显示颜色,这里首先利用localparam定义每种颜色的详细数据编码:
紧接着,我们须要知道VGA当前扫描的位置是在哪一个位置区间,换一种说法,我们须要通过VGA当前的扫描位置得到当前扫描的是哪一个像素阵列,然后给待显示数据授予对应的颜色值即可。这里我们先定义每个像素块处于扫描中的条件。
1、 产生每一列的处于扫描状态标志旗子暗记,屏幕每行统共640个像素点,我们将屏幕划分成了2列,因此
(a) 当行扫描范围在0~319这一段像素内时,第0列处于生动阶段;
(b) 当扫描范围在320~639这一段像素内时,第1列处于生动阶段。
因此可得:
2、 产生每一行的处于扫描状态标志旗子暗记,屏幕每列统共480个像素点,我们将屏幕划分成了4列,因此
(a) 当行扫描范围在0~119这一段像素内时,第0行处于生动阶段;
(b) 当行扫描范围在120~239这一段像素内时,第1行处于生动阶段;
(c) 当行扫描范围在240~359这一段像素内时,第2行处于生动阶段;
(d) 当行扫描范围在360~479这一段像素内时,第3行处于生动阶段,
因此可得:
3、 产生扫描每一个像素块的标志旗子暗记:
然后,我们就可以根据当前被扫描的像素块范围来确定须要给VGA输出什么颜色,这里采取一个多路器即可实现:
添加PLL时钟分频单元
通过以上步骤,我们就完成了大略单纯VGA掌握器测试电路的紧张电路设计。在前面我们曾经提到,VGA掌握器的像素时钟为25MHz,而我们芯航线FPGA开拓板设计的是50MHz的晶振,因此须要利用锁相环对时钟进行分频得到25MHz的时钟,以供VGA掌握器利用。把稳,虽然我们直策应用寄存器二分频也能从50M直接分频得到25M时钟,但是这样分频出来的时钟驱动能力是非常差的,抖动也非常大,不能再作为时序电路的时钟利用,因此这里必须利用pll来得到25MHz时钟。详细PLL配置请参考《芯航线FPGA数字系统设计教程+实例解析》“FPGA设计思想与验证方法视频教程实验精讲手册”部分的“十六、 PLL锁相环先容与大略运用”小节。
完全的测试电路代码
实现完全的测试电路代码如下所示:
板级验证
引脚分配,VGA掌握器测试工程引脚分配表如下所示:
芯航线FPGA学习套件主板与“VGA数码管PS2”三合一模块的连接如下所示:
终极测试效果如下图所示:
通过照片可知,VGA掌握器设计能够稳定精确的刷新VGA显示器并掌握精确的显示位置,因此设计无误。
后续,我们就可以利用该掌握器再结合一定的图像旗子暗记产生电路实现更多更卖力的显示系统设计。当然,也可能根据详细的利用环境,再对本掌握器进行设计微调。








