VDMA的特点总结:
1、AXI VDMA核心支持为32位地址空间寻址最多32个帧缓冲区,为32位以上地址空间寻址多达8个帧缓冲;
2、AXI VDMA核心支持可选的数据重新调整引擎(DRE)。DRE允许对内存进行非对齐访问,允许帧缓冲区从内存中的任何地址开始。没有限制的hsize和步幅以及。AXI4流接口宽度高达64位时支持此功能;
3、AXI VDMA支持一种机制,通过Genlock同步来同步帧缓冲区中帧的写入和读取。AXI VDMA的每个通道可设计为作为Genlock主/从或动态Genlock主机/从。通过使用此功能,主设备和从设备不允许同时使用同一缓冲区,从而保持同步,当同时选择读通道和写通道时,AXI VDMA内核默认支持内部Genlock总线。这消除了写入和读取通道之间的外部连接的需要。
图1-1说明了AXI VDMA框图

表2-3显示了针对不同数据宽度测量的AXI VDMA吞吐量。使用硬件上的标准高清(HD)帧进行测量。

表2-4为接口描述

典型的读通道时序图:
上图阐述了垂直尺寸为5行,水平尺寸为16字节和步长为32字节的MM2S通道上的示例,在这里简单介绍一下各个信号的含义,m_axi_mm2s_arready(由slave端发送)和m_axi_mm2s_arvalid(由master端发送)为读地址通道信号,m_axi_mm2s_rready(由slave端发送)和m_axi_mm2s_rvalid(由master端发送)为读数据通道信号,这两组信号属于AXI4_full协议所规定的的信号,而m_axi_mm2s_tready(由slave端发送)和m_axi_mm2s_tvalid(由master端发送)和m_axi_mm2s_tlast(由master端发送)属于AXI4_stream协议所规定的信号。
数据流可以如此描述:当接收到mm2s_fsync信号后,AXI VDMA会使能m_axi_mm2s_arvalid信号,起始地址为m_axi_mm2s_araddr。信号m_axi_mm2s_arvalid使能了5次以获取帧的五行,从mm一端读取的数据被存储在Line Buffer里,通过使能m_axis_mm2s_tvalid信号将其传输到streaming一边,在每行的最后m_axis_mm2s_tlast信号会被拉高。
典型的写通道时序图:
上图阐述了垂直尺寸为5行,水平尺寸为16字节和步长为32字节的S2MM通道上的示例,数据流可以如此描述:当接收到s2mm_fsync信号后,AXI VDMA驱动s2mm_fsync_out和s_axis_s2mm_tready,以指示其已准备好在流接口上接收帧。输入streaming数据到Line Buffer,并通过使能m_axis_s2mm_awvalid以及将m_axis_s2mm_awvalid和m_axi_s2mm_wdata一起发送给mm侧。
下面介绍寄存器的配置:所有的寄存器都采用小段格式,如下图所示:
AXI VDMA寄存器地址映射


关于(塞琳斯官网VDMA寄存器的配置)有详细介绍,请移步查看。
下面介绍锁相同步机制(Genlock Synchronization),在许多视频应用中,数据产生的速率与数据处理的速率并不匹配,为避免例如速率不匹配所导致的潜在隐患,开发了帧缓冲机制,帧缓冲机制分配多帧内存来存储数据,当产生的数据写入一个缓冲区时,该机制会从另一个缓冲区中读取数据进行处理。**AXI VDMA的锁相机制通过避免读通道和写通道同时访问同一帧缓冲区的方式来
补充这一解决方案。AXI VDMA 支持四种Genlock同步模式,它们是Genlock Master、Genlock Slave、Dynamic Genlock Master、Dynamic Genlock Slave
注意:默认情况下,如果在内核中建立了内部Genlock连接,并且参数C_MM2S_GENLOCK_NUM_MASTERS =1 (C_S2MM_GENLOCK_NUM_MASTERS =1),当以下条件满足时,内部的Genlock connection将会建立:
(1)VDMA的通道都被使能;
(2)一个通道配置为Master,另一个被配置为Slave(或者一个通道配置为Dynamic Master,另一个通道被配置为Dynamic Slave)。同时也意味着你不需要做额外的复杂连接,如果你是一个高级使用者,想要访问mm2s_frame_ptr_in (s2mm_frame_ptr_in)端口来实现特殊需求,你可以用Tcl来设置参数C_MM2S_GENLOCK_NUM_MASTERS > 1 (C_S2MM_GENLOCK_NUM_MASTERS > 1) ;

