mirror of
https://github.com/fpganinja/taxi.git
synced 2025-12-07 16:28:40 -08:00
lfsr: Clean up LFSR implementation
Signed-off-by: Alex Forencich <alex@alexforencich.com>
This commit is contained in:
@@ -327,21 +327,23 @@ endfunction
|
|||||||
|
|
||||||
wire [OUT_W-1:0][IN_W-1:0] mask = lfsr_mask();
|
wire [OUT_W-1:0][IN_W-1:0] mask = lfsr_mask();
|
||||||
|
|
||||||
for (genvar n = 0; n < LFSR_W; n = n + 1) begin : lfsr_state
|
wire [IN_W-1:0] lfsr_in;
|
||||||
if (DATA_IN_EN) begin
|
wire [OUT_W-1:0] lfsr_out;
|
||||||
assign state_out[n] = ^({data_in, state_in} & mask[n]);
|
|
||||||
end else begin
|
if (DATA_IN_EN) begin
|
||||||
assign state_out[n] = ^(state_in & mask[n]);
|
assign lfsr_in = {data_in, state_in};
|
||||||
end
|
end else begin
|
||||||
|
assign lfsr_in = state_in;
|
||||||
end
|
end
|
||||||
|
|
||||||
|
for (genvar n = 0; n < OUT_W; n = n + 1) begin
|
||||||
|
assign lfsr_out[n] = ^(lfsr_in & mask[n]);
|
||||||
|
end
|
||||||
|
|
||||||
|
assign state_out = lfsr_out[0 +: LFSR_W];
|
||||||
|
|
||||||
if (DATA_OUT_EN) begin
|
if (DATA_OUT_EN) begin
|
||||||
for (genvar n = 0; n < DATA_W; n = n + 1) begin : lfsr_data
|
assign data_out = lfsr_out[LFSR_W +: DATA_W];
|
||||||
if (DATA_IN_EN) begin
|
|
||||||
assign data_out[n] = ^({data_in, state_in} & mask[n+LFSR_W]);
|
|
||||||
end else begin
|
|
||||||
assign data_out[n] = ^(state_in & mask[n+LFSR_W]);
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end else begin
|
end else begin
|
||||||
assign data_out = '0;
|
assign data_out = '0;
|
||||||
end
|
end
|
||||||
|
|||||||
Reference in New Issue
Block a user