Main Content

readPort

Read output data from DUT port

Since R2024a

Add-On Required: This feature requires the Wireless Testbench™ Support Package for NI™ USRP™ Radios add-on.

Description

Register Port

data = readPort(dut,portName) reads output data data from the specified register port portName on the target DUT dut.

example

Streaming Port

[data,numSamples,overflow] = readPort(dut,portName) reads output data data from the specified streaming port portName on the target DUT dut. The function also returns the number of valid data samples numSamps and a flag that indicates dropped samples due to an internal buffer overflow overflow.

example

Examples

collapse all

Create a usrp System object, specifying a radio setup configuration previously saved in the Radio Setup wizard.

device = usrp("MyRadio");

Configure your radio with the target interfaces.

describeFPGA(device,"ModelName_wthandoffinfo.mat"); 

Create an fpga object to access your DUT on the FPGA of your radio.

dut = fpga(device);

Add an RFNoC register interface to your DUT.

addRFNoCRegisterInterface(dut, ...
    "InterfaceID","DUTName", ...
    "RFNoCBlock","0/DUTName#0");

Create an hdlcoder.DUTPort (HDL Coder) object for the DUT port and specify the properties.

DUTPort_Read_Register = hdlcoder.DUTPort("Read_Register", ...
	"Direction","OUT", ...
	"DataType","int16", ...
	"IsComplex",false, ...
	"Dimension",[1 1], ...
	"IOInterface","DUTName", ...
	"IOInterfaceMapping",1);

Map the DUT port to the RFNoC interface you added to your DUT.

mapPort(dut,DUTPort_Read_Register);

Connect to the radio and apply radio front end properties.

setup(device);

Read data from the DUT port.

data = readPort(dut,"Read_Register")
data = int16
    0

Release the hardware resources.

release(dut);

Create a usrp System object, specifying a radio setup configuration previously saved in the Radio Setup wizard.

device = usrp("MyRadio");

Configure your radio with the target interfaces.

describeFPGA(device,"ModelName_wthandoffinfo.mat"); 

Create an fpga object to access your DUT on the FPGA of your radio.

dut = fpga(device);

Add an RFNoC streaming interface to your DUT.

addRFNoCStreamInterface(dut, ...
    "InterfaceID","RX_STREAM#0", ...
    "Streamer","0/RX_STREAM#0", ...
    "Direction","OUT", ...
    "FrameSize",1000, ...
    "DDRAllocation",1000, ...
    "Timeout",[]);

Create an hdlcoder.DUTPort (HDL Coder) object for the DUT port and specify the properties.

DUTPort_Data_Out = hdlcoder.DUTPort("Data_Out", ...
	"Direction", "OUT", ...
	"DataType", "uint32", ...
	"IsComplex", false, ...
	"Dimension", [1 1], ...
	"IOInterface", "RX_STREAM#0");

Map the DUT port to the RFNoC interface that you added to your DUT.

mapPort(dut,DUTPort_Data_Out);

Connect to the radio and apply radio front end properties.

setup(device);

Call the usrp System object as a function to start the radio front end. Request 1000 samples.

device(1000);

Read data from the DUT port.

[dataRx,numSamps,overflow] = readPort(dut,"Data_Out")
dataRx = 1000×1 uint32 column vector

   4294901766
            5
       262150
            4
   4294901760
   4294639613
       131073
   4294574078
   4294639617
   4294967294
      ⋮

numSamps = 1000
overflow = logical
   0

Release the hardware resources.

release(dut);

Input Arguments

collapse all

Target DUT on the FPGA of a target NI USRP radio device, specified as an fpga object.

DUT port name, specified as a string. You create the DUT port as an hdlcoder.DUTPort (HDL Coder) object array. Before you specify portName, you must have mapped the port to an RFNoC interface using the mapPort function.

Data Types: string

Output Arguments

collapse all

Register Port

Output data that is read from the DUT register port portName, returned as a scalar. The data type is specified by the DataType (HDL Coder) property of the hdlcoder.DUTPort (HDL Coder) object.

Streaming Port

Output data that is read from the DUT streaming port portName, returned as a matrix. The data type is specified by the DataType (HDL Coder) property of the hdlcoder.DUTPort (HDL Coder) object.

readPort reads data until the number of elements in data is equal to the FrameSize specified in addRFNoCStreamInterface. If the number of valid samples numSamples is less than this value, the function waits for Timeout specified in addRFNoCStreamInterface, then returns the valid samples.

Number of valid samples in output data data, returned as a positive integer.

Data Types: double

Output flag indicating an internal buffer overflow, returned as true or false. An overflow can occur when a data streaming output is connected directly to the host rather than through the PL DDR buffer.

Data Types: logical

Version History

Introduced in R2024a