主要内容

代码生成的参数音频均衡器

这个例子展示了如何为将用于代码生成的三波段参数均衡器的算法规范建模。

所需MathWorks™产品:下载188bet金宝搏

  • MATLAB®

  • 信号处理工具箱™

  • DSP系统工具箱™

  • 金宝app仿真软件®

  • MATLAB®编码器™

  • 金宝app仿真软件®编码器™

  • 嵌入式编码器®

介绍

参数均衡器常用于调整音频系统的频率响应。例如,参数均衡器可用于补偿在不同频率下具有峰值和低谷的物理扬声器。

本例中的参数均衡器算法提供了三个二阶(双二次)滤波器,其系数可以调整以实现所需的频率响应。仿真中使用了一个用户界面来动态调整过滤系数和探索行为。对于代码生成,系数变量被命名并放置在文件中,以便其他软件组件可以在目标处理器上运行时动态更改系数来访问它们。

以下部分将描述如何指定参数均衡器算法,如何通过模拟探索行为,以及如何生成和自定义代码。

指定的算法

参数均衡器算法分为模型规范和参数化数据规范两部分。模型规范是一个Simulink子系统,它规定了算法的信号流金宝app。模型规范还访问存在于MATLAB工作空间中的参数化数据。参数化数据规范是一个MATLAB脚本,它创建由Simulink模型访问的数据。金宝app

对于本例,模型规范是Simulink模型的均衡器子系统金宝appdspparameqcodegen.在这个子系统中,输入通过三个级联的均衡带。每个频带内的系数变化通过泄漏积分器平滑,然后传递到Biquad滤波器块。每个Biquad Filter块被配置为使用不同的过滤结构。选择不同的筛选器结构是为了在后面的示例中显示代码生成中的差异。

对于本例,参数化的数据规范是MATLAB脚本dspparameq_data.m.这个MATLAB脚本指定了初始滤波器系数以及代码生成属性。当你打开模型时dspparameqcodegen,模型的PreLoadFcn回调被配置为运行dspparameq_data.m在MATLAB工作空间中创建参数数据的脚本。

通过模拟探索行为

您可以使用模拟测试台来探索算法的行为。在本例中,试验台由仿真模型、dspparameqcodegen,以及用MATLAB编写的自定义用户界面(UI)。

可以通过单击“Launch Parameter Tuning UI”链接来启动此UI。UI实现了仿真过程中MATLAB工作空间中系数参数数据的动态调整。

生成均衡器子系统的C代码

一旦实现了所需的模拟行为,就可以根据算法规范为均衡器子系统生成C代码。该模型被配置为显示一些可从嵌入式编码器产品访问的通用代码生成自定义。这些自定义简化了代码审查和集成过程。下面的部分展示了该模型的一些代码定制,并提供了对详细描述这些定制的文档的参考。

要生成C代码,右键单击均衡器子系统,选择C/ c++ code > Build This subsystem,然后在提示可调参数时单击Build按钮。您也可以通过单击以下超链接生成代码:生成均衡器子系统的代码

代码生成报告与模型之间的链接

该模型被配置为生成HTML报告,该报告可用于导航生成的源文件和头文件。报告还支持生成的代码和模型之间的双向链接。例如,每个Biquad Filter块被配置为实现不同的过滤结构。您可以通过右键单击任何Biquad Filter块,然后选择C/ c++ code >导航到C/ c++ code,从块跟踪到相关代码。

有关模型和代码之间可跟踪性的更多信息,请参见在生成的代码金宝app中跟踪Simulink模型元素(嵌入式编码)

调用生成的代码

您可以通过调用模型初始化和模型步骤函数将生成的代码集成到应用程序中。一个例子ert_main.c文件,该文件显示如何调用生成的代码。注意这个例子main ()调用Equalizer_initialize ()初始化状态。这个例子rt_OneStep ()显示诸如中断之类的周期性机制如何调用Equalizer_step ()从文件中Equalizer.c

有关如何将生成的代码集成到另一个应用程序的详细信息,请参见将生成的独立可执行程序部署到目标硬件(嵌入式编码)

输入输出数据接口

参数化数据规范文件;dspparameq_data.m,创建信号数据对象在MATLAB工作空间。这些数据对象与模型中的信号线相关联,并用于指定生成代码中相应变量的描述和存储类。例如,信号声明为全局变量Equalizer.c.要运行模型阶跃函数,应用程序将数据写入,叫。Equalizer_step ()函数,然后从中读取结果

有关数据对象的更多信息,请参见使用数据对象向导创建用于代码生成的数据对象(嵌入式编码)

代码注释中的文本注释

您可以将作为模型文本输入的设计文档插入到生成代码的注释中。的均衡器子系统包含带有关键字的注释文本S:描述.代码生成器识别文本以该关键字开头,并将关键字后面的文本作为注释插入生成的代码中。

有关在代码注释中插入注释文本的详细信息,请参见在生成的代码中添加全局注释(嵌入式编码)

功能分区

为了简化生成代码的导航,均衡器频带的每个子系统都被配置为原子的,并创建自己的函数。你可以在Equalizer_step ()函数。

有关自定义函数命名和位置的更多信息,请参见关于非虚拟子系统代码生成(嵌入式编码)

文件放置系数

参数化数据规范文件;dspparameq_data.m为MATLAB工作空间中的系数创建参数数据对象。这些数据对象被配置为在单独的文件中定义和声明系数变量biquad_coeffs.cbiquad_coeffs.h分别。将系数划分到单独的文件中使其他软件组件能够访问这些数据。例如,在已部署的应用程序中,您可以安排另一个软件组件在运行时修改这些变量,然后再使用它们Equalizer_step ()

有关数据对象的文件位置的详细信息,请参见控制全局数据定义和声明在生成文件中的位置(嵌入式编码)

系数变量注释中的过滤器设计参数

计算系数时(在参数化数据文件中或通过图形用户界面),过滤器设计参数存储在描述字段的系数参数数据对象。该模型被配置为在生成的代码中插入设计参数作为注释。这使得代码的审阅者能够轻松地确定使用了哪些设计参数来设计过滤器。

有关在生成的代码中自定义数据对象注释的详细信息,请参见为生成的代码中的变量添加自定义注释(嵌入式编码)

包生成文件

HTML报告引用的生成文件存在于Equalizer_ert_rtw目录中。除了这个目录下的文件之外,为了集成到一个项目中,可能还需要MATLAB应用程序安装目录下的其他文件。为了便于将生成的代码移植到其他环境中,该模型被配置为使用PackNGo特性,该特性将所有必需的文件打包到zip文件中Equalizer.zip.请注意,zip文件包含所有必需的文件,但也可能包含不需要的其他文件。

有关打包文件以便集成到其他环境中的详细信息,请参见将代码重新定位到另一个开发环境(嵌入式编码)