We have detected your current browser version is not the latest one. Xilinx.com uses the latest web technologies to bring you the best online experience possible. Please upgrade to a Xilinx.com supported browser:Chrome, Firefox, Internet Explorer 11, Safari. Thank you!

AR# 21740

LogiCORE RapidIO - What is the difference in receiver-based flow control and transmitter-based flow control?


The buffer that accompanies the RapidIO Core release can bet set to use either receiver-based flow control and transmitter-based flow control. What is the difference?


For a detailed description of the difference, refer to Part IV Section and of the RapidIO Interconnect Specification


In general, receiver-based flow control is the simplest method of flow control and is easier to implement. The receiving device controls the flow of packets from its link partner by accepting or rejecting packets on a packet-by-packet basis. The receiving port provides no information to its link partner about the amount of buffer space it has available for packet reception. This method is less efficient than transmitter-based flow control because the transmitting device transmits packets without knowing if the packet will be accepted or not by the receiver. If the receiving device has no buffer space available to store an incoming packet, it will retry the packet. Receiver-based flow control will result in more retries, especially on a busy link. 


When using transmitter-based flow control, the receiving port provides information to its link partner regarding the amount of free buffer space available. The transmitting device can then use this information to allocate the receiving device's buffer space according to the number and priority of packets that the sending port has waiting for transmission. By doing so, it can avoid the need for one or more packets to be retried due to lack of buffer space. 


The Xilinx buffer accompanying the RapidIO Core is capable of operating in either mode. You can change the flow control by modifying a parameter in the "tx_control.v" file. Look for the following section:  


// Flow control 



// If the attached device is in RX FLOW CONTROL, then 

// this parameter will be overridden and the buffer will 

// operate in RX FLOW CONTROL. 

parameter TX_FLOW_CONTROL_ENABLE = 1'b1; 


The default is transmitter-based flow control.

AR# 21740
Date Created 09/04/2007
Last Updated 05/19/2014
Status Archive
Type General Article