Initial commit

This commit is contained in:
Nikolay Puzanov
2021-02-28 18:59:56 +03:00
parent ff795d2b6e
commit 2fbacc0544
61 changed files with 6063 additions and 0 deletions

37
source/lfsr.sv Normal file
View File

@@ -0,0 +1,37 @@
`timescale 1ns/100ps
`default_nettype none
module lfsr #(parameter POLY = 32'hA3000000)
(clock,
preset,
data_i,
prnd_o);
localparam WIDTH = $size(POLY);
input wire clock;
input wire preset;
input wire [WIDTH-1:0] data_i;
output wire prnd_o;
logic [WIDTH-1:0] sreg;
logic feedback;
initial sreg = '1;
assign feedback = sreg[0];
assign prnd_o = feedback;
integer i;
always_ff @ (posedge clock)
if (preset)
sreg <= (data_i == '0) ? '1 : data_i;
else begin
sreg[WIDTH-1] <= feedback;
for (i = 0; i < (WIDTH-1); i ++)
sreg[i] <= POLY[i] ? (sreg[i+1] ^ feedback) : sreg[i+1];
end
endmodule // lfsr