diff --git a/docs/learning/demo_hp_analog_meets_ai/capture_frequency.jpg b/docs/learning/demo_hp_analog_meets_ai/capture_frequency.jpg new file mode 100644 index 000000000..e6161395e Binary files /dev/null and b/docs/learning/demo_hp_analog_meets_ai/capture_frequency.jpg differ diff --git a/docs/learning/demo_hp_analog_meets_ai/capture_time.jpg b/docs/learning/demo_hp_analog_meets_ai/capture_time.jpg new file mode 100644 index 000000000..c0662ce98 Binary files /dev/null and b/docs/learning/demo_hp_analog_meets_ai/capture_time.jpg differ diff --git a/docs/learning/demo_hp_analog_meets_ai/demo_block_diagram.svg b/docs/learning/demo_hp_analog_meets_ai/demo_block_diagram.svg new file mode 100644 index 000000000..7e3eb0b87 --- /dev/null +++ b/docs/learning/demo_hp_analog_meets_ai/demo_block_diagram.svg @@ -0,0 +1,532 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + NVIDIA IGX Orin + Mellanox ConnectX-5 + ADRV9009zu11eg-FMC + ADRV9009zu11eg-FMC + JUPITER SDR + JUPITER SDR + JUPITER SDR + JUPITER SDR + + + + + + + + + + + + + + + QSFP28 PORT 2 + QSFP28 PORT 1 + QSFP28 PORT + QSFP28 PORT + Active Optical Cable + SMA Cable + SMA Cable + Active Optical Cable + SMA Cable + SMA Cable + SMA Cable + SMA Cable + SMA Cable + SMA Cable + + + + diff --git a/docs/learning/demo_hp_analog_meets_ai/demo_description.svg b/docs/learning/demo_hp_analog_meets_ai/demo_description.svg new file mode 100644 index 000000000..c963dc36c --- /dev/null +++ b/docs/learning/demo_hp_analog_meets_ai/demo_description.svg @@ -0,0 +1 @@ +AD-JUPITER-EBZAD-JUPITER-EBZ2 x Tx2 x TxClockAD-SYNCHRONA14-EBZAD-JUPITER-EBZAD-JUPITER-EBZ2 x Tx2 x TxClockADRV9009-ZU11EGGPUNICx86ADRV9009-ZU11EGPC10Gb Ethernet10Gb EthernetAI Modulation DetectionAI Infrastructure \ No newline at end of file diff --git a/docs/learning/demo_hp_analog_meets_ai/index.rst b/docs/learning/demo_hp_analog_meets_ai/index.rst new file mode 100644 index 000000000..a7098704c --- /dev/null +++ b/docs/learning/demo_hp_analog_meets_ai/index.rst @@ -0,0 +1,182 @@ +DEMO High-Performance Analog Meets AI +=============================================================================== + +Extracting data from high-performance, high-data-rate analog signal chains for AI +model training and real-time inference presents significant challenges due to the +complexity of interfaces, processing, and integration requirements. Analog Devices +addresses these challenges by providing a comprehensive, open-source data extraction +and integration software stack, which ensures seamless connectivity between advanced +signal chains and high-performance compute platforms. + + +Resources +------------------------------------------------------------------------------- + +- HDL branch: `adrv9009_qsfp_10G `__ +- Linux branch: `adr9009zu11eg_100MHZ_qsfp `__ +- Corundum branch: `corundum `__ +- PyADI-IIO branch: `jupiter_modulation `__ + +Block diagram +------------------------------------------------------------------------------- + +.. figure:: demo_block_diagram.svg + :align: center + :width: 900 + +Demo description +------------------------------------------------------------------------------- + +This demo illustrates an AI-based multi-channel RF modulation scheme recognition +workflow for signal intelligence applications. Four AD-JUPITER-EBZ systems are used +to generate RF signals with different modulation schemes across a total of eight +channels. The signals are then digitized by two ADRV9009-ZU11EG SoMs, which stream +the raw IQ data to a host PC via 10Gb Ethernet links. The AI model, derived from +a MathWorks reference design, is deployed on the NVIDIA GPU hosted in the PC. The +NVIDIA Holoscan AI infrastructure manages the efficient transfer of data from the +network interfaces into GPU memory, where the AI model is executed. By combining +ADI’s high-performance data extraction infrastructure with MathWorks development +tools and NVIDIA deployment frameworks, the system enables efficient AI application +development and real-time execution for advanced signal intelligence tasks. + +.. figure:: demo_description.svg + :align: center + :width: 600 + +System Capabilities +------------------------------------------------------------------------------- + +The system demonstrates an advanced, end-to-end data extraction and AI-based +signal processing workflow designed for high-performance signal intelligence +applications. It combines Analog Devices’ high-speed RF hardware and data +infrastructure with third-party AI frameworks to deliver real-time modulation +recognition and efficient AI model development. + +Key capabilities include: + +#. High-Performance Data Extraction + + * Supports real-time acquisition of high-bandwidth RF data from multi-channel signal chains. + * Seamlessly bridges physical interfaces, FPGA-based logic, and low-level software drivers + to enable reliable data transfer from ADI RF front ends to edge processors. + * Flexible connectivity options, including Ethernet, PCIe, USB, and UART, allow integration + with a wide range of compute platforms. + +#. Real-Time AI Modulation Recognition + + * Demonstrates multi-channel RF modulation scheme classification using AI models deployed on NVIDIA GPUs. + * The NVIDIA Holoscan AI infrastructure ensures efficient data movement between network interfaces and + GPU memory, supporting low-latency inference. + +#. Multi-Channel & Multi-Device Synchronization + + * Incorporates multiple AD-JUPITER-EBZ boards and ADRV9009-ZU11EG SoMs to generate and + digitize RF signals across eight channels. + * Provides accurate clock distribution and synchronization through AD-SYNCHRONA14-EBZ, + ensuring deterministic latency and coherent signal processing across multiple systems. + +#. Seamless Data Integration Stack + + * Enables flexible partitioning of data flow between edge and host compute devices, improving + scalability and system optimization. + * Utilizes an open-source ADI software stack that simplifies the setup of data collection + pipelines for AI model training and real-time inference. + +#. Integration with Industry-Standard AI Frameworks + + * Compatible with MathWorks reference designs for AI model generation, + MATLAB-based workflows, NVIDIA Holoscan, and ROS2. + * Bridges data science workflows with embedded environments to enable + real-world dataset generation, model optimization, and deployment. + +#. End-to-End AI Development Ecosystem + + * ADI’s AI Fusion tools within CodeFusion Studio™ enable model optimization, deployment, + and real-time performance analysis. + * Supports rapid development cycles by providing actionable insights and performance metrics for system tuning. + +Required Hardware +------------------------------------------------------------------------------- + +The following hardware components are required to set up and run the multi-channel RF modulation recognition demo: + +.. list-table:: + :widths: 15 30 5 15 + :header-rows: 1 + + * - Component + - Role + - Quantity + - Notes + * - :dokuwiki:`Jupiter SDR ` + - Versatile 2 x RxTx software-defined-radio platform based on ADRV9002 and Xilinx Zynq UltraScale+ MPSoC. + Generates RF signals with configurable modulation schemes. + - 4 + - Used to generate 8-channel RF input for AI recognition. + * - :dokuwiki:`ADRV9009-ZU11EG RF-SOM ` + - RF System-on-Module with dual ADRV9009 wideband transceivers. Performs high-speed digitization and streaming of IQ data to the host. + - 2 + - Provides synchronized multi-channel data acquisition. + * - :dokuwiki:`AD-SYNCHRONA14-EBZ ` + - Clock synchronization and distribution board based on AD9545 and HMC7044. Ensures accurate multi-channel phase alignment. + - 1 + - Synchronizes all RF signal paths and data capture timing. + * - NVIDIA IGX Orin platform + - High-performance computing system with NVIDIA GPU acceleration. Runs Holoscan AI infrastructure and the AI modulation recognition model. + - 1 + - Requires 10Gb Ethernet connectivity. + * - SMA Cables + - RF connection between the SDR transmit and receive channels. + - 8 + - High-quality coaxial cables recommended for minimal signal loss. + * - 100G QSFP28 Active Optical Cable + - Provides high-speed data connection between the RF-SOM and the host compute platform. + - 1 + - Supports low-latency, high-bandwidth Ethernet link. + * - Network switch with at least 4 PoE ports + - Provides Ethernet connectivity and power delivery to connected devices. + - 1 + - Use a managed switch compatible with 10GbE interfaces. + +SD Card Configuration +------------------------------------------------------------------------------- + +- For the Jupiter SDR platform, the boot files are generated using the Using Kuiper Image: + + `Writing the Image to an SD Card `__ + +- For the ADRV9009-ZU11EG, begin by checking out the HDL branch, then navigate to the **adrv2crr_fmc** directory. + +Run the following command to enable Corundum support and build the design: **make CORUNDUM=1** +Once the build process is complete, generate the necessary boot files: boot.bin, device tree, and uImage by following +the steps: + +- BOOT.BIN: `Build the boot image BOOT.BIN `__ +- Devicetree: :dokuwiki:`Building the Zynq Linux kernel and devicetrees from source ` + +Capture in Data Using Scopy2.0 +------------------------------------------------------------------------------- + +Captured RF Signal in Time Domain + +.. figure:: capture_time.jpg + :align: center + :width: 900 + +Captured RF Signal in Frequency Domain + +.. figure:: capture_frequency.jpg + :align: center + :width: 900 + +AI Modulation Detection Applications +------------------------------------------------------------------------------- + + +Software Configuration +----------------------- + +.. toctree:: + :maxdepth: 1 + + software/index diff --git a/docs/learning/demo_hp_analog_meets_ai/software/index.rst b/docs/learning/demo_hp_analog_meets_ai/software/index.rst new file mode 100644 index 000000000..3423088c7 --- /dev/null +++ b/docs/learning/demo_hp_analog_meets_ai/software/index.rst @@ -0,0 +1,220 @@ +Software Configuration and Setup +================================= + +This section provides guidance on configuring and running the software components of the High-Performance Analog Meets AI demonstration. + +Overview +-------- + +The demonstration consists of two main software components: + +1. **Holoscan Modulation Classification Application** - A real-time AI-powered modulation classification system built with NVIDIA Holoscan SDK +2. **Data Visualization Dashboard** - A Python-based Dash application for monitoring and analyzing classification results + +Holoscan Modulation Classification Application +---------------------------------------------- + +Description +~~~~~~~~~~~ + +This application performs real-time modulation classification on incoming data using MATLAB-generated CUDA code. It processes signals from ADRV9009 devices and classifies them into one of eight modulation schemes: + +- BPSK (Binary Phase Shift Keying) +- QPSK (Quadrature Phase Shift Keying) +- 8PSK (8-Phase Shift Keying) +- 16QAM (16-Quadrature Amplitude Modulation) +- 64QAM (64-Quadrature Amplitude Modulation) +- PAM4 (4-Pulse Amplitude Modulation) +- GFSK (Gaussian Frequency Shift Keying) +- CPFSK (Continuous Phase Frequency Shift Keying) + +Key Components +~~~~~~~~~~~~~~ + +**Holohub application**: The Holohub application and IIO operators + - Example applications: https://github.com/nvidia-holoscan/holohub/tree/main/applications/iio + - Generic operators: https://github.com/nvidia-holoscan/holohub/tree/main/operators/iio_controller + +There are 5 operators (each with its own Python binding) that can read/write IIO attributes, read/write IIO buffers and configure the initial setup for a device/system. This demonstration uses the buffer read operator in order to read from the 2 ADRV9009 devices. After that, the matlab module (that needs to be compiled beforehand) will call the classification function that returns the modulation and confidence level. This will be printed to the output file from where the python dash app will read and display the information. + +Configuration +~~~~~~~~~~~~~ + +1. **Network Configuration** + + Update IP addresses in main.cpp for your ADRV9009 devices: + + .. code-block:: cpp + + // Configure IIO buffer read for Talise device at IP 10.43.1.10 + auto iio_rx_1 = make_operator("iio_rx_1", + Arg("ctx") = std::string("ip:10.43.1.10"), + Arg("dev") = std::string("axi-adrv9009-rx-hpc"), + // ... other parameters + +2. **Output Configuration** + + Modify the YAML file to set output file paths: + + .. code-block:: yaml + + matlab: + out_file: "modulation_results.txt" + +3. **Channel Configuration** + + The application is configured for 8 channels (4 I/Q pairs): + + .. code-block:: cpp + + std::vector channel_names = { + "voltage0_i", "voltage0_q", + "voltage1_i", "voltage1_q", + "voltage2_i", "voltage2_q", + "voltage3_i", "voltage3_q" + }; + +Building and Running +~~~~~~~~~~~~~~~~~~~~ + +1. **Build the Application** + + .. code-block:: bash + + ./holohub build iio + +2. **Run the Application** + + .. code-block:: bash + + ./holohub run iio + +The application will: + +- Connect to the specified ADRV9009 devices +- Continuously read data samples (8192 samples per buffer, but it is configurable from the code) +- Process data through the MATLAB classification model +- Output results to ``modulation_results.txt`` and ``modulation_results1.txt`` + +Data Visualization Dashboard +---------------------------- + +Location +~~~~~~~~ + +The visualization script is located at: +``https://github.com/analogdevicesinc/pyadi-iio/blob/afpop/jupiter_modulation/examples/plot_identification_data.py`` + +Description +~~~~~~~~~~~ + +This Python application provides a web-based dashboard for monitoring and analyzing the modulation classification results in real-time. It features: + +- Real-time confusion matrices +- Constellation diagrams +- Time-domain waveform plots +- Classification accuracy metrics +- Interactive modulation selection + +Key Features +~~~~~~~~~~~~ + +**Real-time Monitoring** + - Reads results from Holoscan output files every 3 seconds + - Updates visualizations dynamically + - Tracks classification performance over time + +**Modulation Control** + - Manual modulation selection or automatic random switching + - Real-time transmission to connected SDR devices + - Supports all 8 modulation schemes + +**Signal Visualization** + - Constellation diagrams showing I/Q relationships + - Time-domain waveforms (I and Q components) + - Interactive plots with hover information + +Prerequisites +~~~~~~~~~~~~~ + +Install required Python packages: + +.. code-block:: bash + + pip install dash plotly pandas scipy scikit-learn numpy pyadi-iio + +Hardware Requirements +~~~~~~~~~~~~~~~~~~~~~ + +The dashboard expects the following hardware setup: + +- **4 ADRV9002 devices** for signal transmission (IPs: 192.168.0.15-18) +- **2 ADRV9009ZU11eg devices** for signal reception (configured in Holoscan app) +- **Modulated data files** in ``modulated_data/`` directory + +Configuration +~~~~~~~~~~~~~ + +1. **File Paths** + + Update file paths to match your Holoscan output location: + + .. code-block:: python + + file_path = '/home/analog/git/holohub/build/matlab_classify_modulator/modulation_results.txt' + file_path1 = '/home/analog/git/holohub/build/matlab_classify_modulator/modulation_results1.txt' + +2. **SDR Configuration** + + Configure SDR devices with appropriate IP addresses and stream profiles: + + .. code-block:: python + + sdr = adi.adrv9002(uri="ip:192.168.0.15") + sdr.write_stream_profile("lte_40_lvds_api_68_14_10.stream", "lte_40_lvds_api_68_14_10.json") + +3. **Modulated Data** + + Ensure modulated data files are available in the ``modulated_data/`` directory: + + - mod_BPSK.mat + - mod_QPSK.mat + - mod_8PSK.mat + - mod_16QAM.mat + - mod_64QAM.mat + - mod_PAM4.mat + - mod_GFSK.mat + - mod_CPFSK.mat + +Running the Dashboard +~~~~~~~~~~~~~~~~~~~~~ + +1. **Start the Holoscan Application** + + Ensure the Holoscan modulation classification application is running and generating output files. + +2. **Launch the Dashboard** + + .. code-block:: bash + + python3 plot_identification_data.py + +3. **Access the Web Interface** + + Open a web browser and navigate to ``http://localhost:8050`` + +Usage Workflow +~~~~~~~~~~~~~~ + +1. **Select Modulation**: Use the dropdown to choose a specific modulation or select "Random" for automatic switching +2. **Monitor Classification**: Observe real-time classification results for both ADRV9009 devices +3. **Analyze Performance**: Review confusion matrices and accuracy metrics +4. **Examine Signals**: Study constellation diagrams and time-domain waveforms + +Support and Resources +--------------------- + +For additional support and documentation: + +- **Holoscan SDK Documentation**: https://docs.nvidia.com/holoscan/ +- **PyADI-IIO Documentation**: https://analogdevicesinc.github.io/pyadi-iio/ diff --git a/docs/learning/index.rst b/docs/learning/index.rst index 41cef5d36..f5726634a 100644 --- a/docs/learning/index.rst +++ b/docs/learning/index.rst @@ -4,6 +4,8 @@ Learning! Tutorials, Workshops, Etc .. toctree:: :maxdepth: 4 + demo_hp_analog_meets_ai/index + Mixed Signal Basics ------------------------------------------------------------------------------- @@ -63,7 +65,6 @@ Workshops workshop_a_precision_converter_fpga_integration_journey/index - Academic Workshops -------------------------------------------------------------------------------