ZYNQ学习之旅–PS_AXI_VDMA(利用VDMA实现将PS端的数据显示在PL端的HDMI上)

目录标题

  • 简介
    • 帧缓存
    • 同步锁相(Genlock )
      • Genlock Master
      • Genlock Slave
      • Dynamic Genlock Master
      • Dynamic Genlock Slave
    • VDMA 概述
  • BD设计
  • 软件设计

简介

AXI VDMA(AXI Video Direct Memory Access,以下简称 VDMA),是 Xilinx 提供的软核 IP。其功能
和 AXI DMA(以下简称 DMA)有些类似,都可以为存储器或者 AXI4-Stream 类目标外设之间提供高带宽
直接存储器存取。和 DMA 相比,VDMA 增加了帧缓存的缓冲机制和同步锁相(GenLock)等功能,是为了针对视频图像应用而做的升级版的 DMA。VDMA 集成了视频专用功能,如帧同步和 2D DMA 传输等,非常适合基于 ZYNQ 架构上的图像和视频处理,缩短了开发周期。
DMA 和 VDMA 的对比如表所示。

同步锁相(Genlock )

在很多的视频应用中,图像输入端和输出端的数据速率不匹配,通常使用帧缓存来避免因速率不匹配而
导致的潜在错误。为了解决单帧缓存区域带来的图像叠加问题,通过分配多个帧缓存区域保存数据,图像输入端在写入其中一个帧缓存时,输出端读取其它的帧缓存。
VDMA 支持四种同步锁相模式,分别是 Genlock Master(同步锁相主模式)、Genlock Slave(同步锁从模式)、Dynamic Genlock Master (动态同步锁相主模式)和 Dynamic Genlock Slave(动态同步锁相从模式)。
VDMA 有一个写通道(S2MM)和一个读通道(MM2S),用户通过写通道将输入端数据写入帧缓存,
通过读通道将从帧缓存中读出数据。VDMA 的每一个通道都可以选择以上四种模式中的一种,接下来我们分别向大家介绍这四种同步模式。

Genlock Master

当写通道(S2MM)或者读通道(MM2S)配置为 Genlock Master 时,该通道不会跳过或者重复任一帧
缓存区域,按照帧缓存顺序读出数据。配置为 Genlock Slave 的通道应当紧跟 Genlock Master 通道变化,但有一定的延迟,延迟的大小在寄存器(*frmdly_stride[28:24])中配置。

Genlock Slave

当写通道(S2MM)或者读通道(MM2S)配置为 Genlock Slave 时,该通道会通过跳过或者重复一些帧缓存区域的方式,尝试与 Genlock Master 通道同步。

Dynamic Genlock Master

当写通道(S2MM)或者读通道(MM2S)配置为 Dynamic Genlock Master 时,该通道会跳过 Dynamic
Genlock Slave 通道正在操作的帧缓存,通过跳过或者重复一些帧缓存区域的方式来完成。
这里以分配三个帧缓存为例。当配置为 Dynamic Genlock Master 的通道访问帧缓存时,没有检测到 Slave通道访问的帧缓存,那么它会循环访问帧缓存 0 1 2 0 1 2;而如果检测到 Slave 访问的帧缓存区域,它们它会跳过该区域并开始访问下一帧缓存。因此,如果 Slave 通道长时间访问帧缓存 1,则 Master 会循环访问帧缓存 1 和 3。

Dynamic Genlock Slave

当写通道(S2MM)或者读通道(MM2S)配置为 Dynamic Genlock Slave 时,该通道会操作 Dynamic
Genlock Master 通道上一周期操作的帧。

VDMA 概述

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

软件设计

声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2020年6月7日
下一篇 2020年6月7日

相关推荐