// Linear feedback shift register. | |
// | |
// Useful as a simple psuedo-random number generator. | |
module LFSR #( | |
parameter WIDTH = 16, | |
parameter POLY = 16'hD008 | |
) ( | |
input rst, | |
input clk, | |
input [WIDTH-1:0] seed, | |
output reg [WIDTH-1:0] r | |
); | |
wire feedback = ^(r & POLY); | |
always @(posedge clk) begin | |
if(rst) begin | |
r <= seed; | |
end else begin | |
r <= {r[WIDTH-2:0], feedback}; | |
end | |
end | |
endmodule |