了解积分非线性 (INL) 规范及其与模数转换器 (ADC) 误差的关系。
失调误差、增益误差和INL这三个参数决定了ADC的精度。失调和增益误差可以校准出来,这使得INL成为主要的误差贡献者。INL规范描述了实际传递函数的过渡点与理想值的偏差。
什么是积分非线性 (INL)?
理想的ADC具有均匀的阶梯输入-输出特性,这意味着每次转换发生在与上一个转换相距1 LSB(最低有效位)处。但是,对于实际ADC,步骤并不统一。例如,考虑图1所示的传递曲线。
图1. ADC的传输曲线示例。
步宽与理想值的偏差由微分非线性(DNL)规范表征。然而,DNL误差不能完全描述传递函数与理想响应的偏差,因为我们获得的响应取决于DNL正负误差在不同代码中的分布方式。INL 规范允许我们表征代码转换与其理想值的偏差。要计算代码 k 的 INL,我们可以使用以下等式:
其中 T一个(k)和T理想(k) 分别表示从代码 k-1 到 k 的实际和理想过渡;“理想步长”是ADC的LSB。对于上述示例,从代码 1 (001) 到代码 2 (010) 的实际转换发生在理想转换上方 0.125 LSB 处。因此,代码 2 的 INL 是 INL(2) = +0.125 LSB。
从这里开始,我们可能会问,下一个转换(从代码 2 到 3)呢?请注意,从代码 1 到 2 的转换发生在理想值以上 0.125 LSB 处,并考虑到代码 2 的宽度误差(或 DNL)为 +0.25 LSB,我们可以推断从代码 2 到 3 的转换应该发生在理想值以上 0.375 LSB 处。因此,我们有 INL(3) = +0.375 LSB。如您所见,代码 3 的 INL 等于代码 1 和 2 的 DNL 之和:
将上述分析扩展到其他代码,很容易通过应用以下等式来验证第 m 个代码的 INL:
INL 表示 DNL 错误的累积影响。在计算DNL和INL值时,我们假设ADC的失调和增益误差已经校准出来。因此,第一个代码(代码 1)和最后一个代码的 INL 为零。对于代码零,未定义 INL。
表示 ADC INL 信息
就像 DNL 一样,我们可以将 INL 信息表示为 INL 相对于代码值的图。对于上面的示例,我们得到如图 2 所示的下图。
图2. 显示 INL 相对于代码值的示例图。
INL 通常也表示为所有代码的最小值和最大值。我们假设的ADC的INL介于-0.71 LSB和+0.5 LSB之间。INL图不仅表示ADC的线性度性能,而且还揭示了有关ADC内部架构的一些信息。例如,子范围ADC具有三角形INL图(图3(a)),而闪存ADC通常具有随机模式(图3(b))。
图3.子范围ADC三角形INL图(a)和闪存ADC的随机模式图(b)示例。图片由 M. Pelgrom 提供
INL:超出ADC量化误差的误差
需要注意的是,INL除了指定ADC的量化误差外,还指定了一个误差。由于ADC将连续模拟输入范围转换为多个离散输出代码,因此即使是理想的ADC也会固有地会在系统中引入一些误差,称为量化误差。如果我们将斜率为1的斜坡输入施加到ADC,则可以从输入中减去输出代码的模拟等效值,以找到量化误差。如图 4 所示。
图4. 显示量化误差的示例图。
在图4中,绿色曲线表示斜坡输入,蓝色阶跃表示理想ADC产生的代码的模拟等效值。然而,图4中的下图显示了锯齿形状的量化误差。让我们看看非线性如何影响误差项。如果将斜坡输入应用于图1中的非理想特性曲线,则得到以下误差波形(图5)。
图5. 示例图显示了ADC输出代码的模拟等效值以及理想变换(a)和误差波形(b)。
图5(a)中的紫色阶跃表示ADC输出代码的模拟等效值,蓝点表示均匀阶梯响应的理想过渡点。例如,考虑从代码 1 到代码 2 的转换。如果这种转换发生在理想点(A点),则代码1的最负误差将是-0.5 LSB。由于 INL(2)=+0.125 LSB,因此从代码 1 到代码 2 的实际转换发生在高于理想值的 +0.125 LSB 处。由于这种延迟转换,绿色曲线与ADC输出之间的差值在转换点(B点)大于0.5 LSB。通过检查该图,您可以确认 B 点的误差由下式给出:
请注意,虽然这种非理想效应将代码 1 的误差扩展到 -0.625 LSB,但它将下一个代码(代码 2)的误差上限降低到 0.5 LSB - 0.125 LSB = +0.375 LSB。您可以在 D 点看到由 INL(3) = +0.375 LSB 引起的误差波形的类似变化。
让我们检查代码 6,看看负 INL 如何影响错误 (INL(6 )= -0.71 LSB)。在这种情况下,(F点)处的实际跃迁发生在理想值(E点)以下0.71 LSB处。由于ADC输出增量早于预期值,因此会产生较大的正误差。如错误图所示,代码 6 的误差可以大到:
使用理想ADC时,量化过程会产生±0.5 LSB的误差。然而,对于实际的ADC,量化过程和INL都会影响系统的整体误差。换句话说,INL是超出量化误差的误差。
到目前为止,我们考虑的INL定义可能是该规范中最有用和最常见的定义。但是,应该注意的是,ADC制造商的教科书和技术文档中有时会提到其他一些定义。为了避免任何混淆,我们将在本文的其余部分查看INL的其他常见定义。
重新定义INL代码:不同但相同的定义
在我们继续其他定义之前,值得一提的是,人们可以用稍微不同的方式查看图 1 中使用的定义。与其将 INL 定义为代码转换与其理想值的偏差,我们可以将其定义为代码转换与经历第一个和最后一个代码转换的直线的偏差。如图 6 所示。
图6. 显示代码在实际响应和理想响应之间的偏差的图。
在图 6 中,点 A 和 B 是第一个和最后一个转换点。由于我们假设在INL计算之前失调和增益误差为零,因此A点和B点对应于理想和实际传递函数。如您所见,穿过点 A 和 B 的线也穿过理想特性的所有其他过渡点(图中的蓝色曲线)。因此,实际过渡点与其相应理想过渡点的偏差等于该实际过渡点与穿过点 A 和 B 的直线的偏差。一些参考文献,如《高速模数转换》一书,使用此直线来定义ADC INL。另请注意,此参考线与之前文章中介绍的ADC线性模型(图中的绿线)不同。
定义 INL - 代码中心行定义
对于这种类型的定义,ADC传输特性是根据穿过ADC代码中心的直线定义的。图 7 显示了如何使用代码中心线定义 INL。
图7.使用代码中心线定义 INL。图片由 R. Plassche 提供
在上面的示例中,对角线是穿过理想ADC阶跃中点的线(我们在本系列的文章中称之为ADC的线性模型)。如图所示,实际步长中点与直线的偏差被视为该代码的INL误差。
此示例显示了此定义的一个缺点。如您所见,代码 1101 的相邻转换偏离了理想值。但是,由于 1101 的测量代码中心与理想值一致,因此该代码的 INL 为零。使用图 1 中使用的定义,代码 1101 的 INL 将不为零。
作为旁注,上面的图片取自Rudy van de Plassche的书。Rudy是世界著名的模拟设计师和许多电路和电路创意的发明者,例如斩波和稳定放大器,这些电路和电路理念在今天被广泛使用。
另一个基于代码中心的定义如图 8 所示。
图8.显示代码中心行定义的示例图。图片由M. Demler提供
在这种情况下,用于计算INL误差的参考线是穿过实际传递函数的第一个和最后一个步骤的中点的线。对于三位ADC,这是穿过代码001和110中点的线路。实际步长的中点与这条直线的偏差被认为是该代码的INL误差。
在这个特定的例子中,ADC传递函数具有交替的宽窄代码,从第一个和最后一个代码获得的参考线截获所有代码的中点。因此,所有代码的 INL 错误均为零。这再次凸显了基于代码中心的定义在某些情况下无法描述传递函数的非线性的缺点。
本文中讨论的 INL 定义被归类为基于端点的定义,因为它们仅使用第一个和最后一个代码来派生参考线。定义 INL 误差的另一种方法是最佳拟合方法。在这种情况下,使用一条适合所有代码的直线作为参考线。本系列的下一篇文章将详细研究最佳拟合方法。
全部0条评论
快来发表一下你的评论吧 !