差别
这里会显示出您选择的修订版和当前版本之间的差别。
两侧同时换到之前的修订记录 前一修订版 后一修订版 | 前一修订版 | ||
acl_hsadc [2022/11/08 13:59] gongyu [3.3 ADALM2000中用到的高速ADC] |
acl_hsadc [2022/12/02 18:10] (当前版本) gongyu [3.8 参考技术文章] |
||
---|---|---|---|
行 1: | 行 1: | ||
[[acdlearning|模拟电路工程化设计大师课]] | [[acdlearning|模拟电路工程化设计大师课]] | ||
- | ## 第三节:口袋仪器中ADC的应用要点 | + | ## 第三节:ADC的使用 |
上一节课,我们介绍了示波器以及广义的数据采集系统中的核心器件模数转换器ADC,并通过实验了解了几种不同的ADC的构成方式。这一节课我们具体看一下类似ADALM2000这种口袋仪器的产品中可以选用什么样的器件来做模数转换,以及在具体的设计中要注意哪些要点。 | 上一节课,我们介绍了示波器以及广义的数据采集系统中的核心器件模数转换器ADC,并通过实验了解了几种不同的ADC的构成方式。这一节课我们具体看一下类似ADALM2000这种口袋仪器的产品中可以选用什么样的器件来做模数转换,以及在具体的设计中要注意哪些要点。 | ||
行 27: | 行 27: | ||
* Analog Devices Inc的[AD9216](https://www.analog.com/cn/products/ad9216.html):双路10位、65/80/105 MSPS ADC | * Analog Devices Inc的[AD9216](https://www.analog.com/cn/products/ad9216.html):双路10位、65/80/105 MSPS ADC | ||
- | ### 3.3 M2K中用到的高速ADC | + | ### 3.3 AD9963介绍 |
在[[m2000_instru|ADALM2000(M2K)]]中使用的是ADI的一款12位、低功耗、宽带MxFE芯片[[https://www.eetree.cn/doc/detail/2307|AD9963]],它是72引脚、无铅小型LFCSP的封装。{{ ::ad9963chip.png |}} | 在[[m2000_instru|ADALM2000(M2K)]]中使用的是ADI的一款12位、低功耗、宽带MxFE芯片[[https://www.eetree.cn/doc/detail/2307|AD9963]],它是72引脚、无铅小型LFCSP的封装。{{ ::ad9963chip.png |}} | ||
行 44: | 行 44: | ||
* FPGA接口及参考Verilog代码 | * FPGA接口及参考Verilog代码 | ||
* MCU接口- RP2040或STM32F4芯片 | * MCU接口- RP2040或STM32F4芯片 | ||
+ | |||
+ | {{ :ad9963fpga.png |}} | ||
+ | |||
+ | The ADALM2000 (M2K) is built around the XC7Z010 Xilinx Zynq FPGA. | ||
+ | Booting is done from a 32MB QSPI FLASH, connected directly to the PS7 block. | ||
+ | The system memory is 512MB RAM, which is also used for the file system. The DDR interface is a 16 bits interface running at 500 MHz. The frequency was chosen so that a single PLL runs inside of the PS7 block generating all the required PS7 clocks, consuming minimum power. | ||
+ | The FPGA drives 16 GPIOs for the logic analyzer, 2 GPIOs for triggers, a 14 pin interface to the AD9963 ADC and a 14 pin interface to the AD9963 DAC. It also has several generic GPIOs, an SPI and an I2C interface for configuring the board. | ||
+ | The control GPIOs and the SPI are driven by the PS7 block in order to minimize the PL resource usage. | ||
+ | The I2C is implemented by an AXI I2C IP because the PS7 I2C has several limitations which make it not suitable for this project. | ||
+ | |||
+ | The oscilloscope related logic transfers data from the AD9963 chip with the AD9963 TRX interface goes through the decimation block, the analog triggering block, the history FIFO and streams data to memory using the DMA. | ||
+ | The analog waveform generator transfers data from the memory using two DMAs goes through the interpolation block and ends with the AD9963 TX interface which transfers data to the AD9963 chip. Two DMAs are used in order to have different orders of magnitude for the frequency of the two AWG channels without needing to transfer a very large number of samples. | ||
+ | The logic analyzer and pattern generator logic are mostly implemented in the same IP to which a history FIFO and DMAs are added. | ||
+ | |||
+ | The AXI_AD9963 IP is implementing the interfacing with the AD9963 chip. It features a dual 12 bit ADC working up to 100MSPS and a dual 12 bit DAC with up to 170MSPS. It also features a DLL which can provide the clock for both the ADC and the DAC path. | ||
+ | The TRX (ADC) interface is set at 100 MSPS, full duplex mode, double data rate (DDR), two channels. The clock comes from the AD9963 chip. The IO standard is CMOS at 3.3V. | ||
+ | The TX (DAC) interface works at 75MSPS data rate with interpolation by 2 on the AD9963 chip. The DAC path inside AD9963 chip works at 150MHz, pushing part of the spurs outside the 100MHz bandwidth. Given that the reference clock for AD9963 is 100 MHz and DACs maximum sampling rate is 170 MSPS, this is the best option available. The 75MHz clock is not available in the FPGA. In order to reduce the number of PLL used in the FPGA, we are using AD9963 and a BUFR (divide by 2) to generate this clock. When the clock is generated by AD9963, DDR transfer is not available. The TX interface works at 150 MHz, SDR. The IO standard is CMOS at 3.3V. | ||
+ | |||
+ | The AXI_ADC_TRIGGER IP implements triggering for the ADC path and also controls the TRIGGER pins. | ||
+ | It works on two clock domains, the ADC clock and the AXI interface clock. | ||
+ | The configuration of the IP is done through the AXI interface. | ||
+ | The data path runs at the ADC clock. | ||
+ | Triggers based on the two trigger digital pins, trigger[0] for ADC A and trigger[1] for ADC B can be selected between high, low, any edge, rise edge, fall edge | ||
+ | Triggers based on the analog data on a channel will be active if data is larger than a limit, smaller than a limit, passing through the limit, passing through high or passing through low. The data format must be 2’s complement | ||
+ | The output of the core embeds the triggers in the data words, as only 12 bits of the 16 bit word are used for data. These need to be extracted before being forwarded to the DMA. Embedding the trigger with the data allows for additional IPs with unknown pipeline length to be introduced in the path. | ||
+ | More information: AXI ADC TRIGGER documentation | ||
+ | |||
+ | The AD9963 RX interface clock has a set value of 100 MHz, so the interface always runs at 100MSPS for each of the two channels. For some applications, 100MSPS are not required and leads to lots of samples transferred to memory, which are redundant. For these cases, the decimation IP is used. | ||
+ | The decimation block allows decimating the input data so that the sampling frequency to be reduced by 10, 100, 1000, 10000, 100000, with filtering. The filtering is implemented by a 6 sections CIC programmable rate filter which allows decimation by 5/50/500/5000/50000 and a compensation FIR filter (decimation by 2). | ||
+ | At the end of the filter chain, there is an arbitrary decimation block. The arbitrary decimation can be activated independently and it does not implement any type of filtering. | ||
+ | |||
+ | |||
### 3.6 本视频中用到的ADI器件 | ### 3.6 本视频中用到的ADI器件 | ||
行 57: | 行 89: | ||
* [[http://yyao.ca/projects/oscilloscope/|数字示波器]] | * [[http://yyao.ca/projects/oscilloscope/|数字示波器]] | ||
* [[https://www.fpga4fun.com/digitalscope.html|FPGA4FUN上的数字示波器编程]] | * [[https://www.fpga4fun.com/digitalscope.html|FPGA4FUN上的数字示波器编程]] | ||
+ | * [[https://www.fpga4fun.com/FlashyInterferencePatterns.html|Flashy interference patterns]] | ||
+ | * [[https://www.analog.com/media/cn/technical-documentation/application-notes/AN_835_cn.pdf|高速ADC测试和评估]] | ||
+ | * [[https://www.analog.com/media/cn/technical-documentation/application-notes/AN-1142_cn.pdf|高速ADC PCB布局布线技巧]] | ||
+ | * [[https://www.analog.com/media/cn/technical-documentation/application-notes/AN-282_cn.pdf|采样数据系统基本原理]] | ||
+ | * [[https://www.analog.com/media/cn/technical-documentation/application-notes/AN-737_cn.pdf|如何用ADIsimADC完成ADC建模]] | ||
+ | * [[https://www.analog.com/media/cn/technical-documentation/application-notes/AN-803_cn.pdf|利用引脚兼容高速ADC简化设计任务]] | ||
+ | * {{:ds213_v2.0_schematic.pdf|MiniWare的DS213的原理图}} | ||
+ | * {{::ds212_user_manual_v1.0.pdf|MiniWare的DS212的用户使用手册}} | ||
+ | |||
+ | |||
+ | ---- | ||
+ | |||
+ |