A number of rules govern the successful use of the channelized segmented AXI4-Stream protocol.
Segment Ordering
The 128-bit segments are ordered 0 to N; the first of the 128-bit transfers
occurs on segment 0, the second on segment 1, and so forth. During each clock cycle
that data is valid (tvalid asserted), an idle cycle
(no data) is indicated with inactive segment 0 (tuser_ena0
== 0). If the cycle is not a full IDLE and some data is present,
segment 0 must be active (tuser_ena0 == 1). The
segmented bus is aligned such that the first byte of data is placed in bits 7:0 of
segment 0.
Active Segments
Data is transferred in a segment on the interface when the
corresponding tuser_ena bit is asserted. Segments
must be filled in sequence with no gaps between active segments.
Gaps Subsequent to EOP
Segments must be filled in sequence with no gaps between active
segments. However, if a segment has an eop, the
subsequent segments might be inactive. Furthermore, if the segment after the eop is inactive, all subsequent segments in that cycle
must be inactive.
Channel Correlation
Because the DCMAC Subsystem
implements pre-indication of channel using the id_req_vld and id_req signals, there
must be a guaranteed correlation between those indicated signals and the response
tvalid and tid
pair wherein the two signal sets are identical but tvalid and tid are time shifted by a
fixed and static number of clocks.
The DCMAC Subsystem guarantees
correlation between valid tid signals presented by
the transmit AXI4-Stream client and valid ch_status_id signals presented on the ch_status interface. In this case, however, it is not
an exact mirroring because ch_status_vld is only
asserted when ch_status_skip_req is asserted.
Regardless, it is guaranteed that the DCMAC Subsystem will not provide channel status information any more
frequently than the channel’s tid is presented by
the AXI4-Stream client.
Preambles
The DCMAC Subsystem's channelized
AXI4-Stream bus can support up to three
sop signals per cycle; the corresponding
preambles are provided on tx_axis_preamblein_{0,2,4}. The tx_axis_preamblein_0 is used for sop
signals in segments 0–3, tx_axis_preamblein_2 is
used for sop signals in segments 4–7, and tx_axis_preamblein_4 is used for sop signals in segments 8–11.