0 引 言
利用现场可编程逻辑器件产生VGA时序信号和彩条图像信号,并将其作为信号源,应用于电视机或计算机等彩色显示器的电路开发,方便彩色显示器驱动控制电路的调试。计算机显示器的显示有许多标准,常见的有VGA,SVGA等。在这里尝试用FPGA实现 VGA图像显示控制器,这一过程通过编程实现,之后通过软件的测试和仿真,当软件验证无误后完成硬件的验证,终在CRT显示器上实现输出,基本原理就是利用FPGA的可编程原理和VGA的时序控制原理,这在产品开发设计中有许多实际应用。
1 VGA显示原理
VGA(Video Graphics Array)作为一种标准的显示接口得到了广泛的应用。VGA在任何时刻都必须工作在某一显示模式下,其显示模式分为字符显示模式和图形显示模式,而在应用中讨论的都是图形显示模式。
VGA的图形模式分为三类:CGA,EGA兼容的图形模式;标准VGA图形模式;VGA扩展图形模式,后两种图形模式统称为VGA图形模式。文中基于标准VGA模式来实现。工业标准的VGA显示模式为:640×480×16×60。
常见的彩色显示器一般由阴极射线管(CRT)构成,彩色由GRB(Green Red Blue)基色组成。显示采用逐行扫描的方式解决,阴极射线枪发出电子束打在涂有荧光粉的荧光屏上,产生GRB基色,合成一个彩色像素。扫描从屏幕的左上方开始,从左到右,从上到下,逐行扫描,每扫完一行,电子束回到屏幕的左边下一行的起始位置,在这期间,CRT、对电子束进行消隐,每行结束时,用行同步信号进行行同步;扫描完所有行,用场同步信号进行场同步,并使扫描回到屏幕的左上方,同时进行场消隐,并预备进行下的扫描。VGA显示控制器控制 CRT显示图象的过程如图1所示。
2 VGA信号时序
图2所示是计算机VGA(640×480,60 Hz)图像格式的信号时序图。图2中,V_sync为场同步信号,场周期TVSYNC=16.683 ms,每场有525行,其中480行为有效显示行,45行为场消隐期。场同步信号Vs中每场有1个脉冲,该脉冲的低电平宽度tWV=63μs(2行)。场消隐期包括场同步时间tWH、场消隐前肩tHV(13行)、场消隐后肩tVH(30行),共45行。行周期THSYNC=31.78μs,每显示行包括 800点。其中,640点为有效显示区,160点为行消隐期(非显示区)。行同步信号Hs中每行有一个脉冲,该脉冲的低电平宽度tWV=3.81 μs(即96个DCK);行消隐期包括行同步时间tWH,行消隐前肩tHC(19个DCLK)和行消隐后肩tCH(45个DCLK),共160个点时钟。复合消隐信号是行消隐信号和场消隐信号的逻辑与,在有效显示期复合消隐信号为高电平,在非显示区域它是低电平。
3 VGA时序信号及彩条信号产生模块设计
3.1 VGA时序信号产生模块
VGA时序信号产生模块包括行点数计数器h_cnt、场行数计数器v_cnt、行同步产生状态机h_state和场同步产生状态机v_state等。其中,行点数计数器是800进制计数器,场行数计数器是525进制计数器。行同步状态机h_state有h_video,h_front,h_sync, h_back四种状态,它根据行点数计数器的计数值来进行状态转换;场同步状态机v_state有v_video,v_Front,v_sync, v_Back四种状态,它根据场行数计数器的计数值来进行状态翻转。这两个状态机的状态转移图分别如图3和图4所示。
当行状态机h_state复位时,即进入h_video状态,它对应每行的有效显示区域。行计数器h_cnt对25 MHz的点时钟进行计数,当行计数器h_cnt的计数值到达639时,行同步状态机即进入行消隐前肩h_front状态;当h_cnt的计数值为663 时,行同步状态机进入行同步状态h_sync,此时,行同步信号Hs输出低电平。当h_cnt的计数值为759时,状态机即进入行消隐后肩h_back状态;当行状态机为h_front,h_sync,h_back状态时,行消隐信号输出低电平。当h_cnt的计数值为799时,行同步状态机进人 h_video状态,同时,行计数器的同步复位信号为高电平,使行计数器复位。
场状态机v_state开始时进入v_video状态,对应每场的有效显示行,场计数器v_cnt的计数值每行加1。当场计数器的计数值到达479时,场状态机翻转,进入场消隐前肩v_ront状态;当v_cnt的值为497时,状态机v_state进入场同步状态v_sync,场同步信号Vs此时输出低电平;当v_cnt的值为499时,状态机v_state进入场消隐后肩v_back状态;当v_cnt的值为524时,状态机v_state又翻转进入 v_video状态,同时输出高电平到场计数器v_cnt的同步清零端使其清零。当场状态机v_state的状态为v_Front,v_sync, v_Back三种状态时,场消隐信号输出低电平,其余时刻为高电平。行、场消隐信号的逻辑与即为复合消隐信号。
3.2 VGA彩条信号产生模块
彩条信号产生模块包括了彩条模式控制、竖彩条发生和横彩条发生等三个模块。竖彩条发生模块根据行点数器h_cnt的计数值来产生彩条,其流程图如图5所示。它对行点数计数器的数值进行判断,每80条竖线生成一种竖彩条,共8种竖彩条横彩条发生模块与竖彩条发生模块相似。它根据场行数计数器v_cnt的计数值来产生横彩条,流程图如图6所示。每60条扫描线为一个彩条宽度,共8种横彩条模式。计数器mode的值又决定着输出彩条信号的类型,当mode为0 时,输出的彩条为竖彩条;当mode为1时,输出的彩条横彩条。
3.3 用FPGA验证结果
对上述分析的两个模块,已经用QuartusⅡ软件进行仿真验证,并得到正确的仿真图形。通过了软件的测试,设计进入了终阶段——硬件的调试与通过,本设计采取的是FPGA开发板,图7就是FPGA开发板的实物图,将程序写入PC机经过FPGA芯片在VGA接口处输出数据,并显示在CRT显示器中。图 8,图9就是设计出的8种彩色条纹输出显示控制器设计的终输出结果。
由实验结果可以看出,该设计可以正确地输出8种彩色的横条纹和竖条纹。从而验证VGA模块的时序及彩条信号模块的正确性。
4 结 语
在调试电路时,使用FPGA中多余的逻辑产生VGA信号和彩条信号,所产生的信号稳定可靠,为电路调试带来了很多方便。
在实际应用中,还可以方便地修改彩条信号产生模块。比如,可以修改行、场计数器的判断值,以调整彩条的大小,增加延时跳变的功能,使输出的彩条信号产生各种变化。此外,与VGA信号类似,改变行、场状态机的转换值和行、场计数器的设置,还可以产生其他各种模式的图像信号,以适应不同分辨率图像显示的需要。如果在该设计的基础上加上采集模块,就可以显示希望显示的图片。
[1]. VGA datasheet https://www.dzsc.com/datasheet/VGA_2568786.html.
[2]. CRT datasheet https://www.dzsc.com/datasheet/CRT_2331578.html.
免责声明: 凡注明来源本网的所有作品,均为本网合法拥有版权或有权使用的作品,欢迎转载,注明出处。非本网作品均来自互联网,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。