通过多个数据文件组合优化INL/DNL分析

通信设计应用

58人已加入

描述

摘要:本文探讨如何利用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数据处理:

  1. 用高速状态卡(HP16517A)采集64k个数据点。
  2. 删除所有程序文件中LA指定的、不属于程序的代码,并保存文件。
  3. A为文件内容指定一个新变量。
    MATLAB命令: a=load('inltest1');
  4. 用高速状态卡采集另一组64k数据记录。
  5. 再次删除所有程序文件中LA指定的、不属于程序的代码,并保存文件。
  6. 为新的数据文件内容指定另一个新变量。
    MATLAB命令: b=load('inltest2');
  7. 合并两组数据记录(A和B),并为它们指定一个新的变量。
    MATLAB命令: c=vertcat(a,b);
  8. 如果需要检测合并后数据记录的数量,可以在MATLAB中输入size(c); ,随后应该得到132k的数据记录。
  9. 将这组新的数据记录保存为.TXT或.DAT文件,以便MATLAB计算INL/DNL时能够处理这些数据。
    MATLAB命令: save inldata.txt c -ascii;
  10. 上述命令将文件保存为ASCII文件格式,存储在预先定义的目录下,INL/DNL测试程序可以根据需要获得这些数据。
  11. 如果所有步骤在一次MATLAB会话中完成,则执行上述处理。也可以循环执行预先合并的文件。对于这种情况,只需加载存储数据的文件,指定一个新的变量即可。
    MATLAB命令: d=load('inldata.txt');
  12. 一旦完成这项工作,可以提取一组新的数据,将其添加到现有数据中。只需采集另一组64k数据记录,为其内容指定另一矩阵变量。
    MATLAB命令: e=load('inltest3');
  13. 合并旧的文本文件(当前变量为d),指定新的数据变量为e。
    MATLAB命令: f=vertcat(d,e);
  14. 按照第9步将新的、扩展后的数据矩阵保存到一个ASCII文件。
也可以利用MATLAB中的命令: y=vertcat(a,b,c,d,e,f,g,h)一次合并多个变量,总之,可以利用多种方法、程序和配置方式,采用现有设备和简单的软件指令完成这些测试。这里提供的流程只是一个简单的MATLAB应用范例。

为了构建INL/DNL测试程序,只需简单调用MATLAB中的INL/DNL测试子程序。运行该程序,并在有请求时将连续数据组加载到程序中。如果把合并后的数据保存到一个.TXT或.DAT文件内,须注意记录矩阵文件的数据路径。出现程序提示时,必须提供向测试子程序加载数据的准确路径和文件名。程序还要求提供数据点数(数据矩阵的尺寸)、转换结果及其中间代码。在运行INL/DNL测试程序之前,须确认你已拥有这些信息。

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分