基于FPGA的VGA显示模式和像素频率的识别
扫描二维码
随时随地手机看文章
引言
视频采集卡不仅能用于影像处理,还可以用一台显示器同时显示、监控多台主机的内容,达到实时控制多台主机的目的。
随着数字影像技术的不断发展,使得视频采集卡的需求不断增加,在电子通信与信息处理领域得到广泛应用。而传统的视频采集卡硬件实现复杂,难于向便携、嵌入的方向发展。因此,设计一种硬件简单、使用方便、便于嵌入到系统中的视频信号采集电路具有重要的意义。
随着FPGA(现场可编程门阵列)集成度的增加、功耗和价格的不断降低,现在的视频采集卡的实现可以由FPGA来实现。本文设计的VGA(视频图形阵列)显示模式和像素频率的识别方法,可以作为由 FPGA实现的视频采集卡的一个模块,并且应用中具有可靠性高、性能稳定、调试简单、可扩展性好及设计成本低等特点。
1 VGA显示原理
随着显示技术的不断发展,在业界制定了多种显示协议标准。根据分辨率和刷新频率的不同,显示模式的发展可分为:VGA(640×480像素);SVGA(高级VGA,800×600像素);XGA(可扩展图形阵列,1 024×768像素)。本文可以识别各种刷新频率的上述显示模式,并得到像素频率值,进一步应用于A/D转换器采样模块处理中。
常见的彩色显示器一般由CRT(阴极射线管)构成,彩色是由R(红)、G(绿)、B(蓝)3色组成。显示是采用逐行扫描的方式,阴极射线枪发出的电子束打在涂有荧光粉的荧光屏上,产生RGB三色基,最后合成一个彩色图像。从荧幕的左上方开始向右扫描,每扫完一行图像电子束回到下一行的最左端,每行结束后电子枪回扫的过程中进行消隐。然后从新开始行扫描,消隐……,直到扫到荧幕的右下方,电子束回到荧幕的左上方从新开始新的图像扫描,并且在回到荧幕左上方的过程中进行消隐。在消隐过程中不发射电子束。每一行扫描结束时,用HS(行同步)信号进行同步;扫描完所有的行后用VS(场同步)信号进行同步。
VGA的行、场扫描时序见图1。图中行频和场频在数量上有很大差别,但时序上一样。因此,图1只是示例HS信号、VS信号的行(场)扫描时间、行(场)同步时间、前沿时间、后沿时间、激励视频时间等。
2 FPGA系统实现
本文是基于FPGA对VGA显示模式的识别并计算出像素频率,采用自顶而下的设计思想,将整个系统分为分频模块、HS信号和VS信号计数模块、VGA显示模式选择模块。如图2所示。
2.1分频模块
程序中的分频模块输入是系统时钟,输出下一模块的基准时钟。频率计的设计中,需要一个基准时钟,这里依据外部输入50 MHz的时钟频率来产生0.5 Hz的频率,误差范围为±1/50 MHz。在表1中可以看到,最大的行频是68.7kHz,即在误差范围内可以满足设计要求。
2.2 HS和VS信号计数模块
HS和VS信号都是低电平有效、占空比小的方波信号。
本模块采用频率计的思想,使用直接测量法。直接将HS和VS信号作为计数时钟,在输入到HS和Vs信号计数模块的基准时钟的高电平时开始对HS和VS信号的计数,在基准时钟的低电平时停止保持计数,并保存计数值。
下面分析本文中的直接测量误差。
如图3所示,被测信号有一个脉冲的上升沿比基准时钟的上升沿早出现很短的时间,那么在FiducialClock=1时所测的被测信号的脉冲数就少了1个;同理,被测信号有一个脉冲的上升沿比基准时钟的下降沿早出现很短的时间,那么在Fiducial Clock=1时所测的被测信号的脉冲数就多了1个。计数时钟的周期记为n,实际输出的计数值记为N,那么,N=n±1,即计数时钟误差范围为±1/(n ±1)。
VGA的HS和VS信号的周期很小,如表1所示。n的最大值为1/43.4。所以上述误差很小。并且,在VGA显示模式选择模块中采用的是范围选择,故这种测量方法的误差在可以容忍的范围内。
2.3 VGA显示模式选择模块
本文主要对VGA显示模式(表1中的分辨率)进行识别,在确定显示模式之后,可以用查表直接输出对应模式的像素频率。
根据VGA的显示原理可以看出:在同一计数时间内场同步信号的脉冲数和行同步信号的脉冲数成比率关系。实际应用中将。HS和VS的计数模块的输出数相比后再查找表1内的分辨率值就能确定显示模式了,在确定显示模式的同时输出像频。因为,每种显示模式和像频之间有确定的对应关系,并将测到的模式用7段数码管显示见表l。
3 仿真结果
3.1实验1
3.1.1 PC机上设置
依次点击“开始”、“控制面板”、“显示”、“设置”。调节屏幕分辨率为1 024×768。再点击“高级”、“监视器”。调节屏幕刷新频率为85 Hz。
3.1.2 QuartusⅡ6.1的设计工程
在QuartusⅡ6.1中建立项目后,输入各模块的Verilog HDL程序代码,逻辑综合,布局布线,时序分析后生成编程文件。将编程文件下载到FPGA中进行验证。
图4是利用软件QuartusⅡ6.1中的SignalTapⅡLogic Analyzer工具实时监测到的reg_th和reg_tv的值,它们分别是:1s内HS信号的脉冲数和VS信号的脉冲数。
实验验证:reg_th=116CDh,reg_tv=57h(采用十六进制表示)。即为行频71 kHz,场频为87 Hz。由VGA显示原理可知:由reg_th和reg_tv就能确定VGA显示模式的行数。此值符合在模式1 024×768下一列总的像素点数(包括前沿像素点、后沿像素点、同步头像素点、视频像素点)。在程序部分,采用的是区域选择,避免了由各种误差带来的数值的不匹配。图4中显示数据验证了模式1 024×768,像频由内部寄存器保存,并且可以在数码管上直观地看到L的显示。
3.2 实验2
依次点击“开始”、“控制面板”、“显示”、“设置”。调节屏幕分辨率为800×600。再点击“高级”、“监视器”。调节屏幕刷新频率为75 Hz。
由图5可知:reg_th=0B901h,reg_tv=4Bh(屏幕刷新频率75 Hz)。
实验验证:reg_th=08901h,reg_tv=4Bh(采用十六进制表示)。即行频为47 kHz,场频是75 Hz。由VGA显示原理可知:由reg_th和reg_tv就能确定VGA显示模式的行数。此值符合在模式800 × 600下一列总的像素点数(包括前沿像素点、后沿像素点、同步头像素点、视频像素点)。在程序部分,采用的是区域选择,避免了由各种误差带来的数值的不匹配。图5中显示数据验证了模式800×600,像频由内部寄存器保存,并且可以在数码管上直观地看到A的显示。
4 结束语
以上实验结果证明,本方法可以正确输出各种VGA显示模式,即在每种模式中确定一个量后,可模拟基于SRAM工艺的FPGA的LUT(查找表)思想,以确定的量为人口来存储或输出VGA各种模式的其他相关量。本文中的分频模块和“频率计”思想的计数模块都可以在其他系统中构建特殊时钟和特殊计数器时作为参考。同时,将根据存储的像素频率值保存后可用来配置FPGA中的PLL(锁相环)输出像素的采样时钟,应用于像素点的采样,进而设计出高性能的基于 FPGA嵌入式系统的视频采集卡。