文档

设计你的有效加速模型

为加速模式选择Blocks

加速器模拟模式就像运行普通模式一样运行以下块,因为这些块不生成加速器构建的代码。因此,如果您的模型包含很高比例的这些块,那么Accelerator模式可能不会显著提高性能。所有这些都是Simulin万博1manbetxk®块使用解释代码。

请注意

在某些情况下,普通模式输出可能无法精确匹配加速器模式的输出,因为模型的解释版本和编译版本之间的数值精度存在细微差异。

在默认JIT Accelerator模式下运行时,以下块可能导致模拟运行时性能较差。

选择块快速加速模式

不支持代码生成的块(如simeeven万博1manbetxts)®)或仅为特定目标生成代码的块不能在快速加速器模式中模拟。

此外,如果您的模型包含以下任何块,则快速加速模式不起作用:

  • MATLAB解译函数

  • 设备驱动程序s函数,如块从万博1manbetx仿真软件实时™或针对飞思卡尔™MPC555的产品

请注意

在某些情况下,普通模式输出可能与快速加速器模式的输出不精确匹配,因为模型的解释版本和编译版本之间的数值精度存在细微差异。

控制s -功能执行

请注意

在默认的JIT Accelerator模式下,不支持用户编写的TLC S-Functions的内联。万博1manbetx如果在JIT加速器模式下运行包含TLC S-Functions的模型,则执行速度可能会降低。然而,由于JIT加速,代码生成速度将会很高。

使用目标语言编译器内联s函数通过消除对Simulink API的不必要调用,提高了经典加速器模式的性能。万博1manbetx但是,默认情况下,经典Accelerator模式忽略s函数的内联TLC文件,即使该文件存在。快速加速模式总是使用TLC文件(如果有的话)。

写入设备驱动程序S-Function块以访问I/O板上的特定硬件寄存器是选择此行为作为默认行为的一个示例。因为Simulink软件万博1manbetx运行在主机系统而不是目标系统上,所以它不能访问目标I/O寄存器,因此在尝试这样做时会失败。

指定经典加速模式使用TLC文件而不是S-function mex文件SS_OPTION_USE_TLC_WITH_ACCELERATORmdlInitializeSizess函数的函数,如下例所示:

/*代码删除*/ ssSetOptions(S, SS_OPTION_USE_TLC_WITH_ACCELERATOR);}

如果S-Function的C文件不在同一文件夹中,则快速加速器模式将使用MEX文件。

请注意

要为S-Function使用.c或.cpp代码,请确保它们与S-Function的mex文件位于同一文件夹中,否则,您可以将其他文件包含到S-Function中,或者通过使用rtwmakecfg绕过路径限制。m文件。有关更多信息,请参见使用rtwmakecfg。m API来定制生成的makefile(万博1manbetx仿真软件编码器)。

加速器和快速加速器模式数据类型注意事项

  • 加速器模式支持定点信号和矢量高达1万博1manbetx28位。

  • 快速加速模式支持高达128位的定点参数。万博1manbetx

  • 快速加速模式支持最多32位的定点根输入万博1manbetx

  • 快速加速器模式支持枚举数据类型的根输入万博1manbetx

  • 的定点数据万博1manbetx从工作空间块。

  • 快速加速模式忽略选项的选择将定点数据记录为fi对象(FixptAsFi)复选框到工作空间块。

  • 快速加速器模式支持总线对象作为参数。万博1manbetx

  • 加速器模式和快速加速器模式尽可能紧凑地存储整数。

  • 定点设计器™不收集加速器或快速加速器模式中的最小,最大或溢出数据。

  • 加速模式不支持运行时诊断。万博1manbetx

快速加速模式下的范围和观察器的行为

从命令行或菜单运行仿真决定了快速加速器模式下作用域和查看器的行为。

范围或查看器类型 从菜单运行模拟 模拟运行从命令行
万博1manbetxSimulink Scope模块 与普通模式万博1manbetx相同的支持
  • 支持日志记录万博1manbetx

  • 作用域窗口未更新

万博1manbetxSimulink信号查看器范围 图形更新,但不支持日志记录万博1manbetx 不支持万博1manbetx
其他信号查看器 万博1manbetx支持仅限于外部模式下可用的支持 不支持万博1manbetx
信号记录 万博1manbetx受支持,限制列于信号记录在快速加速器模式 万博1manbetx受支持,限制列于信号记录在快速加速器模式
多速率信号观看器 不支持万博1manbetx 不支持万博1manbetx
Stateflow®图块 与普通模式万博1manbetx相同的图表动画支持 不支持万博1manbetx

