To send a UFC message, the application asserts ufc_tx_req while driving ufc_tx_ms with the desired SIZE code for a single cycle. After a request, a new request cannot be made until s_axi_ufc_tx_tready is asserted for the final cycle of the previous request. The UFC message data must be placed on s_axi_ufc_tx_tdata and the s_axi_ufc_tx_tvalid signal must be asserted whenever the bus contains valid message data.
The core deasserts s_axi_tx_tready while sending UFC data and keeps s_axi_ufc_tx_tready asserted until it has enough data to complete the requested message. If s_axi_ufc_tx_tvalid is deasserted during a UFC message, idles are sent, s_axi_tx_tready remains deasserted, and s_axi_ufc_tx_tready remains asserted. If a CC, CB, or NFC request is made, s_axi_ufc_tx_tready is deasserted while the requested operation is performed because CC, CB, and NFC requests have higher priority.
Note: The s_axi_tx_tready and s_axi_ufc_tx_tready signals are deasserted for one cycle before the core accepts message data to allow the UFC header to be sent.