首页> 中国专利> 嵌入式装置的芯片上模数转换器(ADC)线性度测试

嵌入式装置的芯片上模数转换器(ADC)线性度测试

摘要

在所描述的实例中,测试ADC的线性度的方法包含接收(1310)指示ADC输入电压阶跃调整的触发信号,及当接收所述触发信号时读取(1311)ADC输出样本。所述ADC输出样本具有对应于N个离散ADC输出代码的N个整数值的值范围。此外,所述方法包含针对M个连续ADC输出代码计算(1312)代码发生的直方图。所述直方图包含对应于所述M个连续ADC输出代码的M个方格,其中M小于N。此外,所述方法包含根据所述直方图以K个ADC输出样本读数的间隔更新DNL值及INL值,及在更新所述DNL值及所述INL值之后将所述直方图移位(1330)一个ADC输出代码。

著录项

  • 公开/公告号CN106063132A

    专利类型发明专利

  • 公开/公告日2016-10-26

    原文格式PDF

  • 申请/专利权人 德州仪器公司;

    申请/专利号CN201580009861.9

  • 申请日2015-03-02

  • 分类号H03M1/10;H03M1/12;

  • 代理机构北京律盟知识产权代理有限责任公司;

  • 代理人林斯凯

  • 地址 美国德克萨斯州

  • 入库时间 2023-06-19 00:41:15

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2019-09-10

    授权

    授权

  • 2017-01-18

    实质审查的生效 IPC(主分类):H03M1/10 申请日:20150302

    实质审查的生效

  • 2016-10-26

    公开

    公开

说明书

背景技术

模数转换器(ADC)将模拟输入信号转换为一系列数字输出代码。转换过程可涉及输入的量化,因为模拟信号是连续的,而数字输出代码是离散的。ADC测量可由于转换过程中的不精确度的各种来源(例如,量化误差)以及制程中的变动(例如,装置间变动)而偏离理论测量。ADC性能可根据静态性能及动态性能来规定。静态性能可包含偏离误差、增益误差、微分非线性度(DNL)及积分非线性度(INL)。动态性能可包含总谐波失真(TDH)及信噪比(SNR)。一些嵌入式装置(例如,数字信号处理器(DSP)、芯片上系统(SoC))可包含芯片上ADC。芯片上ADC的性能可在生产测试期间进行评估。

发明内容

在用于嵌入式装置的芯片上ADC线性度测试的所描述实例中,一种方法包含接收指示ADC输入电压阶跃调整的触发信号且当接收所述触发信号时读取ADC输出样本。所述ADC输出样本具有对应于N个离散ADC输出代码的N个整数值的范围。此外,所述方法包含针对M个连续ADC输出代码计算代码发生的直方图。所述直方图包含对应于所述M个连续ADC输出代码的M个方格,其中M小于N。此外,根据所述直方图以K个ADC输出样本读数的间隔更新DNL值及INL值且在更新所述DNL值及所述INL值之后将所述直方图移位一个ADC输出代码。

在另一实施例中,一种非暂时性计算机存储可读装置包含计算机可执行指令,其在由处理器执行时使所述处理器检测指示ADC电压阶跃递增的触发事件且当接收到所述触发事件时读取ADC输出样本。所述ADC输出样本具有对应于N个离散ADC输出代码的N个整数值的值范围。所述指令进一步使所述处理器对所述M个连续ADC输出代码更新代码发生的直方图,其中所述直方图包含对应于所述M个连续ADC输出代码的M个方格,且其中M小于N。所述指令进一步使所述处理器根据所述直方图以K个ADC输出样本读数的间隔更新最大DNL值、最小DNL值、最大INL值及最小INL值。所述指令进一步使所述处理器在更新所述最大DNL值、所述最小DNL值、所述最大INL值及最小所述INL值之后将所述直方图移位一个ADC输出代码。

在又另一实施例中,一种设备包含ADC,其经配置以将模拟输入信号转换为N个离散ADC输出代码;及存储器,其包含包括存储M个连续ADC输出代码的发生次数的M个方格的直方图,其中每一方格对应于所述M个ADC输出代码中的一者,且其中M小于N。所述设备进一步包含第一接口,其经配置以接收指示所述ADC输入处的电压阶跃递增的触发信号,其中K个接收的触发信号的平均值对应于ADC输出代码转变。所述设备进一步包含处理器,其耦合到所述ADC、所述存储器和所述第一接口且经配置以:当接收所述触发信号时读取ADC输出样本且;通过将对应于所述ADC样本的值的方格中的发生次数递增来计算所述直方图;。所述处理器进一步经配置以根据所述直方图以K个ADC输出样本读数的间隔更新最大代码发生、最小代码发生、最大积分非线性度INL值及最小INL值,其中所述最大代码发生与最大微分非线性度DNL值成比例,且其中所述最小代码发生与最小DNL值成比例。所述处理器进一步经配置以;及在更新所述最大代码发生、所述最小代码发生、所述最大INL值及所述最小INL值之后将所述直方图移位一个ADC输出代码。

