0

我设计了一个 64 位 lfsr,但我认为它没有随机显示。它是一种规则的模式。任何人都可以检查我的代码,看看它是否正确。(点击 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
4

1 回答 1

2

对于最大长度的 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

请参阅这个为 6-tap LFSR 实现的操场,因为 64-tap LFSR 需要相当长的时间来模拟。

于 2016-10-20T08:39:27.653 回答