<font color="#FF8000">作者:OpenSLee;来源:FPGA开源工作室</font>
本实验基于ECE-CV K7-75T FPGA开发板实现。
软件使用Vivado 2018.1。
<strong>基于HDMI的视频流输入输出实验</strong>
<strong>1 HDMI概述</strong>
HDMI高清多媒体界面(英语:High Definition Multimedia Interface)是一种全数字化视频和声音发送接口,可以发送未压缩的音频及视频信号。HDMI可用于机顶盒、DVD播放机、个人计算机、电视游乐器、综合扩大机、数字音响与电视机等设备。HDMI可以同时发送音频和视频信号,由于音频和视频信号采用同一条线材,大大简化系统线路的安装难度。
<center><img src="http://xilinx.eetrend.com/files/2019-03/wen_zhang_/100018234-62774-tu1h…; alt="图1 HDMI硬件实物"></center>
<p align="center"><strong>图1 HDMI硬件实物</strong></p>
如图1,红框为ECE-CV板的HDMI输入输出接口,最高支持到1080P@60HZ的图像输入和输出功能。
<center><img src="http://xilinx.eetrend.com/files/2019-03/wen_zhang_/100018234-62775-tu2h…; alt="图2 HDMI_IN 和HDMI_OUT原理图"></center>
<p align="center"><strong>图2 HDMI_IN 和HDMI_OUT原理图</strong></p>
如图2所示为ECE底板的HDMI_IN和HDMI_OUT的原理图,下面对ECE-EDA和ECE-CV的HDMI接口的引脚介绍如表1所示:
<body>
<p><strong>表1 ECE-CV板HDMI接口引脚介绍</strong></p>
<table width="100%" border="1" cellspacing="0">
<tbody>
<tr>
<td width="143" valign="top"><p><strong>信号名称</strong></p></td>
<td width="136" valign="top"><p><strong>Kintex7引脚标号</strong></p></td>
<td width="98" valign="top"><p><strong>电平</strong></p></td>
<td width="191" valign="top"><p><strong>备注</strong></p></td>
</tr>
<tr>
<td width="143" valign="top"><p>HDMI_RX0_P</p></td>
<td width="136" valign="top"><p>R25</p></td>
<td width="98" valign="top"><p>TMDS_33</p></td>
<td width="191" valign="top"><p>HDMI接收数据0正</p></td>
</tr>
<tr>
<td width="143" valign="top"><p>HDMI_RX1_P</p></td>
<td width="136" valign="top"><p>T24</p></td>
<td width="98" valign="top"><p>TMDS_33</p></td>
<td width="191" valign="top"><p>HDMI接收数据1正</p></td>
</tr>
<tr>
<td width="143" valign="top"><p>HDMI_RX2_P</p></td>
<td width="136" valign="top"><p>T22</p></td>
<td width="98" valign="top"><p>TMDS_33</p></td>
<td width="191" valign="top"><p>HDMI接收数据2正</p></td>
</tr>
<tr>
<td width="143" valign="top"><p>HDMI_RX_CLK_P</p></td>
<td width="136" valign="top"><p>N21</p></td>
<td width="98" valign="top"><p>TMDS_33</p></td>
<td width="191" valign="top"><p>HDMI接收时钟正</p></td>
</tr>
<tr>
<td width="143" valign="top"><p>HDMI_RX_CEC</p></td>
<td width="136" valign="top"><p>P24</p></td>
<td width="98" valign="top"><p>LVCMOS33</p></td>
<td width="191" valign="top"><p>HDMI遥控器信号</p></td>
</tr>
<tr>
<td width="143" valign="top"><p>HDMI_RX_HPD</p></td>
<td width="136" valign="top"><p>N24</p></td>
<td width="98" valign="top"><p>LVCMOS33</p></td>
<td width="191" valign="top"><p>HDMI热插拔检测信号</p></td>
</tr>
<tr>
<td width="143" valign="top"><p>HDMI_RX_SDA</p></td>
<td width="136" valign="top"><p>M25</p></td>
<td width="98" valign="top"><p>LVCMOS33</p></td>
<td width="191" valign="top"><p>HDMI IIC数据</p></td>
</tr>
<tr>
<td width="143" valign="top"><p>HDMI_RX_SCL</p></td>
<td width="136" valign="top"><p>L25</p></td>
<td width="98" valign="top"><p>LVCMOS33</p></td>
<td width="191" valign="top"><p>HDMI IIC时钟</p></td>
</tr>
<tr>
<td width="143" valign="top"><p>HDMI_TX0_P</p></td>
<td width="136" valign="top"><p>M21</p></td>
<td width="98" valign="top"><p>TMDS_33</p></td>
<td width="191" valign="top"><p>HDMI发送数据0正</p></td>
</tr>
<tr>
<td width="143" valign="top"><p>HDMI_TX1_P</p></td>
<td width="136" valign="top"><p>N19</p></td>
<td width="98" valign="top"><p>TMDS_33</p></td>
<td width="191" valign="top"><p>HDMI发送数据1正</p></td>
</tr>
<tr>
<td width="143" valign="top"><p>HDMI_TX2_P</p></td>
<td width="136" valign="top"><p>P16</p></td>
<td width="98" valign="top"><p>TMDS_33</p></td>
<td width="191" valign="top"><p>HDMI发送数据2正</p></td>
</tr>
<tr>
<td width="143" valign="top"><p>HDMI_TX_CLK_P</p></td>
<td width="136" valign="top"><p>P23</p></td>
<td width="98" valign="top"><p>TMDS_33</p></td>
<td width="191" valign="top"><p>HDMI发送时钟正</p></td>
</tr>
<tr>
<td width="143" valign="top"><p>HDMI_TX_CEC</p></td>
<td width="136" valign="top"><p>L24</p></td>
<td width="98" valign="top"><p>LVCMOS33</p></td>
<td width="191" valign="top"><p>HDMI遥控器信号</p></td>
</tr>
<tr>
<td width="143" valign="top"><p>HDMI_TX_HPD</p></td>
<td width="136" valign="top"><p>M24</p></td>
<td width="98" valign="top"><p>LVCMOS33</p></td>
<td width="191" valign="top"><p>HDMI热插拔检测信号</p></td>
</tr>
<tr>
<td width="143" valign="top"><p>HDMI_TX_SDA</p></td>
<td width="136" valign="top"><p>U16</p></td>
<td width="98" valign="top"><p>LVCMOS33</p></td>
<td width="191" valign="top"><p>HDMI IIC数据</p></td>
</tr>
<tr>
<td width="143" valign="top"><p>HDMI_TX_SCL</p></td>
<td width="136" valign="top"><p>N16</p></td>
<td width="98" valign="top"><p>LVCMOS33</p></td>
<td width="191" valign="top"><p>HDMI IIC时钟</p></td>
</tr>
</tbody>
</table>
</body>
<strong>2 HDMI IP介绍</strong>
如图3所示,rgb2dvi IP 实现RGB并行图像数据信号转换成串行差分信号输出。1920*1080P@60HZ的像素时钟为148.5MHZ。
<center><img src="http://xilinx.eetrend.com/files/2019-03/wen_zhang_/100018234-62776-tu3r…; alt="图3 rgb2dvi IP"></center>
<p align="center"><strong>图3 rgb2dvi IP</strong></p>
<center><img src="http://xilinx.eetrend.com/files/2019-03/wen_zhang_/100018234-62777-tu4r…; alt="图4 rgb2dvi IP设置"></center>
<p align="center"><strong>图4 rgb2dvi IP设置</strong></p>
如图4所示,其他项均默认,TMDS clock range 选择大于120MHZ。
如图5 Dvi2rgb IP实现串行视频差分信号转RGB并行图像数据。参考时钟为200MHZ。
<center><img src="http://xilinx.eetrend.com/files/2019-03/wen_zhang_/100018234-62778-tu5d…; alt="图5 dvi2rgb IP"></center>
<p align="center"><strong>图5 dvi2rgb IP</strong></p>
<center><img src="http://xilinx.eetrend.com/files/2019-03/wen_zhang_/100018234-62779-tu6d…; alt="图6 dvi2rgb IP设置"></center>
<p align="center"><strong>图6 dvi2rgb IP设置</strong></p>
如图6所示,TMDS clock range 选择大于120MHZ,Preferred resolution选择1920*1080。
<strong>3 HDMI输入输出实验系统搭建</strong>
笔记本电脑的HDMI输出1080P@60HZ的视频ECE-CV平台,经过HDMI_IN到核心板再到HDMI_OUT再到显示屏,显示屏正常输出视频。整个硬件平台如图7所示。
<center><img src="http://xilinx.eetrend.com/files/2019-03/wen_zhang_/100018234-62780-tu7e…; alt="图7 ECE-CV数字图像处理硬件平台"></center>
<p align="center"><strong>图7 ECE-CV数字图像处理硬件平台</strong></p>
如图8,为HDMI_IN_OUT最终系统连接图。
HDMI_IN_OUT系统由外部OSC输入100MHZ时钟,经过Clock Wizard IP的倍频输出200MHZ时钟到Dvi2rgb IP作为参考时钟,同时输出reset_n(locked )信号为全局复位信号。复位信号(reset_n)经过Utility Vector Logic IP取反输出‘1’复位‘0’有效rst信号。Dvi2rgb IP的参考时钟(Refclk)为200MHZ,差分数据信号输入为TMDS_IN,经过Dvi2rgb IP转换为RBG888的VGA时序信号以及输出像素时钟(Pixelclk)。Rgb2dvi IP接收RBG888的VGA时序信号输出TMDS_OUT的差分数据信号。xlconstant IP为HDMI的输入和输出提供热插拔信号输出为‘1’。
<center><img src="http://xilinx.eetrend.com/files/2019-03/wen_zhang_/100018234-62781-tu8h…; alt="图8 HDMI输入输出实验系统连接图"></center>
<p align="center"><strong>图8 HDMI输入输出实验系统连接图</strong></p>
<strong>4 实验结果展示</strong>
<iframe src='https://v.qq.com/txp/iframe/player.html?vid=j13601o9tkm' allowfullscreen frameborder=0 width="600" height="400"></iframe>
文章转载自:<a href="https://mp.weixin.qq.com/s?__biz=MzUyODUwMDExOQ==&mid=2247485010&am…开源工作室 </a>