Genlock Master
Read(MM2S)channel:当配置为Genlock Master模式时,该通道不会跳过或者覆盖帧,并且在mm2s_frame_ptr_out端口上输出当前帧编号,它不会监视mm2s_frame_ptr_in端口上的帧指针值。Genlock Slave会以在
frmdly_stride[28:24]上设定的帧延迟值跟随Genlock Master通道。
Write(S2MM)channel:当配置为Genlock Master模式时,该通道不会跳过或者覆盖帧,并且在s2mm_frame_ptr_out端口上输出当前帧编号,它不会监视s2mm_frame_ptr_in端口上的帧指针值。Genlock Slave会以在
frmdly_stride[28:24]上设定的帧延迟值跟随Genlock Master通道。

Genlock Slave
Read (MM2S) channel:当配置为Genlock Slave模式时,该通道通过跳过或者重复帧来跟随 Genlock Master通道,并对mm2s_frame_ptr_in上的Genlock Master帧编号进行采样,以在frmdly_stride[28:24]上设定的帧延迟值跟随Genlock Master通道,在mm2s_frame_ptr_out端口上输出当前的帧编号。为了建立Genlock Slave模式下的通道,应对寄存器进行如下配置
(1)设置GenlockEn(MM2S_VDMACR[3]=1)来使能Master和Slave端的锁相同步;
(2)设置GenlockSrc(MM2S_VDMACR[7]=1)来使能内部锁相模式。在VIVADO里如果两通道都被开启,则该Bit位默认设置为1,当被设置为1时,无需外部连接
_frame_ptr_out和*_frame_ptr_in信号;
(3)基于主帧速率和从帧速率,在mm2s_frmdly_stride[28:24]中设置合适的值。
Write(S2MM)channel:当配置为Genlock Slave模式时,该通道通过跳过或者重复帧来跟随 Genlock Master通道,并对s2mm_frame_ptr_in上的Genlock Master帧编号进行采样,以在s2mm_frmdly_stride[28:24]上设定的帧延迟值跟随Genlock Master通道,在 s2mm_frame_ptr_out端口上输出当前的帧编号。为了建立Genlock Slave模式下的通道,应对寄存器进行如下配置
(1)设置GenlockEn(S2MM_VDMACR[3]=1)来使能Master和Slave端的锁相同步;
(2)设置GenlockSrc(S2MM_VDMACR[7]=1)来使能内部锁相模式。在VIVADO里如果两通道都被开启,则该Bit位默认设置为1,当被设置为1时,无需外部连接*_frame_ptr_out和*_frame_ptr_in信号;
(3)基于主帧速率和从帧速率,在s2mm_frmdly_stride[28:24]中设置合适的值。

Dynamic Genlock Master
Read (MM2S) channel或者Write(S2MM)channel:当配置为Dynamic Genlock Master模式时,该通道会跳过Dynamic Genlock Slave正在操作的帧缓冲区,它通过跳过或者重复帧来实现,并且在mm2s_frame_ptr_in端口上采集Dynamic Genlock Slave的帧编号以及在mm2s_frame_ptr_out上输出访问的前一帧编号。为了建立Dynamic Genlock Master模式下的通道,应对寄存器进行如下配置
(1)设置GenlockEn(MM2S_VDMACR[3]=1)来使能Master和Slave端的锁相同步;
(2)设置GenlockSrc(MM2S_VDMACR[7]=1)来使能内部锁相模式。在VIVADO里如果两通道都被开启,则该Bit位默认设置为1,当被设置为1时,无需外部连接*_frame_ptr_out和*_frame_ptr_in信号;

