应用笔记

Moku:Go 的任意波形发生器

使用 MATLAB 生成调制的任意波形

任意波形发生器用于为被测设备(例如检测器和通信设备)输出特定的激励信号。 在本应用说明中,我们提供了一个教程,介绍如何使用 Moku:Go 的任意波形发生器和 MATLAB 生成两个具有脉冲和突发调制的任意波形。

本说明随附的 MATLAB 脚本和文本文件可从 Liquid Instruments 网站下载。


Moku:Go

Moku:Go 在一台高性能设备中结合了 14 多种实验室仪器,具有 2 个模拟输入、2 个模拟输出、16 个数字 I/O 引脚和可选的集成电源。

任意波形发生器

检测器和通信设备通常使用高度任意的信号,而不是标准的正弦波和方波。 因此,表征此类设备需要一个任意波形发生器 (AWG),它可以输出用户定义的波形来模拟被测设备的特定信号。 波形可以基于数学公式或来自预先记录的数据。 例如,为了测试地震探测器,工程师可以生成预先记录的地震信号并分析探测器的响应并相应地改进探测器设计。

Moku:Go 的任意波形发生器可以以高达 65,536 MSa/s 的采样率生成多达 125 个点的自定义波形。 波形可以从文件中加载,或作为最多 32 段的分段数学函数输入,以生成真正的任意波形。

除了生成用户定义波形的能力外,Moku:Go 的 AWG 还具有两种调制模式:脉冲和突发。 脉冲调制以更慢的速率重复信号并允许信号
在周期之间保持设定电压。 脉冲模式用于模拟低占空比重复事件,例如发射信号并测量返回信号的雷达探测器。 一旦满足触发条件,突发模式就会生成输出。 这可以是粒子计数器的脉冲响应或数字通信设备的响应。 因此,信号调制使 AWG 能够用于更广泛的应用。

在本说明中,我们将利用 MATLAB 的 Moku 应用程序编程接口 (API) 从 Moku:Go 生成两个不同的波形,并使用 Windows Moku:Go 应用程序测量另一个 Moku:Go 的输出信号。 我们将演示如何从文本文件加载信号以及如何根据数学公式生成信号。 然后,我们将对每个信号应用脉冲调制和突发调制。

此说明附有示例脚本 AWG_appnote.m 和包含自定义的文本文件
波形 sq_wave.txt 可在 https://download.liquidinstruments.com/documentation/app-note/referencefiles/Using_AWG_with_Moku_Go_Supporting_Files.zip

还请确保在运行示例脚本之前安装了 Moku-MATLAB 工具箱,该工具箱可以从以下网址下载:

https://www.liquidinstruments.com/resources/software-utilities/matlab-api/.

生成自定义波形

在本节中,我们将使用 Moku:Go 的 AWG 生成两个波形。 这两种波形如图 1 所示:方波和线性调频信号。

方波是一个包含 1000 个元素的数组,从附带的文本文件 sq_wave.txt 加载。 这不仅是为了演示如何从文件加载自定义波形,也是为了展示可用于 Moku:Go AWG 的示例波形定义文件,因为同一文件也可用于 Windows 和 Mac 应用程序。

第二个波形也是一个包含 1000 个元素的数组,使用以下等式生成:

y = sin[2π(50t2)]

哪里 t 是从 1000 到 0 均匀分布的 1 个元素的数组。Moku:Go AWG 只需要电压值来形成其查找表, t 仅用于计算 y 值并生成图 1 中的图。

数字 1: 示例波形的 MATLAB 图

一旦将任意波形加载到查找表中,我们就可以将它们部署到 Moku:Go 并开始生成信号。

在 AWG_appnote.m 的第 30 行使用以下 MATLAB 命令通过其 IP 地址建立与 Moku:Go 的连接。

m = MokuArbitraryWaveformGenerator(ip, true);

更换 ip 使用 Moku:Go 的 IP 地址连接到设备。

