Main Content

Compatibility with Previous Releases

The technology underpinning the features and workflows of the Communications Toolbox™ Support Package for USRP™ Embedded Series Radio was 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.

To run a design based on objects or blocks released before R2019b, you must update your design by replacing pre-R2019b objects and blocks with objects and blocks released in R2019b or later. All objects and blocks released before R2019b have been removed.

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.

Functionality Removed in R2020aUse InsteadCompatibility Considerations
comm.SDRDevE310 radio objectcomm.SDRDevE3xx radio object
  • In calls to sdrdev, replace 'E310' by 'E3xx' and use a comm.SDRDevE3xx radio object instead.

  • In calls to downloadImage, you must specify the radio hardware name as 'E310' or 'E312'.

  • Remove calls to any of these object functions:

    • setupSession

    • setAddress

    • setupTools

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.

Functionality Removed in R2020aUse InsteadCompatibility Considerations

comm.SDRRxE310 receiver System object

comm.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 objectcomm.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.

Functionality Removed in R2020aUse InsteadCompatibility Considerations
E310 Receiver blockE3xx Receiver block
  • Replace the pre-R2019b 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 blockE3xx Transmitter block
  • Replace the pre-R2019b 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. On the Hardware tab, in the Prepare section, click Hardware Settings and select Xilinx Zynq-7000 Based IIO Radio from the Hardware board list.

See Also

Objects

Blocks