特别需要注意的是,行同步信号各阶段持续时长的单位是像素时钟周期,而场同步信号各阶段持续时长的单位为行时钟周期(线),即扫描一行的时间长度。
3.2 像素时钟的产生
由于高分辨率模式所需的像素时钟往往都大于100 MHz,不能由开发板自带的晶振分频产生,所以在设计中采用了QUARTus中Tool->MegaWizard Plug-In Manager产生 IP核中的ALTPLL模块,实现数字锁相环PLL,将50 MHz的原始时钟信号转变为稳定的高频像素时钟。
3.3 VGA行场同步信号发生
下面是本设计中VGA同步信号产生的VerilogHDL描述:
reg [11:0] h_cnt, v_cnt;
always @(posedge clk_pix or negedge rst_n)
if(!rst_n)
h_cnt <= 0;
else if(h_cnt == H_TOTAL)
//sCANning of one line finished
h_cnt <= 0;
else
h_cnt <= h_cnt + 1'b1;
always @(posedge clk_pix or negedge rst_n)
if(!rst_n)
v_cnt <= 0;
else if(h_cnt == H_TOTAL)
if(v_cnt == V_TOTAL)
//scanning of one frame finished
v_cnt <= 0;
else
v_cnt <= v_cnt + 1'b1;
assign VGA_VS=(v_cnt>=0 && v_cnt<V_SYNC)?1'b0: 1'b1;
assign VGA_HS=(h_cnt>=0 && h_cnt<H_SYNC)?1'b0:1'b1;
3.4 检测样图信号的产生
由于检测图样多为有规律的色块,在图样产生过程中可以充分利用位运算来提高信号产生的速度,减少对存储单元的依赖。
3.5 仿真结果
本设计采用ModelSim专业仿真软件进行仿真。对于PLL模块,由于SE版本的ModelSim不支持Quartus II内置IP核,可以在Quartus II内独立仿真;对于其他模块,建立testbench.v测试文件,在ModelSim中新建项目进行编译、仿真。图5、图6分别是 PLL模块与VGA同步信号发生仿真结果。
仿真图中,clk是晶振产生的50 MHz时钟;rst_n是低电平有效清零输入;VGA_HS、VGA_VS分别为行同步、场同步信号;ready_sig为有效显示区指示信号;frame_sig为帧脉冲,每帧结束时产生一个高脉冲;x_addr、y_addr为当前扫描像素的坐标。
4 实际测试效果
产品的所有功能在ALTEra公司提供的DE0开发板上实现。图7是在SHARP 46英寸液晶屏(分辨率为1 920×1 080@60 Hz)上的实测结果(照片)。
由于VGA有着较为广泛的使用,所以本设计的图样输出接口设计成VGA模拟信号的输出。随着存储设备容量的扩大和信息传输速度的加快,未来的高清视频和高清图像的显示将由数字传输取代模拟传输。所以,若要进一步改进本文高分辨率LCD屏检测仪的设计,可以考虑增加HDMI和YPbPr多端子的输出,并进一步扩大检测分辨率范围,从而保证检测仪能适应更多LCD屏的检测。
参考文献
[1] 田佳天.高清SDI电视测试信号源在FPGA硬件平台上的设计和实现[DB/OL].http://www.paper.edu.cn,2010-12-23.
[2] 王恒心,熊庆国,王鑫,等.基于FPGA/CPLD的嵌入式VGA显示系统[J].微计算机原理,2008:146-148.
[3] VGA信号时序关系(VGA Signal Timing)[DB/OL].http://tinyvga.com/vga-timing.2011-02.