Dynamic Genlock Slave
Read (MM2S) channel或者Write(S2MM)channel:当配置为Dynamic Genlock Slave模式时,该通道访问Dynamic Genlock Master操作的前一帧。通过mm2s_frame_ptr_in对Dynamic Genlock Master的帧编号进行采样,并且在mm2s_frame_ptr_out上输出当前访问的帧编号。为了建立Dynamic Genlock Slave模式下的通道,应对寄存器进行如下配置
(1)设置GenlockEn(MM2S_VDMACR[3]=1)来使能Master和Slave端的锁相同步;
(2)设置GenlockSrc(MM2S_VDMACR[7]=1)来使能内部锁相模式。在VIVADO里如果两通道都被开启,则该Bit位默认设置为1,当被设置为1时,无需外部连接*_frame_ptr_out和*_frame_ptr_in信号;

时钟:时钟支持同步模式和异步模式,若选择异步模式,只需勾选Enable Asynchronous Mode,并由此创造出5个时钟
注意:该模式下,s_axi_lite_aclk 必须低于m_axi_mm2s_aclk和m_axi_s2mm_aclk ,以及m_axi_mm2s_aclk和m_axi_s2mm_aclk必须大于或等于s_axis_s2mm_aclk和m_axis_mm2s_aclk 。
若选择同步模式,则所有逻辑在单个时钟域下运行,而s_axi_lite_aclk 可以连接到较慢的时钟。

配置寄存器的常规流程
AXI VDMA操作从设置视频参数、起始地址寄存器和VDMA控制寄存器开始,
(1)写入控制信息到VDMACR寄存器(MM2S的偏移量为0X00,S2MM的偏移量为0X30),以根据需求来设置中断启用,设置VDMACR.RS=1以启用AXI VDMA通道运行;
(2)将有效的视频帧缓冲区起始地址写入通道start_address寄存器1至N,其中N等于帧缓冲区(MM2S的偏移量0x5C至0x98,S2MM的偏移量为0xAC至0xE8),如有必要,配置REG_INDEX寄存器,当AXI VDMA配置为大于32的地址空间时,每个起始地址将被编程为两个寄存器的组合,其中第一个寄存器用于规定LSB 32位地址,而下一个寄存器用于规定MSB 32位
(3)将有效的帧延迟(仅对Genlock Slave有效)和步长写入通道FRMDLY_Stride寄存器(MM2S偏移量0x58,S2MM偏移量0xA8);
(4)将有效的水平尺寸写入信道HSIZE寄存器(MM2S偏移量0x54,S2MM偏移量0xA4);
(5)将有效的垂直大小写入通道VSIZE寄存器(偏移量0x50用于MM2S,0xA0用于S2MM)。这将启动传输视频数据的通道。

