首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >双向通信采用异步FIFO?

双向通信采用异步FIFO?
EN

Stack Overflow用户
提问于 2017-07-25 05:40:41
回答 1查看 276关注 0票数 2

我正在尝试将一个模块(我们称之为main_module)与Xilinx核心生成器生成的双端口块RAM内存接口。两个模块相互发送和接收数据,并以明显不同的时钟速度运行。为了解决接口中面临的同步问题,我决定使用异步FIFO (也是由Xilinx核心生成器生成)。关于这一点,我有些困惑:

  1. 如何有效地改变main_module和BRAM之间双向通信的FIFO读写时钟的分配?在存储器写入模式下,FIFO的WR_CLK为main_module,RD_CLK的FIFO为BRAM模块。在存储器读取模式中,时钟将被相反地分配。同样,在FIFO的DIN和DOUT引脚分配方面也是如此。通过输入信号选择读写方式。
  2. 记忆地址呢?它们将在main_module中生成,并必须传递给BRAM。应该对此进行同步吗?如果是,那么最有效的方式是什么?

EN

回答 1

Stack Overflow用户

发布于 2017-08-10 06:45:57

按优先顺序考虑了三个备选方案:

1)在BRam接口中切换到AXI,使用AXI组件和协议进行多主内存访问。乍一看,这似乎有点过分,但无论你从零开始做什么,都需要在临时的基础上朝着类似的原则努力,这通常比使用目的构建的行业标准方法花费更多的时间。

( 2) (重新)架构设计,以便不需要共享一个BRam端口。例如,复制数据,以便每个端口总是只有一个时钟,即写入两个BRams是双方需要的数据。

3)如您所建议的,对于本地端口中没有使用的时钟,有一个Fifo。您需要在这个Fifo中同时拥有数据和地址。因此,写是相当紧张的向前,但对于读,您还需要Fifo (或XMP时钟域交叉同步器)的返回通道和一些协议来处理读取。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45294753

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档