The purpose of this lesson is to create a test example of an RFNoC designs with GNU Radio. The following is a summarized list of the prerequisites for this exercise:

  • USRP x310 and its power supply
  • An Ethernet connection to the USRP and the Internet
  • A JTAG USB cable

It is assumed that you have successfully installed the necessary packages, and have tested your hardware and software.


  1. Execute the following commands:
    source target/
    Refer to the target/share/gr-rda/examples/ script for guidance. We recommend copying that file and setting the variables for your environment.
  2. Open GNU Radio Companion with the command
    There are a number of example designs that you can open in the /gr-rda/examples/rfnoc directory, which is located:
    {pybombs install root}/target/share/gr-rda/examples/rfnoc/
    Two example designs are shown below:

    Two Example designs in GNU Radio Companion featuring RFNoC blocks with RDA compatibility.

    Feel free to modify these designs. The example designs can be used as a template for new designs if you wish.t The example designs are located in the gr-rda pybombs src directory like this:

    The following example designs provided in that directory should all work without hitch. Because this tool is still experimental, some of the examples provided are still a work in progress.

    • rfnoc_addsub.grc
    • rfnoc_fifo_test.grc
    • rfnoc_fir.grc
    • rfnoc_logpwr.grc (times out)
    • rfnoc_tx.grc
    • rfnoc_window_fft.grc (glitch in RDA at this time)
    • rfnoc_fft.grc
    • rfnoc_fir_fft.grc (RFNoC error about data stream incompatibility)
    • rfnoc_fir_tx.grc
    • rfnoc_keep.grc
    • rfnoc_radio_host.grc
    • rfnoc_vector_iir.grc
    • rfnoc_window.grc

    All RFNoC designs contain a custom block from Ettus Research that executes the RFNoC enabled UHD calls, this is the “Device3” block. RDA presents a custom version of that block, "Device3 with RDA" which has the same functionality as the “Device3” block but also hooks into the RDA cloud assembly service. The parameters in this block need to be monitored carefully. Three of the settings on this block are custom to RDA enabled RFNoC. First, the "Generated Script Name" should match the "ID" in the Options block on the flowgraph. This should already be set. The "Use RDA?" option can be set to skip the RDA cloud assembly process if that is desired. The “Key file” File variable needs to point to your project keyfile you downloaded from your Consolidated Logic user registration. Go register for an account if you haven’t yet.

    Note: Due to the current configuration of the RDA FPGA sandbox, There can be a maximum of 3 RFNoC blocks instantiated in a design (excluding RFNoC:Radio). To execute the flowgraph, click the Green Arrow Play button at the top of GRC. Everything else functions just like normal GNU radio. At this point a couple things should happen automatically: RDA will call the UHD (USRP Hardware Driver) to check what RFNoC blocks are currently configured on the device and compare the current configuration with the blocks represented in the flowgraph If there’s a match, the RDA will not run, and GNU Radio will proceed with the UHD and RFNoC setup. If there isn’t a match, RDA will begin.

    Once the FPGA compilation package is generated by the server, the rda_loader application will run and the device will be programmed. Ensure the hardware configuration (JTAG connectivity with the USRP) has been tested before this stage. If you followed the Installation tutorial completely, then this should work fine. After programming, the UHD will find the USRP connected to the host and set up the interface between the host and the the RFNoC blocks in the USRP. A pop up window from GNU Radio will appear with a QT GUI with data output and knobs/sliders that a user can interact with to change the displayed data output. Output and status logs of the RDA flow will show up in the CL_WORKDIR folder set up by the user.

    After running the cloud RDA application on a given design, you don't have to run the cloud application on that design again. It is stored in a local cache file and automatically handled by the client.

Join the Consolidated Logic Mailing List

Be the first to find out about the new and exciting capabilities yet to come!