马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?注册
x
例说FPGA连载55:VGA显示驱动之功能概述特权同学,版权所有 配套例程和更多资料下载链接: http://pan.baidu.com/s/1c0nf6Qc
VGA(Video Graphics Array)即视频图形阵列,是IBM在1987年随PS/2(PS/2 原是“Personal System 2”的意思,“个人系统2”,是IBM公司在1987年推出的一种个人电脑。PS/2电脑上使用的键盘鼠标接口就是现在的PS/2接口。因为标准不开放,PS/2电脑在市场中失败了。只有PS/2接口一直沿用到今天)一起推出的使用模拟信号的一种视频传输标准,在当时具有分辨率高、显示速率快、颜色丰富等优点,在彩色显示器领域得到了广泛的应用。这个标准对于现今的个人电脑市场已经十分过时。即使如此,VGA仍然是最多制造商所共同支持的一个标准,个人电脑在加载自己的独特驱动程序之前,都必须支持VGA的标准。例如,微软Windows系列产品的开机画面仍然使用VGA显示模式,这也说明其在显示标准中的重要性和兼容性。 VGA最早指的是显示器640X480这种显示模式。(而今天的VGA其实已经不仅仅局限于640X480这种分辨率了,通常情况下,各种各样适用于VGA接口传输的分辨率都可以统称为VGA。当然了,严格来讲,每个分辨率都会有自己的叫法,如800X600就称作SVGA。)VGA接口如图7.1所示。
图7.1 VGA接口 驱动VGA显示的接口,主要有以下3种信号:行同步信号HSYNC,场同步信号VSYNC和3条色彩电压传输信号(R、G、B分别对应)。色彩信号的电压为0~0.7V,其同步是靠前面两个信号来协助的。至于HSYNC和VSYNC和色彩信号之间以什么样的关系进行传输,这都是相对固定的,虽然VGA收发双方没有时钟信号做同步,但我们通常会约定发送方有一个基本的时钟,VSYNC、HSYNC和色彩信号都会按照这个时钟的节拍来确定状态。
VGA的接口时序如图7.2所示,场同步信号VSYNC在每帧(即送一次全屏的图像)开始的时候产生一个固定宽度的高脉冲,行同步信号HSYNC在每行开始的时候产生一个固定宽度的高脉冲,色彩数据在某些固定的行和列交汇处有效。
图7.2 VGA驱动基本时序
如前所述,我们通常以一个基准时钟驱动VGA信号的产生,用这个基准时钟为时间单位来产生的时序如图7.3所示。
图7.3 VGA接口行、场时序
对于一个刷新频率为60Hz,分辨率为640X480的标准VGA显示驱动,若它的基准驱动时钟为25MHz,它的计数脉冲参数如表7.1所示。注意列的单位为“行”,而行的单位为“基准时钟周期数”,即25MHz时钟脉冲数。
表7.1 VGA驱动时序参数表 行/列[size=10.5000pt] | 同步脉冲[size=10.5000pt] | 后沿脉冲[size=10.5000pt] | 显示脉冲[size=10.5000pt] | 前沿脉冲[size=10.5000pt] | 帧长[size=10.5000pt] | [size=10.5000pt]列[size=10.5000pt] | [size=10.5000pt]2[size=10.5000pt] | 33[size=10.5000pt] | 480[size=10.5000pt] | 10[size=10.5000pt] | 525[size=10.5000pt] | [size=10.5000pt]行[size=10.5000pt] | 96[size=10.5000pt] | 48[size=10.5000pt] | 640[size=10.5000pt] | 16[size=10.5000pt] | 800[size=10.5000pt] |
对于一个刷新频率为72Hz,分辨率为800X600的SVGA显示驱动,若它的基准驱动时钟为50MHz,它的计数脉冲参数如表7.2所示。注意列的单位为“行”,而行的单位为“基准时钟周期数”,即50MHz时钟脉冲数。
表7.2 SVGA驱动时序参数表 行/列[size=10.5000pt] | 同步脉冲[size=10.5000pt] | 后沿脉冲[size=10.5000pt] | 显示脉冲[size=10.5000pt] | 前沿脉冲[size=10.5000pt] | 帧长[size=10.5000pt] | [size=10.5000pt]列[size=10.5000pt] | [size=10.5000pt]6[size=10.5000pt] | 23[size=10.5000pt] | 600[size=10.5000pt] | 37[size=10.5000pt] | 666[size=10.5000pt] | [size=10.5000pt]行[size=10.5000pt] | 120[size=10.5000pt] | 64[size=10.5000pt] | 800[size=10.5000pt] | 56[size=10.5000pt] | 1040[size=10.5000pt] |
对于一个刷新频率为60Hz,分辨率为1024X768的显示驱动,若它的基准驱动时钟为65MHz,它的计数脉冲参数如表7.3所示。注意列的单位为“行”,而行的单位为“基准时钟周期数”,即65MHz时钟脉冲数。
表7.3 XGA驱动时序参数表 行/列[size=10.5000pt] | 同步脉冲[size=10.5000pt] | 后沿脉冲[size=10.5000pt] | 显示脉冲[size=10.5000pt] | 前沿脉冲[size=10.5000pt] | 帧长[size=10.5000pt] | [size=10.5000pt]列[size=10.5000pt] | [size=10.5000pt]6[size=10.5000pt] | 29[size=10.5000pt] | 768[size=10.5000pt] | [size=10.5000pt]3[size=10.5000pt] | 806[size=10.5000pt] | [size=10.5000pt]行[size=10.5000pt] | 136[size=10.5000pt] | 160[size=10.5000pt] | 1024[size=10.5000pt] | 24[size=10.5000pt] | 1344[size=10.5000pt] |
对于一个刷新频率为60Hz,分辨率为1280X960的显示驱动,若它的基准驱动时钟为108MHz,它的计数脉冲参数如表7.4所示。注意列的单位为“行”,而行的单位为“基准时钟周期数”,即108MHz时钟脉冲数。
表7.4 XVGA驱动时序参数表 行/列[size=10.5000pt] | 同步脉冲[size=10.5000pt] | 后沿脉冲[size=10.5000pt] | 显示脉冲[size=10.5000pt] | 前沿脉冲[size=10.5000pt] | 帧长[size=10.5000pt] | [size=10.5000pt]列[size=10.5000pt] | [size=10.5000pt]3[size=10.5000pt] | 36[size=10.5000pt] | 960[size=10.5000pt] | [size=10.5000pt]1[size=10.5000pt] | 1000[size=10.5000pt] | [size=10.5000pt]行[size=10.5000pt] | 112[size=10.5000pt] | 312[size=10.5000pt] | 1280[size=10.5000pt] | 96[size=10.5000pt] | 1800[size=10.5000pt] |
对于一个刷新频率为60Hz,分辨率为1280X1024的显示驱动,若它的基准驱动时钟为108MHz,它的计数脉冲参数如表7.5所示。注意列的单位为“行”,而行的单位为“基准时钟周期数”,即108MHz时钟脉冲数。
表7.5 SXGA驱动时序参数表 行/列[size=10.5000pt] | 同步脉冲[size=10.5000pt] | 后沿脉冲[size=10.5000pt] | 显示脉冲[size=10.5000pt] | 前沿脉冲[size=10.5000pt] | 帧长[size=10.5000pt] | [size=10.5000pt]列[size=10.5000pt] | [size=10.5000pt]3[size=10.5000pt] | 38[size=10.5000pt] | 1024[size=10.5000pt] | [size=10.5000pt]1[size=10.5000pt] | 1066[size=10.5000pt] | [size=10.5000pt]行[size=10.5000pt] | 112[size=10.5000pt] | 248[size=10.5000pt] | 1280[size=10.5000pt] | 48[size=10.5000pt] | 1688[size=10.5000pt] |
对于一个刷新频率为60Hz,分辨率为1920X1080的显示驱动,若它的基准驱动时钟为130MHz,它的计数脉冲参数如表7.6所示。注意列的单位为“行”,而行的单位为“基准时钟周期数”,即130MHz时钟脉冲数。
表7.6 HDTV驱动时序参数表 行/列[size=10.5000pt] | 同步脉冲[size=10.5000pt] | 后沿脉冲[size=10.5000pt] | 显示脉冲[size=10.5000pt] | 前沿脉冲[size=10.5000pt] | 帧长[size=10.5000pt] | [size=10.5000pt]列[size=10.5000pt] | [size=10.5000pt]4[size=10.5000pt] | 18[size=10.5000pt] | 1080[size=10.5000pt] | [size=10.5000pt]3[size=10.5000pt] | 1105[size=10.5000pt] | [size=10.5000pt]行[size=10.5000pt] | 12[size=10.5000pt] | 40[size=10.5000pt] | 1920[size=10.5000pt] | 28[size=10.5000pt] | 2000[size=10.5000pt] |
了解了VGA的基本驱动原理,我们还要回来看看实际驱动电路的工作原理。由于FPGA接口都是数字信号,无法直接输出VGA色彩信号所需的0-0.7V模拟电压,所以需要使用专门的DAC芯片进行转换。我们的SF-VGA子板就板载了一颗专用的3路DAC转换芯片ADV7123。
本实例连接VIP1核心板和SF-VGA子板进行实验。VGA驱动时序产生模块通过宏定义实现VGA /SVGA /720p /1080p多分辨率显示驱动,功能框图如图7.4所示。
图7.4 工程实例5功能框图
|