在又另一实施例中,一种非暂时性计算机存储可读装置包含计算机可执行指令,其在由处理器执行时使所述处理器设置第一控制代码以命令电压阶跃递增、设置第二控制代码以指示所述电压阶跃递增,且读取包含最大代码发生、最小代码发生、最大缩放INL值及最小缩放INL值以及对应于所述最大代码发生、所述最小代码发生、所述最大缩放INL值及所述最小缩放INL值的ADC代码的ADC测量报告。所述指令进一步使所述处理器根据所述测量报告计算最大DNL值、最小DNL值、最大INL值及最小INL值。

附图说明

图1是根据各个实施例的ADC转递函数及通过将ADC输入电压转换为离散电平转变点进行的对应ADC DNL测量的图表。

图2是根据各个实施例的ADC传递函数及ADC代码发生的对应直方图的图表。

图3是根据各个实施例的ADC测试设置的框图。

图4是根据各个实施例的内建自测(BIST)引擎的框图。

图5是根据各个实施例的测试引擎的框图。

图6是根据各个实施例的ADC线性度测试代码范围的图表。

图7是根据各个实施例的基于移动直方图的方法的图表表示。

图8是根据各个实施例的另一基于移动直方图的方法的图表表示。

图9是根据各个实施例的ADC INL测试的图表。

图10是根据各个实施例的ADC线性度测试校准方法的流程图。

图11是根据各个实施例的另一ADC线性度测试校准方法的流程图。

图12是根据各个实施例的ADC线性度测试方法的流程图。

图13是根据各个实施例的另一ADC线性度测试方法的流程图。

图14是根据各个实施例的比较基于所有代码直方图的方法与基于移动直方图的方法的ADC INL测量的两个图表。

具体实施方式

ADC输入可为具有无限个值的连续电压,而ADC输出可为有限个离散代码。因此,ADC输入-输出传递特性是无限个对一个映射。为了确定ADC的线性度特性,可通过根据ADC输出代码之间的转变电压表示ADC输入来在ADC输入与ADC输出之间建立一对一映射,其中转变电压是离散的。当ADC不具有线性度误差时,每一相邻转变电平之间的距离(例如,ADC代码宽度)是一个最低有效位(LSB)。DNL是相邻转变电平之间的测量距离及一个LSB的参考距离的测量。INL是每一代码转变电平与通过代码转变电平的最佳拟合直线之间的距离的测量。

图1示出了根据各个实施例的ADC传递函数及通过将ADC输入电压转换为离散电平转变点进行的对应ADC DNL测量的图表100。子图表110说明ADC传递函数,且子图表120说明ADC DNL测量。在子图表110中,x轴可以伏特为单位表示输入模拟电压,且y轴可表示ADC离散输出代码。曲线111可表示3位ADC响应于输入电压的输出传递函数。在子图表120中,x轴可以伏特为单位表示电压转变电平,且y轴可表示ADC输出代码索引。在子图表120中,数据点121中的每一者可对应于子图表110中的ADC代码转变。如子图表110及120中所示,数据点121之间的距离可不同于一个LSB的理论值,其中差值可表示微分线性度误差(例如,DNL值)。在子图表120中,数据点121的端点之间绘制的线122可对应于通过数据点121的最佳拟合直线。每一数据点121与线122之间的距离可表示积分线性度误差(例如,INL值)。

在实施例中,基于所有代码直方图的方法可用以测量ADC线性度。在基于所有代码直方图的方法中,可响应于在ADC的全尺度范围内线性地增加的输入信号电平而产生ADC输出代码发生的直方图。全尺度范围可指代对应于最小ADC输出代码的最小电压与对应于最大ADC输出代码的最大电压之间的范围。在从ADC收集足够多数量的样本之后,可产生ADC输出代码发生的直方图以提供DNL的精确测量。INL可通过以数字形式对DNL值积分来计算。直方图的方格数目或大小可对应于基于所有代码直方图的方法中的ADC输出代码的数目。例如,可针对产生八个ADC输出代码的3位ADC产生具有8个方格的直方图,同时可针对产生1024个ADC输出代码的10位ADC产生具有1024个方格的直方图。

图2示出了根据各个实施例的ADC传递函数及ADC代码发生的对应直方图的图表200。子图表210中说明ADC传递函数且子图表220中说明ADC代码发生的对应直方图。在子图表210中,x轴可以伏特为单位表示输入模拟电压,且y轴可表示ADC离散输出代码值。在子图表210中,曲线211可表示3位ADC响应于输入电压的输出传递函数。在子图表220中,x轴可以表示ADC代码索引(其可对应于直方图方格),且y轴可表示ADC代码发生的次数。如可观察到,每一直方图方格中的代码发生次数与每一相邻转变电平之间的距离成比例,如曲线211中所示。因此,可采用代码发生的直方图用于测量ADC DNL及INL。

