Compatibility with Previous Releases

The technology underpinning the features and workflows of the Communications Toolbox™ Support Package for USRP®[1] Embedded Series Radio is updated in release R2019b. In releases before R2019b, the support package uses Analog Devices® no-OS drivers to control RF devices. Starting in release R2019b, the support package uses Analog Devices industrial I/O (IIO) drivers and the corresponding libiio library for interfacing with Linux® IIO devices. This transition gives access to more advanced device properties.

During the Guided Host-Radio Hardware Setup or Manual Host-Radio Hardware Setup, you have the option of setting up host-hardware communication for either the pre-R2019b infrastructure or the updated infrastructure, but not both. You can reconfigure your hardware for either of these options at any time by starting the hardware setup again.

To run a design based on objects or blocks released before R2019b, you must set up your hardware with the pre-R2019b infrastructure. However, consider setting up your hardware with the updated infrastructure and update your design by replacing pre-R2019b objects and blocks with objects and blocks released in R2019b. All objects and blocks released before R2019b will be removed in a future release.

The next sections highlight compatibility considerations and describe how to update a design based on features released before R2019b.

How to Replace Radio Objects

In releases before R2019b, interfacing with the E310 or E312 radio hardware is through the comm.SDRDevE310 radio object. For example, in this code, devE310 is a comm.SDRDevE310 radio object.

% Before R2019b
devE310= sdrdev('E310');

Starting in release R2019b and later, you can interface with the E310 or E312 radio hardware by using the comm.SDRDevE3xx radio object. To create this object, call the sdrdev function with argument 'E3xx'.

% From R2019b and later
dev = sdrdev('E3xx');

Starting in release R2019b and later, you must also specify a radio hardware name identifier when calling the downloadImage function. Specify the radio hardware name identifier as 'E310' or 'E312'.

% From R2019b and later
downloadImage(dev,'BoardName','E312'); 

Replace pre-R2019b radio objects by following these guidelines.

FunctionalityResultUse InsteadCompatibility Considerations
comm.SDRDevE310 radio objectWarnscomm.SDRDevE3xx radio object

How to Replace System Objects

In releases before R2019b, sending or receiving data in MATLAB® using the E310 or E312 radio hardware is through the comm.SDRTxE310 or comm.SDRRxE310 System objects, respectively. For example, in this code, rxE310 is a comm.SDRRxE310 receiver System object™.

% Before R2019b
rxE310 = sdrrx('E310');

Starting in release R2019b and later, to receive data in MATLAB using the E310 or E312 radio hardware, use the comm.SDRRxE3xx receiver System object. To send data from MATLAB to the E310 or E312 radio hardware, use the comm.SDRTxE3xx transmitter System object. To create the corresponding System objects, call the sdrrx or sdrtx functions with argument 'E3xx'.

% From R2019b and later
rx = sdrrx('E3xx');
tx = sdrtx('E3xx');

Replace pre-R2019b System objects by following these guidelines.

FunctionalityResultUse InsteadCompatibility Considerations

comm.SDRRxE310 receiver System object

Warnscomm.SDRRxE3xx receiver System object
  • In calls to sdrrx, replace the radio hardware name with 'E3xx' and use comm.SDRRxE3xx receiver System object instead.

  • In System object calls, the second output argument is now a valid data indicator of logical data type and not the length of data.

  • Replace references to property EnableQuadratureTracking with EnableQuadratureCorrection

  • Replace references to property EnableRFDCTracking with EnableRFDCCorrection

  • Replace references to property EnableBasebandDCTracking with EnableBasebandDCCorrection

  • Consider using these functionalities of the comm.SDRRxE3xx object:

    • Debug with built-in self-test (BIST) functionalities by using properties BISTLoopbackMode and BISTToneInject.

    • Control I/O by using the DataTimeout property.

    • Switch between default and custom filters by using the UseCustomFilter property.

