加入星计划,您可以享受以下权益:

  • 创作内容快速变现
  • 行业影响力扩散
  • 作品版权保护
  • 300W+ 专业用户
  • 1.5W+ 优质创作者
  • 5000+ 长期合作伙伴
立即加入
  • 正文
  • 相关推荐
  • 电子产业图谱
申请入驻 产业图谱

如何设计一个高精度模数转换ADC?

2021/12/13
1351
阅读需 17 分钟
加入交流群
扫码加入
获取工程师必备礼包
参与热点资讯讨论

有一段时间没说过模拟芯片了,今天我们就聊一聊模拟芯片,特别是模数转换芯片ADC

1. 什么是ADC

从本质上来看,模拟芯片和数字芯片最主要的区别,就是处理信号的不同。顾名思义,模拟芯片处理的是模拟信号,而数字芯片处理的是数字信号。模拟信号是随着时间连续变化的,比如温度、湿度、声音、速度等等。它们最大的特点是,在一定的时间范围内有无数个不同的取值。

相比之下,数字信号就是一堆不连续的数值,比如计算机里用的二进制0101。由于晶体管有开和关两种状态,所以可以很自然的表示0和1 两种数值。晶体管没办法做到类似于10%开、或者31.5%关这样的状态,所以它是一个数字信号。

为了连接模拟和数字这两个相互独立的领域,就需要使用两种芯片作为桥梁,一个是模数转换芯片ADC、另外一个是数模转换芯片DAC。

顾名思义,模数转换芯片ADC就是用来把模拟信号转换成数字信号,而模数转换DAC就是正好反过来,把数字信号转换成模拟信号。不过在实际应用里,ADC的占比更高。有数据显示,在模拟数字相互转换的应用里,有80%是ADC。特别是在数字化社会,几乎所有东西都被数字化了,方便后续的处理、传输和存储。

很多朋友可能觉得,不就是模拟信号转成数字信号嘛,听起来好像没什么难度。实际上,ADC芯片是模拟芯片中难度最高的,甚至可能没有之一。在半导体集成电路领域的顶级会议ISSCC、也就是国际固态电路会议上,就有相当一部分文章是介绍ADC设计。

2.  如何设计和优化ADC

那么,究竟模数转换ADC是怎么实现的呢?简单来说需要采样(Sampling)、量化(Quantization)、编码(Encoding)这么几个过程。也就是说,我们首先需要对这个信号进行采样,每隔一段时间记录一下信号当时的电压值。采集到的数值会经过量化,转换成相应的数字信号值,最后再通过某种编码表示出来,比如补码格雷码等等。

ADC有很多个参数指标,其中有两个常见的参数,一个是ADC的采样速率(sampling rate)或者叫数据速率(data rate),另一个是分辨率(resolution)。采样速率很好理解,就是单位时间内能做多少次采样,采样点数越多,就越能还原初始信号的样子。

分辨率被定义为输入信号值的最小变化,这个最小数值变化会改变ADC数字输出值的一个码值。在ADC有同样输入范围的情况下,分辨率越高,一个码值所代表的最小变化就越小。如果我们的ADC有3位,那么就可以把整个电压范围分成2^3=8份。如果电压变化范围是0-10V,那么每份就代表1.25V。也就是说,如果电压的变化小于这个值,那么ADC就没办法捕捉到这个细小的变化。需要注意的重要一点是,ADC的分辨率(resolution)和ADC的精度(accuracy)是两个完全不同的概念。

ADC的具体实现形式有很多种,常见的包括逐次逼近型ADC(SAR),还有一种叫Delta-Sigma ADC。比如常见的逐次逼近型ADC在电路里主要集成了一个电压比较器、一个寄存器、还有一个DAC,以及一些控制电路。它的本质就是用二分查找来确定模拟电压对应的数字信号。也就是一开始先拿输入电压参考电压的一半比较,如果输入电压更大,那就再和参考电压的四分之三再比较。相反,如果输入电压更小,那就在和参考电压的四分之一做比较。以此类推,直到比较完成。

3.  ADC驱动设计

然而,即使是最基础的ADC,它在实际的工程应用中也并不简单,因此配套的资源支持也就显得尤为重要。比如,ADC往往不能独立工作,它们需要配合其他的外部电路才能发挥作用,这里面最重要的外部电路之一就是驱动电路

