Verilog - 移位寄存器队列还是循环队列?

时间:2016-03-02 09:56:01

标签: queue verilog

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

  1. 移位寄存器方式 - 当您出队时,将所有值向前移动。同时保留一个队列计数器来跟踪物品的数量,并便于你排队等候。
  2. 循环队列方式 - 保持2指针/计数器指向队列的头部和末端。当你出队时,增加头指针;当你入队时,增加结束指针。到达阵列末尾时返回0。可能希望保留一个队列计数器以跟踪项目数量或使用2个指针来查找。
  3. 对于这个问题,哪个更好? 如果我想在同一个时钟周期中入队和出队,那么一个比另一个好吗?

    我认为对于循环队列,只需将它添加到结束指针所指向的位置就会更直接。虽然移位寄存器队列可能必须检查每个班次的插入位置。

    然后,两个人的入队都是基于指针进行插入。那么两者的导线映射同样复杂吗? (在输入问题时只是一些想法)

    感谢。

1 个答案:

答案 0 :(得分:0)

我相信,循环队列更好。

优势:

  • 您无需转移任何数据。
  • 您只需要更新指针。
  • Shift Queue中也需要计数器更新,与循环队列相同。
  • 您不需要移位数据,以便获取数据,因此阅读&写延迟提高
  • 不需要额外的位来检查位置是否包含数据。