基于FPGA的VGA和HDMI视频拼接系统设计 下载本文

内容发布更新时间 : 2024/5/27 18:26:54星期一 下面是文章的全部内容请认真阅读。

图3.8 ADV7123内部图

要使用ADV7123,它的时序是至关重要的。ADV7123的操作时序图如图3.9所示,可见输出的时候只要给出输出数据的同步时钟即可,待时钟锁定数据后一段时间(t6)输出对应的模拟RGB量。

图 3.9 ADV7123 的操作时序图

ADV7123芯片可以和多种高精度的显示系统相兼容,能广泛地应用于各种图片图像

13

处理系统和数字视频系统中。但在设计硬件电路时需要注意几个问题:(1)IOR、IOB、IOG信号分别为红色、蓝色、绿色通道的正电流输出端,在本设计中,只用到24位的色彩值,R、G、B的颜色数分别是8、8、8位,其余的位全部接低电平。(2)COMP信号是对内部的参考运放进行补偿(3)Vref为1.235V的电压参考输出,需要与模拟电源之间连接一个0.1μF的电容。(4)为了控制图像信号的满幅度,需要在Rest管脚与GND之间连接一个滑动变阻器,通过调整Rest上的电阻值来对模拟输出做出调整,从而使图像可以以最佳的亮度显示在显示器上,该滑动变阻器的阻值选为510Ω。(5)IOG的电流值分为两种情况:当使用/SYNC信号时,IOG= 11.44Vref/Rset(mA);当不使用/SYNC信号时,IOG=7.9896×VREF/Rset(mA)。此外,为使输入电源干净,应该将0.01μF的退耦电容连接在ADV7123的电源端和模拟地端。

设计时序时,应该注意Pclk是时钟输入端,在时钟的上升沿琐存G0~G9、R0~R9、 B0~B9信号、/SYNC信号以及/BLANK信号。由FPGA提供的Hsync(行)和Vsync(场)同步信号,直接与VGA显示接口连接器相接。3个10位的IOR、IOB、IOG信号在点时钟脉冲Pclk的作用下送入到数据寄存器中,之后送到3个DAC模块中,复合同步信号和复合消隐信号加到IOR、IOB、IOG信号并送到输出端。根据以上分析,设计出VGA接口电路如图3.10所示。

图3.10 ADV7123 电路图

14

3.6 HDMI接口电路设计

HDMI 传输线包括三个不同的 TMDS 数据信息通道和一个时钟通道,这些通道用来传输音视频数据及附加信息,而FPGA输出的是24位的RGB信号,所以我们需要一个芯片来完成这种转换。本设计采用 Silicon Image 公司的 Sil9134 作为 HDMI 源接口芯片,该芯片符合 HDMI1.3 标准的HDMI 发送芯片,芯片处理的最高频率达到 225MHz ,可满足对高清视频格式输入输出系统的要求。

Sil9134是Silicon Image 公司推出的第三代HDMI接收器。它符合HDMI1.3 规范,可支持最高单色12位深度,用HDMI线即可实现显示1080P@60Hz的图像。同时它后向兼容DVI 1.O,因此它可以直接与DVI源相连接,比如高清数字机顶盒和PC等。高效的色度转换功能将RGB视频数据转化为标清格式或高清格式的Ycbcr格式。Sil9134支持HDCP加密功能,可以接收经过HDCP密钥加密的信息。这些密钥降低了成本,同时对传输的视频信息做了最高级的安全保护。Sil9134使用了最新的TMDS核技术,这种技术通过了所有的HDMI兼容性测试。如图3.11所示,是Sil9134的功能图。

图3.11,Sil9134功能图

Sil9134电路图如图3.12所示

15

图3.12,Sil9134电路图

3.7 硬件电路总体框图

DDR2 Flash 晶振电 路

输入 TW2867 FPGA ADV7123 VGA接口 Sil9134 HDMI接口 16

4 软件部分设计

完成了系统的硬件设计,接下来需要在 FPGA 上实现相应的电路才能完成图像数据的存储与显示。在研究了本设计需求之后,将 FPGA 中的模块主要分为图像剪切模块、图像存储模块和图像显示模块。本设计运用 Verilog HDL 语言进行设计。下面将对图像剪切模块、图像存储模块和图像显示模块进行详细的介绍。

本次设计开发工具为ALTERA公司的Quartes ii 12.1 。

4.1 图像剪切模块

本次设计输入的视频源为模拟信号,分辨率为1024x768,经过TW2867转换后,

输出为16位的YCbCr格式的视频信号,分辨率仍然为1024x768。因为要把视频信号分别显示在VGA和HDMI两台显示器,所以要把视频信号进行分割,分割后的视频分辨率为原来的一半,即512x768,VGA显示器显示的是原视频的左半部分,HDMI显示器显示的是原视频的右半边分。下面将解释剪切的代码。

input[11:0] clipper_top, /*视频剪切参数:top */ input[11:0] clipper_left, /*视频剪切参数:left */ input[11:0] clipper_width, /*视频剪切参数:width */ input[11:0] clipper_height, /*视频剪切参数:height */ clipper_top、clipper_left表示剪切的起始点,clipper_width、clipper_height表示剪切的宽度和高度。

VGA显示的参数

.clipper_left(12'd0), .clipper_width(12'd512), .clipper_top(12'd0), .clipper_height(12'd768), HDMI显示的参数

.clipper_left(12'd512),

17