【ZYNQ】IP核

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6

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至0x98S2MM的偏移量为0xAC至0xE8如有必要配置REG_INDEX寄存器,当AXI VDMA配置为大于32的地址空间时每个起始地址将被编程为两个寄存器的组合其中第一个寄存器用于规定LSB 32位地址而下一个寄存器用于规定MSB 32位
(3)将有效的帧延迟仅对Genlock Slave有效和步长写入通道FRMDLY_Stride寄存器MM2S偏移量0x58S2MM偏移量0xA8
(4)将有效的水平尺寸写入信道HSIZE寄存器MM2S偏移量0x54S2MM偏移量0xA4;
(5)将有效的垂直大小写入通道VSIZE寄存器偏移量0x50用于MM2S0xA0用于S2MM。这将启动传输视频数据的通道。

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6