在一些实施例中,采用基于所有代码直方图的方法的测试器可将斜坡电压(例如,线性恒定电压阶跃中)施加到ADC且在每一电压阶跃调整之后传递来自ADC输出的一或多个ADC样本。在将ADC输入电压扫描到ADC全尺度范围之后,测试器可产生ADC输出代码发生的直方图且根据直方图确定DNL及INL。在此类实施例中,测试器可采用大量存储器来用于存储,因为直方图的大小可与ADC输出代码的数目成比例增加。此外,测试时间可随着大量ADC样本可传递到测试器而变得显著。例如,当测试每个ADC输出代码约8次发生的平均值的每秒钟10百万个样本(MSPS)的10位ADC时,测试器可经由数字通信接口(例如,具有1.5兆赫兹(MHz)的传递速率的集成电路间(I2C))传递来自ADC的约八千个(例如,1024x 8=8096)ADC样本。每个ADC的测试时间可取决于ADC样本时间及与数字通信接口相关联的其它附加成本而为约五秒钟到约6秒钟。因此,ADC生产测试时间可为重要的。

用于本文中揭示的嵌入式装置的芯片上ADC线性度测试的实施例包含采用基于移动直方图的方法的ADC BIST方案。在实施例中,ADC DNL及INL可以修改形式表示以降低计算复杂度,且一次性后处理可应用于经修改DNL及INL以提供符合电气与电子工程师学会(IEEE)文件1241-2000的DNL及INL测量,所述文件是以引用方式并入,就如同将其内容全文复制在此一样。较低计算复杂度可实现DNL及INL测量在低成本及/或低性能微控制器(MCU)上的实施,且可减少计算时间,且因此减少生产测试时间。在另一实施例中,ADC线性度测试可采用具有动态DNL及INL计算的基于移动直方图的方法,而非具有后DNL及INL计算的所有代码直方图。动态计算可使得BIST能够计算具有基本上小于(例如,约八个到约三十二个方格)ADC输出代码的数目的少量固定数目的方格的直方图,且因此随着针对每一ADC输出代码计算DNL及INL而将直方图滑动跨过ADC输出代码范围。较低计算复杂度(例如,经修改形式)及较小存储器存储(例如,固定大小的移动直方图)可使得BIST能够并入在具有芯片上ADC的嵌入式装置中进行线性度测试。BIST可在低成本及/或低性能MCU(例如,8051MCU)上执行,其中用于直方图计算的随机存取存储器(RAM)的量较少(例如,约128个字节)。BIST程序代码可被存储在嵌入式装置中的小型(例如,约800个字节)只读存储器(ROM)上。在另一实施例中,初始化程序可经定义以确定适用于经修改DNL及INL测量的ADC输入电压范围。所揭示的芯片上ADC线性度测试与基于所有代码直方图的方法相比可将生产测试时间减少约五到约六的数量级,且可提供可相当于基于所有代码直方图的方法的DNL及INL测量。

图3示出了根据各个实施例的ADC测试设置300的框图。ADC测试设置300可适用于测试ADC线性度(例如,DNL及INL)。ADC测试设置300可包含测试器310及被测装置(DUT)320。测试器310及DUT可经由模拟连接330及数字连接340连接。模拟连接330可为经配置以携带模拟电压信号的任何物理链路。数字连接340可为经配置以高速地(例如,约1.5兆赫兹(MHz)或更大)传输数字信号的任何物理链路。数字信号(例如,读信号、写信号、命令信号等)的数目、数字信号的格式及数字信号的速度可取决于数字通信接口(例如,集成电路间(I2C))的类型。在一些实施例中,数字连接340可包含一种以上类型的数字有线连接,例如I2C接口连接及一些通用数字管脚连接。

测试器310可包含模拟电压源311及测试引擎312。电压源311可为经配置以产生具有恒定阶跃的高精度(例如,毫伏(mV))线性斜坡的任何装置。例如,电压源311可为信号产生器、函数产生或适用于产生高精度斜坡电压用于ADC线性度测试的任何其它电路元件。测试引擎312可为经配置以经由接口313(例如,通用接口总线(GPIB)、电路等)控制电压源311且经由数字连接340与DUT 320通信。例如,测试引擎312可为处理器、计算机工作站或经配置以执行用于执行ADC线性度测试的测试程序的任何其它可编程或不可编程装置。接口313可为经配置以传输电压控制代码的数字接口。

DUT 320可为包含芯片上ADC 321及BIST引擎322的任何装置,例如嵌入式装置。例如,DUT 320可为DSP、SoC等。芯片上ADC 321可为经配置以将连续模拟输入信号转换为有限数目的离散输出代码的任何装置。例如,ADC 321可为具有八个输出代码的3位ADC、具有1024个输出代码的10位ADC等。BIST引擎322可为经配置以控制ADC 321(例如,配置寄存器)且(例如,经由一或多个输出寄存器等)经由接口323(数字信号)从ADC 321收集ADC样本的任何装置,例如通用处理器或MCU。此外,BIST引擎322可通过分析经收集ADC样本(例如,产生直方图并计算DNL及INL偏差)而确定芯片上ADC 321的DNL及INL。

