ZYNQ-AXI_VDMA IP简介

本文涉及的产品
数据传输服务 DTS,数据迁移 small 3个月
推荐场景:
MySQL数据库上云
数据传输服务 DTS,同步至SelectDB 1个月
数据传输服务 DTS,数据同步 1个月
简介: ZYNQ-AXI_VDMA IP简介

学习内容


本文主要介绍关于AXI4-Stream Video 协议和AXI_VDMA的IP核相关内容。为后文完成使用带有HDMI接口的显示器构建图像视频显示的测试工程做准备。

AXI4-Stream Video 协议


接口定义


对于使用AXI4-Stream Video 协议的IP,对于接口的功能会进行拓展或者裁剪。

下表列出了作为从机时,输入的接口信号名称和相关信息。

image.png

这里的SOF 是用于指示起始帧的传输信号,SOF实际上是在AXI4-Stream的USER信号上进行传输的;EOL用于指示一行数据传输完成。EOL实际上是在AXI4-Stream的TLAST信号上进行传输的,用于指示一行帧数据的传输完成。在这个协议中没有行场同步的信号,所以使用SOF和EOL用于进行同步视频数据信息。

TKEEP and TSTRB 这两个信号在使用AXI4-Stream视频协议的IP时不使用。当连接到需要TKEEP或TSTRB分配的IP时,可以使用默认值TKEEP=1和TSTRB = 1。

TID and TDEST 在使用AXI4-Stream视频协议的IP中不使用TID和TDEST,使用默认值TID=0和TDEST=0。

TUSER TUSER的第0位(TUSER[0])标记帧的开始。是唯一用于视频的AXI4-Stream信号。

AXI4-Stream Video协议时序


READY、VALID、ACLKEN和ARESETn信号,在ACLK上升沿时发生有效传输。在有效传输过程中,DATA只携带有效的视频数据。

握手机制和AXI DMA的握手机制相同。都是通过在在ACLK上升沿时,拉高VALID、READY,进行有效的数据传输。

下面给出使用握手机制信号进行一个起始帧的传输。在时序图中,在时钟上升沿,并且VALID、READY、SOF都为高电平时候表示有效数据传输。

image.png

下面给出利用握手机制信号使用EOL信号进行帧传输的例子。在时序图中,在时钟上升沿,并且VALID、READY、SOF都为高电平时候表示有效数据传输表示帧数据的起始。在Pn-1也就是一行数据的最后一个进行传输时,EOL信号拉高,和LAST信号相同。当完成一帧传输的最后一个数据传输后,在下次传输时,SOF信号将会再次拉高,指示下一帧的第一个信号的传输。

image.png

AXI_VDMA IP


简介


AXI VDMA IP提供了高带宽内存和内存之间的直接访问数据流视频类型的目标外设,包括支持AXI4-Stream video协议的外设。这里提到的AXI4-Stream video协议在视频IP核直接提供了一个简单、多功能、高性能、点对点的通信接口。也可以理解为AXI4-Stream 数据的一个子集。

下图展示了AXI VDMA IP的框图:

image.png

AXI VDMA提供了系统内存和AXI4-Stream类型目标外设之间的高性能直接内存访问。AXI VDMA还提供分散收集(SG)功能,允许CPU将传输控制和执行转移到硬件自动化。

AXI_VDMA提供了以下的功能:

  • 循环帧缓存区访问最多32帧缓存,并提供工具来传输视频帧的一部分或完整的视频帧。
  • 当前帧等待能力,允许相同的视频帧数据重复传输。
  • 独立的帧同步和独立的AXI时钟,允许每个频道在不同的帧速率和不同的像素速率上运行。为了维持两个独立功能的AXI VDMA通道之间的同步,有一个可选的Gen-Lock同步特性。Gen-Lock提供了一种将AXI VDMA从机自动同步到一个或多个AXI VDMA主机的方法,因此从机不像主机在相同的视频帧缓冲空间中操作。 在这种模式下,从通道自动跳过或重复帧。您可以将任一通道配置为Gen-Lock slave或Gen-Lock master。

对于视频数据传输,AXI4-Stream端口可以配置从8位到1024位宽(8的倍数)。对于AXI4- stream端口比相关的AXI4内存映射端口窄的配置,AXI VDMA会在内存映射端升级或缩小提供全总线宽度突发的数据。它还支持异步操作模式,其中所有时钟都是异步处理的。

