UISRC工程师学习站

标题: 【ZYNQ-7000开发之四】在PS端使用AXI DMA传输的步骤 [打印本页]

作者: RZJM    时间: 2015-12-16 02:32
标题: 【ZYNQ-7000开发之四】在PS端使用AXI DMA传输的步骤
本帖最后由 RZJM 于 2015-12-16 12:30 编辑

本篇文章简要总结下AXI DMA在ZYNQ PS端的初始化方法。本文摘抄自xilinx SDK的API文档,更加详细的内容请参考官方文档,这里只提取了关键部分。

  AXI DMA有两种模式,Direct Register Mode(不支持Scatter Gather)和   Scatter Gather Mode。
  AXI DMA用于AXI4 memory mapped和AXI4-Stream之间的转换
  Scatter Gather Mode性能更好,更消耗逻辑资源,使用更复杂一些。
  Direct Register Mode则相反。


作者: 贾文洋    时间: 2015-12-17 21:12

作者: mine_2000    时间: 2015-12-23 19:45
待传输的数据在DDR中时,需使用Xil_DCacheFlushRange函数更新后再发送。

请教SDK里面是否可指定部分内存空间不使用CACHE?
作者: RZJM    时间: 2015-12-23 21:16
mine_2000 发表于 2015-12-23 19:45
待传输的数据在DDR中时,需使用Xil_DCacheFlushRange函数更新后再发送。

请教SDK里面是否可指定部分内存 ...

恩。我也在研究学习,我目前不确定。还没有实际测试过。为什么指定部分内存?这样速度不是很慢吗?

作者: RZJM    时间: 2015-12-23 21:30
mine_2000 发表于 2015-12-23 19:45
待传输的数据在DDR中时,需使用Xil_DCacheFlushRange函数更新后再发送。

请教SDK里面是否可指定部分内存 ...

关于Cache文章http://www.360doc.com/content/11/1023/18/1317564_158491732.shtml


作者: mine_2000    时间: 2015-12-24 19:06
RZJM 发表于 2015-12-23 21:16
恩。我也在研究学习,我目前不确定。还没有实际测试过。为什么指定部分内存?这样速度不是很慢吗?

用DDR做VGA显存空间,这部分空间不希望Cacse,不然更新显存数据后还得刷新,反而降低刷屏速度

作者: RZJM    时间: 2015-12-26 00:27
mine_2000 发表于 2015-12-24 19:06
用DDR做VGA显存空间,这部分空间不希望Cacse,不然更新显存数据后还得刷新,反而降低刷屏速度

据我目前了解如果使用ACP,可以不用更新cache。ACP可以保证缓存一致性。
作者: mine_2000    时间: 2015-12-26 08:22
RZJM 发表于 2015-12-26 00:27
据我目前了解如果使用ACP,可以不用更新cache。ACP可以保证缓存一致性。

ACP是啥,我用IP核中VDMA模块,加上自己做的数据流转VGA信号。

作者: RZJM    时间: 2015-12-26 11:37
mine_2000 发表于 2015-12-26 08:22
ACP是啥,我用IP核中VDMA模块,加上自己做的数据流转VGA信号。

个人理解,如果使用的AXI_HP接口和PS的DDR通信,应该需要刷新cache。如果使用AXI_ACP接口和PS通信不用刷新cache,但是这种方式可能不适合数据量特别大的通信,会影响到PS的性能。不过我认为你说的那个刷新应该不是系统的瓶颈吧,瓶颈还是数据在DDR和PL之间的拷贝延时。不知道理解的多不对......

作者: mine_2000    时间: 2015-12-26 14:13
我换成ACP试下,回头报告测试情况
作者: mine_2000    时间: 2015-12-26 17:04
没效果。
我这样使用,开指令Cache,关数据Cache:
        Xil_ICacheEnable();
        Xil_DCacheDisable();
这样可以不需要更新Cache,在这种情况下,AXI_ACP接口和通用AXI从接口的刷图速率也差不多。
但是一旦用Xil_DCacheEnable()打开Cache,屏幕数据就不完整了。
作者: mine_2000    时间: 2015-12-26 17:07
在关数据Cache的情况下,800*600、24bits,刷屏速率在30ms左右,基本够用了
作者: mine_2000    时间: 2016-7-1 21:33
ACP接口,选中Tie off AxUSER 选项,不用更新cache,刷屏速率轻松上100帧/秒。

作者: windy    时间: 2017-12-21 23:16
在PG021手册里面,which of buffer length register(8-23) 这一项设置是指DMA一次能传输的最大数据量吗?2的23次方 = 8Mbit = 1MB




欢迎光临 UISRC工程师学习站 (https://www.uisrc.com/) Powered by Discuz! X3.5