问答 店铺
热搜: ZYNQ FPGA discuz

QQ登录

只需一步,快速开始

微信登录

微信扫码,快速开始

微信扫一扫 分享朋友圈

已有 9216 人浏览分享

开启左侧

关于DMA批量发数据到PS的几点疑惑?

[复制链接]
9216 3
在学习DMA批量传输数据到PS和使用模块AD7606这几个章节内容时,在疑惑XAXIDMA_SimpleTransfe()这个函数对应的DMA行为。
(1)         PL端一直在采集数据(或者在PL端一直在构造数据),当达到一定数量时(比如1024后,拉起tlast信号,此时数据仅在第一级axis_data_fifo中,如何与之后的axis_dwidth_converter, axi_DMA之类的IP进行流数据交互)?
(2)        在SDK端使用XAXIDMA_SimpleTransfe()函数来发起DMA数据传输,长度比如1024个数据,方向S2MM,完成后进中断后,之后或者显示,或者lwip发送。我想请问,这个缓存机制下,采集慢,读取快,再加上FIFO缓存,数据不会丢。但是DMA读取的数如何保证是本次采集或者构造的1024个数据?由于一直在采集或者构造数据,axis_data_fifo中的数据需要被读走,不然会满,这里边的机制或者代码啥的,请大佬提点一下?

评论 3

uisrc  管理员  发表于 2019-9-24 11:28:46 | 显示全部楼层
第一个问题:用户代码用tlast拉起后,会通知DMA IP核产生中断,DMA IP核负责搬运运输,只有当DMA把数据全部搬运完,DMA的中断参会产生。
第二个问题:采用乒乓操作可以获得最大的带宽能力,如果超过这个带宽能力,显然会丢数据。这个和lwip搬运的速度快慢也有关系。这里显然带宽的限制在lwip部分,而不在DMA.
越努力越幸运!加油!
kernelstory  新手上路  发表于 2019-9-24 14:38:22 | 显示全部楼层
msxbo 发表于 2019-9-24 11:28
第一个问题:用户代码用tlast拉起后,会通知DMA IP核产生中断,DMA IP核负责搬运运输,只有当DMA把数据全部 ...

在问题二中,XAXIDMA_SimpleTransfer()和LWIP()部分可以做到传输较快,其实设计本来就应该比PL中FIFO的存储速度要快。
可是当下一次XAXIDMA_SimpleTransfer()启动时,stream_data_fifo中的数据完全有可能并未存够本次转移方向S2MM的长度,所以又回到问题
中,PL端stream流的控制,DMA此时有等待标记?等DMA中的tlast吗?
ぉ沙皮狗的忧伤  版主  发表于 2019-9-24 16:41:04 | 显示全部楼层
老哥,我最近也在搞AXI总线传输,有几点疑问想向你请假
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

0

关注

0

粉丝

1

主题
精彩推荐
热门资讯
网友晒图
图文推荐

  • 微信公众平台

  • 扫描访问手机版