docs: page for AD7768 IP (#1322)

Signed-off-by: Jorge Marques <jorge.marques@analog.com>
Signed-off-by: PopPaul2021 <paul.pop@analog.com>
main
PopPaul2021 2024-05-13 19:17:37 +03:00 committed by GitHub
parent 8e32f0e21d
commit 67ab163ef7
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
3 changed files with 175 additions and 0 deletions

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 8.3 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 25 KiB

View File

@ -0,0 +1,167 @@
.. _axi_ad7768:
AXI AD7768
================================================================================
.. hdl-component-diagram::
The :git-hdl:`AXI AD7768 <library/axi_ad7768>` IP core
can be used to interface the :adi:`AD7768` and
:adi:`AD7768-4` ADC, in 1, 2, 4 or 8 data lines active.
More about the generic framework interfacing ADCs, that contains the
``up_adc_channel`` and ``up_adc_common modules``, can be read in :ref:`axi_adc`.
Features
--------------------------------------------------------------------------------
* AXI based configuration
* CRC validation flag
* Configurable number of active data lines
* Real-time data header access
* Vivado and Quartus compatible
Files
--------------------------------------------------------------------------------
.. list-table::
:header-rows: 1
* - Name
- Description
* - :git-hdl:`library/axi_ad7768/axi_ad7768.v`
- Verilog source for the AXI AD7768.
* - :git-hdl:`library/axi_ad7768/axi_ad7768_if.v`
- Verilog source for the AXI AD7768 interface module.
* - :git-hdl:`library/axi_ad7768/axi_ad7768_ip.tcl`
- TCL script to generate the Vivado IP-integrator project.
* - :git-hdl:`library/axi_ad7768/axi_ad7768_hw.tcl`
- TCL script to generate the Quartus IP-integrator project.
Block Diagram
--------------------------------------------------------------------------------
.. image:: block_diagram.svg
:alt: AXI AD7768 block diagram
Configuration Parameters
--------------------------------------------------------------------------------
.. hdl-parameters::
* - ID
- Core ID should be unique for each IP in the system
* - NUM_CHANNELS
- Select number of ADC channels. 8 for AD7768 and 4 for AD7768-4
Interface
--------------------------------------------------------------------------------
.. hdl-interfaces::
* - clk_in
- Input clock.
* - ready_in
- Input ready signal.
* - data_in
- Serial input data.
* - adc_dovf
- Data overflow input, from the DMA.
* - adc_clk
- This is the clock domain that most of the modules of the core run on.
* - adc_reset
- Output reset, on the adc_clk domain.
* - adc_sshot
- Single shot conversion.
* - adc_enable_*
- Set when the channel is enabled, activated by software.
* - adc_valid_*
- Set when valid channel data is available on the bus.
* - adc_data_*
- Channel parallel output data.
* - adc_data
- Serial output data.
* - adc_valid
- Set when valid data is available in the serial output.
* - adc_sync
- Start of transfer flag for serial data.
* - adc_crc_ch_mismatch
- Channels CRC mismatch flags register.
* - s_axi
- Standard AXI Slave Memory Map interface.
Detailed Architecture
--------------------------------------------------------------------------------
.. image:: detailed_architecture.svg
:alt: AXI AD7768 detailed architecture
Detailed Description
--------------------------------------------------------------------------------
The top module, axi_ad7768, instantiates:
* The ad7768 interface module
* The ADC channel register map
* The ADC common register map
* The AXI handling interface
The AD7768 interface module has as input the serial data lines, the ready_in
signal and the interface clock. Data is deserialized according to the number
of active lanes. The interface module also implements a parallel CRC check
algorithm.
The data from the interface module is processed by the adc channel module.
``up_adc_common`` module implements the ADC COMMON register map, allowing for
basic monitoring and control of the ADC.
``up_adc_channel`` module implements the ADC CHANNEL register map, allowing for
basic monitoring and control of the ADC's channel.
Register Map
--------------------------------------------------------------------------------
.. hdl-regmap::
:name: COMMON
:no-type-info:
.. hdl-regmap::
:name: ADC_COMMON
:no-type-info:
.. hdl-regmap::
:name: ADC_CHANNEL
:no-type-info:
Design Guidelines
--------------------------------------------------------------------------------
The control of the AD7768 chip is done through a SPI interface, which is needed
at system level.
The *ADC interface signals* must be connected directly to the top file of the
design, as IO primitives are part of the IP.
The example design uses a DMA to move the data from the output of the IP to
memory.
If the data needs to be processed in HDL before moved to the memory, it can be
done at the output of the IP (at system level) or inside of the adc interface
module (at IP level).
The example design uses a processor to program all the registers. If no
processor is available in your system, you can create your own IP starting from
the interface module.
Software Guidelines
--------------------------------------------------------------------------------
Linux is suported using :git-linux:`/`.
References
-------------------------------------------------------------------------------
* :git-hdl:`library/axi_ad7768`
* :adi:`AD7768`
* :adi:`AD7768-4`
* :git-linux:`/`
* :xilinx:`Zynq-7000 SoC Overview <support/documentation/data_sheets/ds190-Zynq-7000-Overview.pdf>`
* :xilinx:`Zynq-7000 SoC Packaging and Pinout <support/documentation/user_guides/ug865-Zynq-7000-Pkg-Pinout.pdf>`