The tx_axis_tuser_bctl<M>
input operates
in a similar manner to tx_axis_tuser_sop<M>
or a
change in tx_axis_tuser_chan<M>
; they cause a
Burst Control Word to be injected into the data stream before the data on segment
<M> is presented on the Interlaken interface. This allows you to implement your
own scheduling mechanism in cases where you do not want to rely on the built-in
mechanism.
To help better understand the enhanced scheduling behavior, consider the
following example. Assume that the c0_ctl_tx_burstmax
register field of the CFG_C0_TX_MAIN_REG register indicates BurstMax and is set to 256
bytes and the c0_ctl_tx_burstshort
register field of
the CFG_C0_TX_MAIN_REG register indicates BurstShort and is set to 64 bytes. Without the
use of enhanced scheduling or without the use of tx_axis_tuser_bctl<M>
, a packet of 264 bytes written into the TX
ILKNF subsystem would appear on the
Interlaken side with seven undesirable IDLE Control Words after the packet in order to
satisfy BurstShort. Specifically:
- One Burst Control Word (with start of packet) is sent
- 32 Data Words are sent
- One Burst Control Word (without start of packet) is sent
- One Data Word is sent
- Seven IDLE Control Words are sent (to satisfy BurstShort)
For a total of 42 Words.
To minimize the loss of bandwidth due to the injection of the extra IDLEs required to meet the BurstShort requirements, the ILKNF subsystem has a built-in mechanism to automatically implement the enhanced scheduling algorithm. The size of the second to last burst is Burstmax-64. The 264 byte packet will be split into two bursts of 192 bytes and 72 bytes, respectively.
- One Burst Control Word (with start of packet) is sent
- 24 Data Words are sent
- One Burst Control Word (without start of packet) is sent
- Nine Data Words are sent
- Zero IDLE Control Words are sent
For a total of 35 words.
You can avoid using the built-in enhanced scheduling mechanism and use the
corresponding tx_axis_tuser_bctl<M>
signal to
control when a Burst Control Word should be injected. For the same 264 byte packet, if
tx_axis_tuser_bctl<M>
is asserted after 128
bytes are sent, the following occurs:
- One Burst Control Word (with start of packet) is sent
- 16 Data Words are sent
- One Burst Control Word (without start of packet) is sent
- 17 Data Words are sent
- Zero IDLE Control Words are sent
For a total of 35 Words.
To ensure maximum bandwidth through the ILKNF subsystem, ensure that all rules that govern Interlaken
bursts, as defined in the Interlaken Protocol Definition, Revision 1.2, are followed
when using tx_axis_tuser_bctl<M>
. In particular,
ensure that the AXI data corresponding to each Interlaken burst (which is not EOP or
EOP-1) on a given channel equals BurstMax bytes. In other words, the data corresponding
to all Interlaken bursts, except the last two for a given packet, should equal BurstMax.
Furthermore, the data corresponding to a given Interlaken burst should be written to the
AXI4-Stream bus in its entirety before changing
channels or transferring the data that corresponds to the next burst.