【问题标题】:Verilog - shift register queue or circular queue?Verilog - 移位寄存器队列或循环队列?
【发布时间】:2016-03-02 09:56:00
【问题描述】:

我有两种方法可以在 verilog 中实现队列。

  1. 移位寄存器方式 - 出列时,将所有值向前移动。同时保持一个队列计数器来跟踪项目的数量,也方便你排到后面。
  2. 循环队列方式 - 保持 2 个指针/计数器指向队列的开头和结尾。出队时,增加头指针;入队时,增加结束指针。到达数组末尾时循环回 0。可能需要保留一个队列计数器来跟踪项目数量或使用 2 个指针来查找。

对于这个问题,哪种方法更好? 如果我想在同一个时钟周期内入队和出队,一个比另一个工作得更好吗?

我认为对于循环队列,将它添加到结束指针指向的任何位置会更直接。而移位寄存器队列可能必须在每次移位时检查插入位置。

再一次,两者的入队都是基于指针来进行插入的。那么两者的线路映射会同样复杂吗? (只是输入问题时的一些想法)

谢谢。

【问题讨论】:

  • 就灵活性和程序复杂性而言,我认为循环队列更好。

标签: queue verilog


【解决方案1】:

我相信,循环队列更好。

优点:

  • 您不需要移动任何数据。
  • 您只需要更新指针。
  • 与循环队列一样,移位队列也需要更新计数器。
  • 您无需移动数据即可获取数据,因此读写延迟得到改善
  • 不需要额外的位来检查一个位置是否包含数据。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-18
    相关资源
    最近更新 更多