`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 | |