comm.SDRTxE310 transmitter System objectWarnscomm.SDRTxE3xx transmitter System object
  • In calls to sdrtx, replace the radio hardware name with 'E3xx' and use comm.SDRTxE3xx transmitter System object instead.

  • Remove references to properties EnableBurstMode and NumFramesInBurst. For alternative methods, see Detect Underruns and Overruns.

  • Update references to DDS properties by replacing them with the ones available in the comm.SDRTxE3xx object: DDSTone1Freq, DDSTone2Freq, DDSTone1Scale, DDSTone2Scale.

  • Consider using these functionalities of the comm.SDRTxE3xx object:

    • Debug with BIST functionalities by using properties BISTLoopbackMode and BISTToneInject.

    • Control I/O by using the DataTimeout property.

    • Switch between default and custom filters by using the UseCustomFilter property.

How to Replace Blocks

In releases before R2019b, sending or receiving data in Simulink® using the E310 or E312 radio hardware is through the E310 Transmitter and E310 Receiver blocks, respectively. You can replace these blocks with E3xx blocks by following these guidelines.

FunctionalityResultUse InsteadCompatibility Considerations
E310 Receiver blockWarnsE3xx Receiver block
  • Replace the pre-R2018b receiver block with an E3xx Receiver block by following these steps.

    1. Add an E3xx Receiver block to your model.

    2. Port the parameter values from the old block to the corresponding parameter fields on the E3xx Receiver block. The Simulate using parameter is not available in the new block.

    3. Match the lost samples port of the old block to the overflow port of the E3xx Receiver block.

    4. Match the data length port of the old block to the data valid port of the E3xx Receiver block. The data valid port is disabled by default. Also note that the data types of the data length and data valid ports differ.

  • Consider using these functionalities of the E3xx Receiver block:

    • Override the default sample time for ARM® code generation by using parameters Override automatic sample time and Sample time.

    • Debug with BIST functionalities by using parameters Loopback and Test signal injection.

    • Control I/O by using the Data timeout (sec) parameter.

    • Switch between default and custom filters by using the Use custom filter parameter.

E310 Transmitter block block blockWarnsE3xx Transmitter block
  • Replace the pre-R2018b transmitter block with an E3xx Transmitter block by following these steps.

    1. Add an E3xx Transmitter block to your model.

    2. Port the parameter values from the old block to the corresponding parameter fields on the E3xx Transmitter block. Special considerations:

      • The DDS parameters have a different configuration in the new block.

      • The Simulate using parameter is not available in the E3xx Transmitter block.

      • The Enable burst mode parameter is not available in the E3xx Transmitter block. For alternative methods, see Detect Underruns and Overruns.

    3. Match the lost samples port of the old block to the underflow port of the E3xx Transmitter block.

  • Consider using these functionalities of the E3xx Transmitter block:

    • Debug with BIST functionalities by using parameters Loopback and Test signal injection.

    • Control I/O by using the Data timeout (sec) parameter.

    • Switch between default and custom filters by using the Use custom filter parameter.

Hardware-Software Co-Design Considerations

To enable hardware-software co-design, follow the updated instructions in Installation for Hardware-Software Co-Design.

HDL Code Generation

Because the underlying FPGA image changed in R2019b, you must regenerate your FPGA bitstreams for your updated model. For FPGA targeting, follow the instructions in Step 4. Generate HDL IP Core Using HDL Workflow Advisor. For hardware-software co-design, follow the instructions in Step 7. Generate FPGA Bitstream and Program Zynq Hardware.

Software Interface Models

If you want to deploy a new hardware-software co-design model, follow the instructions in Hardware-Software Co-Design Workflow.

If you have a software interface model generated using a release before R2019b, you can update the generated software model by following these steps.

  1. Replace the pre-R2019b blocks with the E3xx blocks by following the steps in How to Replace Blocks.

  2. On the Advanced tab of the E3xx Receiver block mask, select the Override automatic sample time parameter. Specify the value of the ARM Frame Rate block for the Sample time parameter. Delete the ARM Frame Rate block.

  3. Reconfigure the software interface model. In the model configuration panel, select Hardware Implementation, and for Hardware board, select Xilinx Zynq-7000 Based IIO Radio.

See Also

Objects

Blocks


[1] USRP, USRP2, UHD, and Ettus Research are trademarks of National Instruments Corp.