UFC messages can carry an even number of data bytes from 2 to
16. The user application specifies the length of the message by driving a SIZE code on the
s_axi_ufc_tx_tdata port. The following table shows the legal SIZE code
values for UFC messages.
| SIZE Field Contents | UFC Message Size |
|---|---|
| 000 | 2 bytes |
| 001 | 4 bytes |
| 010 | 6 bytes |
| 011 | 8 bytes |
| 100 | 10 bytes |
| 101 | 12 bytes |
| 110 | 14 bytes |
| 111 | 16 bytes |
To send a UFC message, the user application
asserts s_axi_ufc_tx_tvalid while driving the s_axi_ufc_tx_tdata port with the desired SIZE code. The s_axi_ufc_tx_tvalid signal must be held until the Aurora 8 B/10 B
core asserts the s_axi_ufc_tx_tready signal. The data for
the UFC message must be placed on the s_axi_tx_tdata port,
starting on the first cycle after s_axi_ufc_tx_tready is
asserted. The core deasserts s_axi_tx_tready while the
s_axi_tx_tdata port is being used for UFC data.
The following figure shows a useful circuit for switching
TX_D from sending regular data to UFC data.
The following table shows the number of cycles
required to transmit UFC messages of different sizes based on the width of the AXI4-Stream data interface. UFC messages should never be started until all
message data is available. Unlike regular data, UFC messages cannot be interrupted after
s_axi_ufc_tx_tready has been asserted until completion of
the current UFC message.
| UFC Message | s_axi_ufc_tx_tdata Value | AXI4 Interface Width | Number of Data Beats | AXI4 Interface Width | Number of Data Beats |
|---|---|---|---|---|---|
| 2 Bytes | 0 | 2 Bytes | 1 | 10 Bytes | 1 |
| 4 Bytes | 1 | 2 | |||
| 6 Bytes | 2 | 3 | |||
| 8 Bytes | 3 | 4 | |||
| 10 Bytes | 4 | 5 | |||
| 12 Bytes | 5 | 6 | 2 | ||
| 14 Bytes | 6 | 7 | |||
| 16 Bytes | 7 | 8 | |||
| 2 Bytes | 0 | 4 Bytes | 1 | 12 Bytes | 1 |
| 4 Bytes | 1 | ||||
| 6 Bytes | 2 | 2 | |||
| 8 Bytes | 3 | ||||
| 10 Bytes | 4 | 3 | |||
| 12 Bytes | 5 | ||||
| 14 Bytes | 6 | 4 | 2 | ||
| 16 Bytes | 7 | ||||
| 2 Bytes | 0 | 6 Bytes | 1 | 14 Bytes | 1 |
| 4 Bytes | 1 | ||||
| 6 Bytes | 2 | ||||
| 8 Bytes | 3 | 2 | |||
| 10 Bytes | 4 | ||||
| 12 Bytes | 5 | ||||
| 14 Bytes | 6 | 3 | |||
| 16 Bytes | 7 | 2 | |||
| 2 Bytes | 0 | 8 Bytes | 1 | 16 Bytes or more | 1 |
| 4 Bytes | 1 | ||||
| 6 Bytes | 2 | ||||
| 8 Bytes | 3 | ||||
| 10 Bytes | 4 | 2 | |||
| 12 Bytes | 5 | ||||
| 14 Bytes | 6 | ||||
| 16 Bytes | 7 |