Wiki

Differences

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

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
resources:fpga:xilinx:pmod:ad7303 [01 Oct 2013 09:25] – [Functional Description] Alexandru.Tofanresources:fpga:xilinx:pmod:ad7303 [09 Jan 2021 00:49] (current) – user interwiki links Robin Getz
Line 9: Line 9:
   * A design which shows how to used the **AD7303 DAC** by outputting square and a sawtooth waveforms   * A design which shows how to used the **AD7303 DAC** by outputting square and a sawtooth waveforms
       * **HW Platform(s):**        * **HW Platform(s):** 
-          * [[http://www.xilinx.com/products/boards-and-kits/AES-S6MB-LX9.htm|Spartan-6 LX9 Microboard (Avnet)]] +          * [[xilinx>products/boards-and-kits/AES-S6MB-LX9.htm|Spartan-6 LX9 Microboard (Avnet)]] 
           * [[http://www.digilentinc.com/Products/Detail.cfm?NavPath=2,400,897&Prod=NEXYS3|Nexys™3 Spartan-6 FPGA Board (Digilent)]]           * [[http://www.digilentinc.com/Products/Detail.cfm?NavPath=2,400,897&Prod=NEXYS3|Nexys™3 Spartan-6 FPGA Board (Digilent)]]
           * [[http://www.em.avnet.com/en-us/design/drc/Pages/Zedboard.aspx|Avnet ZedBoard]] \\           * [[http://www.em.avnet.com/en-us/design/drc/Pages/Zedboard.aspx|Avnet ZedBoard]] \\
Line 26: Line 26:
  
 ==== Required Hardware ==== ==== Required Hardware ====
-  * [[http://www.xilinx.com/products/boards-and-kits/AES-S6MB-LX9.htm|Spartan-6 LX9 Microboard (Avnet)]]+  * [[xilinx>products/boards-and-kits/AES-S6MB-LX9.htm|Spartan-6 LX9 Microboard (Avnet)]]
   * [[http://www.digilentinc.com/Products/Detail.cfm?NavPath=2,400,897&Prod=NEXYS3|Nexys™3 Spartan-6 FPGA Board (Digilent)]]     * [[http://www.digilentinc.com/Products/Detail.cfm?NavPath=2,400,897&Prod=NEXYS3|Nexys™3 Spartan-6 FPGA Board (Digilent)]]  
   * [[http://www.em.avnet.com/en-us/design/drc/Pages/Zedboard.aspx|Avnet ZedBoard]]     * [[http://www.em.avnet.com/en-us/design/drc/Pages/Zedboard.aspx|Avnet ZedBoard]]  
Line 37: Line 37:
 ==== Running Demo (SDK) Program ==== ==== Running Demo (SDK) Program ====
  
-<WRAP center round tip 80%>If you are not familiar with LX9 and/or Xilix tools, please visit\\ [[http://www.xilinx.com/products/boards-and-kits/AES-S6MB-LX9.htm]] for details.\\+<WRAP center round tip 80%>If you are not familiar with LX9 and/or Xilix tools, please visit\\ [[xilinx>products/boards-and-kits/AES-S6MB-LX9.htm]] for details.\\
 If you are not familiar with Nexys™3 and/or Xilix tools, please visit\\ [[http://www.digilentinc.com/Products/Detail.cfm?NavPath=2,400,897&Prod=NEXYS3]] for details.\\ If you are not familiar with Nexys™3 and/or Xilix tools, please visit\\ [[http://www.digilentinc.com/Products/Detail.cfm?NavPath=2,400,897&Prod=NEXYS3]] for details.\\
 If you are not familiar with ZedBoard and/or Xilix tools, please visit\\ [[http://www.em.avnet.com/en-us/design/drc/Pages/Zedboard.aspx]] for details.</WRAP> If you are not familiar with ZedBoard and/or Xilix tools, please visit\\ [[http://www.em.avnet.com/en-us/design/drc/Pages/Zedboard.aspx]] for details.</WRAP>
Line 167: Line 167:
     * [[https://github.com/analogdevicesinc/no-OS/tree/master/Pmods/PmodDA1/cf_ad7303_zed|XPS Project]]\\     * [[https://github.com/analogdevicesinc/no-OS/tree/master/Pmods/PmodDA1/cf_ad7303_zed|XPS Project]]\\
     * [[https://github.com/analogdevicesinc/no-OS/tree/master/Pmods/PmodDA1/cf_lib/edk/pcores/axi_ad7303_v1_00_a|AD7303 IPCore]] \\     * [[https://github.com/analogdevicesinc/no-OS/tree/master/Pmods/PmodDA1/cf_lib/edk/pcores/axi_ad7303_v1_00_a|AD7303 IPCore]] \\
-    * [[https://github.com/analogdevicesinc/no-OS/tree/master/Pmods/Common/cf_lib|Required Project Libraries]]\\+    * [[https://github.com/analogdevicesinc/fpgahdl_xilinx/tree/master/cf_lib|Required Project Libraries]]\\
     * [[https://github.com/analogdevicesinc/no-OS/tree/master/Pmods/PmodDA1|PmodDA1 Driver Files]]\\     * [[https://github.com/analogdevicesinc/no-OS/tree/master/Pmods/PmodDA1|PmodDA1 Driver Files]]\\
     * [[https://github.com/analogdevicesinc/no-OS/tree/master/Pmods/PmodDA1/bin|Programming Script]]\\     * [[https://github.com/analogdevicesinc/no-OS/tree/master/Pmods/PmodDA1/bin|Programming Script]]\\
          
 </WRAP> </WRAP>
 +<wrap hide>
 +====== Linux Device Driver ======
 +
 +Connect PmodDA1 to the JB1 connector of the ZedBoard (upper row of pins).
 +
 +===== Preparing the SD Card =====
 +
 +In order to prepare the SD Card for booting Linux on the ZedBoard:
 +    * Download the device tree: [[https://github.com/analogdevicesinc/no-OS/tree/master/Pmods/PmodDA1/dts|PmodDA1 Linux devicetree]]
 +    * Follow the instructions on the following wiki page, but use the device tree downloaded on the previous step
 +        * [[/resources/tools-software/linux-drivers/platforms/zynq?s=adv7511&s=linux|Linux with HDMI video output on the ZED and ZC702]].
 +
 +Make sure you have an HDMI monitor connected to the ZedBoard, plug in the SD Card and power on the board.
 +If everything is correct, the system should boot up. If you don't have an HDMI monitor, connect to the board via UART, Baud Rate 115200.
 +
 +There are 2 ways to test the driver.
 +    * Using the terminal window
 +    * Using the ADI IIO Oscilloscope 
 +
 +===== Using the terminal window =====
 +
 +Open a new terminal window by pressing **Ctrl+Alt+T**.
 +
 +Navigate to the location of the device and identify it using the following commands:
 +<code>
 +cd /sys/bus/iio/devices/
 +ls
 +iio:device0 iio:device1 trigger0
 +cd iio\:device0
 +cat name
 +ad7303
 +</code>
 +
 +If the **cat name** command doesn't return **ad7303**, then change the number of the iio:device, and check again.
 +<code>
 +cd ..
 +cd iio\:device1
 +cat name
 +</code>
 +
 +To see the list of options that the AD7303 driver provides, type:
 +<code>
 +ls
 +buffer  out_voltage0_powerdown  out_voltage1_raw   scan_elements  uevent
 +dev     out_voltage0_raw        out_voltage_scale  subsystem
 +name    out_voltage1_powerdown  power              trigger
 +</code>
 +
 +To set the raw output voltage, type:
 +<code>
 +echo 120 > out_voltage0_raw
 +</code>
 +
 +To check that the raw output voltage has been set, you can type:
 +<code>
 +cat out_voltage0_raw
 +120
 +</code>
 +
 +If you want to set the voltage for the second channel, replace out_voltage0_raw with out_voltage1_raw.
 +
 +{{:resources:fpga:xilinx:pmod:ad7303_linaro_terminal.jpg?600|AD7303 Set Voltage from Terminal}}
 +
 +The commands written above can also be used if not using an HDMI monitor and a wireless keyboard, by using a serial terminal, and typing the commands after the system boot-up is complete.
 +
 +{{:resources:fpga:xilinx:pmod:ad7303_linux_serial.jpg?600|AD7303 Read Voltage from Serial Terminal}}
 +
 +===== Using the ADI IIO Oscilloscope =====
 +
 +Install the ADI IIO Oscilloscope using the instructions from the following wiki page:
 +    * [[/resources/tools-software/linux-software/iio_oscilloscope|IIO Oscilloscope]]
 +
 +Launch the ADI IIO Oscilloscope.
 +
 +Open the **Settings** menu and select **Impulse generator** submenu. A popup window will appear and allow you to select an impulse generator (a high resolution timer) and its frequency. The conversions for both the ADC and the DAC are started by the impulses of the generator. Click the **OK** button. 
 +
 +{{:resources:fpga:xilinx:pmod:ad7476a_hrtimer.jpg?600|AD7476A IIO Oscilloscope Impulse Timer Select}}
 +
 +If the **Impulse generator** option is not available, you can configure the timer manually using the following commands:
 +
 +<code>
 +cd /sys/bus/iio/devices
 +ls
 +iio:device0  iio:device1  trigger0
 +cd trigger0
 +echo 1000 > frequency
 +cat frequency
 +1000
 +</code>
 +
 +{{:resources:fpga:xilinx:pmod:hrtimer_manual_config.jpg?600|Manually configure Impulse Timer}}
 +
 +Select **AD7303** tab from the top options. Click on **Single value output**, type in the desired value, and click **Save** at the bottom of the window.
 +
 +{{:resources:fpga:xilinx:pmod:ad7303_iio_single_value.jpg?600|Output single value using IIO Oscilloscope}}
 +
 +Select **AD7303** tab from the top options. Click on **Waveform output**, select the type of waveform, configure the desired **Amplitude**, **Offset** and **Frequency**, and click **Save** at the bottom of the window. PmodDA1 Channel0 should now be outputting the configured waveform.
 +
 +{{:resources:fpga:xilinx:pmod:ad7303_iio_waveform.jpg?600|Output waveform using IIO Oscilloscope}}
  
 ====== AD7303 Pmod and AD7476 Pmod Reference Design ====== ====== AD7303 Pmod and AD7476 Pmod Reference Design ======
 {{page>resources:fpga:xilinx:pmod:ad7476a_ad7303_nexys3}} {{page>resources:fpga:xilinx:pmod:ad7476a_ad7303_nexys3}}
 +</wrap>
 ====== More information ====== ====== More information ======
   * [[ez>community/fpga|ask questions about the FPGA reference design]]   * [[ez>community/fpga|ask questions about the FPGA reference design]]
   * Example questions: {{rss>http://ez.analog.com/community/feeds/allcontent/atom?community=2061 5 author 1d}}   * Example questions: {{rss>http://ez.analog.com/community/feeds/allcontent/atom?community=2061 5 author 1d}}
resources/fpga/xilinx/pmod/ad7303.1380612348.txt.gz · Last modified: 01 Oct 2013 09:25 by Alexandru.Tofan