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. Table: SIZE Encoding 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 8B/10B 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.
Note: A UFC request should be given only after completion of the current UFC request; back-to-back UFC requests might not honored by IP.
This Figure shows a useful circuit for switching TX_D from sending regular data to UFC data.
Table: Number of Data Beats Required to Transmit UFC Messages 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.