基于FPGA/CPLD的嵌入式VGA显示系统
几种常用的时序参数如表 1和表2 所示,首先,根据显示器的性能选择一种合适的VGA模式,然后由象素时钟频率和图像分辨率计算出行总周期数,再把表 1和表 2中给出的 a、 b、c、d各时序段的时间按照象素计数脉冲源频率折算成时钟周期数。在FPGA/CPLD中用计数器和触发器,以计算出的各时序段时钟周期数为基准,产生不同宽度和周期的脉冲信号,再利用它们的逻辑组合构成图 2和图 3中的 a、b、c、d各时序段以及 ADV7125的空白信号 BLANK和同步信号 SYNC。
一个示例就是 60Hz时 1280×1024分辨率显示的 VESA标准,在 60Hz时,屏幕每
16.67毫秒更新一次。这个标准制定了帧大小,用它来定义分辨率和回扫次数之间的关系。对于分辨率大小为 1280×1024来说,帧的大小为 1688×1066,这个大小与像素时钟(Pixel Clock)有关,所谓像素时钟就是对像素的刷新频率。像素时钟为 1688×1066×60Hz 或者 108 兆 Hz(MHz)时,每个像素的刷新频率也就是大约 9.26纳秒,那么行频就为 60×1066=63960 行/秒,也就是用显示器的帧率乘以扫描线数量。可以用帧大小得到纵向回扫次数,为了得到纵向同步长度(Sync Length),可以从纵向帧大小减去纵向分辨率,也就是 1066-1024=42。这样,纵向回扫花费的时间和在屏幕上绘出 42 条线的时间相同,对于纵向回扫来说需要的时间为 42×1688×9.26 纳秒(656 微秒)。
在显示时序段( Display interval c),数据读写控制器从数据缓存区读取像素颜色,用这些颜色来控制输出设备(显示器)的亮度。一帧图像就准确的显示到VGA显示器上。
表 1:VGA行时序说明
评论