赛灵思推出首款真正的allprogrammable(全可编程)异构多处理soc——zynqultrascale mpsoc。采用台积公司(tsmc)新一代16nmfinfet工艺节点的zynqultrascale mpsoc包含一个可扩展的32位或 64位多处理器cpu、用于实时处理图形和视频的专用硬化引擎、先进的高速外设,以及可编程逻辑,可用于汽车驾驶员辅助与安全、无线和有线通信、数据中心以及连接与控制等多种应用领域。
部分 zynqultrascale mpsoc的可编程逻辑(pl)中包含最新的视频编码器/解码器。这种新型硬化编解码器能够访问来自pl 或ps的视频和音频流,以提供和/或存取达到软件算法50倍的压缩视频信息,从而节省宝贵的系统存储空间。
zynqultrascale mpsocvcu 的主要特性
· 支持h.264和h.265hevc 视频标准
· 同步编码/解码
· 8kx4k视频,15fps,或者4kx2k视频,60fps
· 8位和10位色彩分量
· i、ip、ipb帧编码
· 4:2:0和4:2:2色度格式
xilinx vcu低延时方案如下图所示,信号源从livevideo source进入到mpsoc芯片,经过视频处理和encode后通过网线传递给后端mpsoc,后端decode后去到video sink显示;在整个end to end的视频链路上面 latency最低可以做到小于35ms的性能。这个低延时特性可以用在kvm\内窥镜\无线图传等等领域。
xilinx实现低延时有两种方案,如图所示:第一种是在ps上面跑gstreamer的软件架构加上pl的syncip,两个配合起来实现低延时设计;第二种方案是去掉pl的syncip,在ps里面跑vcu-ctrl-sw软件架构,在ps软件里面实现vcu的低延时设计。
在介绍完xilinx vcu低延时方案后我们来聊聊如何实现使用ps dp现有的live video in\out接口来代替dma来进行ps和pl之间的视频数据互传。
从ug1250的vcu trd可以看到整个设计框架,视频接入和输出要想跟ps进行交换数据时候都会用到dma等等模块,对于zu4ev器件来说pl资源是有限并且宝贵的;所以为了把宝贵的逻辑资源用于客户自己的算法,我们整个设计里面可以使用livevideo in接口把pl的视频信号接入到ps,也可以使用livevideo out接口把ps的视频数据传输到pl去做显示。利用这种巧妙的设计来满足性能和资源要求。
从ug1085第13章displayportcontroller章节里面可以看到livevideo in\out的架构。视频渲染管道执行图像混合、色度上采样和像素缩放。它有两个输入(混合前)和一个输出(混合后)。这两个输入路径并不相同。一个输入用于视频,另一个用于图形。图形路径有一个调色板,没有色度上采样模块(转换4:2:2到4:4:4),所以图形必须是4:4:4格式。视频路径具有4:2:0到4:2:2转换器、测试图形生成器和色度上采样模块块。
在dp的subsystem里面包括3个video channels, 1个graphics channel和2个 audio channels;其中video input架构如下所示。
non live mode 为了帮助a/v同步,a/v presentationtime必须通过相关的系统时钟打时间戳,并与a/v(例如视频帧和音频缓冲区)相关联,并将时间戳存储在dpdma描述符中提供给软件。
当图像在ps处理完成后要通过pl去做显示,那么可以通过live video out接口传入到pl。
为了保证视频数据和时钟同步需要按照下图来做时钟分配。
在vivado里面需要对dp接口做相关配置才能从硬件上面实现其作用。
前面已经在vivado里面完成相关配置,对于linux端来说也需要做相应的调整来配合才能完整实现其功能。
到此工程已经搭建完成;那么由于dp的源和终端之间是需要进行交互匹配才能实现显示功能,而我们没有真实使用dp接口,只是利用他的数据通道而已;所以我们还需要对dp的驱动进行一些小的修改才能使live video接口在没有连接dp显示器时候也能输出图像数据。
当pl获得live video的视频数据后,客户可以在pl里面加上mixer的ip来把ps过来的qt和pl其他视频数据流进行多画面叠加实现osd的功能。然后可以通过hdmi接口输出去正常显示。
希望获得实际工程请联系下面两位同事。
simonyang@comtech.com.cn
charlesxu@comtech.com.cn