From dd968359ec1571b9bd0a8aa28cbb984f70c12b0f Mon Sep 17 00:00:00 2001 From: Pagadarai Date: Tue, 16 Aug 2022 14:59:38 -0400 Subject: [PATCH] Deleted copies of .md files in CI/gen_doc/docs Signed-off-by: Pagadarai --- CI/gen_doc/docs/_pages/install.md | 2 +- CI/gen_doc/docs/_pages/targeting.md | 48 +++++++++- CI/gen_doc/docs/examples.md | 22 ----- CI/gen_doc/docs/index.md | 38 -------- CI/gen_doc/docs/install.md | 75 --------------- CI/gen_doc/docs/models.md | 8 -- CI/gen_doc/docs/streaming.md | 140 ---------------------------- CI/gen_doc/docs/support.md | 9 -- CI/gen_doc/docs/targeting.md | 57 ----------- 9 files changed, 47 insertions(+), 352 deletions(-) delete mode 100644 CI/gen_doc/docs/examples.md delete mode 100644 CI/gen_doc/docs/index.md delete mode 100644 CI/gen_doc/docs/install.md delete mode 100644 CI/gen_doc/docs/models.md delete mode 100644 CI/gen_doc/docs/streaming.md delete mode 100644 CI/gen_doc/docs/support.md delete mode 100644 CI/gen_doc/docs/targeting.md diff --git a/CI/gen_doc/docs/_pages/install.md b/CI/gen_doc/docs/_pages/install.md index d1e6466a..adc6e249 100644 --- a/CI/gen_doc/docs/_pages/install.md +++ b/CI/gen_doc/docs/_pages/install.md @@ -56,7 +56,7 @@ The Transceiver Toolbox itself can be installed either from: To install the toolbox from within MATLAB using the Add-On Explorer, first launch the Explorer from MATLAB's Home tab: - + Search for the toolbox: diff --git a/CI/gen_doc/docs/_pages/targeting.md b/CI/gen_doc/docs/_pages/targeting.md index d7652a96..eaa4c803 100644 --- a/CI/gen_doc/docs/_pages/targeting.md +++ b/CI/gen_doc/docs/_pages/targeting.md @@ -1,7 +1,7 @@ -{% include 'header.tmpl' %} + # HDL Targeting with HDL-Coder -Transceiver 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 transceiver based reference designs. This support is based on the Zynq HDL-Coder and support +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 @@ -11,3 +11,47 @@ Transceiver Toolbox supports the IP Core generation flow from MathWorks which al ## Getting Started +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](https://www.mathworks.com/help/hdlcoder/ref/hdlsetuptoolpath.html) command. For Windows the following MATLAB command can be used: + +```matlab +hdlsetuptoolpath('ToolName', 'Xilinx Vivado', 'ToolPath', 'C:\Xilinx\Vivado\2019.1\bin\vivado.bat'); +``` + +or Linux: + +```matlab +hdlsetuptoolpath('ToolName', 'Xilinx Vivado', 'ToolPath', '/opt/Xilinx/Vivado/2019.1/bin/vivado'); +``` + +Please change the tool path if it is different on your system. + +### Checking For Supported Designs + +To verify that the ADI reference designs are available to [HDL Workflow Advisor](https://www.mathworks.com/help/hdlcoder/ug/overview-of-workflows-in-hdl-workflow-advisor.html) a Simulink model needs to be opened. To do so launch Simulink with the following command: + +```matlab +simulink +``` + +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: + + + \ No newline at end of file diff --git a/CI/gen_doc/docs/examples.md b/CI/gen_doc/docs/examples.md deleted file mode 100644 index 3674c7c9..00000000 --- a/CI/gen_doc/docs/examples.md +++ /dev/null @@ -1,22 +0,0 @@ - -# Examples - -Examples for streaming data and targeting FPGAs are listed within the Toolbox documentation itself. To view run the following with MATLAB: - -``` -doc adi -``` - -They can also be viewed on GitHub: - - - [Targeting examples](https://github.com/analogdevicesinc/TransceiverToolbox/tree/master/trx_examples/streaming) - - [Streaming examples](https://github.com/analogdevicesinc/TransceiverToolbox/tree/master/trx_examples/targeting) - -## Highlighted Demos - -Certain examples have full articles that discuss different applications - -- [Frequency hopping](https://wiki.analog.com/resources/eval/user-guides/adrv936x_rfsom/tutorials/frequency_hopping) -- [Loopback delay estimation](https://wiki.analog.com/resources/eval/user-guides/adrv936x_rfsom/tutorials/loopback_delay_estimation) -- [AGC Optimization](https://wiki.analog.com/resources/eval/user-guides/ad9361_agc_tuning) -- [Pluto LTE App](https://wiki.analog.com/resources/tools-software/transceiver-toolbox/examples/pluto_lte_app) \ No newline at end of file diff --git a/CI/gen_doc/docs/index.md b/CI/gen_doc/docs/index.md deleted file mode 100644 index 0137beea..00000000 --- a/CI/gen_doc/docs/index.md +++ /dev/null @@ -1,38 +0,0 @@ - - - - - -
- - -
- - -ADI maintains a set of tools to model, interface, and target with ADI high-speed devices within MATLAB and Simulink. These are combined into single Toolbox which contains a set of Board Support Packages (BSP). The list of supported boards 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 | -| --------- | --------- | --------- | --------- | --------- | -| DAQ2 (AD9680/AD9144) | ZC706 | Yes | No | ADI (2019a) | -| | ZCU102 | Yes | Yes | ADI (2019a) | -| | Arria10 SoC | Yes | No | ADI (2019a) | -| AD9081/AD9082 | ZCU102 | Yes | No | ADI (2020a) | -| | VCU118 | Yes | No | ADI (2020a) | -| AD9988/AD9986 | ZCU102 | Yes | No | ADI (2020a) | -| | VCU118 | Yes | No | ADI (2020a) | -| AD9209/AD9209/AD9177 | ZCU102 | Yes | No | ADI (2020a) | -| | VCU118 | Yes | No | ADI (2020a) | -| QuadMxFE (AD9081 x4) | VCU118 | Yes | No | ADI (2020a) | -| AD9467 | Zedboard | Yes | No | ADI (2018b) | diff --git a/CI/gen_doc/docs/install.md b/CI/gen_doc/docs/install.md deleted file mode 100644 index 33d98605..00000000 --- a/CI/gen_doc/docs/install.md +++ /dev/null @@ -1,75 +0,0 @@ - -# Installation - -## Dependencies - -The toolbox has different dependencies based on the features required. These are broken down into the base dependencies for running models, data stream and control, and HDL code generation. - -### Simulation Models - -The simulation models for the different components can be used in either MATLAB or Simulink through the MATLAB System block. To run the available models requires the following toolboxes from MathWorks: - -- [DSP System Toolbox](https://www.mathworks.com/products/dsp-system.html) -- [Signal Processing Toolbox](https://www.mathworks.com/products/signal.html) -- [Fixed-Point Designer](https://www.mathworks.com/products/fixed-point-designer.html) -- [(Optional) Simulink](https://www.mathworks.com/products/simulink.html) - - -### Data Streaming with Hardware - -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: - -- [Communications Toolbox Support Package for Xilinx Zynq-Based Radio](https://www.mathworks.com/help/supportpkg/xilinxzynqbasedradio/index.html) - - Communications Toolbox - - Signal Processing Toolbox™ - - DSP System Toolbox™ -- [Communications Toolbox Support Package for Analog Devices ADALM-Pluto Radio](https://www.mathworks.com/help/supportpkg/plutoradio/index.html) - - Communications Toolbox - - Signal Processing Toolbox™ - - DSP System Toolbox™ -- [libiio MATLAB Binding Standalone Installer (R2021b+)](https://github.com/mathworks/buildroot/releases/download/mathworks_zynq_R21.2.0/libiio.mlpkginstall) - - Signal Processing Toolbox™ - - -### HDL Generation Support - -To leverage HDL-Coder and the reference designs with the toolbox requires the following components: - -- Xilinx Vivado 2019.1 -- Xilinx SDK 2019.1 -- Simulink -- [HDL-Coder™](https://www.mathworks.com/products/hdl-coder.html) -- [HDL Coder™ Support Package for Xilinx Zynq Platform](https://www.mathworks.com/matlabcentral/fileexchange/40447-hdl-coder-support-package-for-xilinx-zynq-platform) - -## Transceiver Toolbox Install - -The Transceiver Toolbox itself can be installed either from: - -- [MATLAB's Add-On Explorer](https://www.mathworks.com/products/matlab/add-on-explorer.html) -- [GitHub Releases page](https://github.com/analogdevicesinc/TransceiverToolbox/releases). - -!!! warning "MATLAB Versions" - Before installing Transceiver Toolbox check the [Release Page](https://github.com/analogdevicesinc/TransceiverToolbox/releases) to check for the lasted supported of MATLAB. The latest version is the one which is available in [Add-on Explorer](https://www.mathworks.com/products/matlab/add-on-explorer.html), since Add-On Explorer does not currently support hosting multiple versions. If ypu have an older release of MATLAB, download the MLTBX installer from matching release on the [Release Page](https://github.com/analogdevicesinc/TransceiverToolbox/releases). - - -### Add-On Explorer Walkthrough - -To install the toolbox from within MATLAB using the Add-On Explorer, first launch the Explorer from MATLAB's Home tab: - - - -Search for the toolbox: - - - - -Select Transceiver Toolbox from results: - - - - - -Select add: - - - diff --git a/CI/gen_doc/docs/models.md b/CI/gen_doc/docs/models.md deleted file mode 100644 index 0d3604d4..00000000 --- a/CI/gen_doc/docs/models.md +++ /dev/null @@ -1,8 +0,0 @@ - -# Behavioral Models - - -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: - -- [AD9081 MxFE Quad, 16-Bit, 12GSPS RFDAC and Quad, 12-Bit, 4GSPS RFADC](/models/ad9081/top_level.tex/) \ No newline at end of file diff --git a/CI/gen_doc/docs/streaming.md b/CI/gen_doc/docs/streaming.md deleted file mode 100644 index 9f51b0b3..00000000 --- a/CI/gen_doc/docs/streaming.md +++ /dev/null @@ -1,140 +0,0 @@ - -# Receiving and Sending Data - -Remote data streaming to and from hardware is made available through [system object interfaces](https://www.mathworks.com/help/matlab/matlab_prog/what-are-system-objects.html), 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](https://wiki.analog.com/software/linux/docs/iio/iio) built into the target platform's kernel and [libiio](https://wiki.analog.com/resources/tools-software/linux-software/libiio) which provides remote backends to control drivers across different backends. Backends can be Ethernet, serial, or USB based. Below is a diagram of the different components in the stack for an FMComms based systems, but will be nearly identical for all transceiver based systems. - -![MATLAB libiio Stack](assets/MATLAB_libiio_Stack.png) - -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 and Configuration - -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 ip,usb, or serial. *address* will be specific to the backend. This is documented in the [libiio API](https://analogdevicesinc.github.io/libiio/master/libiio/group__Context.html#gafdcee40508700fa395370b6c636e16fe). - -Below is a basic example of setting up an AD9361 receiver using an Ethernet/IP backend where the address of the target system is 192.168.2.1: -```linenums="1" -rx = adi.AD9081.Rx; -rx.uri = 'ip:192.168.2.1'; -data = rx(); -``` -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 line 3 above. - -``` mermaid -graph LR - Z[Operator Called] -->A; - A[Connect To Board] --> B[Update Properties]; - B --> C[Initialize Buffers]; - C --> D[Send or Receive Data]; - D --> E[Lock Object]; -``` -Once the object becomes locked it must be released if the sample rate or buffers need to be modified. This will disconnect from the hardware: -``` -rx.release(); % Release object -``` - -To provide a complete example we can do more advanced configuration like so to demonstrate property changes: -```linenums="1" -rx = adi.AD9081.Rx; -rx.uri = 'ip:192.168.2.1'; -rx.SamplesPerFrame = 1024; -rx.ChannelNCOFrequencies = [1e9,1e9,1e9,1e9]; -dataNCO1 = rx(); - -% Update tunable property -rx.ChannelNCOFrequencies = [2e9,2e9,2e9,2e9]; -dataNCO2 = rx(); - -% Update non-tunable property -rx.release(); -rx.SamplesPerFrame = 4096; -dataLargerBuffer = rx(); -``` - -## Receiving Data - -To receive or capture data from a given device first you must instantiate that device's interface class. For example on a DAQ2 based system, this would be as follows: - -``` -rx = adi.DAQ2.Rx; -``` - -Once instantiated you can configure the number of samples to be captured by setting the property **SamplesPerFrame.** - -``` -rx.SamplesPerFrame = 1e6; -``` - -**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: - -``` -data = rx(); % Operator method -data = rx.step(); % Step method -``` - -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 the device transmits or receive complex data, these indexes are for complex channel pairs. For example, the AD9081 can have 16 complex channels from 4 ADCs and setting **EnabledChannels** as so will capture data from all 16 converters: - -``` -rx.EnabledChannels = 1:16; -``` - -You cannot enable individual converters on complex data based devices, and the **EnabledChannels** property is always sorted so the channel mappings cannot be changed within the produced data. - -## Sending Data - -Transmitting data is very similar to receiving it, a transmitter class needs to be instantiated to send data first. For an AD9081 based device this would be as follows: - -``` -tx = adi.AD9081.Tx; -``` - -Unlike the receivers, transmit objects automatically create their internal buffers based on the data passed to them during their operator or step methods. These methods can be called as follows with some data: - -``` -tx_data = complex(2^15.*randn(1024,1),2^15.*randn(1024,1)); -tx(tx_data); % Operator method -tx.step(tx_data); % Step method -``` - -However, once the step or operator method is called the object becomes locked and future passed data vectors must be the same length. As with the receive classes, the size of the passed data must be [SomeFixedSize x EnabledChannels]. **EnabledChannels** has the same definition as the receive side, except applied to DACs. - -Unlike the receiver, transmit objects have the ability to utilize [cyclic buffers](https://analogdevicesinc.github.io/libiio/group__Buffer.html#ga6caadf077c112ae55a64276aa24ef832) which will continuously transmit a provided vector without gaps forever. To utilize cyclic buffers set the **EnableCyclicBuffers** property then pass the operator data as follows: - -``` -tx = adi.AD9081.Tx; -tx.EnableCyclicBuffers = true; -tx_data = complex(2^15.*randn(1024,1),2^15.*randn(1024,1)); -tx(tx_data); % Data will repeat forever -``` - -Once a vector is passed to the object with **EnableCyclicBuffers** set to **true**, the object will not accept future buffers unless first release or cleared. - -By default the system objects will utilize **DMA** as the source of data for the DACs, which will use data past from the operator. This can be set manually through the **DataSource** properties as follows: - -``` -rx.DataSource = 'DMA'; -``` - -## DDS - -Instead of providing data for transmission, it is possible to utilize DDSs inside the FPGA to send tones to individual DACs. For specific boards there are two DDS per DAC, which can be used to create complex (one-sided) tones. These DDSs can be used by first setting the **DataSource** property: - -``` -rx.DataSource = 'DDS'; -``` - -Then the scale, frequency, and phase of each DDS can be controlled through three attributes as follows: - -``` -rx.DDSFrequencies = [1e3,1e3,1e3,1e3;1e4,1e4,1e4,1e4]; % Must be range [0 FS/2] -rx.DDSScales = [1,1,1,1;0,0,0,0]; % Must be range [0,1] -rx.DDSPhases = [0,90e3,0,90e3,0,0;0,0,0,0]; % Each in millidegrees [0,90000] -``` - -Each of the above properties must be of size [2x(NumberOfPartDACs)], where each row is the first DDS of a given DAC (column) and the second row is the second DDS of a given DAC (column). - diff --git a/CI/gen_doc/docs/support.md b/CI/gen_doc/docs/support.md deleted file mode 100644 index 0853ccd0..00000000 --- a/CI/gen_doc/docs/support.md +++ /dev/null @@ -1,9 +0,0 @@ - -# Support - -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: - -- [**Software Interface Tools**](https://ez.analog.com/sw-interface-tools/f/q-a) for questions on the BSP itself -- [**Linux Software Drivers**](https://ez.analog.com/linux-software-drivers/f/q-a) for libiio and iio driver questions \ No newline at end of file diff --git a/CI/gen_doc/docs/targeting.md b/CI/gen_doc/docs/targeting.md deleted file mode 100644 index eaa4c803..00000000 --- a/CI/gen_doc/docs/targeting.md +++ /dev/null @@ -1,57 +0,0 @@ - -# HDL Targeting with HDL-Coder - -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 - - - -## Recommended Review - -- [Getting started with Zynq](https://www.mathworks.com/support/search.html/videos/getting-started-with-zynq-80338.html?fq%5B%5D=asset_type_name:video&fq%5B%5D=category:hdlcoder/index&page=1) - -## Getting Started - -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](https://www.mathworks.com/help/hdlcoder/ref/hdlsetuptoolpath.html) command. For Windows the following MATLAB command can be used: - -```matlab -hdlsetuptoolpath('ToolName', 'Xilinx Vivado', 'ToolPath', 'C:\Xilinx\Vivado\2019.1\bin\vivado.bat'); -``` - -or Linux: - -```matlab -hdlsetuptoolpath('ToolName', 'Xilinx Vivado', 'ToolPath', '/opt/Xilinx/Vivado/2019.1/bin/vivado'); -``` - -Please change the tool path if it is different on your system. - -### Checking For Supported Designs - -To verify that the ADI reference designs are available to [HDL Workflow Advisor](https://www.mathworks.com/help/hdlcoder/ug/overview-of-workflows-in-hdl-workflow-advisor.html) a Simulink model needs to be opened. To do so launch Simulink with the following command: - -```matlab -simulink -``` - -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: - - - \ No newline at end of file