我设计了一个64位的lfsr,但我认为它没有随机显示。它的常规模式。任何人都可以检查我的代码,看看它是否正确。 (TAP 64,63,61,60)
module lfsr (out, clk, rst);
output reg [63:0] out;
input clk, rst;
wire feedback1,feedback2,feedback3;
assign feedback1 = ~(out[63] ^ out[62]);
assign feedback2 = ~(out[62] ^ out[60]);
assign feedback3 = ~(out[60] ^ out[59]);
always @(posedge clk, posedge rst)
begin
if (rst)
out = 64'b0;
else
out = {out[60:0],feedback3,feedback2,feedback1};
end
endmodule
答案 0 :(得分:1)
对于最大长度LFSR,您的水龙头是正确的(64,63,61,60),但您还没有正确连接它们。这就是你需要的:
module lfsr (out, clk, rst);
output reg [63:0] out;
input clk, rst;
wire feedback;
assign feedback = ~(out[63] ^ out[62] ^ out[60] ^ out[59]);
always @(posedge clk, posedge rst)
begin
if (rst)
out <= 64'b0;
else
out <= {out[62:0],feedback};
end
endmodule
请参阅this playground,这是针对6抽头LFSR实施的,因为64抽头LFSR需要相当长的时间来模拟。