在一些实施例中,测试引擎312可确定ADC线性度测试配置参数,例如起始电压、终止电压及电压阶跃,其可根据ADC 321(例如,ADC全尺度电压范围及ADC输出代码的数目)来确定。电压阶跃可为恒定阶跃且可经确定使得可针对每一ADC输出代码测量足够多数量的ADC样本,例如每个ADC输出代码约八个或更多个样本。测试引擎312可使电压源311被设置为具体电压且可经由接口313调整电压(例如,递增固定阶跃)。测试引擎312可在每次电压调整结束时经由数字连接340将触发信号(例如,脉冲)发送到DUT 320以指示ADC 321可产生经调整电压的样本且BIST引擎322可处理ADC样本并计算DNL及INL参数。此外,测试引擎312可在ADC线性度测试开始时将测试配置参数发送到DUT 320且可在ADC线性度测试结束时经由数字连接340从DUT 320读取经测量参数。ADC测试设置300可替代地经配置以采用较高性能(例如,高分辨率及线性电压输出)的数模转换器(DAC)来代替电压源311,且因此可位于与ADC 321相同的DUT 320上。此外,测试引擎312的功能性反而可在BIST引擎322上实施。

图4示出了根据各个实施例的BIST引擎400的框图。BIST引擎400可基本上类似于BIST引擎322且可位于包含芯片上ADC(例如,ADC 321)的任何嵌入式装置(例如,DUT 320)中。BIST引擎400可包含处理器410、存储器装置420、数字接口430及ADC接口440。处理器410可被实施为通用处理器或可为一或多个处理器的部分。处理器410可包含存储在处理器中的内部非暂时性存储器中的ADC线性度测量模块411以允许处理器实施下文更完整描述的ADC线性度测试方法1100及/或1300。在替代性实施例中,ADC线性度测量模块411可被实施为存储在存储器装置420中的指令,所述指令可由处理器410执行。存储器装置420可包含用于暂时存储内容的高速缓冲存储器,例如RAM。此外,存储器装置420可包含用于相对较长时间存储内容的长期存储装置,例如ROM。例如,高速缓冲存储器及长期存储装置可包含动态随机存取存储器(DRAM)、固态驱动器(SSD)、硬盘或其组合。数字接口430可为经配置以与ADC测试器(例如,测试器310)通信的任何物理链路,且可基本上类似于数字连接340。ADC接口440可为经配置以在ADC(例如,ADC 321)与BIST引擎400之间传输ADC样本及/或ADC配置的任何物理链路。

图5示出了根据各个实施例的测试引擎500的框图。测试引擎500可基本上类似于测试引擎312且可位于任何测试器(例如,测试器310)中。测试引擎500可包含处理器510、存储器装置520、数字接口530及电压控制接口540。处理器510可被实施为通用处理器或可为一或多个处理器的部分。处理器510可包含存储在处理器中的内部非暂时性存储器中的ADC线性度测量模块511以允许处理器实施下文更完整描述的ADC线性度测试方法1000及/或1200。在替代性实施例中,ADC线性度测量模块511可被实施为存储在存储器装置520中的指令,所述指令可由处理器510执行。存储器装置520可基本上类似于存储器装置420。数字接口530可为经配置以与DUT(例如,DUT 320)通信的任何物理链路,且可基本上类似于数字连接340。电压控制接口440可为经配置以将控制发送到可变电压源仪器(例如,信号产生器、功能产生器)的任何物理链路(例如,通用接口总线(GPIB)、电路等)。

在实施例中,N位ADC可产生从Clo(例如,值零)到Chi(例如,2N-1的值)的范围中的2N个ADC输出代码。可产生介于代码Clo+1与代码Chi-1之间的ADC输出代码发生的直方图用于DNL及INL测量。最小代码Clo与最大代码Chi可从直方图中排除,因为任何ADC下溢可被转换为最小代码Clo且ADC上溢可被转换为最大代码Chi。因此,排除最低及最高方格的ADC代码发生的总次数可被表示为:

其中hsum是代码发生的总次数且h(i)是第i个ADC输出代码(例如,Ci)的发生次数。

每一方格的代码发生的平均次数可被计算为:

其中havg是代码发生的平均次数且dlt是排除最低及最高方格的直方图中的方格的数目且可被表示为:

dlt=Chi–Clo-1等式(3)

如上文所述,存储在处理器中的内部非暂时性存储器中以允许处理器发生的代码的数目可与相邻转变电平之间的距离成比例。因此,代码发生的平均次数havg可对应于一个LSB的理论值,且第i个ADC代码的代码发生的测量次数h(i)可对应于相邻转变电平之间的测量距离。ADC的标准化代码宽度cw(i)可如下表示:

如上所述,DNL是相邻转变电平之间的测量距离及一个LSB的理论值的测量。因此,ADC输出代码的DNL值可如下计算:

DNL(i)=cw(i)-1,i=Clo+1,Clo+2,…,Chi-1等式(5)

其中DNL(i)是第i个ADC输出代码Ci的DNL值。如等式(5)中所示的ADC值可不具有小于负1的值,且负1的值可指示丢失ADC代码(例如,零发生)。

如上所述,INL是每一代码转变电平与通过代码转变电平的最佳拟合直线之间的距离的测量。因此,INL可通过如下所示般将每一ADC代码转变时的DNL值累加而计算:

