Main Content

readPort

Read output data from DUT port

Since R2024a

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 by using the describeFPGA function.

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 by using the addRFNoCRegisterInterface function.

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

Create an hdlcoder.DUTPort 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);

Using the mapPort function, 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 by calling the setup function.

setup(device);

Read data from the DUT port by using the readPort function.

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 by using the describeFPGA function.

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 by using the addRFNoCStreamInterface function.

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

Create an hdlcoder.DUTPort 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");

Using the mapPort function, 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 by calling the setup function.

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 by using the readPort function.

[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 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 portNameportName, returned as a scalar. The data type is specified by the DataType property of the hdlcoder.DUTPort 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 property of the hdlcoder.DUTPort object.

readPort reads data until the number of elements in data is equal to the FrameSize specified when you added the interface using the addRFNoCStreamInterface function. If the number of valid samples numSamples is less than this value, the function waits until the Timeout specified in specified when you added the interface using the addRFNoCStreamInterface function is reached, 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