DMA使用之ADC示波器（AN706）
=============================

本实验练习使用ADC，实验中使用的ADC模块型号为AN706，最大采样率200Khz，精度为16位。实验中把AN706的8路输入以波形方式在VGA上显示出来，我们可以用更加直观的方式观察波形，是一个数字示波器雏形。

.. image:: images/14_media/image1.png

8路200K采样16位ADC模块

.. image:: images/14_media/image2.png

实验预期效果

实验原理
--------

AD7606是一款集成式8通道同步采样数据采集系统，片内集成输入放大器、过压保护电路、二阶模拟抗混叠滤波器、模拟多路复用器、16位200
kSPS SAR ADC和一个数字滤波器, 2.5
V基准电压源、基准电压缓冲以及高速串行和并行接口。

AD7606采用+5V单电源供电, 可以处理±10V和±5V真双极性输入信号,
同时所有通道均以高达200KSPS的吞吐速率采样。输入钳位保护电路可以耐受最高达±16.5V的电压。

无论以何种采样频率工作,
AD7606的模拟输入阻抗均为1M欧姆。它采用单电源工作方式,
具有片内滤波和高输入阻抗, 因此无需驱动运算放大器和外部双极性电源。

AD7606抗混叠滤波器的3dB截至频率为22kHz; 当采样速率为200kSPS时,
它具有40dB抗混叠抑制特性。灵活的数字滤波器采用引脚驱动,
可以改善信噪比(SNR), 并降低3dB带宽。

.. image:: images/14_media/image3.png

AD7606时序
~~~~~~~~~~

.. image:: images/14_media/image4.png

AD7606可以对所有8路的模拟输入通道进行同步采样。当两个CONVST引脚(CONVSTA和CONVSTB)连在一起时，所有通道同步采样。此共用CONVST信号的上升沿启动对所有模拟输入通道的同步采样(V1至V8)。

AD7606内置一个片内振荡器用于转换。所有ADC通道的转换时间为tCONV。BUSY信号告知用户正在进行转换，因此当施加CONVST上升沿时，BUSY变为逻辑高电平，在整个转换过程结束时变成低电平。BUSY信号下降沿用来使所有八个采样保持放大器返回跟踪模式。BUSY下降沿还表示，现在可以从并行总线DB[15:0]读取8个通道的数据。

AD7606配置
~~~~~~~~~~

在AN706
8通道的AD模块硬件电路设计中，我们对AD7606的3个配置Pin脚通过加上拉或下拉电阻来设置AD7606的工作模式。

AD7606这款芯片支持外部基准电压输入或内部基准电压。如果使用外部基准电压，芯片的REFIN/REFOUT需要外接一个2.5V的基准源。如果使用内部的基准电压。REFIN/REFOUT引脚为2.5V的内部基准电压输出。REF
SELECT引脚用于选择内部基准电压或外部基准电压。在本模块中，因为考虑到AD7606的内部基准电压的精度也非常高（2.49V~2.505V)，所以电路设计选择使用了内部的基准电压。

+---------------------+---------------+--------------------------------+
| **Pin脚名**         | **设置电平**  | **说明**                       |
+=====================+===============+================================+
| REF SELECT          | 高电平        | 使用内部的基准电压2.5V         |
+---------------------+---------------+--------------------------------+

AD7606的AD转换数据采集可以采用并行模式或者串行模式，用户可以通过设置PAR/SER/BYTE
SEL引脚电平来设置通信的模式。我们在设计的时候，选择并行模式读取AD7606的AD数据。

+-----------------------+--------------+-------------------------------+
| **Pin脚名**           | **设置电平** | **说明**                      |
+=======================+==============+===============================+
| PAR/SER/BYTE SEL      | 低电平       | 选择并行接口                  |
+-----------------------+--------------+-------------------------------+

AD7606的AD模拟信号的输入范围可以设置为±5V或者是±10V，当设置±5V输入范围时，1LSB=152.58uV；当设置±10V输入范围时，1LSB=305.175uV
。用户可以通过设置RANGE引脚电平来设置模拟输入电压的范围。我们在设计的时候，选择±5V的模拟电压输入范围。