在实施例中,ADC性能规格可包含DNL参数及INL参数。例如,DNL参数可包含ADC的最小DNL值及最大DNL值,且INL参数可包含ADC的最小INL值及最大INL值。因此,ADC线性度测试可动态地计算并更新DNL参数及INL参数而无需存储所有代码发生的直方图。例如,ADC线性度测试可随着(例如,以每个电压增量)读取ADC样本时计算ADC的代码发生的次数。当ADC输入电压传递充分远离ADC输出代码Ci的电平使得ADC无法产生另一输出代码Ci,ADC线性度测试可计算ADC输出代码Ci的DNL值及INL值,且动态地更新最小DNL值、最大DNL值、最小INL值及最大INL值。

ADC输出代码的DNL值可根据代码宽度(例如,等式(5)中的cw(i))来计算,其中代码宽度与代码发生的次数(例如,等式(4)中的h(i))成比例。因此,ADC线性度测试可计算电压扫描期间的最大代码发生及最小代码发生,而非最大DNL值及最小DNL值。在电压扫描结束时,ADC线性度测试可分别根据最大代码发生及最小代码发生通过将等式(2)、(3)及(4)代入等式(5)中来计算最大DNL值及最小DNL值。因此,最大DNL值及最小DNL值可计算如下:

其中h(i)在计算最大DNL值时可为最大代码发生,且h(i)在计算最小DNL值时可为最小代码发生。

ADC代码的INL值是DNL值的累加和。然而,INL值无法通过累加代码发生来代替DNL值而简化。因为INL值是DNL值的累加和,所以代码跨度dlt中的平均DNL值可接近零以使INL值是有意义的。跨代码跨度dlt的非零DNL偏差可在INL计算期间进行积分,从而导致INL值中出现斜坡误差。如等式(4)中可观察到,每一DNL值可被标准化为代码发生havg的平均次数(例如,一个LSB的代码宽度)使得平均DNL值可在跨度dlt中接近零。

在实施例中,INL值可以修改形式表示以降低计算复杂度。如等式(7)中可观察到,DNL值是以除法运算进行计算,除法运算对于低成本MCU(例如,MCU 8051)来说在时钟循环及/或存储器存储方面可能是昂贵的。然而,等式(7)可经修改以通过如下所示般使等式(7)与项hsum交叉相乘来消除除法运算:

DNLhsum=hsum×DNL=h(i)×dlt-hsum等式(8)

经修改INL值可如下计算:

INLhsum=INLhsum+DNLhsum等式(9)

因此,ADC线性度测试可计算经修改INL值且动态地更新最大经修改INL值及最小经修改INL值。在ADC线性度测试结束时,可分别通过将最大经修改INL值及最小经修改INL值除以hsum来计算最大INL值及最小INL值,其中经计算最大及最小INL值符合IEEE文件1241-2000。基于所有代码直方图的方法可在产生所有代码直方图之后计算代码发生的总次数,而动态地计算INL值的ADC线性度测试可包含校准程序用于在进行ADC样本测试之前估计代码发生的总次数hsum

在实施例中,ADC线性度测试可通过计算小范围(例如,小于约三十二个)ADC代码的直方图且将直方图移动跨过ADC代码跨度(例如,dlt)来测量ADC的DNL及INL。因此,直方图可利用少量方格来计算,且方格数目可不与ADC输出代码的数目成比例增加。采用移动直方图的ADC线性度测试可称为基于移动直方图的方法。下表描述了可在基于移动直方图的方法中采用的一些参数:

表1-ADC线性度测试参数

图6示出了根据各个实施例的ADC线性度测试的ADC代码范围的图表600。在图表600中,x轴可表示ADC输出代码,其中ADC输出代码可从最小ADC代码Clo改变为最大ADC代码Chi、基于移动直方图的方法可排除两个端点Clo及Chi,因为任何ADC下溢、上溢及/或噪音均可导致ADC产生最小代码Clo或最大代码Chi,且因此可使DNL及INL测量失真。因此,基于移动直方图的方法可开始于将ADC输入电压Vin设置为对应于Clo与Clo+1之间的边界处的代码转变611的电压(例如,起始电压)及将ADC输入电压Vin以Vstep阶跃递增直到ADC输入电压Vin达到对应于Chi-1与Chi之间的边界处的代码转变612的电压(例如,终止电压)。

电压阶跃Vstep可经确定使得可在ADC代码的电压范围中针对每一ADC代码收集足够多数量的ADC样本(例如,约八个样本),例如,ADC输出代码的电压范围可被划分为八个相等电压阶跃且可针对每一电压阶跃读取一个ADC样本。因此,ADC代码发生的总次数hsum可对应于代码跨度dlt>hi–Clo–1)中介于起始电压与终止电压之间的电压阶跃的总数。然而,ADC装置可归因于程序变动而改变,因此起始电压及终止电压可在一个装置与另一装置之间改变。因此,当应用基于移动直方图的方法时,每一ADC装置可经校准以确定线性度测量之前的起始电压及终止电压使得可精确地确定hsum。hsum的不精确估计可显著地影响INL计算(例如,沿ADC代码的累加),这可在下文更完整地讨论。

