diff --git a/404.html b/404.html deleted file mode 100644 index 2f077db..0000000 --- a/404.html +++ /dev/null @@ -1,1059 +0,0 @@ - - - -
- - - - - - - - - - - - - - -{% include 'header.tmpl' %}
-Examples for streaming data are listed within the Toolbox documentation itself. To view run the following with MATLAB:
- -They can also be viewed on GitHub:
- - - - - - - -{% include 'header.tmpl' %}
- - - -ADI maintains a set of tools to interface with ADI precision converters within MATLAB and Simulink. These are combined into a single toolbox. The list of supported parts is provided below.
-The following have device-specific implementations in MATLAB and Simulink. If a device has an IIO driver, MATLAB support is possible, but a device-specific MATLAB or Simulink interface may not exist yet.
-Evaluation Card | -FPGA Board | -Streaming Support | -Targeting | -Variants and Minimum Supported Release | -
---|---|---|---|---|
AD7380 | -Zedboard | -Yes | -No | -ADI (2021b) | -
AD7768 | -Zedboard | -Yes | -No | -ADI (2021b) | -
AD7768-1 | -Zedboard | -Yes | -No | -ADI (2021b) | -
AD4030-24 | -Zedboard | -Yes | -No | -ADI (2021b) | -
AD4630-16 | -Zedboard | -Yes | -No | -ADI (2021b) | -
AD4630-24 | -Zedboard | -Yes | -No | -ADI (2021b) | -
AD4858 | -Zedboard | -Yes | -No | -ADI (2021b) | -
AD2S1210 | -Zedboard | -Yes | -No | -ADI (2021b) | -
AD4000 | -Zedboard | -Yes | -No | -ADI (2021b) | -
AD4001 | -Zedboard | -Yes | -No | -ADI (2021b) | -
AD4002 | -Zedboard | -Yes | -No | -ADI (2021b) | -
AD4003 | -Zedboard | -Yes | -No | -ADI (2021b) | -
AD4004 | -Zedboard | -Yes | -No | -ADI (2021b) | -
AD4005 | -Zedboard | -Yes | -No | -ADI (2021b) | -
AD4006 | -Zedboard | -Yes | -No | -ADI (2021b) | -
AD4007 | -Zedboard | -Yes | -No | -ADI (2021b) | -
AD4008 | -Zedboard | -Yes | -No | -ADI (2021b) | -
AD4010 | -Zedboard | -Yes | -No | -ADI (2021b) | -
AD4011 | -Zedboard | -Yes | -No | -ADI (2021b) | -
AD4020 | -Zedboard | -Yes | -No | -ADI (2021b) | -
AD4021 | -Zedboard | -Yes | -No | -ADI (2021b) | -
AD4022 | -Zedboard | -Yes | -No | -ADI (2021b) | -
AD7124-4 | -Zedboard | -Yes | -No | -ADI (2021b) | -
AD7124-8 | -Zedboard | -Yes | -No | -ADI (2021b) | -
{% include 'header.tmpl' %}
-The toolbox has different dependencies based on the features required. The base dependencies for streaming data are listed below.
-The base dependencies for the toolbox requires libiio and the libiio MATLAB bindings. There are three options for this install with different required MathWorks Toolboxes:
-The Precision Toolbox itself can be installed either from:
- -MATLAB Versions
-Before installing Precision Toolbox check the Release Page to check for the latest supported version of MATLAB. The latest version is the one which is available in Add-on Explorer, since Add-On Explorer does not currently support hosting multiple versions. If you have an older release of MATLAB, download the MLTBX installer from matching release on the Release Page.
-To install the toolbox from within MATLAB using the Add-On Explorer:
-{% include 'header.tmpl' %}
-Some limitations and bugs are known to be present in the support for the ADCs relevant to the Precision Toolbox. They have been summarized below.
-Currently only ethernet/IP backends are supported for all the parts in the toolbox. For AD4030-24, AD4630-16 and AD4630-24 the usb backend can also be used. Serial backends are not supported.
-Trigger setup needs to be done before running any of the toolbox scripts that interact with the AD7380. Refer to the Trigger Management section on the AD738x Linux IIO driver wiki page
-The Linux IIO driver for the AD7768 returns data for all the channels whenever a data capture is requested. So, in order to get sensible outputs, ensure that the EnabledChannels array consists of indices for all the channels.
-The Linux IIO driver for the three parts (there's a common Linux driver that addresses all three parts) returns data for all the channels whenever a data capture is requested. In order to have sensible outputs, ensure that the EnabledChannels array consists of indices for all the channels.
-Another known issue here has to do with the case where the ADC sends out common mode voltage data along with the differential voltage data. The EnabledChannel property values that consist of more than two indices (even when there are 4 IIO channels), are not 'valid'. Of the possible groupings with two channel indices, the ones that correspond to {differential0, common_voltage0} and {differential1, common_voltage1} are also not 'valid'
-It is possible to get data (common-mode and differential) for all the ADC channels, by using a 'valid' channel grouping, setting the BufferTypeConversionEnable property to 'false' in the Base class for the AD463x family, and adding custom parsing logic to extract the data for all IIO channels, from the 32-bit raw words you get from the data capture.
- - - - - - -{% include 'header.tmpl' %}
-The toolbox contains behavioral simulation models of different data converters that can be used in MATLAB and Simulink. These are designed to help users understand device limitations and advanced feature sets. As well as to test their algorithms and signal processing against. -The currently supported behavioral models are:
- - - - - - - -{% include 'header.tmpl' %}
-Remote data streaming to and from hardware is made available through system object interfaces, which are unique for each component or platform. The hardware interfacing system objects provide a since class to both configure a given platform and move data back and forth from the device.
-Command and control of hardware from MATLAB is accomplished by leveraging the IIO drivers built into the target platform's kernel and libiio which provides remote backends to control drivers across different backends. Backends can be Ethernet/IP/USB based. Below is a diagram of the different components in the stack for a setup targeting the evaluation of the AD7380, but the setup will be nearly similar for other ADCs as well.
- -Since libiio is cross-platform it can be used from Windows, Linux, or macOS based systems. It is also a lower level library independent of MATLAB, so when moving toward production or untethered systems similar APIs that are used in MATLAB can be used in C,C++,Python, or other languages.
-Connecting to hardware is done by setting the uri property of the system object interface. The uri for libiio always has the convention "< backend >:< address >", where backend can be ethernet, ip or usb. address will be specific to the backend. This is documented in the libiio API.
-Below is a basic example of setting up a generic ADC using an Ethernet/IP backend: -
-With the code above, the hardware is not contacted until the operator or step method is called on line 3. Therefore, any properties that are set or defined before line 3 are not applied or updated on the hardware until after line 3. However, after line 3 has completed the object will become locked and certain configuration changes cannot be applied after this point. These will primarily sample rates and buffer sizes. -The state of the object follows the flow of the diagram below triggered by line 3 above.
-To provide a complete example we can do more advanced configuration like so to demonstrate property changes: -
To receive or capture data from a given device first you must instantiate that device's interface class. For a generic ADC, this would be as follows:
- -Once instantiated you can configure the number of samples to be captured by setting the property SamplesPerFrame.
- -SamplesPerFrame is the number of samples per channel which will be captured. If your device produces complex data (I and Q) this is the number of complex samples. There will be a limit to the maximum samples which can be collected. By default this is set to 2^20, but it may be possible to make it larger depending on hardware. Once the operator methods are used for a give instantiation, the object will become locked and the SamplesPerFrame property cannot be changed. This is known as a non-tunable property.
-To actually collect the samples or perform the capture, the operator of the system object should be used or the step method as so:
- -Both method calls are equivalent, and the produced matrix data will be of size [SamplesPerFrame x length(EnabledChannels)]. EnabledChannels determines the channels which data will be collected from. EnabledChannels is a [1xN] vector with indexes starting at 1 of the desired channels.
-If you are capturing multiple frames or buffers of data, then there might arise situations where discontinuities appear in the samples, when plotted.
-Some detail and tips are discussed in this wiki page on IIO System Considerations, Tips and Tricks
-The IIO buffer size is governed by the SamplesPerFrame property of the System Object classes. The kernelBuffersCount is also a property defined for the classes, and can be modified.
-{% include 'header.tmpl' %}
-Support is provided online through the EngineerZone forums. If you have questions related to the hardware itself outside of this BSP, contact your local FAE or ask on the forums.
-Question regarding specific aspect of the BSP should be asked in the following places:
-High-Speed Converter Toolbox supports the IP Core generation flow from MathWorks which allows for automated integration of DSP into HDL reference designs from Analog Devices. This workflow will take Simulink subsystems, run HDL-Coder to generate source Verilog, and then integrate that into a larger reference design. The figure below is a simplified block diagram of a SoC (Fabric+ARM) device, where specialized IP are inserted into the receive and transmit datapaths. This is supported on specific FPGA families and high-speed based reference designs. This support is based on the Zynq HDL-Coder and support
- -To perform targeting will require FPGA vendor tools for the FPGA system. For Xilinx this will be Vivado and the toolbox will require specific versions for each release. For the current release this is Vivado 2019.1. Using other versions are not supported. To build the necessary BOOT.BIN files will require the Xilinx SDK as well.
-Once you have the installed the necessary 3rd party tools MATLAB needs to be told where they are installed by use of the hdlsetuptoolpath command. For Windows the following MATLAB command can be used:
-hdlsetuptoolpath('ToolName', 'Xilinx Vivado', 'ToolPath', 'C:\Xilinx\Vivado\2019.1\bin\vivado.bat');
-
or Linux:
-hdlsetuptoolpath('ToolName', 'Xilinx Vivado', 'ToolPath', '/opt/Xilinx/Vivado/2019.1/bin/vivado');
-
Please change the tool path if it is different on your system.
-To verify that the ADI reference designs are available to HDL Workflow Advisor a Simulink model needs to be opened. To do so launch Simulink with the following command:
- -After it launches open a "Blank DUT" model from the "HDL Coder" dropdown of the Simulink Start Page.
- - - -After the model opens, click on the green subsystem to select it. Then open the "Apps" tap, open the apps menu and -scroll down to HDL-Coder.
- - - -This will open the HDL-Coder menu, from here the Workflow Advisor is selectable. Click on it to launch the advisor.
- - - -Once launch go to Step 1.1 on the left side column. Then on the right side of the window select "IP Core Generation" for "Target workflow". Then the ADI reference designs should be available in the "Target platform" menu as so:
- - - - - - - - -{"use strict";/*!
- * escape-html
- * Copyright(c) 2012-2013 TJ Holowaychuk
- * Copyright(c) 2015 Andreas Lubbe
- * Copyright(c) 2015 Tiancheng "Timothy" Gu
- * MIT Licensed
- */var _a=/["'&<>]/;Pn.exports=Aa;function Aa(e){var t=""+e,r=_a.exec(t);if(!r)return t;var o,n="",i=0,s=0;for(i=r.index;i