然后使用设置输出波形 generate_waveform 命令,它按顺序接收五个必需参数:通道、采样率、查找表数据、频率和振幅。 例如,输出通道 1 在第 39 行设置如下:

m.generate_waveform(1, "Auto", square_wave, le3, 1);

这意味着通道 1 将使用自动分配的采样率生成信号 square_wave 查找表。 该信号将具有 1kHz 的频率和 1V 的幅度pp.

图2: Moku:Go 测量硬件设置

为了确认 AWG 的输出信号与图 1 中的波形相匹配,我们设置了另一个 Moku:Go,使用 Windows 应用程序界面运行示波器仪器。 在图 2 中,顶部的 Moku:Go 正在运行示波器仪器,而底部的 Moku:Go 正在运行 AWG 仪器。 运行 AWG 的 Moku:Go 的输出连接到运行示波器的 Moku:Go 的输入。

图3: Moku:Go 示波器测量从 MATLAB 示例脚本生成的 AWG 输出。

捕获的信号如图 3 所示,与图 1 中的波形相匹配。示波器的通道 1 测量频率预期为 1kHz(实际测量为 998.4 Hz)。 这一点也可以用光标来证实,这里方波1个周期的周期是1ms。 两个通道的振幅均为 1Vpp 正如预期的那样(通道 0.9998 的实际测量值为 1V,通道 1.009 的实际测量值为 2V)。

脉冲调制

在脉冲调制模式下,输出波形最多可配置为 218 = 任意波形每次重复之间的 262144 个死区时间周期。

在本例中,我们将使用脉冲调制在方波信号中引入 2 个死循环。

通过取消注释脉冲调制部分中的第 51 行,可以在示例脚本中打开脉冲调制。 调制属性配置为:

m.pulse_modulate(1, 'dead_cycles',2,'dead_voltage',0);

其中第一个参数是应用脉冲调制的通道; 每个信号周期之间有2个周期的死区时间; 死区期间的电压为 0V。

还使用图 4 中的示波器确认了波形。


图4: 示波器测量的脉冲调制方波。

突发调制

在突发模式下,可以从另一个信号源触发输出波形。 一旦满足触发条件,信号将以设置的突发条件生成。 Moku:Go 提供两种类型的突发模式:NCycle 允许在触发时生成一定数量的波形周期; Start 将在触发时开始波形输出。

在本例中,我们将生成一个方波 (1 Vpp 200 Hz) 使用带有内置波形发生器的示波器 Moku:Go(顶部单元)。 该方波将作为突发调制的触发信号馈入 AWG Moku:Go(底部单元)的输入 1。

图5: Moku:Go 硬件设置,示波器输出 1 作为 AWG 的触发信号

通过取消注释示例脚本的第 58 行,可以在示例脚本中启用突发调制。 调制配置为:

m.burst_modulate(2,'Input1','NCycle','burst_cycles',2,'trigger_level',0.1);

其中输出通道 2 由输入 1 触发,一旦触发将产生 2 个周期的线性调频信号。 触发条件是当输出 1 信号上升沿超过 0.1 V 时。 选择 0.1 V 的触发电平,因为它是方波中的急剧上升沿,可创建清晰的触发。

图 6 显示了示波器捕获的信号,其中通道 1 已设置为显示触发信号。 我们可以看到,对于方波的每个周期,AWG 会生成 2 个周期的线性调频波形。

图6: 以示波器输出方波作为触发的突发调制线性调频信号。

总结

本应用说明展示了使用 MATLAB 在 Moku:Go 的任意波形发生器中定义波形的灵活性。 无论波形是由数学公式定义还是从文件加载,同一个 MATLAB 脚本都可以将波形无缝下载到 Moku:Go 并配置仪器。

链接

MATLAB 脚本和文本文件

https://download.liquidinstruments.com/documentation/appnote/referencefiles/Using_AWG_with_Moku_Go_Supporting_Files.zip

Moku 的 MATLAB API:

https://www.liquidinstruments.com/resources/software-utilities/matlab-api/


有疑问或想要可打印版本?

请与我们联系 support@liquidinstruments.com