主要内容

使用 App 生成的模块在 Simulink 中生成无线波形

此示例展示了如何配置和使用通过无线波形发生器中提供的导出到 Simulink 功能生成的模块。

简介

无线波形发生器是一款用于创建、损伤、可视化和导出波形的交互式工具。您可以将波形导出到您的工作区,或者导出到 .mat.bb 文件中。您还可以将波形生成参数导出到可运行的 MATLAB® 脚本或 Simulink® 模块中。您可以使用导出的 Simulink 模块在 Simulink 中重现波形。此示例展示了如何使用该 App 的导出到 Simulink 功能以及如何配置导出的模块以在 Simulink 中生成波形。

虽然此示例侧重于导出 OFDM 波形,但该过程也适用于所有受支持的波形类型。

将无线波形配置导出到 Simulink

App 选项卡中的信号处理和通信下点击无线波形发生器对应的图标即可打开该 App。或者,在 MATLAB 命令提示符下输入 wirelessWaveformGenerator

波形类型部分中,通过点击 OFDM 选择一个 OFDM 波形。在该 App 的最左侧窗格中,调整所选波形的任何配置参数。然后,通过在该 App 的工具条中点击导出并选择导出到 Simulink 来导出该配置。

导出到 Simulink 选项用于创建一个 Simulink 模块,当您运行 Simulink 模型时,该模块会输出所选的波形。如果不存在打开的模型,则该模块将被导出到一个新模型。

modelName = 'WWGExport2SimulinkBlock';
open_system(modelName);

最终数据值之后的输出模块参数指定在生成所有指定的信号样本后的输出。此参数值的选项有 Cyclic repetitionSetting to zeroCyclic repetition 选项在到达信号中的最后一个样本后,从头开始重复信号。Setting to zero 选项在生成信号的最后一帧之后,在仿真的持续时间内生成零值输出。波形采样率(Fs)波形长度模块参数派生自“封装编辑器”对话框的代码选项卡中可用的波形配置。有关模块参数的详细信息,请参阅Waveform From Wireless Waveform Generator App。下图显示了导出的模块的参数。

bdclose(modelName);

将 Spectrum Analyzer 模块连接到导出的模块。

modelName = 'WWGExport2SimulinkModel';
open_system(modelName);

对模型进行仿真以使用当前的配置来可视化波形。

sim(modelName);

Spectrum Analyzer 模块继承波形采样率(Fs) 参数,即 64 MHz。

bdclose(modelName);

修改无线波形配置

当您运行 Simulink 模型时,导出的模块将输出在模块的“封装编辑器”对话框的代码选项卡中生成的波形。在此选项卡中初始化波形的 MATLAB 代码对应于在导出模块之前您在无线波形发生器中选择的配置。要修改波形的配置,请选择以下选项之一:

  • 打开无线波形发生器,选择您选择的配置,然后导出一个新模块。此选项用来与 App 界面而非 MATLAB 代码进行交互,在参数化过程中验证参数范围,以及在运行 Simulink 模型前可视化波形。

  • 更新配置参数,这些参数位于导出模块的“封装编辑器”对话框的代码选项卡中。此选项要求修改此选项卡中的 MATLAB 代码,以便仅在应用更改时才进行参数范围验证。此选项在运行 Simulink 模型之前不提供波形的可视化。如果您不熟悉生成所选波形的 MATLAB 代码,则不建议使用此选项修改波形参数。

您可以在封装编辑器的代码选项卡中更新配置。要打开封装编辑器,请点击导出的模块并按 Ctrl+M

使用代码选项卡中的 MATLAB 代码更新您选择的参数。例如,将子载波间隔 scs 设置为 1,500,000 Hz。

点击确定以应用更改并关闭“封装编辑器”对话框。对模型进行仿真以可视化更新后的波形。

modelName = 'WWGExport2SimulinkModelSCSModified';
sim(modelName);

Spectrum Analyzer 模块现在显示的采样率为 96 MHz,这是之前采样率的 1.5 倍,符合预期。

与模型中的其他模块共享无线波形配置

要访问只读模块参数和波形配置参数,请使用 UserData 通用模块属性,这是一个具有这些字段的结构体。

  • WaveformConfig:波形配置

  • WaveformLength:波形长度

  • Fs:波形采样率

您可以使用 get_param 函数访问导出的模块的用户数据。

get_param([gcs '/OFDM Waveform Generator'],'UserData')
ans = 

  struct with fields:

    WaveformConfig: [1×1 comm.OFDMModulator]
    WaveformLength: 8000
                Fs: 96000000

通过在回调中使用 InitFcn 将用户数据中可用的结构体存储在一个基础工作区变量中。InitFcn 回调在模型更新和仿真期间执行。要使用此回调,请点击建模选项卡,然后点击模型设置下拉列表,再点击模型属性选项。在回调窗格中,选择 InitFcn 回调。将用户数据赋值给一个新的基础工作区变量(例如 cfg)。

每当您应用代码选项卡中的配置更改时,导出模块的用户数据中可用的参数就会更新。

要解调 OFDM 波形,请在模型中添加一个 OFDM Demodulator 模块。在 OFDM Waveform Generator 与 OFDM Demodulator 模块之间连接一个 AWGN Channel 模块,以向输入信号中添加高斯白噪声。另外,添加一个 Constellation Diagram 模块来绘制解调的符号。

modelName = 'WWGExport2SimulinkModelWithDemod';
open_system(modelName);

配置 OFDM Demodulator 模块所需的参数必须与用于配置导出的模块的参数相匹配(否则,解调将失败)。要访问导出的模块的配置参数,请使用变量 cfg。下图显示了 OFDM Demodulator 模块的参数。

因为 OFDM Demodulator 模块需要整个 OFDM 波形才能进行解调,所以请将导出的模块中的每帧采样数参数设置为 cfg.WaveformLength。对模型进行仿真。

sim(modelName);

在使用 OFDM Demodulator 模块解调 OFDM 波形后,Constellation Diagram 模块会显示得到的 QAM 符号。

生成多载波波形

为了实现多载波生成,所有波形的采样率必须相同。要使各波形实现载波偏移并将其聚合,您可以使用 Multiband Combiner 模块。

modelName = 'WWGExport2SimulinkMulticarrier';
open_system(modelName);

要在频率上移动波形,您可能需要提高采样率。Multiband Combiner 模块提供了在移动和组合输入波形之前对其进行过采样的选项。下图显示了 Multiband Combiner 模块的参数。

对模型进行仿真以可视化以 -80、20 和 100 MHz 为中心的波形。

sim(modelName);

另请参阅

App

主题