RapidIO Intel FPGA IP User Guide

ID 683884
Date 9/15/2021
Public
Document Table of Contents

7.4. NWRITE_R Transactions

To perform NWRITE_R operations, one register in the IP core must be reconfigured as shown.
Table 123.  NWRITE_R Transactions
Module Register

Address

Name Value Description
rio 0x1040C Input/Output Slave Mapping Window 0 Control 32'h0055_0001

or 32'h5555_0001

Sets the DESTINATION_ID for outgoing transactions to the value 0x55 or 0x5555, depending on the device ID width of the sister_rio. This value matches the base device ID of the sister_rio module. Enables NWRITE_R operations.

With these settings, any write operation presented across the Input/Output Avalon® -MM slave module's Avalon® -MM write interface is translated to a RapidIO NWRITE_R transaction. The Avalon® -MM write address must map to the range specified for the I/O Slave window 0.

To initialize testing of the new NWRITE_R completion indication feature, the test first checks that the PENDING_NWRITE_RS field of the Input/Output Slave Pending NWRITE_R Transactions register has value 0, that the NWRITE_RS_COMPLETED field of the Input/Output Slave Interrupt Enable register is set, and that the NWRITE_RS_COMPLETED field of the Input/Output Slave Interrupt register is clear, before setting the Input/Output Slave Mapping Window 0 Control register and starting the sequence of NWRITE_R transactions.

Initially, the testbench performs two single word transfers, writing to an even word address first and then to an odd word address. The testbench then generates a predetermined series of burst writes across the Input/Output Avalon® -MM slave module's Avalon® -MM write interface on the DUT. These write bursts are each converted into NWRITE_R request packets sent over the RapidIO Serial interface. The testbench cycles from 8 to MAX_WRITTEN_BYTES in steps of 8 bytes. Two tasks are invoked to carry out the burst writes, rw_addr_data and rw_data. The rw_addr_data task initiates the burst and the rw_data task completes the burst.

At the sister_rio module, the NWRITE_R request packets are received and presented across the I/O master Avalon® -MM interface as write transactions. The testbench calls the read_writedata task of the sister_bfm_io_write_slave module. The task captures the written data. The written data is checked against the expected value.

In addition, the test checks that the NWRITE_RS_COMPLETED interrupt field of the Input/Output Slave Interrupt register is set, then clears the field, and checks again to confirm the field was cleared correctly.