Zynq UltraScale+ MPSoC的VCU架构
Zynq UltraScale+ MPSoC器件是基于16纳米FinFET技术的异构多处理SoC。整个器件架构分为两个主要模块:处理系统(PS)和可编程逻辑(PL)。
CG器件:CG器件采用异构处理系统,由双核Arm®CortexTM- a53和双核CortexTM R5实时处理单元组成,配合16nm FinFET+可编程逻辑。这些器件针对传感器融合、工业电机控制、低成本超声波、交通工程和工业loT应用进行了优化。它们提供卓越的每瓦性能,同时通过Zynq UltraScale+ MPSoC产品组合中的封装迁移提供未来的证明。
EG器件:EG器件采用四核Cortex-A53处理器平台,运行频率高达1.5 GHz,结合双核Cortex-R5实时处理器,Mali400 MP2图形处理单元和16nm FinFET+可编程逻辑。这些设备具有在下一代有线和5G无线基础设施、云计算以及航空航天和国防应用中脱颖而出所需的专门处理元件。
EV器件:EV设备建立在强大的EG平台上,并添加了集成的H.264 / H.265视频编解码器引擎,能够同时编码和解码,高达4K x 2K (60fps)的高清视频。EV设备是多媒体、汽车高级驾驶员辅助系统(或ADAS)、监控和其他嵌入式视觉应用的理想选择。
让我们更仔细地看看这些EV设备(V表示视频编解码器),并检查强化的视频编解码器块。有三种EV设备,称为ZU4、5和7,提供强化的视频编解码器。它们利用了常见的E系列处理器架构,其中包括四核Cortex-A53 MPCore,双核R5 tile和Mali 400 GPU,所有这些都与VCU互补。下面的表格显示了这三个EV设备中可用的所有资源。
图中为加固视频编解码器块的Zynq UltraScale+ MPSoC EV器件顶层框图。Zynq USce+MPSC的视频编解码单元(video codec unit, VCU)提供多标准视频编解码功能。它同时支持H.264和H.265标准。H.264是一种视频压缩标准,是目前最常用的视频内容录制、压缩和分发标准之一。H.265,或高效率视频编码(HEVC),是H.264的继承者,是下一代视频压缩标准,声称其效率是H.264的两倍。该VCU在PL中作为硬化块实现,与PS没有直接连接。 VCU块包含可以同时执行的编码(压缩)和解码(解压缩)功能。它还包含其他功能,方便VCU和PL之间的接口。VCU编码器的运行由CPU通过事先准备好的任务列表来控制,其中CPU的响应时间不在执行关键路径上。 通过集成VCU, Zynq UltraScale+ MPSoC EV设备提供了支持非常广泛的应用范围的功能,涵盖了从低比特率互联网流媒体应用到高清电视广播应用(如CCTV,安全和监控,数码相机,广播和消费电子产品)的所有形式的数字压缩视频。
Zynq UltraScale+ MPSoC VCU分为三个子块:视频编码器引擎+视频解码器引擎,以及电源和性能管理模块。
VCU编码器和解码器引擎是独立的,可以同时进行编码和解码,最高可达4K x 2K @60 Hz。也支持8K x 2K的编码和解码,但只有15hz的速率。这些编码器和解码器引擎都有离线处理器,这意味着VCU从内存中获取视频数据,处理后,VCU解码器将数据写回内存。视频编码器和解码器引擎模块设计用于使用H.265或HEVC(高效视频编码)和H.264或AVC(高级视频编码)标准处理视频流。它提供了对这些标准的完整支持,包括支持8位和10位颜色、仅Y(单色)和4:2:0和4:2:2色度格式,以及高达4K UHD的60hz性能。通常,编码操作涉及到在内存中的帧缓冲区中捕获的实时视频。编码器从帧缓冲区读取当前帧以及0、1或2个附加参考帧。编码(压缩)的比特流被写回内存,并可用于传输、存储或进一步处理。
编码过程可分为两个阶段:图像处理包括运动补偿、运动估计和其他块(但不包括熵编码)和熵编码只包括熵编码
VCU编码器还支持感兴趣区域(或ROI)编码,它允许您在帧内定义几个独立或重叠的区域。视频帧中的区域被标记为相对于图片背景的用户提供的质量(高、中、低或不关心)编码。在另一端,解码器从内存中读取压缩的比特流,并从帧缓冲区中读取0、1或2个额外的参考帧,解码当前帧并存储它解码器仅在片级操作。CPU需要少量的额外工作来解复用传输流并为解码器创建片级任务。
该模块监控VCU的功率和性能。电源监控是指监控:时钟门控:关闭时,VCU不消耗动态功率。电源门控:关闭时,VCU既不消耗静态电源,也不消耗动态电源。内置电源排序状态机,或外部状态机的接口。性能监控是指监控:任务执行时间带宽和AXI事务计数最小、最大和平均延迟
该表列出了VCU编码器的特性Profile特性描述了视频编解码器的一组功能。Baseline配置文件主要用于需要额外数据丢失健壮性的低成本应用程序。该配置文件用于:
Main/High profile用于:
级别是一组指定的约束,指示概要文件所需的解码器性能的程度。例如,配置文件中的支持级别指定了解码器可以使用的最大图像分辨率、帧速率和比特率。符合给定级别的解码器必须能够解码为该级别和所有较低级别编码的所有比特流。VCU编码器完全支持H.264和H.265标准,包括支持8位和10位色深以及4:2:2色度格式和4:2:0单色格式。VCU编码器支持所有三帧视频(I, P和B),并且只使用渐进式视频格式。它还支持半平面像素格式,这意味着亮度和色度组件是分开发送的。熵编码将表示视频序列元素的一系列符号转换成适合传输或存储的压缩比特流。
CABAC(或基于上下文的自适应二进制算术编码)是一种算术编码器,它将数据符号序列转换为单个小数,并且可以接近表示每个符号所需的最佳小数位数。H.265标准支持CABAC, H.264标准支持CAVLC和CABAC。CAVLC(或上下文自适应可变长度代码)是一种可变长度编码器,它将输入符号映射到一系列可变长度的码字。每个单词必须包含一个整数频繁出现的符号用短VLCs表示,不常见的符号用长VLCs表示;导致数据压缩。速率控制特性用于控制比特率。VCU编码器支持所有三种速率控制类型:CBR(用于传输的恒定比特率);VBR(用于存储的可变比特率);和恒定的量化参数低延迟。
VCU编码器块包括一个压缩引擎,带有四个相互连接的HEVC/AVC编码器内核,以及全局IP寄存器,中断控制器和带内存控制器的可选编码器缓冲区。编码器缓冲区连接到可编程逻辑中的UltraRAM或块RAM,并使用寄存器启用。编码器块由内部微控制器子系统控制,包括一个32位微控制器,具有32kB指令缓存,1kB数据缓存和32kB本地SRAM。APU使用32位的AXI4-Lite从接口来控制MCU,以配置编码器参数,启动/停止处理,获取状态和获取结果。两个128位的AXI4主接口用于获取视频输入数据、加载和存储中间数据以及将压缩后的数据存储回内存。两个32位的AXI4主接口用于获取MCU软件(指令缓存接口)和加载/存储额外的MCU数据(数据缓存接口)。编码器的总吞吐量为4K × 2K@ 60hz,或8K × 2K@ 15Hz。考虑到有四个核心,每个核心管理总带宽的25%,为了实现4K x 2K @ 60hz,需要四方并行处理。
一旦整个帧被处理完,中断就会进入APU。提供了一个可选的接口来连接编码器缓冲区,这可以使用PL uram和/或块来实现这些编码器缓冲区用于存储参考帧,这些参考帧可用于P和B帧编码。对于仅帧编码,这些缓冲区是不需要的。
该表显示了VCU解码器的特性。大多数这些功能类似于VCU编码器的功能。VCU解码器还支持错误恢复和错误隐藏,以最大限度地减少压缩视频流数据包丢失以及比特流损坏检查。VCU解码器具有独立的硬件启动码检测器以支持欺骗模式。
VCU解码器引擎具有与VCU编码器相似的架构。然而,与VCU编码器不同的是,它只有两个相互连接的HEVC/AVC解码器内核,以及全局寄存器,中断控制器和微控制器子系统,其中包含一个32位微控制器,具有32kB指令缓存,1kB数据缓存和32kB本地SRAM。单片机子系统控制VCU解码器。与VCU编码器类似,VCU解码器也有一个32位的axis - lite从接口,系统使用该接口来控制MCU配置解码器参数,开始视频帧的处理,并获取状态和结果。两个128位的AXI4主接口用于从系统内存中获取视频输入数据和存储视频输出数据,一个32位的AXI4主接口用于获取MCU软件和加载/存储额外的MCU数据。这里解码器的总吞吐量为4Kx 2K@60 Hz。考虑到只有两个核心,每个核心管理总带宽的50%,需要两倍的并行处理才能实现4K x 2K @ 60hz。请注意,在VCU解码器中没有额外的缓冲区可用,因为所有信息都来自比特流。
视频解码器的操作方式与视频编码器的操作方式非常相似。像视频编码器一样,视频解码器块通过高带宽主接口直接访问系统数据总线,用于将视频数据传输到/从外部存储器传输。视频解码器块控制软件也分为两层:运行在主处理器上的“高级”控制软件,以及运行在嵌入在硬件IP中的微控制器上的“低级”控制软件。
这个主接口将几种类型的视频数据放入外部DDR存储器,包括:
主接口还输出来自DDR内存的数据,例如:
Zynq UltraScale+ MPSoC的VCU块与视频源和接收器没有直接连接,也与处理器和内存没有直接连接。视频编码器块通过高带宽主接口直接访问系统数据总线,用于将视频数据传输到/从外部存储器传输。该视频编码器块可以根据需要,在控制器的帮助下连接到PS DDR或PL DDR存储器。视频编码器块控制软件分为两层。“高级”控制软件在主处理器(CPU)上运行,而“低级”控制软件在嵌入nP的微控制器(MCU)上运行该硬件IP由嵌入式MCU控制,使用寄存器映射来设置编码参数。CPU通过从接口与嵌入式MCU通信,从接口也连接到系统总线。该从接口每帧访问一次,向硬件IP发送帧级命令。可以在帧级别触发中断,以便在每个帧处理结束时唤醒CPU。
这些高级命令由嵌入式MCU处理,生成片/片级命令到视频编码器硬件。低级命令可以直接写入硬件寄存器,也可以打包到存储在外部存储器中的命令列表中,并由硬件通过主接口自动回读。
主接口将几种类型的视频数据放入外部DDR存储器:源帧像素参考帧像素参考系运动矢量切片/帧参数,如lambda表、缩放列表、QP控制或QP表,以及剩余数据(仅限AVC)
主接口还输出来自DDR内存的数据,其中包括:
剩余数据(仅限AVC)重构帧像素重构帧运动矢量编码的位流,和编码的比特流大小
请注意,此图还显示了与VCU编码器块集成的可选编码器缓冲。
VCU编码器目前支持感兴趣区域编码,它允许您在帧内定义几个独立或重叠的区域。ROI编码以相对于图片背景(未标记的区域)提供的质量(高、中、低和不关心)标记区域。您可以以像素为单位提供感兴趣的区域位置(上、左),以像素为单位提供宽度和高度,并提供质量索引。支持帧内多个和重叠的ROI区域。ROI参数现在可以动态更新。动态ROI允许用户在运行时为帧的特定部分指定一个或多个感兴趣的编码区域。这个特征动态地影响识别区域的视觉质量。
动态联机可用于视频会议和视频监控。
H.264 / H.265VCU IP核可以通过使用Vivado Design Suite IP集成商访问。顾名思义,该核心支持多标准视频编解码,包括支持H.265标准和H.264标准。该VCU是选定Zynq®UltraScale TM+ MPSoC器件的可编程逻辑中的集成块,无需直接连接到处理系统。它能够使用单独的引擎执行同时编码和解码功能。VCU还包含其他功能,方便VCU和PL之间的接口。VCU不支持音频。音频编码和解码可以在软件中使用PS或通过PL中的软IP执行。这张图显示了H.264/H.265视频编解码器单元IP核心GUI。
这里是顶层框图Zynq UltraScale+ MPSoC VCU与64位接口的PS DRAM互连。VCU模块通过高性能的128位AXI端口连接到PS dram。VCU编码器和解码器块分别使用两个HP 128位AXI端口。它们使用两个不同的端口从PS DRAM读写数据。该图还显示了处理4Kx2k @ 60hz视频输入所需的最大时钟频率和数据宽度。
的顶层框图Zynq UltraScale+ MPSoC VCU与64位接口的PL DRAM互连。64位DDR控制器由内存接口生成器(Memory Interface Generator,简称MIG)工具生成。它集成到PL中并连接到物理DRAM。VCU通过PL中的AXI互连连接到migg生成的DDR控制器。
该图还显示了处理4Kx2k @ 60hz视频输入所需的最大时钟频率和数据宽度。下面的示例展示了如何将两个32位物理dram并行连接以提供64位接口。编码器连接到PS DRAM,而解码器通过MIG连接到PL DRAM。