Line 248... |
Line 248... |
status_pause_frame_rx_tog <= 1'b0;
|
status_pause_frame_rx_tog <= 1'b0;
|
|
|
rxsfifo_wen <= 1'b0;
|
rxsfifo_wen <= 1'b0;
|
rxsfifo_wdata <= 14'b0;
|
rxsfifo_wdata <= 14'b0;
|
|
|
|
datamask <= 8'b0;
|
|
|
end
|
end
|
else begin
|
else begin
|
|
|
rxsfifo_wen <= 1'b0;
|
rxsfifo_wen <= 1'b0;
|
rxsfifo_wdata <= curr_byte_cnt + {11'b0, frame_end_bytes};
|
rxsfifo_wdata <= curr_byte_cnt + {11'b0, frame_end_bytes};
|
Line 317... |
Line 319... |
end
|
end
|
|
|
xgxs_rxd_barrel_d1 <= xgxs_rxd_barrel;
|
xgxs_rxd_barrel_d1 <= xgxs_rxd_barrel;
|
xgxs_rxc_barrel_d1 <= xgxs_rxc_barrel;
|
xgxs_rxc_barrel_d1 <= xgxs_rxc_barrel;
|
|
|
|
//---
|
|
// Mask for end-of-frame
|
|
|
|
datamask[0] <= addmask[0];
|
|
datamask[1] <= &addmask[1:0];
|
|
datamask[2] <= &addmask[2:0];
|
|
datamask[3] <= &addmask[3:0];
|
|
datamask[4] <= &addmask[4:0];
|
|
datamask[5] <= &addmask[5:0];
|
|
datamask[6] <= &addmask[6:0];
|
|
datamask[7] <= &addmask[7:0];
|
|
|
//---
|
//---
|
// When final CRC calculation begins we capture info relevant to
|
// When final CRC calculation begins we capture info relevant to
|
// current frame CRC claculation continues while next frame is
|
// current frame CRC claculation continues while next frame is
|
// being received.
|
// being received.
|
Line 461... |
Line 474... |
|
|
end
|
end
|
|
|
|
|
always @(/*AS*/coding_error or crc_rx or curr_byte_cnt or curr_state
|
always @(/*AS*/coding_error or crc_rx or curr_byte_cnt or curr_state
|
or pause_frame or xgxs_rxc_barrel or xgxs_rxc_barrel_d1
|
or datamask or pause_frame or xgxs_rxc_barrel
|
or xgxs_rxd_barrel or xgxs_rxd_barrel_d1) begin
|
or xgxs_rxc_barrel_d1 or xgxs_rxd_barrel
|
|
or xgxs_rxd_barrel_d1) begin
|
|
|
next_state = curr_state;
|
next_state = curr_state;
|
|
|
rxhfifo_wdata = xgxs_rxd_barrel_d1;
|
rxhfifo_wdata = xgxs_rxd_barrel_d1;
|
rxhfifo_wstatus = `RXSTATUS_NONE;
|
rxhfifo_wstatus = `RXSTATUS_NONE;
|
rxhfifo_wen = 1'b0;
|
rxhfifo_wen = 1'b0;
|
|
|
addmask[0] = !(xgxs_rxd_barrel_d1[`LANE0] == `TERMINATE && xgxs_rxc_barrel_d1[0]);
|
|
addmask[1] = !(xgxs_rxd_barrel_d1[`LANE1] == `TERMINATE && xgxs_rxc_barrel_d1[1]);
|
|
addmask[2] = !(xgxs_rxd_barrel_d1[`LANE2] == `TERMINATE && xgxs_rxc_barrel_d1[2]);
|
|
addmask[3] = !(xgxs_rxd_barrel_d1[`LANE3] == `TERMINATE && xgxs_rxc_barrel_d1[3]);
|
|
addmask[4] = !(xgxs_rxd_barrel_d1[`LANE4] == `TERMINATE && xgxs_rxc_barrel_d1[4]);
|
|
addmask[5] = !(xgxs_rxd_barrel_d1[`LANE5] == `TERMINATE && xgxs_rxc_barrel_d1[5]);
|
|
addmask[6] = !(xgxs_rxd_barrel_d1[`LANE6] == `TERMINATE && xgxs_rxc_barrel_d1[6]);
|
|
addmask[7] = !(xgxs_rxd_barrel_d1[`LANE7] == `TERMINATE && xgxs_rxc_barrel_d1[7]);
|
|
|
|
datamask[0] = addmask[0];
|
|
datamask[1] = &addmask[1:0];
|
|
datamask[2] = &addmask[2:0];
|
|
datamask[3] = &addmask[3:0];
|
|
datamask[4] = &addmask[4:0];
|
|
datamask[5] = &addmask[5:0];
|
|
datamask[6] = &addmask[6:0];
|
|
datamask[7] = &addmask[7:0];
|
|
|
|
next_crc_bytes = 4'b0;
|
next_crc_bytes = 4'b0;
|
next_crc_rx = crc_rx;
|
next_crc_rx = crc_rx;
|
crc_start_8b = 1'b0;
|
crc_start_8b = 1'b0;
|
crc_clear = 1'b0;
|
crc_clear = 1'b0;
|
|
|
Line 502... |
Line 498... |
fragment_error = 1'b0;
|
fragment_error = 1'b0;
|
|
|
next_coding_error = coding_error;
|
next_coding_error = coding_error;
|
next_pause_frame = pause_frame;
|
next_pause_frame = pause_frame;
|
|
|
|
addmask[0] = !(xgxs_rxd_barrel[`LANE0] == `TERMINATE && xgxs_rxc_barrel[0]);
|
|
addmask[1] = !(xgxs_rxd_barrel[`LANE1] == `TERMINATE && xgxs_rxc_barrel[1]);
|
|
addmask[2] = !(xgxs_rxd_barrel[`LANE2] == `TERMINATE && xgxs_rxc_barrel[2]);
|
|
addmask[3] = !(xgxs_rxd_barrel[`LANE3] == `TERMINATE && xgxs_rxc_barrel[3]);
|
|
addmask[4] = !(xgxs_rxd_barrel[`LANE4] == `TERMINATE && xgxs_rxc_barrel[4]);
|
|
addmask[5] = !(xgxs_rxd_barrel[`LANE5] == `TERMINATE && xgxs_rxc_barrel[5]);
|
|
addmask[6] = !(xgxs_rxd_barrel[`LANE6] == `TERMINATE && xgxs_rxc_barrel[6]);
|
|
addmask[7] = !(xgxs_rxd_barrel[`LANE7] == `TERMINATE && xgxs_rxc_barrel[7]);
|
|
|
case (curr_state)
|
case (curr_state)
|
|
|
SM_IDLE:
|
SM_IDLE:
|
begin
|
begin
|
|
|