摘要: 本应用说明描述了直方图测试的要求,定义了通过直方图方法测试的参数,并讨论了这种代码密度测试方法的优缺点。
也称为代码密度测试,直方图测试方法有助于确定非线性参数,如数据转换器中的微分和积分非线性(INL和DNL)。下面的应用说明有助于深入了解概率密度函数和成功完成直方图测试所需的各种数据转换器规格之间的数学关系。
如今,数据转换器的制造商经常使用直方图方法来验证其数据转换器的积分(INL)和微分(DNL)非线性规格。这种方法,也称为代码密度测试,是在数据转换器的幅度域中执行的。在直方图测试期间,将具有浴盆分布的重复动态信号(例如正弦波信号)应用于数字转换器(ADC),在转换器的输出端生成相应的数字代码分布。与相应的输出代码分布的任何偏差都会导致各种误差,这些误差可以用直方图方法估计。这些错误参数首先包括DNL和INL。
对于ADC,给定输入信号,直方图显示每个不同的数字码字在ADC输出上出现的次数。直方图测试的一种方法是对正弦输入信号进行采样和数字化。然后将数字化的信息分类到代码箱中。每个码仓代表一个输出码。根据输入信号,收集每个桶的样本数或命中数。用N表示ADC的分辨率或总位数,将有2(N)个码仓。对于理想的ADC,每个码仓宽度应对应于FSR/2(N)的位宽度,其中FSR是ADC的满量程,以伏特为单位。然而,在现实世界中,adc的代码箱宽度可能不相同。例如,如果在代码仓中收集的样本数量(对于已知的输入信号)大于预期,那么这个数字将表明代码仓宽度大于理想值(从统计学上讲)。
代码样本的频率显示为代码的函数。对于理想的ADC,该图将是正弦波的概率密度函数p(V),表示如下
p(V) = 1 / (π ×√[a(2)-v (2)]])
建立了这种数学关系后,必须确定样本数组的大小。
但是,多大的数据记录代表了统计上显著的样本数量呢?
概率密度函数将有助于回答这个问题。对于给定的概率密度函数和数据记录大小,理想ADC的每个代码仓确定期望的样本数量及其相关的标准偏差。代码仓中样本数量接近预期水平的置信度等于样本落在适当偏差数量内的概率。请注意,标准差和期望值之间的比率随着数据记录中样本数量的增加而减小。为了获得整个范围的置信水平,将所有代码落在期望代码内的概率相乘。
为了计算所记录的数据数组中每个代码的概率,需要将每个代码的样本数除以数据记录中的样本数。理想的采样概率是一个理想的ADC将一个纯正弦波应用到转换器的输入时所产生的。将基于正弦波的输入信号的概率密度函数与箱数进行积分,可以计算出每个码箱的确切大小,如下所示
P (n) = 1 /π×[arcsin (FSR×{n-2 (n-1)}/×2 (n))-arcsin (FSR×{n-1-2 (n-1)}/×2 (n))),
其中n表示码仓号,FSR为满量程,n为ADC的分辨率。每个输出代码的测量(实际)直方图与理想直方图之间的偏差是代码大小的函数,可用于确定数据转换器的DNL。DNL的计算方法如下
DNL (LSB) = [AP(n(th)码)/ IP(n(th)码)]-1
其中n表示码仓编号,取值范围为1 ~ 2(n), n为ADC的分辨率,AP(n(th)码)表示码仓n中样本的实测直方图,IP(n(th)码)表示码仓n中样本的理想(期望)直方图。
不幸的是,直方图方法需要捕获相当大的数据记录。所需的样本数量取决于ADC的分辨率、所需的测量置信水平和DNL误差的大小。例如,DNL误差(β)为0.1LSB的10位ADC和95%置信水平(Z(α/2))需要记录超过50万个样本(N(RECORD))。将置信水平从95%提高到99%将导致超过100万个样本的数据记录大小显着增加。
N(记录)=π×2 (N-1)×(Z(α/ 2))(2)]/β(2)=π×2(9)×(1.96)(2)/ (0.1)(2)= 617920
N(记录)=π×2 (N-1)×(Z(α/ 2))(2)]/β(2)=π×2(9)×(2.58)(2)/ (0.1)(2)= 1070678
随着ADC分辨率的增加,满足置信度和误差分辨率所需的采样数乘以转换器分辨率中每增加一位的2倍。对于具有12位或更高分辨率的ADC,该测试可能最终成为测量DNL的限制因素,因为它需要大量数据存储能力来承载所需的400多万个数据点。尽管记录大小和分辨率的增加会导致实验室和生产测试时间的延长和成本密集的副作用,但引入所谓的硬件直方图生成器可以帮助减少测试时间。这种发生器的测试时间定义为记录大小与ADC采样率之间的比率。
通过直方图方法确定DNL可能具有挑战性,因为该测试对输入正弦波的幅度变化、噪声、时钟抖动和转换器滞后很敏感。在这种情况下,使用累积直方图检验可能是计算INL和DNL误差的更好选择。要做到这一点,必须确定ADC的偏移电压和过渡电压。为了找出数字化数据点采集中的偏移误差,将数据记录(N(RECORD) = N(RECORD[P]) + N(RECORD[N]))中的正负样本数相等,如下所示
2 (N-1)
N(RECORD[N]) = 西格马AP(N(th)代码)
n = 1
2 (N)
N(RECORD[P]) = 西格马 AP(N(th) code)
n=2(n-1)+ 1
V(抵消)= 0.5××π×罪[(N(记录[P]) - N(记录[N])) / (N(记录[P]) + N(记录[N])))
计算偏移误差后,可以使用以下数学表达式找到过渡电压或码边(V(j))
j
V (j) =-×cos(π×(西格马美联社(n (th)代码)/ n(记录)))
(n = 1)
已知过渡电压后,INL和DNL参数的计算与正弦波信号的输入幅度无关,可以用下式计算
j
INL(j) (LSB) = 西格马 DNL(j) (LSB)
(n = 1)
DNL(j) (LSB) = (V(j+1)-V(j)) × (2(N)/FSR)
其中,DNL(j)为相邻两码之差,INL(j)为所有DNL(j)错误之和。FSR是满量程,N是测量INL和DNL的ADC的分辨率。
下图展示了MAX1193的直方图、INL和DNL性能,MAX1193是一款8位、低功耗45Msps ADC。在MAX1193的情况下,使用5.6018MHz正弦输入信号进行INL和DNL测试。注意,图1表示了代码计数充足和不足数量之间的直方图比较。图2和3描述了在这些(充分和不充分的样本量)条件下产生的DNL和INL性能。
图1所示 MAX1193的充足代码计数与不足代码计数直方图显示。
图2 代码计数充足与代码计数不足的DNL差异- MAX1193。
图3 代码计数充足与代码计数不足的INL差异- MAX1193。
可下载的Matlab源代码示例(M, 2KB)
%代码密度/直方图测试计算INL和DNL需要大量的样本。步骤1:应用一个接近满量程的正弦波(但不是削波),并找到应用信号的中码%。步骤2:应用相同的正弦波输入,但幅度稍大,以略微剪辑ADC。运行以下程序,输入%步骤1中的样本数量、分辨率和中间代码,然后继续。版权所有Au/Hofner, Maxim Integrated, 160 Rio Robles, Sunnyvale, % ca94086本程序被认为是准确可靠的。此程序可能在不事先通知的情况下被更改。如果isempty(filename) filename= ' Listing ';endfid=fopen(filename,'r');numpt=input('Number of Data Points? ')');numbit=input ('ADC分辨率?');mid_code=input(Enter Mid-Code (Mean): ');for i=1:13, %丢弃13行冗余或与头相关的HP16500C数据fgetl(fid);end[v1,count]=fscanf(fid,'%f',[2,numpt]);fclose(fid);v1=v1';code=v1(:,2);code_count=zero (1,2^numbit);%Code countfor i=1:size(Code), code_count(Code (i)+1)=code_count(Code (i)+1) +1;end%检测ADC输入是否为剪切或非剪切的例程code_count(1) == 0 | code_count(2^numbit) == 0 |…(code_count (1) & lt;Code_count (2)) | (Code_count (2^numbit-1) >code_count(2^numbit)) disp('增加正弦波幅度以稍微箝制ADC ');打破;安达= max (mid_code 2 ^ numbit-1-mid_code) + 0.1;%实际正弦波振幅的初始估计=(0:2^numbit-1)-mid_code;%码到中间码的距离=1。/(π*√(^ 2 *的大小(vin) vin。* vin));%sin2ramp*numpt是期望的%计数每个代码;继续增加对A的估计,直到从%code 1到2^numbit-2的实际计数总数与sin2ramp*numptwhile sum(code_count(2:2^numbit-1)) <预测的总数相匹配;numpt *总和(sin2ramp (2:2 ^ numbit-1)) = A + 0.1;sin2ramp = 1。/(pi* sqrt(A^2*ones(size(vin))-vin.*vin));enddisp('You Have Applied A Sine Wave of (dBFS): ');Amplitude=A/(2^numbit/2)figure;plot([0:2^numbit-1],code_count,[0:2^numbit-1],sin2ramp*numpt);title('CODE直方图-正弦波');xlabel('DIGITAL OUTPUT CODE');ylabel('COUNTS');axis([0 2^numbit-1 0 max(code_count(2),code_count(2^numbit-1)));code_countn=code_count(2:2^numbit-1)./(numpt*sin2ramp(2:2^numbit-1));figure;plot([1:2^numbit-2],code_count);title('CODE直方图-归一化')xlabel('DIGITAL OUTPUT CODE');ylabel('归一化计数');%DNL=Vj+1-Vj- 1lsb,其中Vj表示一个过渡点,%Vj+1-Vj与归一化代码counl = 0 (size(DNL))成比例,对于j=1:size(inl') inl(j)=sum(DNL (1:j));% INL j =黑暗,0 +黑暗,1 +……+DNL,jend%INL仍然包含偏移和增益误差!%最适合的直线[p,S]=polyfit([1,2^numbit-2],[INL (1), INL (2^numbit-2)],1);%最适合的直线[p,S]=polyfit([1:2^numbit-2], INL,1); INL= INL -p(1)*[1:2^numbit-2]-p(2);disp(' DNL和INL计算的终点消除');figure;plot([1:2^numbit-2], DNL);grid on;title('DNL'); ylabel('DNL (LSB)');figure;plot([1:2^numbit-2], INL);grid on;title('INL (BEST end-point FIT)');xlabel('DIGITAL OUTPUT CODE')代码”);ylabel(“INL (LSB) ');
V=A×sin[欧姆t],其中V表示自变量(在本例中为电压),a表示正弦波的振幅。
一个理想的直方图是在给定的bin中代码的概率乘以记录中的样本数量。
置信水平为概率值(1)-α)与置信区间相关联。置信水平通常用百分比表示。例如,如果α= 1%则置信水平等于1-0.01 = 0.99或99%置信水平。
NRECORD计算中使用的置信水平值来源于1997年5月12日印刷的IEEE标准1241草案的表2——由IEEE仪器和测量学会波形测量和分析委员会的数字转换器小组委员会编制的数字转换器术语和测试方法标准
累积直方图是常用直方图的一种变体。在累积直方图中,y轴不仅提供单个代码仓的样本计数,还显示该代码仓的样本计数以及较小值的所有代码仓的样本计数。
附加信息:高速数字转换器(adc)的INL/DNL测量
社群二维码
关注“华强商城“微信公众号
Copyright 2010-2023 hqbuy.com,Inc.All right reserved. 服务热线:400-830-6691 粤ICP备05106676号 经营许可证:粤B2-20210308