发 帖  
原厂入驻New
[问答] 如何实现从BR​​AM到DDR3的慢速复制?
120 DDR3
分享
嗨,
我正在使用VC707的bist项目中给出的lwip设计,将2GB hex文件传输FPGA
项目使用已连接到cachedBRAM的DMA。
因此,收到的数据包位于BRAM中。现在,我想将每个接收到的数据包的copydata连接到ddr3,后者连接到外围设备AXI。
microblaze的封装频率为100MHz。
我以4.7 MB /秒的速度接收数据。
我试过memcopy和memmove。
两者的速度几乎相同,约为1.5 MB /秒。
当我将DDR3连接到Cache AXI互连时,速度会有所增加(大约2MBytes / sec。)
我无法将DDR3连接到Cache AXI互连,因为那时我将无法使用2GB DDR3.This速度相当慢:(
请帮帮我。
我怎样才能加快速度。
问候
0
2020-4-28 08:57:02   评论 分享淘帖 邀请回答
6个回答
hex文件作为1KB数据包发送。
即使我没有对收到的tcp / ip数据包做任何事情,该文件仍然以大约4.7 MBytes / sec的速度传输。
我已经在框图中完全复制了bist项目设计和sdk。
我不知道问题出在哪里......
2020-4-28 09:08:52 评论

举报

嗨,
Linux或独立的sotfware堆栈?
memcpy和memmove的实现是什么 - 它们是回到DMA外设还是执行它们的处理器?
如果是后者,那么你就会受到微纤维本身的瓶颈。
您需要重新构建,以便microblaze只设置DMA事务,DMA外设为您执行批量复制。
您使用的是AXI CDMA周边设备吗?
这可能是正确的IP。
您的架构的屏幕截图也会有所帮助。
2020-4-28 09:26:11 评论

举报

独立软件堆栈,使用microblaze实现memcpy / memmove功能。
附上相关部分的屏幕截图。
我正在使用DMA。
2020-4-28 09:31:13 评论

举报

如果我使用一个简单的c循环来复制8字节(u64)的数据块,传输速度会更好(约2.7 MB / s)。
也许memcpy / memmove逐字节传输......
2020-4-28 09:48:27 评论

举报

听起来没错,
这够快吗?
你的以太网只有DMA,你的memcpy没有DMA。
如果你为memcpy添加CDMA硬件,你应该能够通过mb设置批量DMA事务更快地让DMA引擎为你做这一切。
HTH
2020-4-28 10:03:50 评论

举报

嗨,
非常感谢pete_128。
你是对的。
如果由microblaze实现,这些memcpy / memmove函数表现不佳。
我现在能够传输到大约3.4 MB / s。
仍然比我希望的要少。
但我不能超过~4.7 MB / sanywas ...所以,我将不得不忍受它。
非常感谢你的时间和善意的指导。
我真的很感激:)保持幸福。
2020-4-28 10:14:22 评论

举报

只有小组成员才能发言,加入小组>>

94个成员聚集在这个小组

加入小组

创建小组步骤

关闭

站长推荐 上一条 /7 下一条

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