The technology underpinning the features and workflows of the Communications Toolbox™ Support Package for Xilinx® Zynq®-Based Radio is updated in release R2018b. In releases before R2018b, the support package uses Analog Devices® no-OS drivers to control RF devices. Starting in release R2018b, 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-R2018b 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 R2018b, you must set up your hardware with the pre-R2018b infrastructure. However, consider setting up your hardware with the updated infrastructure and update your design by replacing pre-R2018b objects and blocks with objects and blocks released in R2018b. All objects and blocks released before R2018b 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 R2018b.
In releases before R2018b,
interfacing with a supported radio hardware is through a radio
object dedicated to your radio hardware. For example, in this code,
devADI
is a comm.SDRDevADIRFSOM
radio object,
devZC706
is a comm.SDRDevZC706FMC234
radio object, and
devZedBoard
is a comm.SDRDevZedBoardFMC234
radio object.
% Before R2018b devADI = sdrdev('ADI RF SOM'); devZC706 = sdrdev('ZC706 and FMCOMMS2/3/4'); devZedBoard = sdrdev('ZedBoard and FMCOMMS2/3/4');
Starting in release R2018b and
later, you can interface with any of these radio hardware by using
the comm.SDRDevAD936x
radio object. To create this
object, call the sdrdev
function with argument
'AD936x'
.
% From R2018b and later dev = sdrdev('AD936x');
Starting in release R2018b and
later, the only time you need to specify a radio hardware name
identifier is when calling the downloadImage
function.
% From R2018b and later downloadImage(dev,'BoardName','ADI RF SOM')
Replace pre-R2018b radio objects by following these guidelines.
Functionality | Result | Use Instead | Compatibility Considerations |
---|---|---|---|
comm.SDRDevADIRFSOM radio object | Warns | comm.SDRDevAD936x radio object |
|
comm.SDRDevZC706FMC234 radio
object | |||
comm.SDRDevZedBoardFMC234 radio
object |
In releases before R2018b, sending
or receiving data in MATLAB® is through a transmitter or receiver System
object™ dedicated to your hardware. For example, in this code,
rxADI
is a comm.SDRRxADIRFSOM
receiver System
object, rxZC706
is a comm.SDRRxZC706FMC234
receiver System
object, and rxZedBoard
is a comm.SDRRxZedBoardFMC234
receiver System
object.
% Before R2018b rxADI = sdrrx('ADI RF SOM'); rxZC706 = sdrrx('ZC706 and FMCOMMS2/3/4'); rxZedBoard = sdrrx('ZedBoard and FMCOMMS2/3/4');
Starting in release R2018b and
later, to receive data in MATLAB from these radio hardware, use the comm.SDRRxAD936x
receiver System
object. To send data from MATLAB to these radio hardware, use the comm.SDRTxAD936x
transmitter System
object. To create the corresponding System objects, call the
sdrrx
or sdrtx
functions with argument
'AD936x'
.
% From R2018b and later rx = sdrrx('AD936x'); tx = sdrtx('AD936x');
Replace pre-R2018b System objects by following these guidelines.
Functionality | Result | Use Instead | Compatibility Considerations |
---|---|---|---|
| Warns | comm.SDRRxAD936x receiver System
object |
|
| |||
| |||
comm.SDRTxADIRFSOM transmitter
System
object | Warns | comm.SDRTxAD936x transmitter System
object |
|
comm.SDRTxZedBoardFMC234 transmitter
System
object | |||
comm.SDRTxZC706FMC234 transmitter
System
object |
In releases before R2018b, sending or receiving data in Simulink® is through a transmitter or receiver block dedicated to your hardware. You can replace these blocks with AD936x blocks by following these guidelines.
Functionality | Result | Use Instead | Compatibility Considerations |
---|---|---|---|
ADI RF SOM Receiver block | Warns | AD936x Receiver block |
|
ZC706 and FMCOMMS2/3/4 Receiver block | |||
ZedBoard and FMCOMMS2/3/4 Receiver block | |||
ADI RF SOM Transmitter block | Warns | AD936x Transmitter block |
|
ZC706 and FMCOMMS2/3/4 Transmitter block | |||
ZedBoard and FMCOMMS2/3/4 Transmitter block |
To enable hardware-software co-design, follow the updated instructions in Installation for Hardware-Software Co-Design.
Because the underlying FPGA image changed in R2018b, 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.
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 R2018b, you can update the generated software model by following these steps.
Replace the pre-R2018b blocks with the AD936x blocks by following the steps in How to Replace Blocks.
On the Advanced tab of the AD936x 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.
Reconfigure the software interface model. In
the model configuration panel, select
Hardware
Implementation, and for
Hardware board, select
Xilinx Zynq-7000 Based IIO
Radio
.