The timing of a normal frame transfer is shown in the following
figure. When the client wants to transmit a frame, it asserts the tx_axis_tvalid
and places the data and control in
tx_axis_tdata
and tx_axis_tkeep
in the same clock cycle. When this data is accepted by
the core, indicated by tx_axis_tready
being
asserted, the client must provide the next cycle of data. If tx_axis_tready
is not asserted by the core, the client must hold the
current valid data value until it is. The end of the packet is indicated to the core
by tx_axis_tlast
asserted for 1 cycle. The bits of
tx_axis_tkeep
are set appropriately to indicate
the number of valid bytes in the final data transfer. tx_axis_tuser
is also asserted to indicate a bad packet. After tx_axis_tlast
is deasserted, any data and control is
deemed invalid until tx_axis_tvalid
is next
asserted.
Figure 1. Normal Frame Transfer – 64-bits