mirror of
https://github.com/fpganinja/taxi.git
synced 2025-12-07 16:28:40 -08:00
eth: Clean up masking, lane 0 never needs to be masked
Signed-off-by: Alex Forencich <alex@alexforencich.com>
This commit is contained in:
@@ -298,7 +298,7 @@ endfunction
|
||||
wire [DATA_W-1:0] s_axis_tx_tdata_masked;
|
||||
|
||||
for (genvar n = 0; n < KEEP_W; n = n + 1) begin
|
||||
assign s_axis_tx_tdata_masked[n*8 +: 8] = s_axis_tx.tkeep[n] ? s_axis_tx.tdata[n*8 +: 8] : 8'd0;
|
||||
assign s_axis_tx_tdata_masked[n*8 +: 8] = (n == 0 || s_axis_tx.tkeep[n]) ? s_axis_tx.tdata[n*8 +: 8] : 8'd0;
|
||||
end
|
||||
|
||||
// FCS cycle calculation
|
||||
|
||||
@@ -179,8 +179,6 @@ logic [31:0] swap_data = 32'd0;
|
||||
|
||||
logic output_data_finish_reg = 1'b0;
|
||||
|
||||
logic [DATA_W-1:0] s_axis_tx_tdata_masked;
|
||||
|
||||
logic [DATA_W-1:0] s_tdata_reg = '0, s_tdata_next;
|
||||
logic [EMPTY_W-1:0] s_empty_reg = '0, s_empty_next;
|
||||
|
||||
@@ -314,10 +312,10 @@ function [2:0] keep2empty(input [7:0] k);
|
||||
endfunction
|
||||
|
||||
// Mask input data
|
||||
always_comb begin
|
||||
for (integer j = 0; j < 8; j = j + 1) begin
|
||||
s_axis_tx_tdata_masked[j*8 +: 8] = s_axis_tx.tkeep[j] ? s_axis_tx.tdata[j*8 +: 8] : 8'd0;
|
||||
end
|
||||
wire [DATA_W-1:0] s_axis_tx_tdata_masked;
|
||||
|
||||
for (genvar n = 0; n < KEEP_W; n = n + 1) begin
|
||||
assign s_axis_tx_tdata_masked[n*8 +: 8] = (n == 0 || s_axis_tx.tkeep[n]) ? s_axis_tx.tdata[n*8 +: 8] : 8'd0;
|
||||
end
|
||||
|
||||
// FCS cycle calculation
|
||||
|
||||
@@ -222,6 +222,15 @@ eth_crc (
|
||||
.state_out(crc_state_next)
|
||||
);
|
||||
|
||||
// Mask input data
|
||||
wire [DATA_W-1:0] xgmii_rxd_masked;
|
||||
wire [CTRL_W-1:0] xgmii_term;
|
||||
|
||||
for (genvar n = 0; n < CTRL_W; n = n + 1) begin
|
||||
assign xgmii_rxd_masked[n*8 +: 8] = (n > 0 && xgmii_rxc[n]) ? 8'd0 : xgmii_rxd[n*8 +: 8];
|
||||
assign xgmii_term[n] = xgmii_rxc[n] && (xgmii_rxd[n*8 +: 8] == XGMII_TERM);
|
||||
end
|
||||
|
||||
always_comb begin
|
||||
state_next = STATE_IDLE;
|
||||
|
||||
@@ -529,7 +538,7 @@ always_ff @(posedge clk) begin
|
||||
framing_error_reg <= xgmii_rxc != 0;
|
||||
|
||||
for (integer i = CTRL_W-1; i >= 0; i = i - 1) begin
|
||||
if (xgmii_rxc[i] && (xgmii_rxd[i*8 +: 8] == XGMII_TERM)) begin
|
||||
if (xgmii_term[i]) begin
|
||||
term_present_reg <= 1'b1;
|
||||
term_first_cycle_reg <= i == 0;
|
||||
term_lane_reg <= 2'(i);
|
||||
@@ -547,10 +556,8 @@ always_ff @(posedge clk) begin
|
||||
|
||||
crc_valid_save <= crc_valid;
|
||||
|
||||
for (integer i = 0; i < CTRL_W; i = i + 1) begin
|
||||
xgmii_rxd_d0[i*8 +: 8] <= xgmii_rxc[i] ? 8'd0 : xgmii_rxd[i*8 +: 8];
|
||||
end
|
||||
xgmii_rxc_d0 <= xgmii_rxc;
|
||||
xgmii_rxd_d0 <= xgmii_rxd_masked;
|
||||
xgmii_rxd_d1 <= xgmii_rxd_d0;
|
||||
xgmii_rxd_d2 <= xgmii_rxd_d1;
|
||||
|
||||
|
||||
@@ -239,7 +239,7 @@ wire [DATA_W-1:0] xgmii_rxd_masked;
|
||||
wire [CTRL_W-1:0] xgmii_term;
|
||||
|
||||
for (genvar n = 0; n < CTRL_W; n = n + 1) begin
|
||||
assign xgmii_rxd_masked[n*8 +: 8] = xgmii_rxc[n] ? 8'd0 : xgmii_rxd[n*8 +: 8];
|
||||
assign xgmii_rxd_masked[n*8 +: 8] = (n > 0 && xgmii_rxc[n]) ? 8'd0 : xgmii_rxd[n*8 +: 8];
|
||||
assign xgmii_term[n] = xgmii_rxc[n] && (xgmii_rxd[n*8 +: 8] == XGMII_TERM);
|
||||
end
|
||||
|
||||
@@ -574,7 +574,7 @@ always_ff @(posedge clk) begin
|
||||
framing_error_reg <= xgmii_rxc != 0;
|
||||
|
||||
for (integer i = CTRL_W-1; i >= 0; i = i - 1) begin
|
||||
if (xgmii_rxc[i] && (xgmii_rxd[i*8 +: 8] == XGMII_TERM)) begin
|
||||
if (xgmii_term[i]) begin
|
||||
term_present_reg <= 1'b1;
|
||||
term_first_cycle_reg <= i <= 4;
|
||||
term_lane_reg <= 3'(i);
|
||||
|
||||
@@ -246,8 +246,8 @@ endfunction
|
||||
// Mask input data
|
||||
wire [DATA_W-1:0] s_axis_tx_tdata_masked;
|
||||
|
||||
for (genvar n = 0; n < CTRL_W; n = n + 1) begin
|
||||
assign s_axis_tx_tdata_masked[n*8 +: 8] = s_axis_tx.tkeep[n] ? s_axis_tx.tdata[n*8 +: 8] : 8'd0;
|
||||
for (genvar n = 0; n < KEEP_W; n = n + 1) begin
|
||||
assign s_axis_tx_tdata_masked[n*8 +: 8] = (n == 0 || s_axis_tx.tkeep[n]) ? s_axis_tx.tdata[n*8 +: 8] : 8'd0;
|
||||
end
|
||||
|
||||
// FCS cycle calculation
|
||||
|
||||
@@ -258,8 +258,8 @@ endfunction
|
||||
// Mask input data
|
||||
wire [DATA_W-1:0] s_axis_tx_tdata_masked;
|
||||
|
||||
for (genvar n = 0; n < CTRL_W; n = n + 1) begin
|
||||
assign s_axis_tx_tdata_masked[n*8 +: 8] = s_axis_tx.tkeep[n] ? s_axis_tx.tdata[n*8 +: 8] : 8'd0;
|
||||
for (genvar n = 0; n < KEEP_W; n = n + 1) begin
|
||||
assign s_axis_tx_tdata_masked[n*8 +: 8] = (n == 0 || s_axis_tx.tkeep[n]) ? s_axis_tx.tdata[n*8 +: 8] : 8'd0;
|
||||
end
|
||||
|
||||
// FCS cycle calculation
|
||||
|
||||
Reference in New Issue
Block a user