OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 1008|回复: 7

[XILINX] Zynq PS与PL端互联时,使用AXI DMA的原因是什么?

[复制链接]

1

主题

5

帖子

0

精华

新手上路

积分
33
金钱
33
注册时间
2020-10-5
在线时间
3 小时
发表于 2024-5-4 13:28:03 | 显示全部楼层 |阅读模式
1金钱
对于CPU而言,DMA是帮助CPU完成数据传输的,可以减少CPU的负担;
但是在Zynq研发时,PL端通过AXI接口读写PS端的DDR内存时,是直接接入DDR控制器的,传输过程本身就没有经过CPU的参与,不存在需要减轻CPU的负担,传输数据的速度也不会被CPU拖慢;
那么,为什么在有大量数据需要传输时,仍然普遍会使用AXI DMA呢?
普遍的做法似乎是AXI DMA把AXI-MM接口转换为AXI-Stream接口,用户的IP再通过AXI-Stream接口读内容;这么做的原因是什么?AXI-DMA在这之中体现了什么功能?

最佳答案

查看完整内容[请看2#楼]

跟PL端的功能模块的接口有关系,有一些功能模块像axi stream data fifo,它的接口就是stream流接口,所以需要用dma做转接,还有一些视频处理模块像rgb2LCD模块、DVI transmitter模块的输入接口就是视频接口,还需要用Steam to video out模块做接口转接
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

1

主题

68

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1040
金钱
1040
注册时间
2021-3-25
在线时间
156 小时
发表于 2024-5-4 13:28:04 | 显示全部楼层
fyyo429 发表于 2024-5-8 14:27
数据交互不使用AXI DMA也可以完成呀,应该是可以直接通过存储映射接口读取的。为什么要多一个AXI DMA,把 ...

跟PL端的功能模块的接口有关系,有一些功能模块像axi stream data fifo,它的接口就是stream流接口,所以需要用dma做转接,还有一些视频处理模块像rgb2LCD模块、DVI transmitter模块的输入接口就是视频接口,还需要用Steam to video out模块做接口转接
回复

使用道具 举报

1

主题

5

帖子

0

精华

新手上路

积分
33
金钱
33
注册时间
2020-10-5
在线时间
3 小时
 楼主| 发表于 2024-5-4 13:49:21 | 显示全部楼层
个人提出一个可能的原因:PS端往往是上Linux的,有虚拟地址的问题;如果AXI直接读写DDR,可能是不经过MMU的,地址应该是物理地址,所以有时候需要传输的一段内存,可能在物理地址上分为了好多个内存块,这个时候用AXI DMA可以配置scatter-gather模式,让DMA从不同的地址段读取后再拼成一个完整的内存给后面的逻辑。
如果不使用scatter-gather,还是不清楚有什么原因要使用AXI DMA。
回复

使用道具 举报

1

主题

68

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1040
金钱
1040
注册时间
2021-3-25
在线时间
156 小时
发表于 2024-5-6 09:59:47 | 显示全部楼层
dma的作用就是对PS与PL之间进行数据交互,也就是存储映射数据流与stream流之间进行交互
回复

使用道具 举报

1

主题

5

帖子

0

精华

新手上路

积分
33
金钱
33
注册时间
2020-10-5
在线时间
3 小时
 楼主| 发表于 2024-5-8 14:27:43 | 显示全部楼层
caojunye 发表于 2024-5-6 09:59
dma的作用就是对PS与PL之间进行数据交互,也就是存储映射数据流与stream流之间进行交互

数据交互不使用AXI DMA也可以完成呀,应该是可以直接通过存储映射接口读取的。为什么要多一个AXI DMA,把存储映射接口转换成stream,再来读stream呢?
回复

使用道具 举报

1

主题

5

帖子

0

精华

新手上路

积分
33
金钱
33
注册时间
2020-10-5
在线时间
3 小时
 楼主| 发表于 2024-5-8 14:29:45 | 显示全部楼层
既然大家都是这么用,我猜想肯定有优点,只是没明白原因具体是什么。相反使用AXI DMA的代价应该是比较明显的,多一个IP肯定会多一些资源占用了。
回复

使用道具 举报

1

主题

5

帖子

0

精华

新手上路

积分
33
金钱
33
注册时间
2020-10-5
在线时间
3 小时
 楼主| 发表于 2024-5-14 14:41:28 | 显示全部楼层
caojunye 发表于 2024-5-9 13:53
跟PL端的功能模块的接口有关系,有一些功能模块像axi stream data fifo,它的接口就是stream流接口,所以 ...

明白了,所以说 如果后级用的是现成的IP,因为接口固定死了,所以需要转换一下;如果是自己写逻辑,那么省略这个DMA,直接操作AXI-MM接口也是可以的;应该是这么理解了。

谢谢解答!
回复

使用道具 举报

1

主题

7

帖子

0

精华

初级会员

Rank: 2

积分
89
金钱
89
注册时间
2024-4-16
在线时间
10 小时
发表于 2024-6-13 09:24:18 | 显示全部楼层
AXI HP接口是一种高性能的接口,通常用于连接处理器系统中的内存控制器(如DDR控制器),用于处理器系统与外部设备之间的高速数据传输。在这种情况下,CPU负责控制数据传输的各个步骤,包括地址的生成、数据的读取或写入、传输的管理等。
因此,当直接使用AXI HP接口进行读写时,数据传输需要由CPU来处理,以确保数据传输的正确性和可靠性。CPU会根据应用程序或者操作系统的需求来控制数据传输的流程,包括数据的读取、写入、缓冲管理、错误处理等。这种方式相比于使用DMA引擎来进行数据传输,虽然灵活性较高,但会增加CPU的负载,可能会影响系统的响应速度和性能。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-2-22 17:02

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表