快速加速器模式不支持多速率信号查看器,如DSP System T万博1manbetxoolbox™频谱范围或Communications System Toolbox™散点图、信号轨迹或眼图范围。

请注意

虽然从命令行运行Rapid Accelerator模式时作用域和查看器不会更新,但从菜单运行模型时它们会更新。从用户界面运行加速模式演示如何从菜单中运行快速加速器模式。以编程方式与加速模式交互说明如何从命令行运行模拟。

抑制加速的因素

  • 如果您的模型:您不能使用加速器或快速加速器模式:

    • 将数组参数传递给MATLAB®非数字、逻辑或字符数组的s函数是稀疏数组,或者具有二维以上的s函数。

    • 使用Fcn块包含具有复杂输入的三角函数。

  • 在某些情况下,与外部或自定义代码相关联的更改不会导致Accelerator或Rapid Accelerator模拟结果发生更改。这些包括:

    • TLC代码

    • s函数源代码,包括rtwmakecfg。m文件

    • 集成自定义代码

    • s函数生成器

    在这种情况下,考虑对顶级模型强制重新生成代码。或者,您可以通过删除代码生成文件夹(如slprj或生成的模型代码文件夹)来强制生成顶级模型代码。

    请注意

    使用JIT加速时,加速目标代码在内存中。因此,只要模型是打开的,即使您删除了slprj文件夹中。

快速加速器模式限制

  • 快速加速模式不支持:万博1manbetx

    • 代数循环。

    • 目标用c++编写。

    • MATLAB解译函数块。

    • 非内联MATLAB语言或Fortran s函数。必须用C编写s函数,或者使用目标语言编译器(TLC)将其内联,也可以使用MEX文件。有关更多信息,请参见编写完全内联的s函数(万博1manbetx仿真软件编码器)。

    • 3 d信号。

    • 调试器或分析器。

    • 的运行时对象万博1manbetx仿真软件。RunTimeBlock万博1manbetx仿真软件。BlockCompOutputPortData块。

  • 模型参数必须是以下数据类型之一:

    • 布尔

    • uint8int8

    • uint16int16

    • uint32int32

    • 定点

    • 枚举

  • 在快速加速模式下不能暂停模拟。

  • 如果快速加速器构建包含引用模型(通过使用模型块),设置这些模型,使用固定步骤求解器为它们生成代码。然而,只要参考模型中的块是离散的,顶层模型就可以使用变步长求解器。

  • 在某些情况下,更改块参数可能会导致模型的结构更改,从而更改模型校验和。这种变化的一个例子是改变DSP仿真中的延迟数量。在这些情况下,您必须为模型重新生成代码。看到加速模型中的代码再生了解更多信息。

  • 对于根导入,快速加速模式只支持base作为万博1manbetxSrcworkspace

  • 对于根导入,当您指定块应该输出的最小值和最大值时,快速加速器模式在模拟期间不会识别这些限制。

  • 在快速加速模式下,到文件到工作空间如果连接了函数调用端口,则函数调用子系统中的块不会生成任何日志文件地面或无关的。

保留关键字

有些词是保留给万博1manbetx仿真软件编码器™代码语言和由加速模式和快速加速模式。这些关键字不能作为子系统上的函数或变量名出现,也不能作为导出的全局信号名出现。使用保留关键字会导致Simulink软件报告错误,并且无法编译或运行模型。万博1manbetx

的关键字万博1manbetx仿真软件编码器产品列于生成标识符的构造(万博1manbetx仿真软件编码器)。仅适用于“加速器”和“快速加速器”模式的其他关键字有:

muDoubleScalarAbs muDoubleScalarCos muDoubleScalarMod
muDoubleScalarAcos muDoubleScalarCosh muDoubleScalarPower
muDoubleScalarAcosh muDoubleScalarExp muDoubleScalarRound
muDoubleScalarAsin muDoubleScalarFloor muDoubleScalarSign
muDoubleScalarAsinh muDoubleScalarHypot muDoubleScalarSin
muDoubleScalarAtan, muDoubleScalarLog muDoubleScalarSinh
muDoubleScalarAtan2 muDoubleScalarLog10 muDoubleScalarSqrt
muDoubleScalarAtanh muDoubleScalarMax muDoubleScalarTan
muDoubleScalarCeil muDoubleScalarMin muDoubleScalarTanh

相关的例子

更多关于

这个话题有帮助吗?