【问题标题】:8 bit noise on 16 bit oscilloscope signal in MatlabMatlab中16位示波器信号的8位噪声
【发布时间】:2019-02-11 03:16:57
【问题描述】:

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

我创建了visa对象“scope”,将格式长度设置为“word”(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 位的故障。这些故障不会出现在示波器上,只会出现在捕获的数据上。

这是我的示例数据:

有谁知道这是什么原因造成的,我该如何纠正?

【问题讨论】:

    标签: matlab fread noise oscilloscope


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

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

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

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

      【讨论】:

        【解决方案3】:

        我愿意:

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

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

        操纵数据集以寻找模式。使用 pyvisa 之类的工具,可以让您快速尝试许多不同的参数。

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

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

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2012-11-01
          • 2011-10-15
          • 2020-09-16
          • 2015-10-11
          • 2020-06-04
          • 2016-09-27
          相关资源
          最近更新 更多