RapidIO II Intel® FPGA IP User Guide

ID 683444
Date 9/28/2020
Public
Document Table of Contents

4.3.2.2.2. Initiating Read and Write Transactions

To initiate a read or write transaction on the RapidIO link, your system sends a read or write request to the I/O Logical layer Slave module Avalon-MM interface.

IP Core Actions

In response to incoming Avalon-MM read requests to the I/O Logical layer Slave module, the RapidIO II IP core generates read request packets on the RapidIO link, by performing the following tasks:
  • For each incoming Avalon-MM read request, composes the RapidIO read request packet.
  • For each incoming Avalon-MM write request, composes the RapidIO write request packet
  • Maintains status related to the composed packet to track responses:
    • Sends read request information to the Pending Reads buffer to wait for the corresponding response packet.
    • Sends NWRITE_R request information to the Pending Writes buffer to wait for the corresponding response packet.
    • Does not send SWRITE and NWRITE request information to the Pending Writes buffer, because these transactions do not require a response to the user on the I/O Logical layer Avalon-MM slave interface.
  • Presents the composed packet to the Transport layer for transmission on the RapidIO link.
  • For each read response from the Transport layer, removes the original request entry from the Pending Reads buffer and uses the packet’s payload to complete the read transaction, by sending the read data on the Avalon-MM slave interface.
  • For each write response from the Transport layer, removes the original request entry from the Pending Writes buffer.
Note: At any time, the I/O Logical layer Slave module can maintain a maximum of eight outstanding read requests and a maximum of eight outstanding write requests. The module asserts the ios_rd_wr_waitrequest signal to throttle incoming requests above the limit.
The RapidIO II IP core performs the following actions in response to each read request transaction the I/O Logical layer Slave module processes:
  • If the IP core receives a read response packet on the RapidIO link, the read operation was successful. After the I/O Logical layer Slave module receives the response packet from the Transport layer, it passes the read response and data from the Pending Reads buffer back through the Avalon-MM slave interface.
  • If the remote processing element is busy, the RapidIO II IP core resends the request packet.
  • If an error or time-out occurs, the I/O Logical layer Slave module asserts the ios_rd_wr_readresponse signal on the Avalon-MM slave interface and captures some information in the Error Management Extension registers.
The RapidIO II IP core assigns a time-out value to each outbound request that requires a response—each NWRITE_R or NREAD transaction. The time-out value is the sum of the VALUE field of the Port Response Time-Out Control register and the current value of a free-running counter. When the counter reaches the time-out value, if the transaction has not yet received a response, the transaction times out.

Tracking I/O Write Transactions

The following three registers are available to software to track the status of I/O write transactions:
  • The Input/Output Slave Avalon-MM Write Transactions register holds a count of the write transactions that have been initiated on the write Avalon-MM slave interface.
  • The Input/Output Slave RapidIO Write Requests register holds a count of the RapidIO write request packets that have been transferred to the Transport layer.
  • The Input/Output Slave Pending NWRITE_R Transactions register holds a count of the NWRITE_R requests that have been issued but have not yet completed.
You can use these registers to determine if a specific I/O write transaction has been issued or if a response has been received for any or all issued NWRITE_R requests.