如何设计自定义ip(与axi兼容)以从DDR读取和写入(在Xilinx Vivado中)

时间:2018-12-22 12:16:17

标签: fpga xilinx vivado

我有一个采用Microblaze和MIG的设计,该设计通过xsct进行了从2GB DDR3 RAM读取和写入的测试。

我想设计一个自定义IP,该IP将通过xsct接收命令(用于从内存中进行块读取和写入),并根据该命令写入RAM。

示例:一条命令将要求自定义ip从特定地址进行块读取(例如从128个位置读取)。

我已经尝试在Xilinx论坛中阅读用于与DRAM交互的自定义​​IP。 (但找不到该特定任务的解决方案)

疑问

  1. 要达到这个目标,Microblaze或任何处理器都需要吗?
  2. 如何设计我的自定义IP(因为我不了解Microblaze如何与MIG通信)。我在哪里可以读到它?还是为此目的甚至有必要?

谢谢:)

1 个答案:

答案 0 :(得分:1)

如果您对电子设备,时序,设置约束,延迟线,自动时序校准和异步设计有很多了解,则可以设计自己的DDR接口。如果没有:不要尝试!

我在哪里工作了DRR界面,总是给拥有15年以上设计经验的最资深的设计师使用,幸运的是,我从来不需要设计一个(也许是因为管理层认为我没有这么复杂的工作:-)

当我读到你想要的东西时:

  

命令会要求自定义ip从特定地址进行块读取(例如从128个位置读取)。

您可以将标准的DDR3 IP模块与AXI接口一起使用。 AXI总线是面向命令的,最新版本支持1到256个位置之间的块读取或写入。总线通常为32位或什至64位宽,因此每个读取命令返回的块为1K或2K字节。

否,您不需要处理器。您可以使AXI DMA引擎发出读取或写入操作。但是,您需要阅读AXI。该规范是免费提供的,但请注意该协议是有害的。 看起来 很简单,但事实并非如此!细节在于地址和数据总线的独立性。

关于复杂性:
我查找了我设计的AXI乒乓读取DMA FSM。它是〜130行代码。 (应包括很多评论!)