【ZYNQ】IP核_VDMA的详细介绍相关推荐

  1. Vivado18.2 PCIE ip核IO协议详细介绍

    金手指原理部分不多介绍,网上有很多类似的文章,大家可以自行参考 我们直接上手使用IP核建立部分 文章目录 IP核建立 IP核利化代码介绍 PCIE 协议介绍 PCIE 时序图 PCIE 示例代码 介绍 ...

  2. CentOS 6.9配置网卡IP/网关/DNS命令详细介绍及一些常用网络配置命令(转)

    一.IP 即时生效(重启后失效): ifconfig eth0 192.168.1.102 netmask 255.255.255.0 //添加IP地址 route add default gw 19 ...

  3. VIVADO 自定义封装ip核(超详细)

    版本:vivado 2018.3 vivado 自定义封装ip核,可以将ip核封装成带AXI总线,也可将ip核封装成不带AXI总线. 本次设计介绍,如何将当前工程封装成ip核(不带AXI总线) 目录 ...

  4. ZYNQ IP核之MMCM/PLL

    锁相环(Phase Locked Loop,PLL),一种反馈控制电路,对时钟网络进行系统级的时钟管理和偏移控制,具有时钟倍频.分频.相位偏移和可编程占空比的功能. Xilinx 7系列器件中的时钟资 ...

  5. win7网络适配器_win7系统提示本地连接没有有效的ip配置怎么办【详细介绍】

    win7系统是很多电脑用户都喜欢的一个系统,所以有很多用户都会去安装这个系统,不过装了一段之间之后总是会出现一些问题,其中比较常见的是win7系统提示:本地连接没有有效的ip配置了,那么win7系统提 ...

  6. 【Vivado】clock ip核的使用

    1.绪论 ​ Clock在时序逻辑的设计中是不可或缺的,同时对于Clock的编写和优化也能体现一个FPGA工程师的技术水平,Clock的分频,倍频在设计项目时都有可能用到,对于分频,可以通过代码的方式 ...

  7. qq自定义diy名片代码复制_「正点原子FPGA连载」第六章自定义IP核-呼吸灯实验

    1)摘自[正点原子]领航者 ZYNQ 之嵌入式开发指南 2)实验平台:正点原子领航者ZYNQ开发板 3)平台购买地址:https://item.taobao.com/item.htm?&id= ...

  8. vfifo控制mig_基于MIG IP核的DDR3控制器(一)

    最近学习了DDR3控制器的使用,也用着DDR完成了一些简单工作,想着以后一段可能只用封装过后的IP核,可能会忘记DDR3控制器的一些内容,想着把这个DDR控制器的编写过程记录下来,便于我自己以后查看吧 ...

  9. 【ZYNQ】IP核_关于视频IP核的详细介绍

    [ZYNQ]IP核_关于视频IP核的详细介绍 接口信号的含义 数据格式及编码 视频时序 视频时序的进一步说明 自动延迟匹配 视频子系统软件指南 接口信号的含义 在ZYNQ的设计中一般视频数据的传输遵循 ...

最新文章

  1. 用 Linux 的 watch 命令观察命令和任务
  2. Linux 基础命令——比较两个文件内容的不同
  3. Pandas matplotlib 无法显示中文
  4. 洽谈 “会话技术” 纯干货赶紧收藏吧
  5. 大数据分析苏轼,你没看错,这些都是小学生完成的
  6. 梯度下降法、随机梯度下降法、批量梯度下降法及牛顿法、拟牛顿法、共轭梯度法
  7. 代码编辑器Sublime Text 可以跨平台(linux,window,os x)
  8. python-多继承
  9. VS2010皮肤控件介绍
  10. PHP笔记-自定义MVC框架
  11. 全面超越人类!Google称霸SQuAD,BERT横扫11大NLP测试
  12. web压力测试工具比较
  13. xp访问计算机组提示没有权限,WindowsXP系统提示没有权限使用网络怎么办
  14. matlab怎么fprintf,matlab中的fprintf函数怎么用
  15. vue-admin websocket接收消息推送+语音提示(详细代码)
  16. 推动计算机革命的幕后黑手
  17. 图像插值算法:最近邻插值、双线性插值
  18. css3夜空北斗七星闪烁动画js特效
  19. Xcode 修改Copyright的组织信息
  20. 两台笔记本组建无线局域网共享上网

热门文章

  1. 浏览器主页被篡改最终解决方案
  2. 南明区python培训机构
  3. Socket编程浅说
  4. 我的世界1.8服务器修改皮肤,我的世界1.8+皮肤更换图文教程 实测可用
  5. mysql date_format
  6. 从零搭建一个java开发环境: 二、下载安装mysql数据库
  7. 艾维邑动(Avazu Inc.)作为一个全球数字广告公司,如何在一个可预见的未来里,在受众定向和再定向广告市场中保持竞争力?
  8. 汇编语言 贪吃蛇+画等边三角形
  9. 证券市场红周刊丨六大关键词回望金融科技关键之年,2020再出发!
  10. 超越ShuffleNet、MobileNet、MobileViT等模型的新backbone FasterNet