added reset param to lfsr

This commit is contained in:
Eric Matthews 2021-11-16 14:47:37 -08:00
parent e4259d0005
commit 63f30b1586
4 changed files with 15 additions and 13 deletions

View file

@ -25,7 +25,7 @@ module lfsr
#(
parameter WIDTH = 3,
parameter FULL_RANGE = 1
parameter NEEDS_RESET = 1
)
(
input logic clk,
@ -81,21 +81,23 @@ module lfsr
logic feedback;
////////////////////////////////////////////////////
//Implementation
generate begin
generate if (WIDTH == 2) begin
assign feedback = ~value[WIDTH-1];
end
else begin
for (genvar i = 0; i < NUM_TAPS[TAPS_INDEX]; i++) begin
assign feedback_input[i] = value[TAPS[TAPS_INDEX][i + 1] - 1];
end
//XNOR of taps and range extension to include all ones
if (FULL_RANGE)
assign feedback = (~^feedback_input) ^ |value[WIDTH-2:0];
else
assign feedback = (~^feedback_input);
end endgenerate
assign feedback = (~^feedback_input) ^ |value[WIDTH-2:0];
end
endgenerate
initial value = 0;
always_ff @ (posedge clk) begin
if (en)
if (NEEDS_RESET & rst)
value <= '0;
else if (en)
value <= {value[WIDTH-2:0], feedback};
end

View file

@ -104,13 +104,13 @@ module taiga_fifo
assign fifo.valid = inflight_count[LOG2_FIFO_DEPTH];
assign fifo.full = fifo.valid & ~|inflight_count[LOG2_FIFO_DEPTH-1:0];
lfsr #(.WIDTH(LOG2_FIFO_DEPTH))
lfsr #(.WIDTH(LOG2_FIFO_DEPTH), .NEEDS_RESET(1))
lfsr_read_index (
.clk (clk),.rst (rst),
.en(fifo.pop),
.value(read_index)
);
lfsr #(.WIDTH(LOG2_FIFO_DEPTH))
lfsr #(.WIDTH(LOG2_FIFO_DEPTH), .NEEDS_RESET(1))
lfsr_write_index (
.clk (clk), .rst (rst),
.en(fifo.push),

View file

@ -74,7 +74,7 @@ module tlb_lut_ram
//LUTRAM-based
//Reset is performed sequentially, coordinated by the gc unit
lfsr #(.WIDTH($clog2(DEPTH)))
lfsr #(.WIDTH($clog2(DEPTH)), .NEEDS_RESET(0))
lfsr_counter (
.clk (clk), .rst (rst),
.en(gc_tlb_flush),

View file

@ -53,7 +53,7 @@ module toggle_memory_set
logic [$clog2(DEPTH)-1:0] clear_index;
//counter for indexing through memories for post-reset clearing/initialization
lfsr #(.WIDTH($clog2(DEPTH)))
lfsr #(.WIDTH($clog2(DEPTH)), .NEEDS_RESET(0))
lfsr_counter (
.clk (clk), .rst (rst),
.en(init_clear),