Bootstrap

《15寸移动式心电监测仪》制作纪实 :zynq 7000系列 HDMI多输出同显

《15寸移动式心电监测仪》制作纪实 :zynq 7000系列 HDMI多输出同显

何为HDMI多输出同显

HDMI多输出同显就是说,会从板子上输出两路或者多路HDMI信号,但这几路HDMI显示的是完全一致内容,画面是复制的。就像这样:
(这个是跑HDMI测试的PS图片显示程序)在这里插入图片描述
(这个是上了Linux之后的样子)
在这里插入图片描述
在这里,我们用这种方法向仪器外提供一个HDMI输出接口,将仪表画面同时投送到大屏幕上。

如何实现

HDMI知识

拿一个HDMI接口开讲:
在这里插入图片描述
1-12PIN:TMDS数据
发送音频、视频及各种辅助数据
信号编码方式:遵循DVI1.0规格。Single-link (Type A HDMI) 或 dual-link (Type B HDMI)
视频像素带宽:从25 MHz到340 MHz(Type A, HDMI 1.3)或至680MHz (Type B)。带宽低于25MHz的视频信号如NTSC480i将以倍频方式输出。每个像素的容许数据量从24位至48位。支持每秒120张画面1080p分辨率画面发送以及WQSXGA分辨率
像素编码方式:RGB4:4:4, YCbCr 4:4:4(8-16 bits per component); YCbCr 4:2:2(12 bits per component); YCbCr 4:2:0(HDMI 2.0)
音频采样率:32kHz, 44.1kHz, 48kHz, 88.2kHz, 96kHz, 176.4kHz, 192kHz, 1536kHz(HDMI 2.0)。
音频声道数量:最大8声道。HDMI 2.0支持32声道。
音频流规格:IEC61937兼容流,包括高流量无损信号如Dolby TrueHD、DTS-HD Master Audio。

13PIN:CEC沟道
CEC全文为Consumer Electronics Control
必须预留线路,但可以不必实现
用来发送工业规格的AV Link协议信号,以便支持单一遥控器操作多台AV机器
为单芯线双向串列总线
在HDMI 1.0协议中制订,在1.2a版中更新 [1]
一些制造商可能使用HDMI CEC,但是可能使用不同的名称来代表CEC功能

15,16PIN:DDC沟道
DDC全文为Display Data Channel
发送端与接收端可利用DDC沟道得知彼此的发送与接收能力,但HDMI仅需单向获知接收端(显示器)的能力。
使用100kHz时钟频率的I²C信号,信号电平为5V
发送数据结构为VESAEnhanced EDID(V1.3)。

17,18PIN:5V电源(源端提供给接受端)

19PIN:热插拔检测

vivado部分

1.添加新的HDMI输出IP核
不用自己写verilog,我们调用IP核即可。
在这里插入图片描述
这里以双路为例,原来的是一路,那我们加一路。
在这里插入图片描述
2.把总线展开,并联连线:
在这里插入图片描述
3.新建一个xdc文件,仿照板载HDMI进行约束:
在这里插入图片描述
每一个TMDS差分对有三行,HDMI有四个,只需要指定positive端即可,n端会自己对应上。

hdmi_oen为普通的LVCOMS33引脚。
在这里插入图片描述
约束之后一定Ctrl+S一下,然后点一下Reload,让vivado读取约束文件,同步到I/O port 中,然后去I/O port 里面检查一下是不是对应上了。
这里推荐大家按照我的方法直接修改XDC,然后同步,因为我发现在I/Oport中直接分配,无法正确分配TMDS差分对,也并不报错。

硬件部分

参照ALINX 板子HDMI输出部分,受限于手头的材料与快速测试的要求,我对其做了精简与改动,并不推荐大家也这么干,尽管是可以用,但是信号完整性较差,也不太符合规范。
在这里插入图片描述

1.我们要从EXT IO中拖四组差分对出来,ALINX的EXT IO并不是直接与FPGA相连,而是过了一个33欧姆的排阻,但这里我没有管它。
对于HDMI来讲它是不应该有的
在这里插入图片描述

2.HDMI四对差分线需要上拉电阻,因手头缺少50欧姆电阻,改成100欧姆。上拉电源为3.3V时画面时好时坏,后上拉至5V画面正常。为了测试,临时使用。
实际应为50欧姆,并上拉到3.3V,大家不要学我,要按照电路图标准走

在这里插入图片描述
3.外部HDMI接口中I2C的处理:直接不接。
这里说一下可以临时这样做的原因:因为HDMI仅需单向获知接收端(显示器)的能力,这就意味这如果发送端保证使用的是显示器能够接受的分辨率,就可以与之不通信。
(源端使用的是1024*768,我手上的显示器支持)

4.外部HDMI接口中5V的处理:直接接5V。

5.然后开始接线,接好了线把线束捆好,否则会有些干扰(这里还是精简了,应该使用差分屏蔽电缆)
在这里插入图片描述

总结一下:尽管不符合规范,但驱动HDMI最少10根线(四组差分对+5V+GND)就可以了,这个可以在测试的时候临时使用。

这样做以后就可以看到HDMI多输出同显的效果啦~
在这里插入图片描述

;