文档版本:
Video Mixer v5.2
Vivado Design Suite
PG243 January 2, 2024
IP Facts
Introduction
AMD LogiCORE™ IP Video Mixer core提供了一个灵活的视频处理模块,用于进行alpha混合和合成多个视频 和/或 图形层。支持最多十七层(一个主层和十六个覆盖层),还提供了一个可选的logo层,这些图层的数据来自 memory 内存映射或 streaming 流媒体视频 cores(通过AXI4-Stream接口)的视频输入的组合。此IP核可以通过详尽的寄存器接口进行编程,以控制帧大小、背景颜色、图层位置以及AXI4-Lite接口。同时,提供了一套全面的中断状态位用于处理器监控。
Features
支持(每个像素)十七层视频/图层和logo层视频/图层的alpha混合。
可选的logo层(在块RAM中),支持颜色透明。
层可以是内存映射的AXI4接口或AXI4-Stream。
提供可编程的背景颜色
提供可编程的图层位置和大小
提供图层的放大功能,可放大1倍、2倍或4倍
可选的内置色彩空间转换和色度重新采样
支持RGB、YUV 444、YUV 422、YUV 420
在stream interface上支持8位、10位、12位和16位每颜色分量的输入和输出,在memory
interface上支持8位和10位每颜色分量
支持半平面内存格式以及打包内存格式
支持的空间分辨率从64 × 64 到 8,192 × 4,320
在所有支持的设备系列中支持8K60
注意:在低功耗设备上的性能可能会较低
支持可编程的CSC系数以支持各种色度计,如BT601、BT709和BT2020
支持每个时钟采集1、2、4或8个样本
支持可编程的CSC(颜色空间转换)系数寄存器
1. Overview
AMD LogiCORE™ IP Video Mixer 可以从多个外部视频和/或图形源生成一个单一的输出视频流。这些源可以被动态定位、缩放,并使用alpha混合进行组合。
1.1 Navigating Content by Design Process
1.2 Feature Summary
The Video Mixer是一个高度可配置的IP核,支持将多达十七层视频和/或图形图层以及一个额外的logo图层混合成一个单一的输出视频流。除了主图层之外,所有图层可以是内存映射的AXI4接口或基于AXI4-Stream的接口。每一层都支持alpha混合(全局或每像素)和缩放功能。最后,内置的色彩空间转换在RGB与YUV 4:4:4之间是可选的,以及在YUV 4:4:4、YUV 4:2:2和YUV 4:2:0之间的色度重采样也是可选的。
Video Mixer提供了一个可选的logo图层。它将存储在块RAM中的logo混合到最顶层。可以使用可编程的颜色键来使logo的部分内容透明。此外,也可以使用alpha混合(全局或每像素)来实现logo的透明度。
Alpha混合是对两个图像层进行凸组合,以实现透明度。混合器中的每一层都有一个固定的Z平面顺序;或者从概念上讲,每一层都更接近观察者,具有不同的深度。因此,图像和直接“覆盖”在其上的图像会被混合。混合的顺序和程度可以实时编程。这可以通过全局alpha来完成,即每个像素使用相同的alpha值,或者在选择了RGBA8、BGRA8或YUVA8内存视频格式的情况下,通过每个像素的alpha值来完成。每像素alpha还支持RGBA和YUVA444流媒体视频格式。
通过像素和线条重复的方式进行缩放得到支持,能够提供1倍、2倍或4倍的图层缩放。这项功能可以用来节省由图层所使用的内存带宽,也就是说,一个内存层可以读取一个1920×1080的帧缓冲区,同时实时将其放大到3840×2160的分辨率。
Video Mixer支持每个时钟周期并行处理多个像素,从而支持超过1080p60的分辨率,并且支持多达三种颜色分量,每种颜色分量可以是8位、10位、12位或16位。
1.3 Applications
1.4 Licensing and Ordering Information
2. Product Specification
2.1 Standards
Video Mixer符合AXI4-Stream视频协议、AXI4-Lite互连和内存映射AXI4接口标准。
2.2 Performance
以下部分详细介绍了视频混合器的性能特征。
2.2.1 Maximum Frequencies
对于目标设备,以下是典型的时钟频率:
• AMD Virtex™ 7 和 AMD Virtex UltraScale™ 设备,速度等级为 –2 或更高:300 MHz
• AMD Kintex™ 7 和 AMD Kintex UltraScale™ 设备,速度等级为 –2 或更高:300 MHz
• AMD Artix™ 7 设备,速度等级为 –2 或更高:150 MHz
• AMD UltraScale™+ 设备,速度等级为 -1 或更高:300 MHz
• AMD Versal™ Adaptive SoC 设备,速度等级为 -1 或更高:300 MHz
最大可实现的时钟频率可能会有所变化。最大可实现的时钟频率以及所有资源计数可能会受到其他工具选项、设备中的额外逻辑、使用不同版本的 AMD 工具以及其他因素的影响。
2.2.2 Throughput
The Video Mixer支持其 AXI4-Stream 从属和主接口之间的双向数据节流。如果从属端数据源未提供有据样本(s_axis_video_tvalid 未断言),则在其内部缓冲区耗尽后,核心无法生成有效的输出样本。同样,如果主接口未准备好接受有效数据样本(m_axis_video_tready 未断言),则在其缓冲区变满后,核心将无法接受有效的输入样本。
如果主接口能够提供有效样本(s_axis_video_tvalid 为高),并且从属接口准备好接受有效样本(m_axis_video_tready 为高),通常情况下,核心可以根据 AMD Vivado™ 集成设计环境(IDE)中的每个 ap_clk 周期的 Samples Per Clock 参数,处理并生成一、两、四或八个像素。
然而,在每条扫描线和帧结束时,核心会清空内部流水线,持续几个时钟周期,在此期间 s_axis_video_tready 被取消断言,表示核心尚未准备好处理样本。
当Video Mixer处理定时流式视频(这在大多数视频源中是典型的)时,刷新周期与消隐期重合,因此不会降低系统的吞吐量。
对于流式视频源(即非帧缓冲数据),视频混合器必须以最小的突发数据速率运行。例如,对于 IP 的每个时钟周期一个样本的配置,对于 1080p60 视频源,数据速率为 148.5 MHz。对于 4K 60 fps 视频源,核心必须在每个时钟周期两个样本的配置下以 297 MHz 运行,或者对于 AMD Artix™ 7 等较慢的设备,以每个时钟周期四个样本的配置下以 148.5 MHz 运行。
2.3 Resource Utilization
有关视频混合器性能和资源利用的详细信息,请访问性能和资源利用网页。
2.4 Port Descriptions
视频混合器使用行业标准的控制和数据接口与其他系统组件进行连接。以下各节介绍了核心所提供的各种接口。图2-1显示了视频混合器的输入输出图。在此配置中,IP 具有10个AXI接口:
• AXI4-Lite control interface (s_axi_CTRL)
• AXI4-Stream streaming video output (m_axis_video)
• AXI4-Stream streaming video input (s_axis_video, s_axis_video1, etc.)
• Memory mapped AXI4 interface (m_axi_mm_video4, m_axi_mm_video5, etc.).
接口会根据层的数量和层类型(流式或基于内存)而改变。例如,图2-2显示了视频混合器 IP 的最小配置,仅包含一个主层和一个标志层。
2.4.1 Common Interface Signals
表2-1总结了由专用的AXI4-Stream、内存映射的AXI4数据或AXI4-Lite控制接口共享或不包含在内的信号。
ap_clk 和 ap_rst_n 信号在核心、AXI4-Stream、内存映射的AXI4数据接口以及AXI4-Lite控制接口之间共享。
ap_clk
AXI4-Stream、内存映射的AXI4和AXI4-Lite接口必须与核心时钟信号ap_clk同步。所有AXI4-Stream、内存映射的AXI4接口输入信号和AXI4-Lite控制接口输入信号在ap_clk的上升沿采样。所有AXI4-Stream输出信号的更改发生在ap_clk的上升沿之后。
ap_rst_n
ap_rst_n引脚是一个与AXI4-Lite、AXI4-Stream和内存映射的AXI4接口相关的低电平有效的同步复位输入。当ap_rst_n设置为0时,核心将在下一个ap_clk的上升沿进行复位。
interrupt
中断状态输出总线可以与外部中断控制器集成,该控制器具有独立的中断使能/屏蔽、中断清除和中断状态寄存器,从而可以对系统处理器进行中断聚合。
2.4.2 AXI4-Stream Video Interface
无论以何种配置,视频混合器都具有名为 s_axis_video 和 m_axis_video 的AXI4-Stream视频输入和输出接口。对于每个额外的流式层,还有一个名为 s_axis_videoi 的额外AXI4-Stream视频输入,其中 i 代表层号减1。所有视频流接口均遵循AXI4-Stream视频IP和系统设计指南(UG934)[参考3]中定义的接口规范。视频AXI4-Stream接口可以是每个时钟单像素、双像素、四像素或八像素,并且可以支持每个分量8、10、12或16位。流接口配置(每时钟采样数和每分量位数)在IP级别选择,并适用于AXI4-Stream接口的所有实例。
表2-2到表2-6解释了所有支持的颜色格式中,具有每时钟2个像素和每分量10位配置的AXI4-Stream接口的像素映射。鉴于视频混合器始终需要至少三个分量视频的硬件配置,因此需要AXI4-Stream子集转换器来与YUV 4:2:2、4:2:0或仅亮度的其他1个或2个分量视频接口的IP进行通信。
表2-7显示了输入和输出AXI4-Stream视频流接口的接口信号。
2.4.3 Memory Mapped AXI4 Interface
对于每个内存层,都有一个名为 m_axi_mm_videoi 的内存映射AXI4接口,其中 i 代表层号减1。内存映射的AXI4接口在ap_clk时钟域上运行。这些信号遵循Vivado Design Suite:AXI参考指南(UG1037)中定义的规范。表2-8显示了视频混合器支持的内存中的像素格式。
video 格式 P14-P18 不再翻译
2.4.4 AXI4-Lite Control Interface
AXI4-Lite接口允许您在核心内动态控制参数。配置可以使用AXI4-Lite主状态机、嵌入式ARM®或软系统处理器(如AMD MicroBlaze™)来完成。通过Vitis驱动程序提供的功能,可以使用AXI4-Lite接口来控制视频混合器。另一种方法是对寄存器空间执行读写事务,但仅在第一种方法不可用时才应使用。表2-9显示了AXI4-Lite控制接口信号。此接口在ap_clk时钟上运行。
2.5 Register Space (P19-P30 不再翻译)
2.5.1 Top-Level Registers
2.5.2 CSC Coefficient Registers
2.5.3 Layer Registers
2.5.4 Logo Layer Registers
3. Design Flow Steps
本章描述了定制和生成核心、约束核心以及针对该IP核心的仿真、综合和实现步骤。关于标准AMD Vivado™设计流程和IP集成器的更详细信息,请参阅以下Vivado Design Suite用户指南:
• Vivado Design Suite用户指南:使用IP集成器设计IP子系统(UG994)[Ref 4]
• Vivado Design Suite用户指南:使用IP设计(UG896)[Ref 5]
• Vivado Design Suite用户指南:入门指南(UG910)[Ref 6]
• Vivado Design Suite用户指南:逻辑仿真(UG900)[Ref 7]
3.1 Customizing and Generating the Core
本节包含使用AMD工具在Vivado Design Suite中自定义和生成核心的信息。
如果您正在Vivado IP集成器中进行核心的定制和生成,请参阅Vivado Design Suite用户指南:使用IP集成器设计IP子系统(UG994)[Ref 4]以获取详细信息。IP集成器在验证或生成设计时可能会自动计算某些配置值。要检查这些值是否有变化,请参阅本章节中参数的描述。要查看参数值,请在Tcl控制台中运行validate_bd_design命令。
您可以通过以下步骤为与IP核心相关的各种参数指定值,以自定义用于您的设计的IP:
1. 在Vivado设计中打开IP Integrator。
2. 选择您要自定义的IP核心实例。
3. 在属性面板中找到与该IP核心相关的参数。
4. 对于每个参数,指定所需的值。
5. 完成参数设置后,保存并生成设计。
通过这些步骤,您可以根据需要自定义IP核心,并将其应用到您的设计中。
1. 从Vivado IP目录中选择IP。
2. 双击所选IP,或者从工具栏或右键菜单中选择“定制IP”命令。
有关详细信息,请参阅Vivado Design Suite用户指南:使用IP设计(UG896)[Ref 5]和Vivado Design Suite用户指南:入门指南(UG910)[Ref 6]。
注意:本章中的图示是Vivado集成设计环境(IDE)的示意图。此处描绘的布局可能与当前版本有所不同。
3.1.1 Interface
视频混合器通过Vivado Design Suite进行配置,以满足您的特定需求。本节提供了在生成时可以配置的参数的快速参考。
以下图示显示了Video Mixer Vivado IDE的主配置屏幕。
3.1.1.1 General Settings
以下设置通常适用:
- Component Name:组件名称用作为模块生成的输出文件的基本名称。名称必须以字母开头,并且由字符a到z、0到9和"_"组成。
- Streaming Video Format:指定流输入(s_axis_video)和输出(m_axis_video)AXI4-Stream接口上的视频格式。可能的格式包括RGB、YUV 4:4:4、YUV 4:2:2或YUV 4:2:0。
注意:视频格式是在构建时选择的,无法在运行时更改。
- Samples Per Clock:指定每个时钟周期处理的像素数。允许的值为每个时钟周期的一个、两个、四个和八个样本。此参数确定IP的吞吐量。每个时钟周期中的样本数越多,提供的吞吐量越大。更大的吞吐量总是需要更多的硬件资源。
注意:此属性适用于所有具有流接口的层。
- Maximum Data Width:指定所有流接口上输入和输出样本的位宽。允许的值为8、10、12和16位。
注意:此属性适用于所有具有流接口的层。
- Maximum Number of Columns:指定IP核在运行时可以产生的最大活动视频列/像素数。任何小于最大列数的视频宽度都可以通过AXI4-Lite控制接口进行编程,而无需重新生成核心。
- Maximum Number of Rows:指定IP核在运行时可以产生的最大活动视频行/行数。任何小于最大行数的视频高度都可以通过AXI4-Lite控制接口进行编程,而无需重新生成核心。
- Address Width:指定用于存储层AXI主接口的地址宽度,可以是32位或64位。
- Number of Overlay Layers:指定叠加层数,最少为一层,最多为16层。在GUI中将此参数选择为0时,仅主图层处于活动状态,默认情况下启用徽标层,视频混合器实质上是一个徽标叠加功能。
- Enable CSC Coefficient Registers器:选择此参数时,将包括您可以编程的所有CSC系数寄存器。
3.1.1.2 Layer Settings
以下设置适用于可选的覆盖层,ID为1至16。
-Layer ID:标识层ID。
-Video Format:指定每个层的视频格式。可能的格式包括RGB、YUV 4:4:4、YUV 4:2:2、YUV 4:2:0、RGBA、YUVA444等,如果层接口类型为流式,则还包括RGBX8、BGRX8、YUVX8、RGBA8、BGRA8、YUVA8、YUYV8、UYVY8、RGBX10、YUVX10、RGB565、Y_UV8、Y_UV8_420、RGB8、BGR8、YUV8、Y_UV10、Y_UV10_420、Y8、Y10等。
注意:视频格式在构建时选择,无法在运行时更改。
-Enable Global Alpha:选中后,启用该层与下方层的Alpha混合。Alpha值需要通过AXI4-Lite控制接口在运行时进行编程。
注意:如果为层选择了每像素Alpha格式中的任何一种,则全局Alpha会自动启用。
-Enable Scaling:选中后,启用该层的缩放。缩放因子(1x、2x或4x)需要通过AXI4-Lite控制接口在运行时进行编程。
-Line Buffer Width:仅在为层启用缩放时启用,指定在缩放之前此层的最大宽度。在块RAM中分配具有该维度的行缓冲区,以允许通过行重复进行缩放。宽度必须是样本每时钟周期设置的倍数。
注意:行缓冲宽度的最大支持值为4096。默认情况下,设置值为1920。如果启用了缩放,行缓冲宽度 * 缩放因子