本文探讨如何利用MATLAB强大的指令功能改进高速数据采集系统中存储器受限的代码密度,提高程序代码的循环量,以满足高速模/数转换器(ADC)的INL、DNL测试需求。
本文简单介绍了MATLAB™1数据处理软件,在逻辑分析仪存储容量有限的情况下用于增强程序代码量。大多数工程师在使用配有HP16517A高速状态卡的大型逻辑分析仪(LA) HP16500C设备采集超高速数据(数据速率高于135MHz)时,都会面临存储器受限的问题。
HP设备的标准配置中通常提供64k最大存储器容量,每次测试只能存储65536个数据点。为了准确描述INL/DNL特性,64k存储器所能捕获的数据点还远远不能满足需求。事实上,对于INL和DNL测试图,逻辑分析仪需要采集256k到4M个数据点,提供给MATLAB或其它信号处理软件进行分析。
采用上述64k标准数据采集系统的存储容量时,为了精确描述INL/DNL特性,必须采集多组数据记录并将其合并到一个文件中。例如,当需要256k个数据点时,则要采集四组64k的数据,在采用应用笔记:Histogram Testing Determines DNL and INL Errors介绍的MATLAB软件(或同类软件)进行数据分析之前,需要将它们合并到一起。
可通过以下步骤将多个数据记录合并到一个足够大的INL/DNL文件中,以便进行INL/DNL数据处理:
- 用高速状态卡(HP16517A)采集64k个数据点。
- 删除所有程序文件中LA指定的、不属于程序的代码,并保存文件。
- A为文件内容指定一个新变量。
MATLAB命令: a=load('inltest1');
- 用高速状态卡采集另一组64k数据记录。
- 再次删除所有程序文件中LA指定的、不属于程序的代码,并保存文件。
- 为新的数据文件内容指定另一个新变量。
MATLAB命令: b=load('inltest2');
- 合并两组数据记录(A和B),并为它们指定一个新的变量。
MATLAB命令: c=vertcat(a,b);
- 如果需要检测合并后数据记录的数量,可以在MATLAB中输入size(c); ,随后应该得到132k的数据记录。
- 将这组新的数据记录保存为.TXT或.DAT文件,以便MATLAB计算INL/DNL时能够处理这些数据。
MATLAB命令: save inldata.txt c -ascii;
- 上述命令将文件保存为ASCII文件格式,存储在预先定义的目录下,INL/DNL测试程序可以根据需要获得这些数据。
- 如果所有步骤在一次MATLAB会话中完成,则执行上述处理。也可以循环执行预先合并的文件。对于这种情况,只需加载存储数据的文件,指定一个新的变量即可。
MATLAB命令: d=load('inldata.txt');
- 一旦完成这项工作,可以提取一组新的数据,将其添加到现有数据中。只需采集另一组64k数据记录,为其内容指定另一矩阵变量。
MATLAB命令: e=load('inltest3');
- 合并旧的文本文件(当前变量为d),指定新的数据变量为e。
MATLAB命令: f=vertcat(d,e);
- 按照第9步将新的、扩展后的数据矩阵保存到一个ASCII文件。
也可以利用MATLAB中的命令: y=vertcat(a,b,c,d,e,f,g,h)一次合并多个变量,总之,可以利用多种方法、程序和配置方式,采用现有设备和简单的软件指令完成这些测试。这里提供的流程只是一个简单的MATLAB应用范例。
为了构建INL/DNL测试程序,只需简单调用MATLAB中的INL/DNL测试子程序。运行该程序,并在有请求时将连续数据组加载到程序中。如果把合并后的数据保存到一个.TXT或.DAT文件内,须注意记录矩阵文件的数据路径。出现程序提示时,必须提供向测试子程序加载数据的准确路径和文件名。程序还要求提供数据点数(数据矩阵的尺寸)、转换结果及其中间代码。在运行INL/DNL测试程序之前,须确认你已拥有这些信息。
参考文献: INL/DNL Measurements for High-Speed Analog-to-Digital Converters (ADCs) Histogram Testing Determines DNL and INL Errors |