docs: Add pulsar_adc project documentation (#1275)

Signed-off-by: Ioan-daniel Pop <Pop.Ioan-daniel@analog.com>
main
PIoandan 2024-02-21 15:54:50 +02:00 committed by GitHub
parent a7442d3c78
commit af64c55613
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
4 changed files with 4491 additions and 0 deletions

View File

@ -35,6 +35,7 @@ HDL Reference Designs
CN0363 <projects/cn0363/index>
CN0540 <projects/cn0540/index>
CN0561 <projects/cn0561/index>
PULSAR-ADC <projects/pulsar_adc/index>
.. role:: red
.. role:: green

View File

@ -0,0 +1,416 @@
.. _pulsar_adc:
PULSAR-ADC HDL project
=================================================================================
Overview
---------------------------------------------------------------------------------
Depending on the type of connector it uses, the Pulsar family is divided into
the products which have **PMOD** connectors and **FMC** connectors.
PulSAR converters which have PMOD boards associated with them are low power ADCs
which offer very high performance from 14-bits up to 18-bits with throughputs
ranging from 100ksps to 1.3MSPS. The boards are designed to demonstrate the
ADC's performance and to provide an easy digital interface for a variety of
system applications. The PulSAR family share the same interface and the same PCB,
the differences being found in their performance. A full description of these
products are available in their respective data sheets and should be consulted
when utilizing the boards.
ADAQ40xx families is also part of the family of pulsar converters with PMOD
connector. This type of boards come with the :adi:`EVAL-PMD-IB1Z` PMOD to
field programmable gate array (FPGA) mezzanine card (FMC) interposer board that
interfaces with the system demonstration controller board.
The :adi:`ADAQ4003` is an 18-bit precision data acquisition sub-system SiP
design on a laminate that includes the :adi:`AD4003` ADC with a fully
differential driver the :adi:`ADA4945-1`, a reference buffer
(the :adi:`ADA4807-1`), a precision resistor iPassive network on a separate die
along with discrete capacitors and resistors. The device solves many design
challenges for a wide range of applications similar to AD400x, yet it still
provides the flexibility. It offers over 75% area savings compared to discrete
design and reduces TTM.
PulSAR converters which have FMC boards associated with them are AD40xx family.
The :adi:`AD4003` / :adi:`AD4007` / :adi:`AD4011` / :adi:`AD4020` are low noise,
low power, high speed, 18-bit, precision successive approximation register (SAR)
analog-to-digital converters (ADCs). The :adi:`AD4003`, :adi:`AD4007`, and
:adi:`AD4011` offer 2 MSPS, 1 MSPS, and 500 kSPS throughputs, respectively.
They incorporate ease of use features that reduce signal chain power consumption,
reduce signal chain complexity, and enable higher channel density. The high-Z
mode, coupled with a long acquisition phase, eliminates the need for a dedicated
high power, high speed ADC driver, thus broadening the range of low power
precision amplifiers that can drive these ADCs directly while still achieving
optimum performance. The input span compression feature enables the ADC driver
amplifier and the ADC to operate off common supply rails without the need for a
negative supply while preserving the full ADC code range. The low serial
peripheral interface (SPI) clock rate requirement reduces the digital
input/output power consumption, broadens processor options, and simplifies the
task of sending data across digital isolation.
Applications:
* Battery-powered equipment
* Data acquisition
* Instrumentation
* Medical instruments
* Process controls
* Machine automation
Supported boards
-------------------------------------------------------------------------------
PulSAR with PMOD connector:
- :adi:`EVAL-AD7942-PMDZ <EVAL-AD7942-PMDZ>`
- :adi:`EVAL-AD7946-PMDZ <EVAL-AD7946-PMDZ>`
- :adi:`EVAL-AD7988-1-PMDZ <EVAL-AD7988-1-PMDZ>`
- :adi:`EVAL-AD7685-PMDZ <EVAL-AD7685-PMDZ>`
- :adi:`EVAL-AD7687-PMDZ <EVAL-AD7687-PMDZ>`
- :adi:`EVAL-AD7691-PMDZ <EVAL-AD7691-PMDZ>`
- :adi:`EVAL-AD7686-PMDZ <EVAL-AD7686-PMDZ>`
- :adi:`EVAL-AD7688-PMDZ <EVAL-AD7688-PMDZ>`
- :adi:`EVAL-AD7693-PMDZ <EVAL-AD7693-PMDZ>`
- :adi:`EVAL-AD7988-5-PMDZ <EVAL-AD7988-5-PMDZ>`
- :adi:`EVAL-AD7980-PMDZ <EVAL-AD7980-PMDZ>`
- :adi:`EVAL-AD7983-PMDZ <EVAL-AD7983-PMDZ>`
- :adi:`EVAL-AD7690-PMDZ <EVAL-AD7690-PMDZ>`
- :adi:`EVAL-AD7982-PMDZ <EVAL-AD7982-PMDZ>`
- :adi:`EVAL-AD7984-PMDZ <EVAL-AD7984-PMDZ>`
- :adi:`EVAL-ADAQ40xx <EVAL-ADAQ40xx>`
PulSAR with FMC connector:
- :adi:`EVAL-AD400x-FMCZ <EVAL-AD400x-FMCZ>`
Supported devices
-------------------------------------------------------------------------------
PulSAR with PMOD connector:
- :adi:`AD7942`
- :adi:`AD7946`
- :adi:`AD7988-1`
- :adi:`AD7685`
- :adi:`AD7687`
- :adi:`AD7691`
- :adi:`AD7686`
- :adi:`AD7688`
- :adi:`AD7693`
- :adi:`AD7988-5`
- :adi:`AD7980`
- :adi:`AD7983`
- :adi:`AD7690`
- :adi:`AD7982`
- :adi:`AD7984`
- :adi:`ADAQ4003`
PulSAR with FMC connector:
- :adi:`AD4003`
- :adi:`AD4007`
- :adi:`AD4011`
- :adi:`AD4020`
Supported carriers
-------------------------------------------------------------------------------
- :xilinx:`Cora Z7-07S <products/boards-and-kits/1-1qlaz7n.html>` PMOD connector
- :xilinx:`ZedBoard <products/boards-and-kits/1-8dyf-11.html>` on FMC slot
Other required hardware
-------------------------------------------------------------------------------
- :adi:`EVAL-PMD-IB1Z <EVAL-PMD-IB1Z>`
.. note::
Only for ADAQ40xx
Block design
-------------------------------------------------------------------------------
Block diagram
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
The data path and clock domains are depicted in the below diagrams:
PulSAR_ADC_PMDZ
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.. image:: pulsar_adc_pmod_hdl.svg
:width: 800
:align: center
:alt: PulSAR_ADC_PMOD block diagram
PulSAR_ADC_FMC
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.. image:: pulsar_adc_fmc_hdl.svg
:width: 800
:align: center
:alt: PulSAR_ADC_FMC block diagram
Configuration modes
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
For AD40xx/ADAQ40xx projects the AD40XX_ADAQ400X_N parameter defines the type
of ADC (AD40xx or ADAQ40xx). By default is set to 1. Depending on the project,
some hardware modifications need to be done on the board and/or make command:
In case of the **ADAQ40xx** project:
.. code-block::
make AD40XX_ADAQ400X_N=0
In case of the **AD40xx** project:
.. code-block::
make AD40XX_ADAQ400X_N=1
CPU/Memory interconnects addresses
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
The addresses are dependent on the architecture of the FPGA, having an offset
added to the base address from HDL(see more at :ref:`architecture`).
========================= ===========
Instance Address
========================= ===========
spi_pulsar_adc_axi_regmap 0x44A0_0000
axi_pulsar_adc_dma 0x44A3_0000
spi_clkgen 0x44A7_0000
pulsar_adc_trigger_gen 0x44B0_0000
========================= ===========
I2C connections
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.. list-table::
:widths: 20 20 20 20 20
:header-rows: 1
* - I2C type
- I2C manager instance
- Alias
- Address
- I2C subordinate
* - PL
- iic_fmc
- axi_iic_fmc
- 0x4162_0000
- ---
* - PL
- iic_main
- axi_iic_main
- 0x4160_0000
- ---
.. note::
Only for AD40xx/ADAQ40xx
SPI connections
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.. list-table::
:widths: 25 25 25 25
:header-rows: 1
* - SPI type
- SPI manager instance
- SPI subordinate
- CS
* - PL
- axi_spi_engine
- PulSAR_ADC
- 0
GPIOs
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
The Software GPIO number is calculated as follows:
- Zynq-7000: if PS7 is used, then offset is 54
.. list-table::
:widths: 25 25 25 25
:header-rows: 2
* - GPIO signal
- Direction
- HDL GPIO EMIO
- Software GPIO
* -
- (from FPGA view)
-
- Zynq-7000
* - pulsar_adc_spi_pd *
- OUT
- 32
- 86
* - ad40xx_amp_pd **
- INOUT
- 32
- 86
.. admonition:: Legend
:class: note
- ``*`` instantiated only for PulSAR_ADC_PMDZ projects
- ``**`` instantiated only for AD40XX_ADAQ400X_N=1 (AD40xx)
Interrupts
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Below are the Programmable Logic interrupts used in this project.
================== === ========== ===========
Instance name HDL Linux Zynq Actual Zynq
================== === ========== ===========
axi_pulsar_adc_dma 13 57 89
spi_pulsar_adc 12 56 88
================== === ========== ===========
Building the HDL project
-------------------------------------------------------------------------------
The design is built upon ADI's generic HDL reference design framework.
ADI does not distribute the bit/elf files of these projects so they
must be built from the sources available :git-hdl:`here </>`. To get
the source you must
`clone <https://git-scm.com/book/en/v2/Git-Basics-Getting-a-Git-Repository>`__
the HDL repository, and then build the project as follows:.
**Linux/Cygwin/WSL**
.. code-block::
:linenos:
user@analog:~$ cd hdl/projects/pulsar_adc/zed
user@analog:~/hdl/projects/pulsar_adc/zed$ make AD40XX_ADAQ400X_N=1
The result of the build, if parameters were used, will be in a folder named
by the configuration used:
if the following command was run
``make AD40XX_ADAQ400X_N=0``
then the folder name will be:
``AD40XX_ADAQ400X_N0``
For projects that have coraz7s as a carrier, the build is done without parameters.
A more comprehensive build guide can be found in the :ref:`build_hdl` user guide.
Resources
-------------------------------------------------------------------------------
Hardware related
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
PulSAR with PMOD connector:
- Product datasheets:
- :adi:`AD7942`
- :adi:`AD7946`
- :adi:`AD7988-1`
- :adi:`AD7685`
- :adi:`AD7687`
- :adi:`AD7691`
- :adi:`AD7686`
- :adi:`AD7688`
- :adi:`AD7693`
- :adi:`AD7988-5`
- :adi:`AD7980`
- :adi:`AD7983`
- :adi:`AD7690`
- :adi:`AD7982`
- :adi:`AD7984`
- :adi:`UG-682, Evaluation Board User Guide <media/en/technical-documentation/user-guides/6-Lead_SOT-23_ADC_Driver_UG-682.pdf>`
- :adi:`UG-340, Evaluation Board User Guide <media/en/technical-documentation/user-guides/UG-340.pdf>`
PulSAR with FMC connector:
- :adi:`AD4003`
- :adi:`AD4007`
- :adi:`AD4011`
- :adi:`AD4020`
- :adi:`ADAQ4003`
- :adi:`UG-1042, Evaluation Board User Guide <media/en/technical-documentation/user-guides/UG-1042.pdf>`
- :adi:`UG-1042, Evaluation Board User Guide <media/en/technical-documentation/user-guides/eval-adaq4001fmcz_eval-adaq4003fmcz-ug-1533.pdf>`
HDL related
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- :git-hdl:`pulsar_adc HDL project source code <projects/pulsar_adc>`
- :dokuwiki:`[Wiki] PulSAR ADC PMOD HDL start guide <resources/eval/user-guides/pulsar_adc_pmods_hdl>`
- :dokuwiki:`[Wiki] PulSAR ADC PMOD quick start guide <resources/eval/user-guides/circuits-from-the-lab/pulsar-adc-pmods>`
- :dokuwiki:`[Wiki] AD40xx/ADAQ40xx quick start guide <resources/eval/user-guides/circuits-from-the-lab/pulsar-adc-pmods>`
.. list-table::
:widths: 30 35 35
:header-rows: 1
* - IP name
- Source code link
- Documentation link
* - AXI_CLKGEN
- :git-hdl:`library/axi_clkgen <library/axi_clkgen>`
- :dokuwiki:`[Wiki] <resources/fpga/docs/axi_clkgen>`
* - AXI_DMAC
- :git-hdl:`library/axi_dmac <library/axi_dmac>`
- :ref:`here <axi_dmac>`
* - AXI_HDMI_TX
- :git-hdl:`library/axi_hdmi_tx <library/axi_hdmi_tx>` *
- :dokuwiki:`[Wiki] <resources/fpga/docs/axi_hdmi_tx>`
* - AXI_I2S_ADI
- :git-hdl:`library/axi_i2s_adi <library/axi_i2s_adi>` *
- ---
* - AXI_PWM_GEN
- :git-hdl:`library/axi_pwm_gen`
- :dokuwiki:`[Wiki] <resources/fpga/docs/axi_pwm_gen>`
* - AXI_SPDIF_TX
- :git-hdl:`library/axi_spdif_tx <library/axi_spdif_tx>` *
- ---
* - AXI_SYSID
- :git-hdl:`library/axi_sysid <library/axi_sysid>`
- :dokuwiki:`[Wiki] <resources/fpga/docs/axi_sysid>`
* - AXI_SPI_ENGINE
- :git-hdl:`library/spi_engine/axi_spi_engine <library/spi_engine/axi_spi_engine>`
- :ref:`here <spi_engine axi>`
* - SPI_ENGINE_EXECUTION
- :git-hdl:`library/spi_engine/spi_engine_execution <library/spi_engine/spi_engine_execution>`
- :ref:`here <spi_engine execution>`
* - SPI_ENGINE_INTERCONNECT
- :git-hdl:`library/spi_engine/spi_engine_interconnect <library/spi_engine/spi_engine_interconnect>`
- :ref:`here <spi_engine interconnect>`
* - SPI_ENGINE_OFFLOAD
- :git-hdl:`library/spi_engine/spi_engine_offload`
- :ref:`here <spi_engine offload>`
* - SYSID_ROM
- :git-hdl:`library/sysid_rom <library/sysid_rom>`
- :dokuwiki:`[Wiki] <resources/fpga/docs/axi_sysid>`
* - UTIL_I2C_MIXER
- :git-hdl:`library/util_i2c_mixer <library/util_i2c_mixer>` *
- ---
.. admonition:: Legend
:class: note
- ``*`` instantiated only for AD40xx/ADAQ40xx
- :ref:`SPI Engine Framework documentation <spi_engine>`
Software related
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- :git-linux:`PulSAR ADC PMDZ Linux driver source code <drivers/iio/adc/ad_pulsar.c>`
- :git-linux:`AD40xx/ADAQ40xx Linux driver source code <drivers/iio/adc/ad400x.c>`
.. include:: ../common/more_information.rst
.. include:: ../common/support.rst

File diff suppressed because it is too large Load Diff

After

Width:  |  Height:  |  Size: 91 KiB

File diff suppressed because it is too large Load Diff

After

Width:  |  Height:  |  Size: 91 KiB