VDMA 用于将 AXI Stream 格式的数据流转换为 Memory Map 格式或将 Memory Map 格式的数据转换为 AXI Stream 数据流, 也就是说 VDMA 内核旨在提供从 AXI4 域到 AXI4-Stream 域的视频读/写传输功能,反之亦然,从而实现系统内存(主要指 DDR3) 和基于 AXI4-Stream 的目标视频 IP 之间的高速数据移动。

VDMA 的框图如下图所示:

image.png

AXI4-Lite 可以对寄存器进行编程(配置),从而实现软件动态配置 VDMA 的功能。 通过 AXI4-Lite 接口对寄存器进行编程后,控制/状态逻辑块会为 DataMover 生成适当的命令,以在 AXI4 主接口上启动写入和读取命令。可配置的异步 line buffer 用于在将像素数据写入 AXI4-Memory Map 接口或 AXI4-Stream 接口之前临时保存像素数据。

VDMA 数据接口可以分为读、写两个通道,且写入和读取独立运行。 用户可以通过写通道将 AXI-Stream类型的数据流写入系统存储器(主要指 DDR3) 。在读通道中, VDMA 使用 AXI4 主接口从系统存储器读取数据并在 AXI4-Stream 主接口上输出。 可以看到, VDMA 本质上是一个数据搬运的 IP, 可以看作是为视频图像处理做特殊优化的带有帧缓冲功能的高性能 DMA, 为数据进出系统存储器提供了一种便捷的方案。

帧缓存


许多视频应用程序需要帧缓存来处理帧速率的变化或图像尺寸的变化(缩放或裁剪)。帧缓存存储器( Frame Buffer),简称帧缓存,也常被称作显存,是为显示设备(如 HDMI 显示器等)提供数据缓存的一片存储区域。一般图像输入源和图像显示的传输速率不匹配(如图像输入源传输速度较快或者图像显示端传输速度较快),这个时候需要一片存储区域来缓存输入的数据,以便显示设备读取数据,同时也方便后续对视频数据做图像处理。帧缓存的每一个存储单元对应屏幕上的一个像素,整个帧缓存对应一帧图像。

比如视频输入的设备是30帧的数据,而经过视频处理后实现了60帧的视频数据显示,这时候VDMA的帧缓存功能,就可以进行动态处理帧速度的变化。

VDMA AXI4 接口


image.png

读写时序


读时序


下面给出VDMA在读取数据时的时序图,并进行简单的分析,对于接口信号大致可以分为两组,一组是存储器映射接口,进行数据传输,另外一组是stream接口,将读取到的数据在line buffer里进行缓存。下图时序的大致传输过程为:

  1. SOF拉高使能,进行帧同步。
  2. 握手信号进行握手并传输视频数据。
  3. EOL信号拉高表示一行数据传输完成,这里LAST信号被拉高5次,也就是传输了一帧图像的五行。
  4. 传输完成的数据移动到line buffer缓存区,然后通过stream接口发送输出。

image.png

写时序


下面给出VDMA在写入数据时的时序图,并进行简单的分析,这里的流程和读取的过程刚好相反。下图时序的大致传输过程为:

  1. SOF拉高使能,进行帧同步。
  2. 握手信号进行握手并写入视频数据。
  3. EOL信号拉高表示一行数据传输完成,这里LAST信号被拉高5次,也就是传输了一帧图像的五行。
  4. 这里写入的数据是写完先缓存在line buffer中,然后再经过stream流数据传输到存储器映射的存储单元中。

image.png

Reference


正点原子ZYNQ开发视频教程

UG585

UG1037

PG020



