The following figure shows an example of
the timing for an aborted transfer. This can occur, for example, if a FIFO connected to the
AXI4-Stream TX interface empties before a frame is completed. When you assert
tx_axis_mac_tuser
during a frame transmission, the MAC core
inserts an error code to corrupt the current frame and then falls back to idle transmission.
It is your responsibility to re-queue the aborted frame for transmission. It is also possible
to abort a frame by de-asserting tx_axis_mac_tvalid
before the
final byte of the frame. It is classed by the MAC as a frame underrun because it does not
buffer the data and any gap is passed directly to the PHY. To avoid incorrect data being
output, this is classed as an implicit error condition and the frame is aborted.
The tx_axis_mac_tuser
signal can be asserted at any time during active frame
transmission. If it occurs prior to the MAC accepting the third byte of the frame, indicating
it is actively transmitting to the PHY, it is possible to provide new frame data to the MAC
and avoid the transmission of the aborted frame entirely. If this new data is not provided or
arrives too late, a minimum sized errored frame is output. There is a possibility of MAC
locking up if you present a stream of very short length errored frames on the TX AXI4-Stream interface. In such cases, ensure that a minimum of four bytes frame
data has been accepted by the MAC before asserting tuser
.
If the very first byte of the
transfer is aborted, the MAC will not assert tready
because there is no input for the MAC
to perform the task. Ensure that your designs do not present such
inputs to the MAC.
When tuser
is
asserted before the third byte, the frame is aborted and the next frame can be sent out.
When tuser
is asserted in between the packet transition, the
PHY error signal is asserted for the corresponding frame. If a collision occurs and the
retransmission signal is asserted, tvalid
must be asserted
within 6 clk cycles from the retransmission assert signal to resend the packet. Otherwise,
the retransmit count is reset.