图7示出了根据各个实施例的基于移动直方图的方法700的图表表示。基于移动直方图的方法700可在BIST引擎(例如,BIST引擎322或400)上实施。基于移动直方图的方法中的步骤可大概被划分为三个高电平步骤、直方图计算步骤、线性误差计算步骤及直方图移位步骤。在方法700中,可采用具有八个方格(例如,Nbin=8)的直方图710(例如,h[Nbin])用于对代码发生次数进行计数。方法700可开始于ADC输入电压(例如,电压源311)Vin是对应于Clo与Clo+1之间的边界处的代码转变的电压721(例如,起始电压)时。方法700可产生具有对应于代码Clo+1的最低方格(例如,h[0])及对应于代码Clo+8的最高方格(例如,h[7])的直方图710。在直方图计算期间,方法700可在每一电压阶跃Vstep723递增(例如Vin=Vin+Vstep)之后读取ADC样本且因此计算直方图,例如将对应于ADC样本的值的方格的发生次数累加。

当ADC输入电压Vin达到对应于约直方图710中间处的ADC代码(例如,Clo+4到Clo+5)的电压时,方法700可执行线性度误差计算。在线性度误差计算期间,方法700可根据等式(9)针对对应于最低方格的ADC代码(例如,Cho)计算INL值。此外,方法700可比较最低方格的代码发生次数h[0]与最大代码发生hmax及最小代码发生hmin。例如,当h[0]小于hmin时可将hmin更新为h[0]。类似地,当h[0]大于hmax时可将hmax更新为h[0]。最大代码发生hmax可被初始化为零值,且最小代码发生hmin可在测试开始时被初始化为大值(例如,大于代码发生的总次数)。

在针对对应于直方图中的最低方格的ADC输出代码计算线性度误差之后,方法700可将直方图710移位一个ADC代码,例如在将直方图710移位之后,最低方格h[0]可对应于代码Clo+2且最高方格h[7]可对应于代码Clo+9

随后,方法700可继续执行直方图计算且在每次代码转变时(例如,在接收约havg个ADC样本之后)重复线性度误差计算及直方图移位直到ADC输入电压达到对应于从Chi-1到Chi的代码转变的电压为止。因为线性度误差计算及直方图移位可使直方图计算滞后,所以方法700可继续对剩余ADC输出代码执行线性度误差计算及直方图移位直到如图8中所示直方图710的最低方格(例如,h[0])对应于ADC代码Chi-1为止。

图9示出了根据各个实施例的ADC INL测量的图表900。x轴可表示ADC代码索引。y轴可以LSB为单位表示INL值。曲线910、920及930可跨嵌入式装置上的10位ADC的ADC代码以LSB为单位表示INL值。INL值是通过采用基于移动直方图的方法(例如方法700)来测量。INL值是根据等式(9)且接着除以hsum来计算。曲线910可表示当hsum是在其中计算INL值的代码跨度dlt内计算的代码发生的总次数时的INL值。曲线920可表示当hsum计算具有负3的误差时的INL值,且曲线920可表示当hsum计算具有负10的误差时的INL值。如可从曲线910、920及930中观察到,归因于不精确的hsum的INL测量误差是显著的且可随着ADC代码增加而增加。因此,根据基于移动直方图的方法测量的INL值可在很大程度上取决于hsum的精确度。噪音也可以导致hsum不正确。例如,hsum可根据测量INL之前代码跨度dlt的起始电压及终止电压来计算。然而,一些ADC输出代码(例如,离群值)可归因于噪音而落在代码范围dlt之外且无法针对代码发生进行计数。因此,如果当ADC输入电压接近起始电压或终止电压时检测到离群值,那么可因此调整hsum