相关实践学习
自建数据库迁移到云数据库
本场景将引导您将网站的自建数据库平滑迁移至云数据库RDS。通过使用RDS,您可以获得稳定、可靠和安全的企业级数据库服务,可以更加专注于发展核心业务,无需过多担心数据库的管理和维护。
Sqoop 企业级大数据迁移方案实战
Sqoop是一个用于在Hadoop和关系数据库服务器之间传输数据的工具。它用于从关系数据库(如MySQL,Oracle)导入数据到Hadoop HDFS,并从Hadoop文件系统导出到关系数据库。 本课程主要讲解了Sqoop的设计思想及原理、部署安装及配置、详细具体的使用方法技巧与实操案例、企业级任务管理等。结合日常工作实践,培养解决实际问题的能力。本课程由黑马程序员提供。
目录
相关文章
|
存储 缓存 测试技术
ZYNQ-AXI Interconnect IP介绍
ZYNQ-AXI Interconnect IP介绍
3036 0
ZYNQ-AXI Interconnect IP介绍
|
机器学习/深度学习 并行计算 PyTorch
TensorRT部署系列 | 如何将模型从 PyTorch 转换为 TensorRT 并加速推理?
TensorRT部署系列 | 如何将模型从 PyTorch 转换为 TensorRT 并加速推理?
1912 0
|
运维 网络虚拟化 5G
带你读《ONAP技术详解与应用实践》之一:网络自动化挑战及ONAP介绍
国内首部系统剖析ONAP的书籍,也是理论性与实战性兼具的网络自动化实践指导书!本书详细全面地介绍了网络自动化的挑战和发展趋势,以及ONAP的概况、架构设计理念、设计原则、各模块实现细节、关键特性、应用场景和案例实践等。通过本书读者可以深入理解ONAP,提升对网络自动化及相关领域的认知。作者及其团队成员均是华为网络开源领域的专家,长期参与社区的治理、贡献和回馈,致力于通过产业协作,打造统一的平台,降低集成成本,加快新技术导入,助力新一代网络运维系统升级。同时,本书也融入了作者及其团队在网络开源领域的深刻洞察和见解,书中分享了华为参与网络开源的实践经验,是电信网络转型的重要参考。
|
10月前
|
算法 数据安全/隐私保护 计算机视觉
基于FPGA的图像双线性插值算法verilog实现,包括tb测试文件和MATLAB辅助验证
本项目展示了256×256图像通过双线性插值放大至512×512的效果,无水印展示。使用Matlab 2022a和Vivado 2019.2开发,提供完整代码及详细中文注释、操作视频。核心程序实现图像缩放,并在Matlab中验证效果。双线性插值算法通过FPGA高效实现图像缩放,确保质量。
|
机器学习/深度学习 网络架构 计算机视觉
目标检测笔记(一):不同模型的网络架构介绍和代码
这篇文章介绍了ShuffleNetV2网络架构及其代码实现,包括模型结构、代码细节和不同版本的模型。ShuffleNetV2是一个高效的卷积神经网络,适用于深度学习中的目标检测任务。
308 1
目标检测笔记(一):不同模型的网络架构介绍和代码
|
12月前
|
存储 C语言 开发者
【C语言】格式化输出占位符及其标志字符详解(基于ISO/IEC 9899:2024)
在C语言中,格式化输出通过 `printf` 函数等格式化输出函数来实现。格式说明符(占位符)定义了数据的输出方式,标准ISO/IEC 9899:2024(C23)对这些格式说明符进行了详细规定。本文将详细讲解格式说明符的组成部分,包括标志字符、宽度、精度、长度修饰符和类型字符,并适当增加表格说明。
829 6
|
XML 存储 网络安全
GIGE 协议摘录 —— GVCP 协议(二)(下)
GIGE 协议摘录 —— GVCP 协议(二)
879 3
|
监控
GIGE 协议摘录 —— GVCP 协议(二)(上)
GIGE 协议摘录 —— GVCP 协议(二)
978 2
|
存储 数据处理 计算机视觉
深入理解AMBA总线(十五)AXI-stream
深入理解AMBA总线(十五)AXI-stream
2272 0
|
资源调度 分布式计算 Hadoop
Hadoop Yarn 核心调优参数
这是一个关于测试集群环境的配置说明,包括3台服务器(master, slave1, slave2)运行CentOS 7.5,每台有4核CPU和4GB内存。集群使用Hadoop 3.1.3,JDK1.8。Yarn核心配置涉及调度器选择、ResourceManager线程数、节点检测、逻辑处理器使用、核心转换乘数、NodeManager内存和CPU设置,以及容器的内存和CPU限制。配置完成后,需要重启Hadoop并检查yarn配置。
441 4