我正在使用MAX10 FPGA并具有接口DDR3内存。我注意到我的DDR3内存与片上内存相比工作缓慢。我开始知道这一点,因为我写了一个闪烁的LED程序,并且与片上内存相同的延迟功能,与DDR3内存相比,它的工作速度更快。可以做些什么来提高速度?什么可能是错的?我的系统时钟运行在50MHz。 附:我的系统中没有指令或数据缓存。
答案 0 :(得分:1)
首先,你的功能不是管道功能作为你的描述。因为你做了一些内存然后闪烁的LED。每件事都按顺序运行。
在这种情况下,您应该估计响应时间和整个内存。例如,您从内存中读取数据然后执行添加功能,并执行此操作10次。如果您在添加功能后总是读取内存,你的总时间消耗约为10 *响应时间+10加功能时间。
不同之处在于内存响应时间。内部ram的响应时间在50MHz时可以是1个周期。但DDR3内存应该在80 ns左右。这就是区别。
但你可以将你的模块更改为管道模式。阅读/写入数据并将你的其他功能并行执行。然后使用r / w DDR.That就像PC中的缓存一样。这可以节省一些时间。
顺便说一下,DDR始终在很大程度上取决于你的功能模式。如果你在序列顺序地址读取或写入数据,那么你将获得更大的数据。
毕竟,外部存储器的整个过程和响应时间永远不会超过内部存储器。
原谅我的英语。