前面说过,ADC需要对输入信号进行采样、量化和编码,并且输出N位的数字信号,这些操作通常都在数字时钟的一个周期里完成。这就意味着,在采样的过程里,输入信号应该保持不变。这有点类似于数字信号里时钟的保持时间。

在ADC内部,它的输入端其实包含开关电容阵列,通常等效成一个开关和一个采样电容。当开关闭合的时候,电容充电;等充好电之后,开关断开,,比较器和DAC相互配合在这个时候完成ADC的采样量化的操作。

这样问题就来了,首先,如果对ADC的性能要求比较高,比如需要它的采样频率很高,那么把ADC内部这个电容进行充电的时间就会很短。打个比方,如果采样频率是每秒100万次采样,那么充电时间、即捕获时间(TACQ)可能只有300纳秒。如果输入端不加任何电路作为驱动,那么基本就无法满足这么高采样频率的需求。所以针对这个问题,我们通常会在ADC前端加上一个运算放大器作为驱动,这样就可以在较短的采样时间之内提供足够的电荷给采样电容。

这样还没完,虽然我们可以直接把运放和ADC直接连接起来,但我们在实际应用里很少这么设计。因为在采样频率很大的时候,直接连运放的话就需要很高带宽的运放。另外从仿真里也可以看到,在开关切换的时候,一开始的转换可能会产生较大的瞬时电流,而且驱动电路需要能够在较短的ADC捕获时间(TACQ)之内对ADC内部的采样电容完成充电。

为了满足这些条件,并且避免出现很大的瞬时电流,我们可以在ADC之前加入一个RC电路。大学电路里我们学过,RC电路是用来做滤波的,但这里它的主要作用就是利用这个额外的电容,实现更加快速的充电。运放可以把这个电容充满,然后等ADC内部开关闭合的时候,通过这个电容给ADC内部的电容充电。当然除了这个电容之外,一部分的电荷也来自前端的运放。这个RC电路也叫做charge bucket filter电路,它可以有效的降低对前端运放带宽的需求,所以我们选择较低带宽、更低成本的普通运放就可以满足设计需要。同时它也消除掉了一开始的瞬时电流,也极大的提升了电路的稳定性。

问题又来了,如何确定这些放大器和RC电路的具体大小和指标呢?这里有两种方法,一个就是通过理论公式进行推导,这个在网上有非常详细的推导过程,根据ADC的指标,比如分辨率、采样速率、参考电压等等,就可以一步一步推导出所需RC电路和运放的参数数据。看了这些东西,我真的又不由得想起当年学模电的时候被它支配的恐惧……

当然还有另外一种方法,那就是通过现成的设计工具和仿真工具来进行仿真计算。比如德州仪器TI就提供了一系列相关的工具来简化上面所有的计算过程。一开始可以根据ADC的性能指标选择对应的器件,然后使用ADC SAR Drive工具,来直接计算电阻电容的值,并且得到相应的性能指标。

为了进一步简化设计流程,TI不仅提供设计工具,还有一整套完整的生态把这些工具整合起来。

拿SAR驱动设计举例,TI就提供了很多经典的ADC电路设计方案, 比如这个“高电压电池监控器电路”就一步一步的教我们从设计说明目标,到如何选择合适的器件、如何建模仿真,并得到理想的性能指标。并且在设计的过程中,可以随时回顾 “TI 高精度实验室”视频系列作为参考。

具体到这个电路,我们可以随时查看”高精度实验室”里介绍的选择电荷桶电路(charge bucket filter)的方法,并为这个例子里的放大器、增益设置和数据转换器提供良好的趋稳和交流性能。我们还可以直接下载这个电路的设计文件,按照需求来对设计进行改修改。

4. PADC设计中的噪声

之前的文章里介绍过,模拟芯片的一个最大的问题就是容易受到干扰。事实上,模拟信号能够受到干扰的地方太多了,从之前说过的电磁辐射EMI、到电路板的设计缺陷、电源电压的变化,再到周围环境的各种变化,其实都有可能会对模拟芯片和模拟电路造成干扰,从而造成误差。

对于ADC来说,除了这些外在的因素和干扰之外,它自己本身也会引入误差,这个通常叫做量化误差。也就是说,当我们在把一个连续变化的模拟量,量化成离散变化的数字量的时候,必然会引入这种误差。不管我们划分的粒度有多细,分的份有多小,这种量化误差都会存在。

先说理论,对于一个N位的ADC,每一位代表的电压范围可以通过这个公式得到

