PL和DDR之间的数据传输,使用DATAMOVER

我们总结一下已经掌握的
PS与 PL进行 交互(耦合)的方式
1, PS通过 AXI_LITE读写 PL的寄存器。实现对少量外设寄存器的控制。
2, PL中断 PS PS调用中断服务程序响应。实现 PL主动通知 PS,协调工作。
以上两个特性侧重于
控制和小量低速 的数据,在很多应用中要求 PL以足够的带宽 传输连续
大量 的数据到 DDR3存储器 。 那么我们 可以在很熟悉 AXI MASTER和 AXI Stream的基础上自
己编写接口实现数据的搬运 假如的话) 。 而 通常在 VIVADO开发环境下不需要这样做:
VIVADO给我们提供了多中 IP核,如 DMA CDMA DATAMOVER 以及用于视频数据的 VDMA。
且在
zynq中由 arm核进行逻辑控制操作。并非由 pl控制(毕竟这些核本身就属于嵌入式设
计分类中,而非纯粹的 fpga核)。至于生成的 ip核是否占用资源还没有研究过。
有读就有写,有输入就有输出,有
PL从 DDR读数,就有 PL写数到 DDR。所有 VIVADO提供
的所有的上述 IP 都是有从 PL部分写数到 DDR,也有从 DDR读数到 PL部分。 PL部分我们一
般用数据流表 示,具体来说是 AXI_STREAM;我们一般是用内存映射地址方式即 MAPED MEMORY表示的。所以一般表示方向就有了 MM2S和 S2MM,即
MM2S:从地址映射的内存到 数据流接口,具体说从 DDR搬运数据到 PL。
S2MM:从数据流接口到地址映射的内存接口,具体说从 PL搬运数据到 DDR。
我们对照图来看一下:在这里插入图片描述
以上说有
DMA,VDMA,CDMA,以及 DATAMOVER这几种方式,我们实际来学习一个 IP。这四
个 IP中最基础的是 DATAMOVER,其实也是最重要的,其他的另外三个都是包装了
DATAMOVER实现的,接下来我们来学习一下 DATAMOVER。在这里插入图片描述
上图为
DATAMOVER核概观。大致为,接受控制命令,控制读或写,并返回核工作状态。
并且
控制模块 使用了先入先出队列,实现完全的异步工作。对 DATAMOVER来说,他是不断
直接行命令,若没有这个 FIFO,执行完每条令执行之后,通过 STATUS告知 PL端的控制器,
之后 PL端再发来新的命令,之后 DATAMOVER再执行,这就个步骤下来,几个周期甚至更
多周期就已经损失掉了。所以使用队列就是为了让 DATAMOVER的工作不间断:执行完当前
指令,可以立即 从队列获取下一命令进行执行。
DATAMOVER接受主机控制命令的控制寄存器( MM2S和 S2MM均可使用。且为一次写入。
无需反复写入)。默认为 72bit(对应的是使用 32bit的 axi地址)。可被扩展(在 ip核配置
界面)。且地址应该为 8的整数倍,(例, ,33位地址则设置为 40位)。在这里插入图片描述
BTT Bytes To Transfer 要传送的字节数。 且在 ip核内配置实际的位数,默认为 16。不允
许从 0开始,会造成错误。其取值范围为 1到 8388607。
TYPE 用于设置接入的方式。 1表示 地址 加一操作。 0则是固定地址
DRR :从新对齐使能,以及参考字节
DSA :从新对齐使能,以及参考字节 ,仅 MM2S使用。
EOF 是否为最后一次传输, 最后一帧到来,则 发送 TLAST信号 。
SADDR:开始地址。 并且地址应为 8的整数倍。可在 vivado里看到。根据具体配置。
TAG 四位,标识命令。 并插入。
Xcache ,Xuser 是出现在 MM2S的 或 S2MM 的 AXI_stream额外标识信号。在这里插入图片描述
上图为基本模式下的寄存器。对于此状态下。
Btt位可自己设置。但应该位 8的整数倍。
本例子中实现的是
1024X768的视频显示,所以 VGA接口的时钟频率是 65M。
这里的位图文件是
24位色的,由于实际板载 VGA只有 12位色,是使用了 RGB三基色的前
4位作为显示。
下图为
Ip手册上给出的参考模型。除了基本的控制模块核 datamover核外。还应额外加上
一个 fifo模块。在这里插入图片描述
原理图在这里插入图片描述
在这里插入图片描述
关于
lite核用户逻辑。主要为绑定寄存器。在这里插入图片描述
Sdk代码。

  1. 从 ddr读写数据到 pl。
    由下图可知。基地址为
    0X43C00000 m_data[63:32]对应为寄存器 0 slv_reg0)。基址加 20则对应寄存器 5的前两位。在这里插入图片描述
    在这里插入图片描述
    其中
    Xil_DCacheFlushRange函数为将 cache数据从指定的地址更新到到 ddr。第一个参数为。
    基地址。第二个为参数
  2. 从 pl写数据到 ddr
    在这里插入图片描述
    和上面一样。不同的是对进行了设置。在这里插入图片描述
    在这里插入图片描述
  • 2
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值