用ZYNQ做视频处理的小伙伴通常都会用到视频显示功能,用来把采集到的图像实时显示出来,HDMI作为常用的接口再合适不过了,显示器可以随处找到,又支持高清分辨率,可以满足大部分需求。
但是ZYNQ没有集成HDMI控制器,也就无法调用现成的驱动来显示,还需要大家自己去写逻辑,目前从硬件出发有两种方案:有编码芯片和无编码芯片。编码芯片如ADV7511和SIL9134,需要用户编写通用的行场同步和数据信号代码,无编码芯片方案可以采用RGB2DVI的IP核,在FPGA内部使用逻辑将信号转换为HDMI需要的TMDS信号,硬件上节省了成本,但是同样需要用户编写行场同步和数据信号代码。
软件层面,不管采用上述哪种硬件方案,编写能够驱动后端的时序信号逻辑是跑不掉的,Xilinx也给出了解决方案,Dynamic CLK,Video Timeing Controler、Axi Stream To Video Out和VDMA几个IP配合,功能非常全面,不管什么样的分辨率,什么样的行场同步格式,都可以实现,还可以通过IIC接口读到显示器的配置,从而动态的配置分辨率。这种高大全的设计毋庸置疑,但是,上手却是个问题,你需要非常熟悉几个IP的用法,IP的配置以及软件结合,线怎么连,arm程序怎么写都让人头大。如果你是个刚入门的小白,或者不想要这么全的功能,只是想简简单单的输出个1080P30帧的图像,那么上述这条路子就非常难走,需要投入的时间也比较多。
现在就有一个非常简单的方案,纯纯干货,帮你节省大量的时间。
硬件方面采用HDMI直接与ZYNQ的F