我是Verilog的新手,但我有16个元素的数组(每个元素都是16位长),我希望找到最小条目该数组返回最小值,并重新排列数组中所有位于最小值之后的条目,以便该数组是一个连续的条目块。我知道我必须使用一个比较器,但我真的不知道从哪里开始比较一大群数字并确定最小值。使用Verilog for Priority Queue实现查找最小数组使用Verilog
编辑:我实际做的是一个优先级队列。我已经实现了队列功能,但我不想返回队列头部的内容,而是想返回具有最小值的条目,并保持存储连续。
e.g. {2,3,4,1,5,6,-,-}
min is 1 --> {2,3,4,-,5,6,-,-}
Rearrange so everything following the returned min is moved to the index preceding it-->
{2,3,4,5,6,-,-,-}
谢谢。我一定会听从你的所有建议。我仍然不确定重新排列队列的问题。我提出这个想法的原因是因为如果我不把它重新打包成连续的存储空间,看起来就像是“浪费的空间”。 – GobiasKoffi 2011-04-26 18:43:50
是否浪费取决于您的重新分配政策。如果您不需要跟踪事件入队的顺序,则可以为阵列保留一个有效/空位向量,并搜索它以查找空闲条目。这有一定的代价,但它比find-minimum-value逻辑便宜得多。 – Andy 2011-04-26 19:18:06
实际上,空/满条目阵列听起来真的是个好主意。也许我会考虑实施。实际上,我所关心的只是从队列中删除最小条目,所以它的位置并不重要。谢谢您的帮助。对此,我真的非常感激。 – GobiasKoffi 2011-04-27 14:43:02