显示器是飞行员获取飞机姿态导航信息、任务信息、战场姿态的关键设备[1]。随着信息量的不断增加,显示器的分辨率也在不断提升,能够显示高清画面的DVI信号逐渐在视频传输系统中占据主导地位。近年来,航图、近地告警、显控画面和机载雷达等与显示设备之间逐渐开始采用DVI信号进行信号传输。本文结合机载航电显控系统要求,将航图、近地告警、显控画面或机载雷达中的两个信号源同时显示在一个大分辨显示器上。在DVI信号基础上,提出基于FPGA的双链路DVI信号设计,可以实现将两路1 280×1 024@60 Hz单链路DVI转换成一路 2 560×1 024@60 Hz分辨率的双链路DVI信号进行传输。
1 双链路DVI接口
1999年,由Silicon Image、Intel、IBM、HP等公司共同组成数字显示工作组DDWG(Digital Display Working Group)制定了数字视频接口DVI(Digital Visual Interface)[2]。由于其高带宽、长距离、抗干扰能力强等优势,DVI信号作为数据传输系统数字化方式正得到越来越多的应用[3]。
DVI采用最小化传输差分信号TMDS(Transition Minimized Differential Signaling),单通道TMDS最大带宽为1.65 Gb/s。在DVI1.0标准中,传统的单链路传输信道采用3路TMDS数据通道(data0~data2)和一路TMDS差分时钟通道来传输数字视频信号,提供3×1.65 Gb/s的理论带宽,最高分辨率可达1 600×1 200@60 Hz,时钟达到162 MHz,实际带宽为3×1.62 Gb/s[4]。而双链路DVI传输信道采用6路TMDS数据通道(data0~data5)和一路TMDS差分时钟通道来传输数字视频信号。如图1所示,双链路DVI信号提供6×1.65 Gb/s的理论带宽,最高分辨率可达2 560×1 600@60 Hz。双链路DVI和单链路DVI可实现的分辨率对照表如表1所示。
本设计采用108 MHz的时钟将两幅分辨率为1 280×1 024@60 Hz的画面转换成分辨率为2 560×1 024@60 Hz的双链路DVI信号发送给显示器。
2 系统构架与实现
航图、近地告警、机载雷达等画面都采用DVI信号进行传输。本文结合机载航电显控系统需要同时显示两个视频源的实际需求,设计了如图2所示的双链路DVI信号系统。
从图2中可以看出,整个系统包括2个单链路的DVI信号源、DVI解码电路、双链路DVI编码电路、帧存电路和FPGA电路。
系统工作方式:首先将信号源送来的两路DVI信号经解码后转换成两组108 MHz的RGB数据以及相应的控制信号;然后FPGA系统需要将分辨率为1 280×1 024@60 Hz的两幅画面合成为一幅分辨率为2 560×1 024@
60 Hz的画面,此时时钟频率为216 MHz;再按照DVI双链路的标准将数据分发到DVI编码通道;最后由双链路DVI编码电路将数据转换成双链路DVI信号。
DVI解码电路采用专用的DVI接收芯片将DVI信号源转换为24 bit的并行视频数据信号。帧存选用Micron公司的SDRAM芯片MT48LC4M32B2-6,其外部时钟速率可在一定范围内连续变化,最高工作频率可达到166 MHz[5]。系统对1 280×1 024分辨率的画面进行帧缓存储,一帧画面需要1 280×1 024=1 310 720个地址空间,该SDRAM具有4 MB的存储空间,满足存储要求。本系统中采用两片SDRAM进行乒乓操作,以保证实际显示中不丢失画面。
2.1 FPGA系统设计
FPGA系统顶层构架如图3所示,系统主要由DVI信号画面合成模块、双链路DVI数据转换模块和双链编码芯片配置模块三部分组成。
2.2 DVI信号合成模块
外部输入的航图信号或近地告警等信号经过解码电路后,将10 bit的串行DVI信号解码成8 bit并行的像素数据及相应的控制信号,并发送到FPGA内部。FPGA接收两路分辨率为1 280×1 024@60 Hz的数字信号后需要在FPGA内部实现对两幅画面的合成处理。为了减少对帧存资源的占用,本设计只选择其中一幅画面进行帧缓存储处理,以另外一幅画面的时序作为合成画面的参考时序(最终送屏显示的画面将与该时序同步),在FPGA中将该时序对应的画面定义为主画面,将需要进行帧缓存储的画面定义为副画面[6-8]。DVI信号合成模块的构架如图4所示。
利用主DVI信号的时钟和使能信号将主DVI信号的Data写入FPGA内部FIFO(深度为2 048 bit),利用倍频后的时钟和DEA1信号将数据读出,产生DataA1。
其中时序A产生3个使能信号,时序A的时序示意图如图5所示。
FPGA以副DVI信号的场同步信号为参考时序(即相同的场同步),利用晶振时钟分别产生时序B和写SDRAM的地址,将数据写入SDRAM中相应的地址空间;以主DVI信号的场同步信号为参考时序(即相同的场同步),利用晶振时钟产生时序C和读SDRAM的地址将数据读出;最后利用倍频后的晶振时钟和DEA2信号通过FIFO将数据导出,产生DataA2。
利用DEA0信号将DataA1与DataA2合成后可产生一幅时钟为216 MHz、分辨率为2 560×1 024@60 Hz的画面。图6为使用QuartusⅡ11.0中SignalTap采集的信号合成模块时序图,图中inst38|deout、 inst26|deout、inst38|ALLde分别对应上述的DEA1、DEA2、DEA0。从图中可以看出工作情况与以上描述一致。
2.3 DVI双链路数据转换模块
DVI双链路数据转换模块包括两个部分:(1)DVI信号奇偶点的分离,(2)双链路DVI数据编码预处理。DVI双链数据转换模块的构架如图7所示。
DVI双链路信号是DVI单链路信号的扩展,其扩展原理是将原有的3路TMDS数据通道(data0~data2)扩展为6路TMDS数据通道(data0~data5)。具体的实现方式是将行方向的点拆分为奇点和偶点,分别放入data0~data2和data3~data5中,所以在进行数据转换时首先要将DVI信号按照奇偶点的模式进行拆分,其次按照双链路DVI编码电路的实际要求对视频信号的数据进行编码预处理。
从图7中可以看出,视频信号拆分为奇偶点后是24 bit的并行数据,DVI编码芯片接收数据为12 bit的并行数据,所以在发送给编码芯片之前需要对数据进行预处理。预处理的原理是将24 bit的RGB数据按照固定的对应关系分别在时钟的上下边沿分发到12 bit的数据位上。其对应关系如表2所示。
2.4 双链编码芯片的配置
DVI双链数据产生后便可以发送到双链路DVI编码电路,该电路通过使用两片编码芯片的组合来实现。两片编码芯片分别为主编码芯片和从编码芯片,主编码芯片实现时钟通道和data0~data2通道的编码,从编码芯片实现data3~data5通道的编码。主、从编码芯片接收相同的时钟和时序,其中主编码芯片接收奇点数据,从编码芯片接收偶点数据和来自主编码芯片的同步控制信号。双链路DVI编码电路示意图如图8所示。
双链路的DVI编码电路需要对DVI编码芯片的内部寄存器进行配置后才能进行正常工作。编码芯片的配置顺序如图9所示。
在进行编码电路配置前首先要关闭视频信号,然后分别对从编码芯片和主编码芯片的寄存器进行配置(此时编码芯片处于不工作状态)。配置完毕后需要对从编码芯片和主编码芯片的寄存器状态进行确认,若配置正确则将视频信号打开,否则需要对主从编码器进行重新配置。最后将从编码芯片和主编码芯片的使能信号打开,使编码器处于正常工作状态。
经过双链路DVI编码电路产生的编码信号可直接发送到支持双链路DVI信号的显示器进行显示。
3 验证
本设计以Altera的EP3C80F780I8芯片为主控芯片,在QuartusⅡ 11.0 平台上使用VerilogHDL对逻辑进行设计,编码芯片信号为SIL1178,测试显示器选用飞利浦的显示器298x4q。图10为拍摄的DVI双链路显示画面,左边为动态俯视航图画面,右边为动态地形画面。从图中可以看出,本设计测试效果良好。
本文依据DVI1.0的标准,提出了一种基于FPGA的双链路DVI信号发生设计方案,在Altera公司CycloneⅢ平台上实现了2 560×1 024@ 60Hz分辨率的高清双链路DVI信号输出。本设计可广泛应用于高清大屏显示领域。