preambleoutbuses available. The
rx_preambleout_0bus is used for frames starting in segments 0 to 3, while
rx_preamblein_2is used for frames starting in segments 4 to 7.
rx_preambleinbuses are only used in non-channelized 100G modes.
As is the case with transmit, new
sop signals on receive are guaranteed
to be aligned to segment 0. New is defined as either the first
frame after port startup, or the start of a frame when the last valid cycle ended with
eop (on any segment, but correspondingly followed by disabled
eop was not on the last segment of the bus).
Start-of-packet indications can occur on other segments, but only if they immediately
eop on the preceding segment. There can be no gaps (that is,
ena deasserted) between
sop on a single cycle.
A key difference between transmit and receive is that there is no
available for client backpressure on the RX AXI4-Stream interface.
The DCMAC Subsystem has no buffering capacity to absorb
client backpressure and the result is that data is always relayed when
tvalid is asserted. If backpressure is needed, the necessary
buffering must be implemented in user logic.
Another difference is that
tvalid might not
remain asserted for the duration of a frame transfer. Between
eop, all segments of
valid cycles are enabled, but not all cycles will necessarily be valid.
This is due to the asynchronous relationship between the line clocks, the receive core
clock, and the AXI clock. Without internal buffering to ensure frame continuity, the
asynchronous clock relationships sometimes result in a lack of data to present on the
AXI interface, and the result is a temporary pause between the cycles of an ongoing