blob: c4b93db94ff716f27d66bdf11e958909a22b7dd2 [file] [log] [blame]
`default_nettype none
// ============================================================================
module lfsr #
(
parameter WIDTH = 16, // LFSR width
parameter [WIDTH-1:0] POLY = 16'hD008, // Polynomial
parameter [WIDTH-1:0] SEED = 1 // Initial value
)
(
input wire CLK,
input wire CE,
input wire RST,
output reg [WIDTH-1:0] O
);
wire feedback = ^(O & POLY);
always @(posedge CLK) begin
if(RST) begin
O <= SEED;
end else if(CE) begin
O <= {O[WIDTH-2:0], feedback};
end
end
endmodule