【发布时间】:2016-03-02 09:56:00
【问题描述】:
我有两种方法可以在 verilog 中实现队列。
- 移位寄存器方式 - 出列时,将所有值向前移动。同时保持一个队列计数器来跟踪项目的数量,也方便你排到后面。
- 循环队列方式 - 保持 2 个指针/计数器指向队列的开头和结尾。出队时,增加头指针;入队时,增加结束指针。到达数组末尾时循环回 0。可能需要保留一个队列计数器来跟踪项目数量或使用 2 个指针来查找。
对于这个问题,哪种方法更好? 如果我想在同一个时钟周期内入队和出队,一个比另一个工作得更好吗?
我认为对于循环队列,将它添加到结束指针指向的任何位置会更直接。而移位寄存器队列可能必须在每次移位时检查插入位置。
再一次,两者的入队都是基于指针来进行插入的。那么两者的线路映射会同样复杂吗? (只是输入问题时的一些想法)
谢谢。
【问题讨论】:
-
就灵活性和程序复杂性而言,我认为循环队列更好。