如何在 Verilog 中构建 5 位最大长度 Galois LFSR?

How do I build a 5-bit maximal-length Galois LFSR in Verilog?

我在获取所需输出时遇到问题。

这是我的代码:

module top_module(
    input clk,
    input reset,    // Active-high synchronous reset to 5'h1
    output reg [4:0] q
); 
    wire din3;

    assign din3 = q[3] ^ q[0];
    always @(posedge clk)
    begin
        if (reset)
            q <= 5'd1;
        else
            q <= {q[0],din3,q[2],q[1],q[0]};
    end
endmodule

这是我的输出与正确输出的时序图。

我也一直收到这个错误:

Warning (13024): Output pins are stuck at VCC or GND

我无法使用 Testbench 代码,因为它是在 HDLBits website.

的幕后完成的

您有接线错误。

module top_module(
    input clk,
    input reset,    // Active-high synchronous reset to 5'h1
    output reg [4:0] q
); 

    always @(posedge clk)
    begin
        if (reset)
            q <= 5'd1;
        else
            q <= {q[0], q[4], (q[0] ^ q[3]), q[2], q[1]};
    end
endmodule

注意:如果您在网站上尝试,您可以看到 HDLBits 解决方案。例如,我输入了合法(但错误)的解决方案:assign q=0;.