如何才能使 a/d 转换器实现最高性能呢?明显的答案就是采用良好的设计和板面布局,除此之外,我们还可采用其他技术获得性能提升。我们实际上可采用一些简单的技术来推动 a/d 转换器性能,使之优于规范的要求。为了实现这一点,我们应了解 a/d 转换器误差的来源和类型。
本文的目的是解释 a/d 转换器最常见的误差源,并介绍进行上述误差补偿的方法。某些误差补偿的方法理解和实施起来都比较容易,而有些方法则不那么显浅易懂。如果采用方法得当的话,上述方法可大幅提高系统整体性能。
我们不妨先来看看理想的 a/d 转换器应该是什么样的,了解哪些类型的误差会阻碍我们获得最佳性能。简而言之,理想的 a/d 转换器会为我们提供几乎理想的数据。我说几乎是理想的,是因为即便理想的 a/d 转换器也存在量化误差,但我们不妨以后再讨论这一点。我们希望提高 a/d 转换器的性能,所以我们不妨先来看看市场上分辨率最高的 a/d 转换器,即 24 位 a/d 转换器。
理想的 24 位 a/d 转换器可提供 24 位可用数据。这种 a/d 转换器可为给定输入提供相同代码或转换结果的输出,同样也受到量化的限制。例如,如果我们对输入范围为 5.0v 的理想的 24 位 a/d 转换器采用刚好 2.5v 的固定模拟信号,那么我们从 a/d 转换器所得的唯一代码就是8,388,608--标度值 (scale value) 的一半。如果我们对非理想转换器采用相同电压的话,那么输出代码不会固定为一半大小值,它实际上会给出不同的输出,是否稳定并不确定,这是由转换器的不理想特性造成的。不理想的 a/d 转换器会造成量化误差、偏移和增益误差以及非线性。此外,噪声和漂移也会导致测量误差。
即便是理想的 a/d 转换器也会发生量化误差。量化误差指数字化模拟输入信号时产生的误差。举例来说,输入范围为 5v,那么每个代码反映约 298 nv (5v/2^24) 的分辨率。如果我们开始时采用 0v 模拟输入电压,然后再逐步增加模拟输入电压,那么代码会保持零不变,直至达到 149 nv 或 ? lsb 左右进行第一个代码转换。因此,即便采用理想的 a/d 转换器,我们仍会遇到 +/- ? lsb 的量化误差。之所以如此,是因为模拟输入信号在 0v 到 149 nv 之间可取一个无限数值,但数字代码只能为有限数值,理想情况下仅为 0。
我们常常一并考虑偏移误差和增益误差。偏移误差是指对 a/d 转换器采用零伏差动输入时实际代码与理想代码之间的差异。增益误差是指从负满量程转为正满量程输入时实际斜率与理想斜率之差。偏移和增益误差通常是 a/d 转换器中主要的误差源。
非线性包括整数非线性 (inl) 和差动非线性 (dnl)。整数非线性指出的是输出代码与理想输出之间差异的大小,而偏移和增益误差已得到校正。在满量程端点 (full-scale endpoint) 处取一理想线,一般来说,经测量得到的 inl 既为到这一理想线的最大偏差。差动非线性是指代码值如何随模拟输入的变化而变化。就模拟输入电压的升高情况而言,代码可能增加、不变或减少。根据模拟输入增量的多少,代码应该保持不变或者增加。如果出现这种情况的话,那么 adc 就是单调性的。如果 adc 跳过一个输出代码,那么此代码称之为缺失代码。如果代码输出减少,那么我们就说 adc 为非单调性。通过查看柱状图,我们可以得知是否存在缺失码,以及关系代码宽度的大小等。如果分配正常而无缺失码,那么这就表明代码宽度一致。
噪声是随时间变化的随机输出代码,与偏移、增益和线性误差无关。即便我们已经很好地校正了a/d 转换器的所有其他误差来源,我们仍会发现由于噪音的缘故出现输出代码变化。
漂移是指在给定输入的情况下输出代码随时间或温度的变化而进行的变化。如果我们采用固定的模拟电压,然后给设备加热或去热,输出代码就会随着温度而进行偏移。根据设备特性的不同,在给定的抽样中漂移可能向相同方向发展,也可能呈随机性。
尽管难以对所有误差来源进行可视化,不过我们可通过芯片级设计技术或数据处理技术来解决这些误差来源。在我们详细了解如何补偿误差源之前,不妨先来了解一下a/d架构。在分辨率大于16位时,我们广泛采用 δ-σ 架构。δ-σ 架构采用重复采样技术来实现高分辨率数字输出。图 1 给出了简化的 δ-σa/d 转换器结构图。a/d 的主要组件是调制器和滤波器。调制器作为反馈环路环路工作,其目标是将差动信号误差驱动为零。我们通过微