Using two RFNoC streams simultaneously on a single USRP device
This example shows how to run two concurrent streams (RX or TX) on a single USRP device using GNU Radio on Orbit Wireless Testbed. The example assumes usage of node 21-1 on the Grid, along with the USRP node 23-1. However, any node connected to a USRP X310 may be used instead. Information on SDR availability on particular nodes can be found on Orbit by clicking on Status Page, then on grid, and then filtering the displayed nodes by SDR devices equipped.
- Make a reservation on Orbit to use the Grid.
- Make sure the node of interest is turned off:
firstname.lastname@example.org:~$ omf tell -a offh -t node21-1
- Load the rfnoc-tutorial.ndz image onto the node. Note that this process might take several minutes.
email@example.com:~$ omf load -i rfnoc-tutorial.ndz -t node21-1
- Turn on the node. After issuing the "on" command, wait a couple of minutes for the node to boot up.
firstname.lastname@example.org:~$ omf tell -a on -t node21-1
- Connect to the node using SSH with X11 tunneling enabled:
email@example.com:~$ ssh -Y root@node21-1
Running the Simulation
After the node is imaged, make sure the USRP device connected at 10.10.23.1 is imaged with the required RFNoC FPGA image. The implemented RFNoC blocks on the currently loaded image can be checked by running
uhd_usrp_probe --args "addr=10.10.23.1"
The RFNoC blocks will be shown at the very end of the listing that appears:
_____________________________________________________ / | RFNoC blocks on this device: | | | * DmaFIFO_0 | | * Radio_0 | | * Radio_1 | | * DDC_0 | | * DUC_0 | | * FFT_0 | | * Window_0 | | * FIR_0 | | * SigGen_0 | | * KeepOneInN_0 | | * fosphor_0 | | * FIFO_0 | | * FIFO_1
The blocks listed above are present in the usrp_x310_fpga_RFNOC_HG.bit image.
If the required blocks are not listed, desired image can be loaded by running
uhd_image_loader --fpga-path /usr/local/share/uhd/images/usrp_x310_fpga_RFNOC_HG.bit --args "type=x300,addr=10.10.23.1"
When a new image is loaded, the USRP needs to be power cycled. In order to do this, run the following commands from the grid console (not from the node21-1 itself):
firstname.lastname@example.org:~$ omf tell -a offh -t node23-1 email@example.com:~$ omf tell -a on -t node23-1
Make sure that the GNU Radio Companion scheme is present in the home directory. The scheme shown in the image below can be found here.
GNU Radio Companion may report an error in the scheme, but this is a common problem when RFNoC blocks are used in GRC. The scheme can be run by pressing F6.
The provided scheme contains two RFNoC chains, a simple single tone transmitter, and a receiver that performs FFT and averages it over time.