+-----------------------+--------------+-------------------------------+
| **Pin脚名**           | **设置电平** | **说明**                      |
+=======================+==============+===============================+
| RANGE                 | 低电平       | 模拟信号输入范围选择：±5V     |
+-----------------------+--------------+-------------------------------+

AD7606内置一个可选的数字一阶sinc滤波器，在使用较低吞吐率或需要更高信噪比的应用中，应使用滤波器。数字滤波器的过采样倍率由过采样引脚OS[2:0]控制。下表提供了用来选择不同过采样倍率的过采样位解码。

.. image:: images/14_media/image5.png

在AN706模块的硬件设计中, OS[2:0]
已经引到外部的接口中，FPGA或CPU可以通过控制OS[2:0]的管脚电平来选择是否使用滤波器，以达到更高的测量精度。

AD7606 AD转换
~~~~~~~~~~~~~

AD7606的输出编码方式为二进制补码。所设计的码转换在连续LSB整数的中间(既1/2LSB和3/2LSB)进行。AD7606的LSB大小为FSR/65536。AD7606的理想传递特性如下图所示：

.. image:: images/14_media/image6.png

硬件环境搭建
------------

.. image:: images/14_media/image7.png

硬件搭建
~~~~~~~~

1. 基于AN108的工程，删除ad9280_sample模块，添加ad7606_sample模块，并将AD7606的引脚引出，修改名称。IP核在repo文件夹。

.. image:: images/14_media/image8.png

2. 修改FCLK_CLK2频率为50MHz，用于AD7606采集

.. image:: images/14_media/image9.png

3. 修改AXIS-Stream Register
   Slice的TDATA宽度为2，因为ad7606的数据宽度是16bit。DMA的流接口宽度不需要修改，自动适应位宽。

.. image:: images/14_media/image10.png

4. 连接相关信号，Generate Output Products

.. image:: images/14_media/image11.png

5. 在XDC文件中绑定AD7606引脚，之后生成bit文件。

ADC自定义IP功能介绍
~~~~~~~~~~~~~~~~~~~

由于需要将ADC采集的数据通过DMA传输到ZYNQ，与DMA的接口为AXIS流接口，因此需要将ADC数据转换成AXIS流数据，同时ADC的时钟与AXIS时钟频率不同，因此需要添加FIFO进行跨时钟域数据处理。同时需要实现AXIS
Master功能。工作流程为：

a. ARM配置启动寄存器和采集长度寄存器。

b. 将8个通道数据顺序存入FIFO。

c. DMA使用AXIS接口读取FIFO中的数据，直到读取到所配置的数据量。

Vitis程序开发
-------------

1. 与AN108的使用类似，但需要进行8通道叠加，由于ADC数据写入FIFO中是按CH1~CH8顺序存储，因此定义了二维数组，将每个通道数据独立出来，在XAxiDma_Adc_Wave函数中调整顺序。

.. image:: images/14_media/image12.png

2. 在XAxiDma_ADC函数中，为了能够看到每个通道的数据，将每个通道的系数coe做了微调，因此显示的位置有些偏移。

.. image:: images/14_media/image13.png

3. ADC的参数定义如下

.. image:: images/14_media/image14.png

板上验证
--------

1. 连接电路如下，插入AD706模块，连接SMA到波形发生器，为了方便观察显示效果，波形发生器采样频率设置范围为500Hz~10KHz，电压幅度最大为10V

.. image:: images/14_media/image15.png

AX7015硬件连接图

.. image:: images/14_media/image16.png

AX7021硬件连接图（J15扩展口）

.. image:: images/14_media/image17.png

AX7020/AX7010硬件连接图（J11扩展口）

.. image:: images/14_media/image18.png

AX7Z035/AX7Z100硬件连接图

.. image:: images/14_media/image19.png

AX7Z020/AX7Z010硬件连接图（扩展口J21）

2. 下载程序

.. image:: images/14_media/image20.png

3. 结果如下

.. image:: images/14_media/image21.jpeg

AX7015连接及显示结果

.. image:: images/14_media/image22.png

波形细节图