图10示出了根据各个实施例的ADC线性度测试校准方法1000的流程图。方法1000可在基本上类似于ADC测试设置300的测试设置中的测试器(例如,测试器310)上实施。方法1000可用于确定起始电压VTestStart及终止电压VTestStop,其中VTestStart可对应于导致从Clo到Clo+1的代码转变的电压且VTestStop可对应于导致从Chi-1到Chi的代码转变的电压。方法1000可开始于在步骤1010处将测试配置参数发送到DUT(例如,DUT>lo+1及Chi

在步骤1020中,方法1000可将电压源(例如,电压源311)的ADC输入电压Vin设置为最小ADC输入电压VADCmin。在步骤1030处,方法1000可将触发信号发送到DUT。在发送触发信号之后,方法1000可在步骤1040处等待一定时段。在此时段期间,DUT可执行ADC转换且计算ADC测量。当时段期满时,方法1000可进行到步骤1050。在步骤1050处,方法1000可将ADC输入电压Vin增加一个电压阶跃Vstep(例如,Vin=Vin+Vstep)。在步骤1060处,方法1000可确定ADC输入电压Vin是否为最大ADC输入电压VADCmax。如果ADC输入电压并非最大ADC输入电压VADCmax,那么方法1000可进行到步骤1030。方法1000可重复步骤1030到1060的循环直到ADC输入电压Vin达到最大ADC输入电压VADCmax为止。

在步骤1070处,方法1000可从DUT读取数据。数据可包含起始电压索引VIdxlo及终止电压索引VIdxhi,其中起始电压索引VIdxlo可指示检测到从Clo到Clo+1的代码转变时的电压递增的次数,且终止电压索引VIdxhi指示检测到从Chi-1到Chi的代码转变时的电压递增的次数。方法1000可分别根据起始电压索引VIdxlo(例如,VTestStart=VADCmin+Vstep>Idxlo)及终止电压索引VIdxli(例如,VTestStop=VADCmin+Vstep>Idxhi)计算起始电压VTestStart及终止电压VTestStop。方法1000可采用某个替代电压到索引或代码映射,这可取决于测试器及/或电压源配置。

图11示出了根据各个实施例的另一ADC线性度测试校准方法1100的流程图。方法1100可在基本上类似于ADC测试设置300的测试设置中的BIST引擎(例如,BIST引擎322及400)上实施。方法1100可用于确定起始电压VTestStart及终止电压VTestStop,其中VTestStart可对应于导致从Clo到Clo+1的代码转变的电压且VTestStop可对应于导致从Chi-1到Chi的代码转变的电压。方法1100可开始于在步骤1110处从测试器(例如,测试器310)接收初始化参数。初始化参数可包第一ADC输出代码(例如,Clo+1)及第二ADC输出代码(例如,Chi-1)用于线性度测试。在步骤1120处,方法1100可将计数器初始化为零。

在步骤1130处,方法1100可等待来自测试器的触发信号。当接收到触发信号时,方法1100可进行到步骤1131。在步骤1131处,方法1100可使计数器递增。在步骤1132处,方法1100可读取ADC样本。在步骤1133处,方法1100可确定ADC样本值ADCval是否等于第一ADC输出代码Clo+1。如果ADC样本值ADCval不超过第一ADC输出代码Clo+1,那么方法1100可返回到步骤1130且重复步骤1130到1133的循环。如果ADC样本值ADCval超过第一ADC输出代码Clo+1,那么方法1100可进行到步骤1140。在步骤1140处,方法1100可将计数器值存储为起始电压索引VIdxlo

在步骤1150处,方法1100可等待来自测试器的触发信号。当从测试器接收到触发信号时,方法1100可进行到步骤1151。在步骤1151处,方法1100可使计数器递增。在步骤1152处,方法1100可读取ADC样本。在步骤1153处,方法1100可确定ADC样本值ADCval是否等于第二ADC输出代码Chi-1。如果ADC样本值ADCval不超过第二ADC输出代码Chi-1,那么方法1100可返回到步骤1150且重复步骤1150到1153的循环。如果ADC样本值ADCval超过第二ADC输出代码Chi-1,那么方法1100可进行到步骤1160。在步骤1160处,方法1100可将计数器值存储为终止电压索引VIdxhi。在步骤1170处,方法1100可将起始电压索引VIdxlo及终止电压索引VIdxhi发送到测试器。ADC线性度测试可每次电压递增读取一个ADC样本,因此VIdxlo与VIdxhi之间的差值可对应于ADC线性度测试中的代码发生的总次数hsum

图12示出了根据各个实施例的ADC线性度测试方法1200的流程图。方法1200可在基本上类似于ADC测试设置300的测试设置中的测试器(例如,测试器310)上实施。方法1200可用于测量DUT(例如,DUT 320)上的ADC(例如,ADC 321)的线性度参数。方法1200可开始于例如通过采用方法1000针对起始电压VTestStart及终止电压VTestStop校准ADC之后。VTestStart可对应于导致从Clo到Clo+1的代码转变的电压且VTestStop可对应于导致从Chi-1到Chi的代码转变的电压。

在方法1210处,方法1200可将电压源(例如,电压源311)的ADC输入电压Vin设置为起始电压VTestStart。在步骤1220处,方法1200可将触发信号发送到DUI。在发送触发信号之后,方法1200可在步骤1230处等待一定时段。在此时段期间,DUT可执行ADC转换并计算ADC测量。当时段期满时,方法1200可进行到步骤1240。在步骤1240处,方法1200可将ADC输入电压Vin增加一个电压阶跃Vstep。在步骤1250处,方法1200可确定ADC输入电压Vin是否达到终止电压VTestStop。如果ADC输入电压并非终止电压VTestStop,那么方法1200可进行到步骤1220。方法1200可重复步骤1220到1250的循环直到ADC输入电压Vin达到终止电压VTestStop为止。

在步骤1260处,方法1200可从DUT读取线性度测量。测量可包含最大代码发生、最小代码发生、对应于最大代码发生的ADC输出代码及对应于最小代码发生的ADC输出代码、最大缩放INL值、最小缩放INL值、对应于最大缩放INL值的ADC输出代码、对应于最小缩放INL值的ADC输出代码,如表1中所述。此外,测量可进一步包含测试数据,例如指示接收到ADC样本(其中值在测试代码范围dlt之外)的旗标。

在步骤1270处,方法1200可计算ADC的最小DNL值、最大DNL值、最小INL值及最大INL值,如下所示:

dlt=Chi-Clo-1

>havg=hsumdlt>

>DNLmin=hminhavg-1.0>

>DNLmax=hmaxhavg-1.0>

>INLmin=INLScaledMinhsum>

图13示出了根据各个实施例的另一ADC线性度测试方法1300的流程图。方法1300可在位于基本上类似于ADC测试设置300的测试设置中的嵌入式装置(例如,DUT 320)中的BIST引擎(例如,BIST引擎322及400)上实施。方法1300可用于通过施加基于移动直方图的方法测试芯片上ADC(例如,ADC 321)的线性度参数,这可以基本上类似于方法700。方法1300可开始于针对起始电压VTestStart(例如,电压增量计数VIdxlo)及终止电压VTestStop(例如,电压增量计数VIdxhi)校准ADC且例如通过采用方法1000估计总代码发生hsum之后。

在步骤1310处,方法1300可等待来自测试器(例如,测试器310)的触发信号,其中触发信号可指示ADC输入处的输入电压(例如,电压源311)增加阶跃Vstep。当接收到触发信号时,方法1300可进行到步骤1311。在步骤1311处,方法1300可读取ADC样本。在步骤1312处,方法1300可针对小范围(例如,Nbin=约八到三十二)的ADC输出代码计算代码发生h[Nbin]的直方图(例如,直方图710),其中直方图的每一方格可对应于一个ADC代码。在步骤1313处,方法1300可确定电压源是否为可产生对应于约直方图中间的方格的ADC输出代码的电压。如果电压不对应于约中间方格,那么方法1300可返回到步骤1310且重复步骤1310到1313的循环。否则,方法1300可在电压Vin对应于约中间方格时进行到步骤1320。当电压Vin对应于约中间方格时,方法1300可能已经接收到对应于最低方格h[0]的所有ADC代码Cho(例如,最低方格是满的)。

在步骤1320处,方法1300可计算最低方格h[0]的线性度误差。线性度误差可包含最大代码发生、最小代码发生、最大经修改INL值及最大经修改INL值。以下伪代码可用于计算最小代码发生hmin及最大代码发生hmax

对应于最低方格h[0]的代码Cho的经修改INL值INLscale可根据等式(9)计算。以下伪代码可用于计算最大经修改INL值及最大经修改INL值:

在计算线性度误差之后,可舍弃最低方格h[0]。因此,在步骤1330处,方法1300可在步骤1330处将直方图移位一个ADC代码。直方图的移位可基本上类似于方法700。

在将直方图移位之后,方法1300可继续在步骤1340到1342中读取ADC样本及更新直方图。在步骤1340处,方法1300可等待来自测试器的触发信号。当接收到触发信号时,方法1300可进行到步骤1341。在步骤1341处,方法1300可读取ADC样本。在步骤1342处,方法1300可继续针对对应于ADC样本值的方格更新代码发生的次数。在步骤1343处,方法1300可确定是否从测试器接收到所有ADC样本(例如,根据最终电压增量VIdxhi)。如果未读取所有ADC样本,那么方法1300可继续到步骤1344。在步骤1344处,方法1300可确定自从最终直方图移位以来是否已接收到havg个样本。方法1300可在自从最终直方图移位以来已接收到havg个样本时进行到步骤1320。否则,方法1300可进行到步骤1340。

返回到步骤1343,方法1300可在接收到所有样本时进行到步骤1350。在步骤1350处,方法1300可针对h[Nbin]中的所有方格计算线性度误差,其中线性度误差可在基本上类似于步骤1320中的机制中计算。在步骤1360处,方法1300可将线性度测量发送到测试器。例如,测量可包含最大代码发生、最小代码发生、对应于最大代码发生的ADC输出代码及对应于最小代码发生的ADC输出代码、最大缩放INL值、最小缩放INL值、对应于最大缩放INL值的ADC输出代码、对应于最小缩放INL值的ADC输出代码,如表1中所述。

当输入电压接近起始电压VTestStart时,ADC可产生归因于噪音或运行间变动而低于测试代码跨度dlt中的最低代码Clo的ADC代码。因此,方法1300可检测到落在代码范围之外的代码(离群值)且可因此利用基于移动直方图的方法调整总代码发生hsum以用于更精确的INL测量。此外,方法1300可将旗标设置为指示在电压未接近VTestStart或VTestStop的情况下ADC代码在代码范围dlt之外时的误差。

图14示出了根据各个实施例的比较基于所有代码的直方图方法对基于移动直方图的方法的ADC INL测量的两个图表。x轴可表示ADC代码索引且y轴可以LSB为单位表示INL值。图表1410是根据基于所有代码的直方图方法计算的INL值,且图表1420是根据基于移动直方图的方法(例如,方法1000、1100、1200、1300)计算的INL值。如可观察到,根据基于移动直方图的方法计算的INL值可与根据基于所有代码的直方图方法计算的INL值相当。

可在所述实施例中进行修改且其它实施例可在权利要求书的范围内。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号