Preemption leverages the MRMAC
custom preamble features to insert and extract the necessary Preamble, SMD, and FRAG_COUNT
fields. Insertion and extraction of custom preamble is enabled on a per-port basis by
setting the ctl_tx_custom_preamble_enable_<N>
field of
the CONFIGURATION_TX_REG register to 1. This feature must be enabled for preemption to work
properly.
When custom preamble is enabled, the user logic communicates the desired
preamble + SFD/SMD/FRAG_COUNT field for outbound frames on a port-by-port, packet-by-packet
basis by means of the signals tx_preamblein_N[55:0]
. In the
receive direction, the signals rx_preambleout_N[55:0]
are
used to communicate the extracted preamble + SFD/SMD/FRAG_COUNT from the received
packets.
Note that the tx_preamblein/rx_preambleout
signals are 7B wide. The first byte of preamble is never transmitted in 64B/66B Start codes,
so custom preambles would carry 6 bytes of preamble followed by one byte of SMD (preemption
header format (a)), or 5 bytes of preamble, followed by one byte of SMD, and one byte of
FRAG_COUNT (preemption header format (b)).