【发布时间】:2013-12-29 04:36:42
【问题描述】:
我在 Verilog 方面相对缺乏经验,并且对 LFSR 结构非常陌生。我想要完成的工作如下..
如果我有一个 5 字节数组,这意味着最大排列为 5!或 120. 我想做的是, 有办法快速返回这个数组的任何排列。如果我将数组初始化为(0,1,2,3,4),那么对于这 5 个深度数组, 排列 0 产生数组 (1,2,3,4,0)。排列 40 产生数组 (4,0,3,2,1) 等。
所以我认为 LFSR 是完成此任务的最快方法,并且我了解它们的工作原理,但我无法完全了解 抽头应该是什么或如何获得特定的排列。
reg [4:0] vals;
wire feedback
assign feedback = vals[0] ^ vals[1] ^ vals[2] ^ vals[3] ^ vals[4];
always@(posedge clk or negedge reset) begin
if (reset==1'b0) begin
vals[4:0]<=5'hF; //reset condition first
end
else begin
vals[0]<=feedback;
vals[1]<=vals[0];
vals[2]<=vals[1];
vals[3]<=vals[2];
vals[4]<=vals[3];
end
很明显,反馈是行不通的!我只是试图让整个上下文直接进入我的大脑。我如何让它去某个 排列?根据数组的大小,需要多少个抽头?非常感谢任何帮助!
【问题讨论】:
-
'5字节数组'是指5位数组吗?
标签: permutation verilog