2

我正在尝试使用 Matlab 从 Lecroy 12 位示波器捕获数据。

我创建了签证对象“范围”,将格式长度设置为“字”(16 位),然后使用“fread”将波形数据获取为 16 位有符号整数:

fwrite(scope,'comm_format Def9,word,bin'); % The only relevant thing here is the "word" setting 

fwrite(scope,'C1:Wf?'); % This gets the waveform from channel 1 on the scope

[wf]=fread(scope,SampleSize,'int16');

问题是捕获的数据上有 8 位噪声。我附上了一张图片,显示了波形的放大部分。您可以看到有一个信号是示波器的完整 12 位分辨率,但似乎偶尔会出现数字化为 8 位的故障。这些故障不会出现在示波器上,只会出现在捕获的数据上。

这是我的示例数据:

样本数据

有谁知道这是什么原因以及我该如何纠正它?

4

3 回答 3

1

您的示波器数据是 12 位,但您使用的是 16 位的“字”。使用 'bit12' 标志可能会解决您的问题。还要记住在fread()函数中使用“bit12”。

于 2018-09-13T12:28:17.420 回答
0

屏幕截图看起来有点像 8 位的示波器样本,而 12 位是通过平均多个样本来实现的。这是提高 sigma delta 转换器分辨率的常见做法。我正在尝试制作 ASCII 绘图:

signal ---->(+)----->8 bit ADC --> digital averaging 256 samples --> 12 bit
         |
       noise (+-1LSB)

也许您必须在软件中实现这一点才能从原始数据中获取 12 位。(12 位的 4 LSB 信息在 256 个 8 位样本的统计分布中)如果您查看屏幕,您已经看到处理过的数据 - 而不是原始数据。

于 2021-08-19T17:38:55.263 回答
0

我会:

查阅示波器手册并查看示波器对签证捕获数据进行了哪些处理,以及对示波器显示屏上显示的数据进行了哪些处理。如果它们不同,那可能就是问题所在。请查阅示波器制造商提供的有关接口的任何文档,将其与 matlab/NI 的接口文档进行比较,以寻找预期格式的任何差异。

尝试查看原始数据,线上的字节,看看是否存在格式问题。与预期的格式化签证相比。

操纵数据集以寻找模式。使用 pyvisa 之类的东西可以让你快速尝试很多不同的参数。

运行不同的信号并检查模式。特别是寻找 8 位样本的数量与频率、幅度之间的任何关系。尝试交流和直流耦合。也可能存在来自数字通信的干扰,您可以尝试使用隔离变压器隔离电路,或与示波器建立隔离的数字链路(尽管如果使用以太网,它可能已经通过磁性隔离)。

在寻求帮助时,我会提供更多详细信息。我将提供的一些东西是使用的示波器、我试图解决问题的东西、捕获图上的轴标签、捕获的样本的转储以及我使用的仪器连接类型(局域网, 485 等)。

最后,如果我解决了这个问题,尝试了提供的解决方案并且没有任何运气,或者放弃了所有希望并跑去加入马戏团,我一定会更新我的问题以反映这一点。

于 2021-08-19T20:43:53.733 回答