【问题标题】:Is it possible to design a latch based FIFO instead of FF?是否可以设计基于锁存器的 FIFO 而不是 FF?
【发布时间】:2014-02-20 17:25:06
【问题描述】:

基于锁存器的 FIFO(即电平敏感锁存器)在面积方面可能比基于 FF 的 FIFO 更便宜。我正在寻找基于锁存器的 FIFO 设计代码或架构。到目前为止,我没有遇到任何。可以设计一个吗?我正在寻找一些论文或想法来开始......

【问题讨论】:

    标签: vhdl verilog system-verilog


    【解决方案1】:

    您可以使用pulse latches,它保留了advantages of both latches and flip-flops,提供更高的性能和更低的功耗,但它们通常不被常用 CAD 工具“完全”支持。

    或者,您可以将您的翻牌转换为两个电平敏感的master/slave latches。触发器可以通过两个相反相位的锁存器来实现。这通常是为了实现时间借用,并不一定会导致更小/更快的电路。这样,您的 FIFO 结构与基于 flop 的设计非常相似,只是每个 flop 被两个锁存器替换。

    【讨论】:

    • 根据他使用的 CAD 工具,在 RTL 级别使用触发器很可能会转换为布局中的主/从锁存器。所以后者可能不会节省太多面积。
    • @Zhehao Mao:不确定我是否同意。这取决于您使用的标准单元库。触发器通常是库中的独立单元。无需 CAD 工具将它们转换为主/从锁存器。在内部,触发器单元可能包括主/从锁存器,但它们的布局通常非常优化并且小于两个独立的独立锁存单元。
    • 确实如此,但我的观点是,使用主/从锁存器来代替人字拖并不能真正满足@newbie 的最终目标,即减少面积(实际上,按照你所说的) ,它实际上可能会增加面积)。
    • 我想一种方法是对存储单元进行时钟门控,其中每个单元都是一个锁存器。只有当我们接收到新的数据有效信号时,单元才会加载数据。如果没有要写入的新数据,那么一行的所有单元都将被时钟门控。我不太确定小规模的时钟门控是否值得。我正在使用大约 200 深和 128 宽的先进先出。对此有何评论?不过我可能错了……
    • @newbie:你需要确保在你打开一个阶段的latch时,下一个阶段的数据没有被污染。这是通过两相时钟的锁存器完成的。我不认为连接所有由一个时钟控制的锁存器,即使存在时钟门控也可以实现您想要的。如果两个连续的锁存器都启用了怎么办?在这种情况下,一旦时钟为 0 或使能为 0,它们都保持相同的值,即第一个锁存器充当导线而不是存储元件。
    【解决方案2】:

    可以为 fifos 使用闩锁,尽管我没有任何方便的代码来说明如何使用。通常,我看到 fifos 被实现为存储的“sram”,并带有一个用于围绕它的 fifo 逻辑的包装器。这种结构也可以相对自然地处理不同的读/写时钟。

    我不知道确切的启发式方法,但我认为

    • 小 sram 单元是使用触发器实现的。
    • 中等 sram 单元是使用锁存器实现的。
    • 大型 sram 单元是使用实际 ram 单元实现的。

    在使用触发器和锁存器之间存在一些交叉点,其中控制逻辑和锁存器路由的额外开销变得值得在实际存储中节省空间。

    【讨论】:

      猜你喜欢
      • 2012-01-15
      • 2014-05-18
      • 1970-01-01
      • 1970-01-01
      • 2011-02-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-07-09
      相关资源
      最近更新 更多