mirror of
https://github.com/openhwgroup/cva5.git
synced 2025-04-22 13:07:33 -04:00
added reset param to lfsr
This commit is contained in:
parent
e4259d0005
commit
63f30b1586
4 changed files with 15 additions and 13 deletions
20
core/lfsr.sv
20
core/lfsr.sv
|
@ -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
|
||||
|
||||
|
|
|
@ -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),
|
||||
|
|
|
@ -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),
|
||||
|
|
|
@ -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),
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue