Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
programmable-logic:usb104a7:zmodadc [2022/09/12 19:34] – changed forum.digilentinc.com to forum.digilent.com Jeffreyprogrammable-logic:usb104a7:zmodadc [2023/03/07 17:58] (current) – [Overview] Martha
Line 1: Line 1:
 +====== USB104 A7 Zmod Scope 1410  Demo ======
 +{{ :reference:programmable-logic:usb104a7:adcdemosetup.jpg?direct&800 |}}
 +===== Overview =====
 +This project demonstrates the implementation of a [[https://digilent.com/shop/boards-and-components/system-board-expansion-modules/zmods/|Zmod]] Scope 1410 on the USB104 A7.
  
 +----
 +===== Description =====
 +
 +The simplified block diagram of the system implemented for this demo is shown below:
 +{{ :reference:programmable-logic:usb104a7:usb104a7_ZmodADC_demo.jpg?direct |}}
 +
 +A console application is used to communicate with the USB104 A7. A typical application would be to arm the Zmod Scope 1410 with a specified trigger and store the resulting waveform to a file. The process of an arm operation on channel 1 is as follows:
 +
 +1. Run application and program device.
 +
 +2. Send a trigger level command to device using the application. "level 1.0"
 +  * Triggerlevel opcode (4) or'ed with channel 1 (1<<16) is sent over DPTI, followed by the value
 +
 +3. Send an arm command to device along with a file name to save to. "arm waveform.csv"
 +  * Arm opcode (1) or'ed with channel 1 (1<<16) is sent over DPTI.
 +  * The application then requests a buffer of default length 0x3FFF from the DPTI device. It will wait until data is received before continuing.
 +
 +4. When the trigger occurs data is acquired from the Zmod Scope 1410 and sent to the channelbuffer through DMA.
 +
 +5. Channelbuffer is then sent to the PC application over DPTI and saved to the specified CSV file.
 +
 +The IPs instantiated in the design and their functionality are described below:
 +  * ZmodADC1410 Low Level Controller - initializes the Zmod Scope 1410 hardware and formats the input data according to the AD9648 ADC requirements.  
 +  * AXI_ZmodADC - An AXI interface to communicate with the ZmodADC Low Level Controller from a software environment. Sends data to the ZmodADC through DMA.
 +  * AXI_DPTI - Initializes the DPTI interface. Sends and receives data from the DPTI interface through DMA.
 +  * AXI_IIC - An I2C interface to communicate with the ZmodADC hardware.
 +  * AXI_UARTLITE - A UART interface used to send debugging messages to a COM port on the PC.
 +
 +===== Inventory=====
 +
 +===Hardware===
 +  * [[start|USB104 A7]]
 +    * Including a **USB A cable** and **5V Power Supply**
 +    * NOTE: SW1 DDR voltage set to 1.5V
 +  * [[https://digilent.com/shop/zmod-scope-1410-2-channel-14-bit-oscilloscope-module/|Zmod Scope 1410]]
 +  * [[https://digilent.com/shop/analog-discovery-2-100ms-s-usb-oscilloscope-logic-analyzer-and-variable-power-supply/|Analog Discovery 2 (AD2)]]
 +    * Including a **Micro USB cable**
 +  * [[https://digilent.com/shop/sma-to-alligator-clip-cable/|SMA to Alligator Clip Cable]]
 +
 +===Software===
 +  * **Vivado Design Suite 2019.1** with **Digilent Board Support Files** installed
 +    * Follow the [[vivado:installing-vivado:start]] guide on how to install Vivado and Digilent Board Support Files.
 +  * [[software/waveforms/waveforms-3/start|Waveforms Software]]
 +  * [[software/adept/start|Digilent Adept Runtime 2.20 or later installed]]
 +  * [[https://ttssh2.osdn.jp/index.html.en|Tera Term]]
 +    * Used to read debug messages from the FPGA. Follow the [[programmable-logic:guides:serial-terminals:start|Serial Terminal Emulator Guide]] for more information on installing and using Tera Term.
 +
 +===Skills===
 +  * **Basic familiarity with Vivado**
 +    *  //This experience can be found by walking through our "[[vivado/getting_started/2018.2|Getting Started with Vivado]]" guide//
 +  * **Basic familiarity with Digilent Waveforms**
 +
 +===== Downloads =====
 +|Vivado Project Repository |[[https://github.com/Digilent/USB104A7-ZmodADC|GIT Repo]]|
 +|Vivado Project Repository |[[https://github.com/Digilent/USB104A7-ZmodADC/releases|Releases]]|
 +
 +------
 +===== Demo Setup =====
 +
 +==== Hardware Setup ====
 +
 +1. Connect the Analog Discovery 2 board to the host computer using a MicroUSB cable.
 +
 +2. Connect the Zmod Scope 1410 to the USB104 A7 Syzygy port.
 +
 +3. Connect the 5V power supply to the USB104A7. Plug the USB104 A7 into the PC using the USB A cable.
 +
 +4. Screw the SMA to alligator clip cable into the Zmod Scope 1410, channel 1.
 +
 +5. Connect the AD2 to the alligator clips as follows:
 +  * W1 to channel 1 red clip.
 +  * GND to channel 1 black clip.
 +
 +==== Software Setup ====
 +
 +=== Programming the FPGA ===
 +
 +1. Download the release from the git repo [[https://github.com/Digilent/USB104A7-ZmodADC/releases|releases]]. This includes the DPTI Console Application, the Vivado project, and the Xilinx SDK files with the prebuilt output products from Vivado.
 +
 +NOTE: A precompiled bit+elf bit file has been included within the release/FPGA folder. This can be programmed to the FPGA using vivado hardware manager or Digilent Adept. Steps 2 through 8 can be skipped.
 +
 +2. Launch Xilinx SDK. Select the <release directory>/FPGA/sdk_workspace folder as the workspace.
 +
 +3. Click **File>Open Projects from File System**. Click Directory and select the <release directory>/FPGA/sdk_workspace.
 +
 +4. Select **USB104A7_ZmodADC_Demo**, **USB104A7_ZmodADC_Demo_bsp**, and **design_1_wrapper_hw_platform_0**. Click **Finish**. Xilinx SDK will import these projects and build them automatically.
 +
 +5. Program the FPGA by clicking **Xilinx>Program FPGA**. Click **Program**.
 +
 +6. To receive debug messages, open Tera Term and connect to the COM port associated with the USB104A7. Set the baud rate to 115200.
 +
 +7. Program the Microblaze processor with the elf file. In the Project Explorer view, select the **USB104A7_ZmodADC_Demo** project. Click **Run>Run (Ctrl+F11)**.
 +
 +8. Click **Launch on Hardware (System Debugger)** and then click **OK**.
 +
 +=== Generating a waveform ===
 +
 +1. Open Digilent Waveforms and select the Wavegen.
 +
 +2. Select the type of waveform to generate and click **Run**.
 +
 +----
 +===== Operating the Demo =====
 +
 +1. Run <release directory>/DPTI_App/DPTITransferWaveform/USB104A7_ZmodADCDemoApp.exe (USB104A7_ZmodADCDemoApp.o on Linux). The application will start up and connect to the USB104A7's DPTI port.
 +
 +2. Type "level 0.5" to set the trigger level to 0.5V. The Tera Term window should show debug information like in the picture below.
 +{{ :reference:programmable-logic:usb104a7:adc_app.png?direct&600 |}}
 +
 +3. Type "arm waveform.csv" to arm the Zmod Scope 1410. The program will arm the Zmod Scope 1410 and wait until the trigger occurs.
 +
 +4. When the trigger occurs, the device will send the data to the PC and it will be saved to the waveform.csv file.
 +{{ :reference:programmable-logic:usb104a7:adc_app_armed.png?direct&600 |}}
 +
 +----
 +===== Final Notes =====
 +
 +For more guides and example projects for your USB104 A7, please visit its [[programmable-logic:usb104a7:start|Resource Center]].
 +
 +For more information about how to use the other Digilent products featured in this demo, please visit their respective Resource Centers: \\ [[test-and-measurement:analog-discovery-2:start]], [[zmod:scope:start]].
 +
 +For technical support, please visit the [[https://forum.digilent.com|Digilent Forums]].
 +
 +{{tag>learn programmable-logic project usb104a7 zmodadc zmodscope1410}}