This is an old revision of the document!
PuTTY helps to provide a view into the Linux and give additional controls and debug abilities. Putty can be downloaded from here Putty Download Page. Ensure that the proper version for the computer is downloaded (64 bit for a 64 bit PC). Once downloaded the COM port to the FPGA can be opened. This COM port can be identified through the device manager as the standard COM port:
MATLAB is used to exercise the board through LibIIO objects and provide higher level application functionality. In order to work with the platform, a number of toolboxes and support packages are required: Required toolboxes:
Customers can request a free trial via the Communications Toolbox product page, or they can request a Software-Defined Radio Design trial “package”, which includes MATLAB, Simulink, DSP System Toolbox, Signal Processing Toolbox, and Communications Toolbox.
—-
This guide will walk you through setting up the ZCU102 FPGA platform to work with the X-Band Developer's Kit.
Once you have the board up and running (and control using the UART connection through PuTTy), try this procedure at the bottom of the page.
The ZCU102 uses a mini-B USB cable to connect the USB UART port on the board to a host PC. If the USB to UART bridge is not installed or automatically recognized, then a drive must be installed. This will allow control using the UART connection through PuTTy or other SSH/Telnet Client, select Downloads tab for Driver download.
The ZCU102 uses a RJ45 ethernet cable to connect the ethernet port on the board a host PC or network port to enable network access. Modifications to the network settings can be made following the guidance detailed on the Network Configuration wiki.
The proper power on sequencing for the ADAR1000EVAL1Z is embedded within the firmware of the ZCU102. The embedded script pulses the proper signal nets in the correct order (POWER_UP_DOWN and 5V_CTRL) automatically upon booting the FPGA. The power down sequence is not enabled in software. The ADAR1000EVAL1Z board can be powered down manually by pressing the RESET button on the primary side of the ADAR1000EVAL1Z board. The following steps need to be completed by the user to implement the ADAR1000EVAL1Z power up sequencing script.
#!/bin/sh -e # # rc.local # # This script is executed at the end of each multiuser runlevel. # Make sure that the script will "exit 0" on success or any other # value on error. # # In order to enable or disable this script just change the execution # bits. # # By default this script does nothing. # Print the IP address _IP=$(hostname -I) || true if [ "$_IP" ]; then printf "My IP address is %s\n" "$_IP" fi python3 /etc/stingray_power.py up service iiod restart exit 0
For example the proper sequence is as follows: Power Up → Power Down → Power Up → Power Down
The ADXUD1AEBZ Interposer Board FMC EEPROM is not factory programmed. The following commands in a UART Terminal (e.g. PuTTY) can be executed to program the FMC EEPROM.
root@analog:~# root@analog:~# find /sys -name eeprom /sys/devices/platform/axi/ff030000.i2c/i2c-1/i2c-15/15-0050/eeprom /sys/devices/platform/axi/ff030000.i2c/i2c-1/i2c-6/6-0054/eeprom root@analog:~# root@analog:~# fru-dump -i /usr/local/src/fru_tools/masterfiles/AD-FMCOMMS2-EBZ-FRU.bin -o /sys/bus/i2c/devices/15-0050/eeprom read 251 bytes from /usr/local/src/fru_tools/masterfiles/AD-FMCOMMS2-EBZ-FRU.bin wrote 251 bytes to /sys/bus/i2c/devices/15-0050/eeprom root@analog:~# root@analog:~# fru-dump -i /sys/bus/i2c/devices/15-0050/eeprom -b read 256 bytes from /sys/bus/i2c/devices/15-0050/eeprom Date of Man : Mon Jul 22 20:23:00 2013 Manufacturer : Analog Devices Product Name : AD9361 RF Hardware Development Kit Serial Number : 00045 Part Number : AD-FMCOMMS2-EBZ FRU File ID : Empty Field PCB Rev : C PCB ID : 9361FMC01A BOM Rev : 1 Uses LVDS : Y root@analog:~# root@analog:~# poweroff
IIO Device | Device Name | Driver Documentation |
---|---|---|
iio:device2 | adar1000_csb_1_1 | ADAR1000 X/Ku Band Linux Driver |
iio:device3 | adar1000_csb_1_2 | ADAR1000 X/Ku Band Linux Driver |
iio:device4 | adar1000_csb_1_3 | ADAR1000 X/Ku Band Linux Driver |
iio:device5 | adar1000_csb_1_4 | ADAR1000 X/Ku Band Linux Driver |
iio:device6 | adar1000_csb_2_1 | ADAR1000 X/Ku Band Linux Driver |
iio:device7 | adar1000_csb_2_2 | ADAR1000 X/Ku Band Linux Driver |
iio:device8 | adar1000_csb_2_3 | ADAR1000 X/Ku Band Linux Driver |
iio:device9 | adar1000_csb_2_4 | ADAR1000 X/Ku Band Linux Driver |
iio:device18 | adf4371-0 | ADF4371 IIO Wideband Synthesizer Linux Driver |
iio:device19 | hmc7044 | HMC7044 Clock Jitter Attenuator with JESD204B Linux Driver |
iio:device20 | axi-ad9081-rx-hpc | |
iio:device21 | TDD Core | Generic TDD Core |
iio:device22 | one-bit-adc-dac | TBD |
iio:device23 | one-bit-adc-dac | TBD |
iio:device24 | one-bit-adc-dac | TBD |
iio:device25 | axi-ad9081-tx-hpc |
All these drivers feature a runtime API which can be controlled using IIO Oscilloscope, libiio, etc. However some configuration is static and done inside the device tree. Please see instructions on Building custom kernel and devicetree images here:
MATLAB support is provided through the High Speed Converter Toolbox and RFMicrowave Toolbox, with unique classes for transmit and receive functionality. Currently you must grab a development build but installers are provided for convenience.
The X-Band Platform can be controlled via MATLAB using example scripts which are available as part of the Analog Devices, Inc. RF Microwave Toolbox add-on. This add-on can either be manually downloaded from the Releases section of the GitHub page or downloaded and installed via MATLAB Add-On Explorer. Please ensure you have installed both the Analog Devices, Inc. High Speed Converter Toolbox as well as the RF Microwave Toolbox.
MATLAB Toolboxes | ||
---|---|---|
Toolbox | Purpose | Notes |
Support Package for ADALM-Pluto | LibIIO Matlab Bindings | |
High Speed Converter | AD9081 Control | |
RF Microwave | ADAR1000EVAL1Z & ADXUD1A Control | |
Genalyzer | DSP of RF Signals | |
MinGW-w64 C/C++ Compiler | Genalyzer Compiler |
Example scripts are located within the add-on install directory, which is usually located in the directory:
C:\Users\<username>\AppData\Roaming\MathWorks\MATLAB Add-Ons\Toolboxes
The example scripts are specifically located in the following folder:
Analog Devices, Inc. RFMicrowave Toolbox\rfm_examples
The control interface for the X-Band Platform is implemented using standard system objects in MATLAB. Basic information for instantiating the objects is provided in the toolbox documentation within MATLAB and on this page and this page. Here is an example instantiation of the objects:
>> tx = adi.AD9081.Tx; tx = adi.AD9081.Tx with properties: ChannelNCOFrequencies: [0 0 0 0] MainNCOFrequencies: [0 0 0 0] ChannelNCOPhases: [0 0 0 0] MainNCOPhases: [0 0 0 0] ChannelNCOGainScales: [0 0 0 0] NCOEnables: [0 0 0 0] EnabledChannels: 1 uri: 'ip:analog' DataSource: 'DMA' EnableCyclicBuffers: false >> rx = adi.AD9081.Rx; rx = adi.AD9081.Rx with properties: SamplingRate: NaN ChannelNCOFrequencies: [0 0 0 0] MainNCOFrequencies: [0 0 0 0] ChannelNCOPhases: [0 0 0 0] MainNCOPhases: [0 0 0 0] TestMode: 'off' EnablePFIRs: false PFIRFilenames: '' SamplesPerFrame: 32768 EnabledChannels: 1 uri: 'ip:analog' >> sray = adi.Stingray; sray = adi.Stingray with properties: ArrayMap: [8×4 double] NumADAR1000s: 2 Mode: {'Rx' 'Rx' 'Rx' 'Rx' 'Rx' 'Rx' 'Rx' 'Rx'} StateTxOrRx: {'Rx' 'Rx' 'Rx' 'Rx' 'Rx' 'Rx' 'Rx' 'Rx'} RxEnable: [1 1 1 1 1 1 1 1] TxEnable: [0 0 0 0 0 0 0 0] LNABiasOutEnable: [1 1 1 1 1 1 1 1] LNABiasOn: [1×8 double] BeamMemEnable: [1 1 1 1 1 1 1 1] BiasDACEnable: [1 1 1 1 1 1 1 1] BiasDACMode: {'On' 'On' 'On' 'On' 'On' 'On' 'On' 'On'} BiasMemEnable: [1 1 1 1 1 1 1 1] CommonMemEnable: [1 1 1 1 1 1 1 1] CommonRxBeamState: [0 0 0 0 0 0 0 0] CommonTxBeamState: [0 0 0 0 0 0 0 0] ExternalTRPin: {'Pos' 'Pos' 'Pos' 'Pos' 'Pos' 'Pos' 'Pos' 'Pos'} ExternalTRPolarity: [0 0 0 0 0 0 0 0] LNABiasOff: [1×8 double] PolState: [0 0 0 0 0 0 0 0] PolSwitchEnable: [0 0 0 0 0 0 0 0] RxLNABiasCurrent: [0 0 0 0 0 0 0 0] RxLNAEnable: [0 0 0 0 0 0 0 0] RxToTxDelay1: [0 0 0 0 0 0 0 0] RxToTxDelay2: [0 0 0 0 0 0 0 0] RxVGAEnable: [0 0 0 0 0 0 0 0] RxVGABiasCurrentVM: [0 0 0 0 0 0 0 0] RxVMEnable: [0 0 0 0 0 0 0 0] SequencerEnable: [0 0 0 0 0 0 0 0] TRSwitchEnable: [0 0 0 0 0 0 0 0] TxPABiasCurrent: [0 0 0 0 0 0 0 0] TxPAEnable: [0 0 0 0 0 0 0 0] TxToRxDelay1: [0 0 0 0 0 0 0 0] TxToRxDelay2: [0 0 0 0 0 0 0 0] TxVGAEnable: [0 0 0 0 0 0 0 0] TxVGABiasCurrentVM: [0 0 0 0 0 0 0 0] TxVMEnable: [0 0 0 0 0 0 0 0] DetectorEnable: [8×4 logical] DetectorPower: [8×4 double] PABiasOff: [8×4 double] PABiasOn: [8×4 double] RxAttn: [8×4 logical] RxBeamState: [8×4 double] RxPowerDown: [8×4 logical] RxGain: [8×4 double] RxPhase: [8×4 double] TxAttn: [8×4 logical] TxBeamState: [8×4 double] TxPowerDown: [8×4 logical] TxGain: [8×4 double] TxPhase: [8×4 double] RxSequencerStart: [8×4 logical] RxSequencerStop: [8×4 logical] TxSequencerStart: [8×4 logical] TxSequencerStop: [8×4 logical] Temp: [8×1 double] Frequency: 1.0000e+10 ElementSpacing: 0.0150 uri: 'ip:10.0.0.200' EnabledChannels: 1 PowerUpDown: 0 Ctrl5V: 0 PAOn: 0 TXRX0: 0 TXRX1: 0 TXRX2: 0 TXRX3: 0 PllOutputSel: 0 RxGainMode: 0 MUXOutEnable: 0 Name: [] ADF4371Frequency: [] Phase: [] PowerDown: [] ADF4371Temp: [] BurstCount: 0 CounterInt: 0 DMAGateingMode: 0 Enable: 0 EnableMode: 3 FrameLength: 0 Secondary: 0 SyncTerminalType: 0 TxDPoff: [0 0] TxDPon: [0 0] TxOff: [0 0] TxOn: [0 0] TxVCOoff: [0 0] TxVCOon: [0 0] RxDPoff: [0 0] RxDPon: [0 0] RxOff: [0 0] RxOn: [0 0] RxVCOoff: [0 0] RxVCOon: [0 0]
This script is to be used with the Analog Devices X-Band Platform to demonstrate relatively simple MATLAB control of the system. It allows the user to configure the Rx aspects of the system by using the and rx = adi.AD9081.Rx and sray = adi.Stingray system objects.
Using this script as a basis, the user can modify the script for their own use case such that they can:
This script is to be used with the Analog Devices X-Band Platform to demonstrate relatively simple MATLAB control of the system. It allows the user to configure the Tx aspects of the system by using the and tx = adi.AD9081.Tx and sray = adi.Stingray system objects.
Using this script as a basis, the user can modify the script for their own use case such that they can:
The use of the UART terminal to debug and understand device attribute and channel attribute settings can be insightful. There are a variety of libiio command sets that can be utilized such as iio_info and iio_attr. Additional libiio tips and tricks can be found here.
root@analog:~# iio_attr -d IIO context has 19 devices: iio:device0, ltc2314-14: found 1 device attributes iio:device1, ams: found 1 device attributes iio:device18, adf4371-0: found 2 device attributes iio:device19, hmc7044: found 7 device attributes iio:device2, adar1000_csb_1_1: found 40 device attributes iio:device20, axi-ad9081-rx-hpc: found 13 device attributes iio:device21, axi-core-tdd: found 11 device attributes iio:device22, one-bit-adc-dac: found 1 device attributes iio:device23, one-bit-adc-dac: found 1 device attributes iio:device24, one-bit-adc-dac: found 1 device attributes iio:device25, axi-ad9081-tx-hpc: found 2 device attributes iio:device3, adar1000_csb_1_2: found 40 device attributes iio:device4, adar1000_csb_1_3: found 40 device attributes iio:device5, adar1000_csb_1_4: found 40 device attributes iio:device6, adar1000_csb_2_1: found 40 device attributes iio:device7, adar1000_csb_2_2: found 40 device attributes iio:device8, adar1000_csb_2_3: found 40 device attributes iio:device9, adar1000_csb_2_4: found 40 device attributes iio_sysfs_trigger: found 2 device attributes root@analog:~#
root@analog:~# iio_attr -c IIO context has 19 devices: iio:device0, ltc2314-14: found 2 channels iio:device1, ams: found 30 channels iio:device18, adf4371-0: found 5 channels iio:device19, hmc7044: found 8 channels iio:device2, adar1000_csb_1_1: found 9 channels iio:device20, axi-ad9081-rx-hpc: found 17 channels iio:device21, axi-core-tdd: found 4 channels iio:device22, one-bit-adc-dac: found 6 channels iio:device23, one-bit-adc-dac: found 6 channels iio:device24, one-bit-adc-dac: found 5 channels iio:device25, axi-ad9081-tx-hpc: found 24 channels iio:device3, adar1000_csb_1_2: found 9 channels iio:device4, adar1000_csb_1_3: found 9 channels iio:device5, adar1000_csb_1_4: found 9 channels iio:device6, adar1000_csb_2_1: found 9 channels iio:device7, adar1000_csb_2_2: found 9 channels iio:device8, adar1000_csb_2_3: found 9 channels iio:device9, adar1000_csb_2_4: found 9 channels iio_sysfs_trigger: found 0 channels root@analog:~#
root@analog:~# cat /sys/kernel/debug/iio/iio:device19/status --- PLL1 --- Status: Locked Using: CLKIN1 @ 100000000 Hz PFD: 10000 kHz --- PLL2 --- Status: Locked (Synchronized) Frequency: 3000000000 Hz (Autocal cap bank value: 12) SYSREF Status: Valid & Locked SYNC Status: Synchronized Lock Status: PLL1 & PLL2 Locked root@analog:~#
root@analog:~# jesd_status lqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqk xl(DEVICES) Found 2 JESD204 Link Layer peripheralsqqqqqqqqqqqqqqqqqqqqqqqqqqqqkx xx xx xx(0): axi-jesd204-rx/84a90000.axi-jesd204-rx [*] xx xx(1): axi-jesd204-tx/84b90000.axi-jesd204-tx xx xmqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqjx xl(STATUS)qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqkx xxLink is enabled xx xxLink Status DATA xx xxMeasured Link Clock (MHz) 250.026 xx xxReported Link Clock (MHz) 250.000 xx xxMeasured Device Clock (MHz) 250.026 xx xxReported Device Clock (MHz) 250.000 xx xxDesired Device Clock (MHz) 250.000 xx xxLane rate (MHz) 10000.000 xx xxLane rate / 40 (MHz) 250.000 xx xxLMFC rate (MHz) 7.812 xx xxSYSREF captured Yes xx xxSYSREF alignment error No xx xxSYNC~ xx xmqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqjx xl(LANE STATUS)qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqkx xxLane# 0 1 2 3 xt xxErrors 0 0 0 0 xj
A unique identifier will be returned for the Image, system.dtb, and BOOT.BIN files installed on the SD card using the md5 command.
root@analog:~# root@analog:~# md5sum /boot/Image 3c1ac2b114bbde82b38fc0463bf03dbd /boot/Image root@analog:~#
root@analog:~# root@analog:~# md5sum /boot/system.dtb bfc14855246807f4e62a2f71ce65deec /boot/system.dtb root@analog:~#
root@analog:~# root@analog:~# md5sum /boot/BOOT.BIN a77ca8194b457c2d020a44d83568cc52 /boot/BOOT.BIN root@analog:~#
For additional questions or support, please visit the Engineering Zone forum at ADEF.