其中FSR是ADC支持的电压范围。那么在这个ADC里可以区分的最小的电压变化,就是LSB的一半。举个例子,一个3位的ADC,输入电压从0到8V之间变化。那么它的LSB就是8/2^3 = 1V,能分辨的最小电压变化是1/2V。也就是说,当输入电压是0-0. 5V之间的时候,输出其实都是0,从0.5-1.5之间的时候,输出都是1,以此类推。所以输出其实是一个阶梯曲线。

再结合前面说的环境噪声、也称作热噪声(thermal),那么一个ADC的总噪声就是热噪声和量化噪声的平方和再开方。

是不是看到这里就有点上头了,这个其实只是刚开始。对于一个给定的ADC来说,我们要去量化和测量它的这两个噪声,这样才能更好的、有针对性的设计包含ADC的整个系统。

拿Delta-Sigma ADC举例,它的这两种噪声取决于ADC的分辨率、参考电压、以及输出速率。对于一个包含ADC的系统来说,这种噪声分析更加的复杂。在一个典型的模数转换系统里,通常包含各种模拟噪声滤波器、运放、ADC、以及对数字信号进行处理的数字滤波器FPGAMCU等模拟数字芯片,这也构成了一个信号链。要分析这个信号链的噪声,我们不仅要对ADC本身做噪声分析,还要考查整个信号链里每个元件的噪声,以及所有这些元件之间的相互影响。

这个东西听起来好像很复杂,但我们可以使用信号链的有效噪声带宽(Effective Noise Bandwidth)来量化这个分析过程。当然我们也需要一系列的工具、软件和参考资料,来帮助我们做定量分析。

事实上,前面的很多内容都来自TI的电子书《高精度ADC噪声分析基础》。这本书结合了大量TI工程师的设计实践经验,详细介绍了ADC的噪声来源、如何量化分析、如何有效的设计电路来优化ADC的噪声表现。这本书写的非常通俗易懂,同时也兼顾了技术深度,强烈推荐给大家。

在前面说过的TI”高精度实验室”教程里,除了这里介绍的驱动电路设计和噪声分析之外,还有最基本的ADC基础、SAR与Delta-sigma ADC的原理与比较、误差分析、低功耗设计、高速设计等等,非常全面。每个视频后还有配套习题,方便我们巩固学习成果。我觉得无论你是模电新手还是老炮,都能找到适合你的内容。

“高精度实验室”、ADC电路设计指导手册都是TI ADC工具箱的一部分,这里面还有《模拟工程师口袋参考书》,可以用来快速查找和计算各种信号链的调参方法,包括运放带宽、稳定性等等。这些设计资源可以和ADC 模拟工程师计算器,TI TINA 以及Pspice for TI 配合使用,形成了一站式的设计体验。我把这些内容的链接都放在了下面的参考资料里,想学习这方面知识的朋友,一定记得从这里开始。

参考文献:

1. TI 精密ADC学习中心

https://www.ti.com.cn/zh-cn/data-converters/adc-circuit/precision-adcs/learning-center.html

2. TI高精度实验室线上培训视频

https://training.ti.com/ti-precision-labs-adcs

3. 模拟工程师口袋参考指南

https://www.ti.com/seclit/eb/slyw038c/slyw038c.pdf

4. ADC 噪声分析基础 电子书

https://www.ti.com/lit/eb/slyy192/slyy192.pdf

5. 电路设计指导手册

https://www.ti.com.cn/zh-cn/design-resources/design-tools-simulation/analog-circuits/overview.html

6. 模拟工程师计算器

https://www.ti.com.cn/tool/cn/ANALOG-ENGINEER-CALC

7. TI TINA

https://www.ti.com.cn/tool/cn/TINA-TI

8. Pspice for TI

https://www.ti.com.cn/tool/cn/PSPICE-FOR-TI

9. 参考设计

https://www.ti.com.cn/zh-cn/data-converters/adc-circuit/precision-adcs/reference-designs.html#search?famid=2019

相关推荐

电子产业图谱

微信公众号“老石谈芯”主理人,博士毕业于伦敦帝国理工大学电子工程系,现任某知名半导体公司高级FPGA研发工程师,从事基于FPGA的数据中心网络加速、网络功能虚拟化、高速有线网络通信等领域的研发和创新工作。曾经针对FPGA、高性能与可重构计算等技术在学术界顶级会议和期刊上发表过多篇研究论文。