2.8.1. Link Consistency
2.8.2. Data Rate
2.8.3. Reference Clock Frequency
2.8.4. Port Type
2.8.5. Self Synchronized Link Up
2.8.6. Scramble
2.8.7. Broadcast Mode
2.8.8. Lane Polarity and Order Reversal
2.8.9. Data Type
2.8.10. Packet Type
2.8.11. Flow Control Operation
2.8.12. Transmit/Receive FIFO Buffers
2.8.13. Data Integrity Protection: CRC
2.8.14. Transceiver Configuration
2.8.15. Error Handling
2.8.16. Optimizing the Implementation
2.8.11.1. Selecting the Proper Threshold Value
To determine FIFO threshold size, you need to factor in the flow control internal latency.
Internal Latency | Latency Value (cycles) | Description |
---|---|---|
tlate_fc_transmit | 24 | Latency that occurs during RX FIFO breach up to the point where the associated flow control link management packet is sent out on the link. This includes the time for the core to generate the link management packet and the time through the transceiver. |
t_wd | This value depends on the data rate and trace lengths in the application. | Wire delay between the devices. |
tlate_fc_receive | 23 + deskew cycles |
Latency that occurs in the duration when the flow control link management packet reaches the transceiver pins until the IP core processes the request.
|
tlate_stop_data |
|
Overall system core latency (indicates the amount of data that may still be in the system when the PAUSE begins). This data must still be stored in the RX FIFO.
Note: seg_TX and seg_RX are taken into account only for priority packets with retry-on-error feature. If a priority packet with retry-on-error feature is in transfer, flow control begins immediately after the current segment of the priority packet has been sent.]
seg_TX = [segment size/(TSIZE* TX_NUMBER_LANES)] seg_RX = [segment size/(TSIZE* RX_NUMBER_LANES)] |
To calculate latency numbers in terms of time units, multiply the latency values by the tx_coreclock clock period.
The proper threshold value can be derived by subtracting the depth of the FIFO from the total latency.
Total Latency = [tlate_fc_transmit + t_wd + tlate_fc_receive + tlate_stop_data] cycles
Note: The ratio between one element and one cycle is equal to one. When you write one element to the FIFO, it takes one clock cycle. Therefore one cycle is one element.
Therefore, set threshold value based on this formula:
Threshold value = Total Depth of FIFO (elements) – Total Latency (clock cycles)