合并多个数据文件以优化INL/DNL处理

描述

以下应用笔记展示了如何利用 MATLAB 的一些强大命令来提高存储器受限高速数据采集系统的码密度,以实现任何高速模数转换器 (ADC) 的 INL 和 DNL 测试所需的大量代码重复。

本简短的应用笔记演示了在逻辑分析仪存储器深度有限的情况下,如何使用 MATLAB™¹ 等数据处理软件来增加代码数量。任何使用配备 HP16517A 高速状态卡(数据速率超过 135MHz)的逻辑分析仪 (LA) 主机 HP16500C 捕获超高速数据的工程师可能已经遇到过这些内存限制。

此HP系统的标准版本通常配备64k的最大内存深度,单次测试运行仅允许捕获65536个数据点。64k 内存捕获的数据点根本不足以生成 INL/DNL 图形的准确表示。事实上,对于 INL 和 DNL 图,逻辑分析仪通常应捕获 256k 到 4M 个数据点,这些数据点通过 MATLAB 或其他信号处理软件进行处理。

要使用上述数据采集系统的64k标准存储深度并实现精确的INL/DNL表征,必须捕获多个数据记录并将其合并到一个文件中。例如,如果需要 256k 个数据点,则必须捕获四组 64k 数据点并将其组合在一起,然后才能使用应用笔记 2085“直方图测试确定 DNL 和 INL 误差”中提供的 MATLAB 程序(或类似源代码)进行处理。

要将多个数据记录合并到一个足够大的文件中以进行 INL/DNL 处理,请执行以下步骤。

使用高速状态卡 (HP16517A) 捕获 64k 数据点。

删除代码文件中所有不属于代码的特定于 LA 的行,然后保存该文件。

为文件的内容分配一个新变量。
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 测试程序之前,请确保您有此信息可用。

审核编辑:郭婷

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

全部0条评论

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

×
20
完善资料,
赚取积分