我设计了一个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发布于 2016-10-20 16:39:28
对于最大长度的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需要相当长的时间来模拟。
https://stackoverflow.com/questions/40138917
复制相似问题