赛灵思
直播中

张百玲

8年用户 232经验值
私信 关注
[问答]

如何实现从BR​​AM到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速度相当慢:(
请帮帮我。
我怎样才能加快速度。
问候

回帖(6)

王晶

2020-4-28 09:08:52
hex文件作为1KB数据包发送。
即使我没有对收到的tcp / ip数据包做任何事情,该文件仍然以大约4.7 MBytes / sec的速度传输。
我已经在框图中完全复制了bist项目设计和sdk。
我不知道问题出在哪里......
举报

安瑞娟

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

王晶

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

王晶

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

更多回帖

发帖
×
20
完善资料,
赚取积分