我正在尝试将模块(让它称之为main_module)与Xilinx CORE Generator生成的双端口Block RAM存储器连接。两个模块相互发送和接收数据,并以明显不同的时钟速度运行。为了满足接口所面临的同步问题,我决定使用异步FIFO(也是由Xilinx CORE Generator生成)。关于这一点,我有一些困惑:
答案 0 :(得分:1)
按优先顺序考虑三个选项:
1)切换到BRAM接口的AXI,并使用AXI组件和协议进行多主存储器访问。一开始看起来似乎有些过分,但无论你从头开始做什么,都需要在临时基础上努力实现类似的原则,这通常比使用专门构建的行业标准方法更耗时。
2)(重新)设计设计,以便不需要共享一个BRam端口。例如,复制数据,以便每个端口始终只有一个时钟,即写入两个BRams是双方需要的数据。
3)正如你所建议的那样,有一个Fifo用于本机端口未使用的时钟。您需要在此Fifo中同时拥有数据和地址。因此,写入非常紧张,但对于读取,您还需要用于返回通道的Fifo(或XMP时钟域交叉同步器)以及用于处理读取的一些协议。