Subsystem
R2026b对各模块进行分组以创建模型层次结构
Subsystem block

To add a block to a model, double-click the canvas and start typing the block name. Then, select the block from the list.
库:
Simulink /
Commonly Used Blocks
Simulink /
Ports & Subsystems
HDL Coder /
Ports & Subsystems
Subsystem 模块的替代配置:
原子子系统 | 子系统引用 | Enabled Subsystem | Triggered Subsystem | Enabled and Triggered Subsystem | ...
描述
Subsystem 模块包含模型或系统中的一组模块。Subsystem 模块可以表示虚拟子系统或非虚拟子系统。
虚拟子系统有助于直观地组织模块图。当您对虚拟子系统中的模块进行组合或扩展虚拟子系统时,因为模块路径的更改,您可能会影响模块的执行顺序。虚拟子系统既不以原子方式执行也不自动执行。虚拟子系统没有校验和。
非虚拟子系统,亦称原子子系统,有助于在功能上组织模块图。当您对一个非虚拟子系统中的模块进行组合或展开一个非虚拟子系统时,您会更改模型行为。当父模型执行时,每个非虚拟子系统作为单个模块或原子单元执行。一个非虚拟子系统中的模块会连续执行。
有关非虚拟子系统类型的信息,请参阅浏览子系统的类型。
要确定子系统是虚拟子系统还是非虚拟子系统,请使用以下策略之一:
检查模块的边框。表示虚拟子系统的模块有细边框。表示非虚拟子系统的模块有粗边框。

使用
get_param函数查询布尔值模块参数IsSubsystemVirtual。
Subsystem 模块上的端口对应于子系统内部的模块。有关详细信息,请参阅连接子系统。
Subsystem 模块通过子系统 Inport 和 Outport 模块支持信号标签传播。有关详细信息,请参阅信号标签传播。
示例
要创建子系统,您可以先添加一个 Subsystem 模块,然后向子系统添加内容。
在模型中插入一个 Subsystem 模块。
例如:
双击 Simulink® 画布以打开快速插入菜单。
在搜索框中,开始键入模块的名称。例如,键入
subsystem。在出现的列表中,选择要在模型中实现的子系统类型的模块。使用箭头键并按 Enter 键或点击该模块。
要查看或编辑子系统的内容,请双击 Subsystem 模块。要退出子系统,请在 Simulink 工具栏的左端下方,点击“后退”按钮
。有关如何在包含子系统的模型层次结构中导航的详细信息,请参阅Navigate Model Hierarchy。
您可以通过将现有模型的一部分转换为子系统来创建子系统。
在 Simulink 画布中,拖动以绘制一个选择框来涵盖您要包含在子系统中的模型元素。选择框旁边会出现省略号。

将鼠标在省略号上暂停。将展开一个操作栏。

在该操作栏中,点击创建子系统或另一个子系统选项。

为了提供信号进出子系统的接口,Subsystem 模块包含与输入端口和输出端口对应的模块。
当所选内容包含对应于输入和输出端口的模块时,新子系统包括这些模块的副本。新子系统不包含对应于控制端口的模块的副本。
要用其内容替换 Subsystem 模块,您可以展开子系统。
选择 Subsystem 模块。然后,在 Simulink 工具条的子系统模块选项卡上,点击展开。
子系统的内容出现在标有被替换模块名称的区域中。

有关详细信息,请参阅Expand Subsystem Contents。
要确定子系统是否为虚拟子系统,请使用具有布尔值模块参数 IsSubsystemVirtual 的 get_param 函数。
打开示例。然后,打开 SubsystemExecution 模型。
open_system("SubsystemExecution");
检查名为 discrete cruise controller 的 Subsystem 模块是否为虚拟模块。
get_param("SubsystemExecution/discrete cruise controller",... "IsSubsystemVirtual")
ans = 'off'
此子系统是非虚拟子系统。模块图标的粗边框表示子系统是非虚拟子系统。
检查名为 car dynamics 的 Subsystem 模块是否为虚拟模块。
get_param("SubsystemExecution/car dynamics","IsSubsystemVirtual")
ans = 'on'
此子系统是虚拟子系统。
扩展示例
将子系统转换为引用模型
此示例显示如何使用模型引用转换顾问或 Simulink.SubSystem.convertToModelReference 函数将子系统转换为引用模型。有关详细说明,请参阅将子系统转换为引用模型。
端口
输入
在子系统中放置一个模块(如 Inport 或 In Bus Element)会向 Subsystem 模块添加一个外部输入端口。
使用 Inport 或 In Bus Element 模块可以从局部环境中获取信号。
有关详细信息,请参阅连接子系统。
数据类型: half | single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | Boolean | fixed point | enumerated | bus | image | datetime
复数支持: 是
重新初始化事件端口提供触发子系统重新初始化事件的函数调用控制信号,这会重置子系统的状态。
对于每个子系统重新初始化事件,子系统必须包含一个对应的 Reinitialize Function 模块。要指定端口名称,请使用 Reinitialize Function 模块中 Event Listener 模块的事件名称参数。有关详细信息,请参阅Reinitialize States of Blocks in Subsystem。
依赖关系
要启用此端口,请选择视为原子单元,然后选择显示子系统重新初始化端口。
输出
参数
要以交互方式编辑模块参数,请使用属性检查器。在 Simulink 工具条中,在仿真选项卡的准备库中,选择属性检查器。
常设
选择如何在 Subsystem 模块图标上显示端口标签。
无 - 不显示端口标签。
FromPortIcon - 如果对应的端口图标显示了信号名称,则在 Subsystem 模块上显示信号名称。否则,如果模块名称是默认名称,则显示端口模块名称或端口号。
FromPortBlockName - 在 Subsystem 模块上显示对应端口模块的名称。
SignalName - 如果连接到端口的信号已命名,则会在 Subsystem 模块上显示信号的名称。否则,显示相应端口模块的名称。
有关 Subsystem 模块上的端口标签编辑,请参阅编辑子系统模块上的端口标签。
编程用法
要以编程方式设置模块参数值,请使用 set_param 函数。
| 参数: | ShowPortLabels |
| 值: | 'FromPortIcon' (默认) | 'FromPortBlockName' | 'SignalName' | 'none' |
控制用户对子系统内容的访问。
ReadWrite - 允许打开和修改子系统内容。
ReadOnly - 允许打开但不允许修改子系统。如果子系统在模块库中,您可以创建和打开该子系统的链接,创建和修改子系统的本地副本,但不能更改权限或修改原始模块库实例的内容。
NoReadOrWrite - 禁止打开或修改子系统。如果子系统在模块库中,您可以在模型中创建该子系统的链接,但不能打开、修改、更改权限或创建子系统的本地副本。
如果您尝试查看其读取/写入权限参数设置为 NoReadOrWrite 的子系统的内容,将不会收到响应。例如,当您双击此类子系统时,软件不会打开该子系统,并且不显示任何消息。
编程用法
要以编程方式设置模块参数值,请使用 set_param 函数。
| 参数: | Permissions |
| 值: | 'ReadWrite' (默认) | 'ReadOnly' | 'NoReadOrWrite' |
输入软件执行子系统时,如果发生错误要调用的函数的名称。
该软件向函数传递两个参量:子系统的句柄以及指定错误类型的字符向量。如果未指定任何函数,当执行子系统导致错误时,软件将显示常规错误消息。
以如下函数为例,它对子系统中的错误显示错误消息。
newException = errorHandler(subsys,...
ErrorID,originalException)errorHandler是函数的名称。subsys是发生错误的子系统的句柄。ErrorID是指示发生的错误类型的字符向量。originalException是一个 MSLException。有关详细信息,请参阅使用 MSLException 对象处理 Simulink 中的错误。如果您提供原始异常,则不需要指定子系统和错误类型。newException是一个 MSLException,指定要向用户显示的错误消息。
要显示与名为 subsys 的子系统关联的错误消息,请在参数字段中输入 errorHandler。
要以编程方式使用此参数,请使用 set_param 函数。
set_param(subsys,'ErrorFcn','errorHandler')
ErrorFcn 回调对名为 subsys 的子系统调用 errorHandler 函数。在这种对 set_param 函数的调用中,不要包含回调代码的输入参量。软件显示由回调返回的错误消息。
编程用法
要以编程方式设置模块参数值,请使用 set_param 函数。
| 参数: | ErrorFcn |
| 值: | '' (默认) | function name in quotes |
| 数据类型: | char | string |
全部 - 解析此子系统使用的所有工作区变量的名称,包括用来指定模块参数值和 Simulink 数据对象(例如,
Simulink.Signal对象)的工作区变量的名称。ExplicitOnly - 只解析用来指定模块参数值、数据存储内存(不存在模块)、信号以及标有“must resolve”状态的工作区变量的名称。
无 - 不解析任何工作区变量名称。
编程用法
要以编程方式设置模块参数值,请使用 set_param 函数。
| 参数: | PermitHierarchicalResolution |
| 值: | 'All' (默认) | 'ExplicitOnly' | 'None' |
在确定模块方法的执行顺序时,选择此参数会导致软件将子系统视为一个单元。
off- 在确定模块方法的执行顺序时,将子系统子中的所有模块视为与子系统处于模型层次结构中的同一级别。这样将使得子系统内的模块方法的执行与子系统外的模块方法的执行交错在一起。on- 在确定模块方法的执行顺序时,将子系统视为一个单元。例如,当需要计算子系统的输出时,软件会先调用子系统中的所有模块的输出方法,然后再调用与 Subsystem 模块同一级别的其他模块的输出方法。
默认值取决于模块配置。例如,Subsystem 模块的默认值为 off。Atomic Subsystem 模块的默认值为 on。
编程用法
要以编程方式设置模块参数值,请使用 set_param 函数。
| 参数: | TreatAsAtomicUnit |
| 值: | 'off' | 'on' |
原子子系统可能会产生人为代数环。为了最大限度地减少涉及此子系统的人为代数环的出现,请启用此参数。
off- 软件不会尝试消除涉及此子系统的人为代数环。on- 软件会尝试消除涉及此子系统的人为代数环。
有关详细信息,请参阅Minimize Artificial Algebraic Loop Occurrences。
依赖关系
要启用此参数,请选择视为原子单元。
编程用法
要以编程方式设置模块参数值,请使用 set_param 函数。
| 参数: | MinAlgLoopOccurrences |
| 值: | "off" (默认) | "on" |
指定此子系统中的所有模块是必须以相同的速率运行,还是能可以不同的速率运行。
-1- 继承采样时间。[Ts 0]- 周期性采样时间。
如果子系统中的模块可以不同的速率运行,则为子系统指定继承采样时间 (-1)。
如果所有模块必须以相同的速率运行,则将与此速率对应的采样时间指定为采样时间参数的值。
如果子系统中的任何模块指定了不同的采样时间(而不是 -1 或 inf),则当您更新或仿真模型时,软件会显示错误消息。例如,假设子系统中的所有模块必须以 5 次/秒的速率运行。要确保这个速率,请将子系统的采样时间指定为 0.2。在此示例中,如果子系统中的任何模块指定了除 0.2、-1 或 inf 之外的其他采样时间,则当您更新或仿真模型时,软件将显示错误。
依赖关系
要启用此参数,请选择视为原子单元。
编程用法
要以编程方式设置模块参数值,请使用 set_param 函数。
| 参数: | SystemSampleTime |
| 值: | '-1' (默认) | '[Ts 0]' |
指定当从 Variant Source 模块或者向 Variant Sink 模块传播变体条件时,软件是否将子系统视为一个单元。
on- 当从 Variant Source 模块或者向 Variant Sink 模块传播变体条件时,软件会将子系统视为一个单元。例如,当软件计算子系统的变体条件时,软件会将该条件传播到子系统中的所有模块。off- 在确定模块的变体条件时,软件将子系统子中的所有模块视为与子系统处于模型层次结构中的同一级别。
编程用法
要以编程方式设置模块参数值,请使用 set_param 函数。
| 参数: | TreatAsGroupedWhenPropagatingVariantConditions |
| 值: | 'on' (默认) | 'off' |
依赖关系
要启用此参数,请清除视为原子单元参数。
代码生成
设置“代码生成”选项卡上的参数需要具有 Simulink Coder™ 或 Embedded Coder® 许可证。
选择要为原子(非虚拟)子系统生成的代码格式。
自动 - 软件将根据模型中存在的子系统的类型和实例数为您选择最佳格式。
内联 - 软件无条件内联子系统。
不可重用函数 - 如果将文件名选项设置为自动,则软件会将单独函数打包到模型文件中。如果使用不同的文件名将文件名选项设置为使用子系统名称、使用函数名称或用户指定,则软件将单独函数分别打包到独立的文件中。
采用此设置的子系统生成的函数可能有参量,具体取决于 函数接口 参数设置。您可以使用参数 函数名称 和 文件名(无扩展名) 分别为生成的函数和文件命名。这些函数不可重入。
可重用函数 - 当模型中包含子系统的多个实例时,软件可以生成带参量的函数,该函数将允许重用子系统的代码。
此选项还可生成带参量的函数,允许在为模型引用层次结构(其中引用的模型包含子系统的多个实例)生成的代码中重用子系统代码。在这种情况下,子系统必须是模块库中的子系统。
有关详细信息,请参阅:
Generate Inlined Subsystem Code (Simulink Coder)
将子系统代码生成为单独的函数和文件 (Simulink Coder)
Generate Reusable Code from Library Subsystems Shared Across Models (Simulink Coder)
默认值取决于模块配置。例如,Subsystem 模块的默认值为自动。CodeReuseSubsystem 模块的默认值为可重用函数。
提示
如果您希望子系统的多个实例表示为一个可重用函数,可以为每个子系统指定自动或可重用函数。最好是使用其中一个,因为使用两个将生成两个可重用函数,每个指定一个函数。仅当可以重用时,这些选项的结果才会有区别。选择自动则不允许控制子系统代码的函数或文件名。
可重用函数和自动选项都尝试确定是否存在子系统的多个实例,以及是否可以重用代码。者两个选项的行为区别体现在不能重用时:
自动生成内联代码,或者在禁止内联的情况下为每个子系统实例生成一个单独的函数。
可重用函数为模型中的每个子系统实例生成一个单独的参量函数。
如果您在生成的代码处于源代码管理状态下时选择了可重用函数,请将文件名选项设置为使用子系统名称、使用函数名称或用户指定。否则,只要您修改模型,代码文件的名称就会改变,从而无法对文件进行源代码管理。
如果您选择除自动或内联以外的选项,并且使用模型配置参数状态,则代码生成器会生成单独的输出和更新方法。代码生成器不考虑为代码生成和仿真合并输出和更新方法设定。
依赖关系
此参数需要 Simulink Coder 许可证才能生成代码。
要启用此参数,请选择视为原子单元。
编程用法
要以编程方式设置模块参数值,请使用 set_param 函数。
| 参数: | RTWSystemCode |
| 值: | 'Auto' | 'Inline' | 'Nonreusable function' | 'Reusable function' |
选择软件如何命名它为子系统生成的函数。
如果您拥有 Embedded Coder 许可证,则可以使用“配置参数”对话框的代码生成 > 标识符窗格上的选项来控制函数名称。
自动 - 使用默认的命名约定
指定唯一的函数名称,其中model_subsystem()model是模型的名称,subsystem是子系统的名称,或者,在重用代码时,也可以是相同子系统的名称。如果您为函数打包参数选择了可重用函数,而模型引用层次结构中存在可重用子系统的多个实例,则要为子系统生成可重用代码,必须将函数名称选项设置为自动。
使用子系统名称 - 使用子系统名称作为函数名称。默认情况下,函数名称使用命名约定
。model_subsystem当子系统在模块库模块中而子系统参数 函数打包 设置为可重用函数时,如果您设置使用子系统名称选项,代码生成器将使用模块库模块的名称作为子系统函数名和文件名。
用户指定 - 启用函数名称字段。输入任何合法的 C 或 C++ 函数名,此名称必须唯一。
有关详细信息,请参阅将子系统代码生成为单独的函数和文件 (Simulink Coder)。
默认值取决于模块配置。例如,Subsystem 模块的默认值为自动。CodeReuseSubsystem 模块的默认值为使用子系统名称。
依赖关系
此参数要求具有 Simulink Coder 许可证。
要启用此参数,请将函数打包设置为不可重用函数或可重用函数。
编程用法
要以编程方式设置模块参数值,请使用 set_param 函数。
| 参数: | RTWFcnNameOpts |
| 值: | 'Auto' | 'Use subsystem name' | 'User specified' |
为子系统代码指定唯一的有效 C 或 C++ 函数名称。
如果您想为函数指定特定的名称,而不是让 Simulink Coder 代码生成器分配其自己自动生成的名称或者使用子系统名称,请使用此参数。有关详细信息,请参阅将子系统代码生成为单独的函数和文件 (Simulink Coder)。
依赖关系
此参数要求具有 Simulink Coder 许可证。
要启用此参数,请将函数名称选项设置为用户指定。
编程用法
要以编程方式设置模块参数值,请使用 set_param 函数。
| 参数: | RTWFcnName |
| 值: | '' (默认) | function name in quotes |
| 数据类型: | char | string |
选择软件如何命名它为子系统生成的函数的单独文件。
自动 - 根据子系统的配置以及子系统在模型中的实例数,自动将生成不同的结果。
如果代码生成器不为子系统生成单独的文件,将在从子系统的父级系统生成的代码模块内生成子系统代码。如果子系统的父级就是模型本身,将在
或model.c内生成子系统代码。model.cpp如果您为函数打包参数选择了可重用函数,而您生成的代码处于源代码管理状态下,请不要将文件名选项值指定为自动。这样可以防止由于不相关的模型修改而更改生成的文件名,而在使用源代码管理来管理配置时,文件名的改变会产生问题。
如果您为函数打包参数选择了可重用函数,而模型引用层次结构中存在可重用子系统的多个实例,则要为子系统生成可重用代码,必须将文件名选项设置为自动。
使用子系统名称 - 代码生成器将生成一个单独的文件,并使用子系统(或模块库模块)名称作为文件名。
当文件名选项设置为使用子系统名称时,如果模型中包含 Model 模块,或者正在为模型生成模型引用目标,则子系统文件名将被破坏。在这些情况下,子系统的文件名由子系统名称加上模型名称前缀构成。
使用函数名称 - 代码生成器使用函数名称选项指定的函数名称作为文件名。
用户指定 - 此选项将启用文件名(无扩展名) 文本输入字段。代码生成器将使用您输入的名称作为文件名。可以输入任何文件名,但不要带
.c或.cpp(或任何其他)扩展名。此文件名不必是唯一的。虽然子系统源文件名不需要唯一,但必须避免使用不唯一名称,否则会导致循环依赖关系。例如,
sys_a.h包括sys_b.h,sys_b.h包括sys_c.h,而sys_c.h包括sys_a.h。
默认值取决于模块配置。例如,Subsystem 模块的默认值为自动。CodeReuseSubsystem 模块的默认值为使用函数名称。
依赖关系
此参数要求具有 Simulink Coder 许可证。
要启用此参数,请将函数打包设置为不可重用函数或可重用函数。
编程用法
要以编程方式设置模块参数值,请使用 set_param 函数。
| 参数: | RTWFileNameOpts |
| 值: | 'Auto' | 'Use subsystem name' | 'Use function name' | 'User specified' |
您指定的文件名不必是唯一的。但是,避免使用非唯一名称,否则会导致循环依赖关系。例如,sys_a.h 包括 sys_b.h,sys_b.h 包括 sys_c.h,而 sys_c.h 包括 sys_a.h。
有关详细信息,请参阅将子系统代码生成为单独的函数和文件 (Simulink Coder)。
依赖关系
此参数要求具有 Simulink Coder 许可证。
要启用此参数,请将文件名选项设置为用户指定。
编程用法
要以编程方式设置模块参数值,请使用 set_param 函数。
| 参数: | RTWFileName |
| 值: | '' (默认) | filename in quotes |
| 数据类型: | char | string |
选择如何在生成的函数中使用参量。
void_void - 生成不带参量的函数,并将数据作为全局变量进行传递。例如:
void subsystem_function(void)
允许参量(优化) - 生成带参量的函数,而不是将数据作为全局变量进行传递。此规范可以减少全局 RAM。此选项可以减小代码大小、提高执行速度,并支持代码生成器应用更多的优化。例如:
void subsystem_function(real_T rtu_In1, real_T rtu_In2, real_T *rty_Out1)在某些情况下,当生成优化代码时,代码生成器可能不会生成具有参量的函数。
允许参量(匹配图形接口) - 生成一个函数接口,该接口与 Subsystem 图形模块接口匹配的参量。生成的函数接口是可预知的,并且不会更改。可预知的接口对于调试和测试代码以及与外部应用程序集成非常有用。例如,如果模型有两个 Inport 模块和两个 Outport 模块,则生成的函数接口是:
void subsystem_function(real_T rtu_In1, real_T rtu_In2, real_T *rty_Out1, real_T *rty_Out2)
有关详细信息,请参阅:
减少不可重用的子系统函数中的全局变量 (Embedded Coder)
Generate Predictable Function Interface to Match Graphical Block Interface (Embedded Coder)
为非虚拟子系统生成模块化函数代码 (Embedded Coder)
依赖关系
此参数需要 Embedded Coder 许可证和一个基于 ERT 的系统目标文件。
要启用此参数,请将函数打包设置为不可重用函数。
编程用法
要以编程方式设置模块参数值,请使用 set_param 函数。
| 参数: | FunctionInterfaceSpec |
| 值: | 'void_void' (默认) | 'Allow arguments (Optimized)' | 'Allow arguments (Match graphical interface)' |
生成其中原子子系统的内部数据与其父级模型分离且归子系统所有的子系统函数代码。
off- 不生成其中原子子系统的内部数据与其父级模型分离且归子系统所有的子系统函数代码。on- 生成其中原子子系统的内部数据与其父级模型分离且归子系统所有的子系统函数代码。子系统数据结构的声明独立于父模型数据结构。带单独数据的子系统具有其自己的模块 I/O 和DWork数据结构。因此,为子系统生成的代码更容易跟踪和检验。数据分离还可以减小整个模型的全局数据结构的最大大小,因为它们被拆分成多个数据结构。
有关如何为原子子系统生成模块化函数代码的详细信息,请参阅为非虚拟子系统生成模块化函数代码 (Embedded Coder)。
有关如何对原子子系统应用内存段的详细信息,请参阅Override Default Memory Placement for Subsystem Functions and Data (Embedded Coder)。
依赖关系
此参数需要 Embedded Coder 许可证和一个基于 ERT 的系统目标文件。
要启用此参数,请将函数打包设置为不可重用函数。
编程用法
要以编程方式设置模块参数值,请使用 set_param 函数。
| 参数: | FunctionWithSeparateData |
| 值: | 'off' (默认) | 'on' |
选择软件如何将内存段应用于子系统初始化和终止函数。
从模型继承 - 将根模型内存段应用于子系统函数代码。
默认 - 不将内存段应用于子系统的系统代码,覆盖任何模型级的设置。
将模型的某个内存段应用于子系统。
提示
可能的值根据您为模型配置设置的内存段数据包(如果有)而不同。请参阅Control Data and Function Placement in Memory by Inserting Pragmas (Embedded Coder)和模型配置参数:代码生成 (Simulink Coder)。
如果您没有为模型配置数据包,将只显示从模型继承。否则,列表中将包括默认以及模型包中的所有内存段。
这些选项对于为给定子系统覆盖模型内存段设置很有用。有关如何对原子子系统应用内存段的详细信息,请参阅Override Default Memory Placement for Subsystem Functions and Data (Embedded Coder)。
依赖关系
此参数需要 Embedded Coder 许可证和一个基于 ERT 的系统目标文件。
要启用此参数,请将函数打包设置为不可重用函数或可重用函数。
编程用法
要以编程方式设置模块参数值,请使用 set_param 函数。
| 参数: | RTWMemSecFuncInitTerm |
| 值: | 'Inherit from model' (默认) | 'Default' | model memory section in quotes |
选择 Embedded Coder 如何将内存段应用于子系统执行函数。
从模型继承 - 将根模型内存段应用于子系统函数代码。
默认 - 不将内存段应用于子系统的系统代码,覆盖任何模型级的设置。
将模型的某个内存段应用于子系统。
提示
可能的值根据您为模型配置设置的内存段数据包(如果有)而不同。请参阅Control Data and Function Placement in Memory by Inserting Pragmas (Embedded Coder)和模型配置参数:代码生成 (Simulink Coder)。
如果您没有为模型配置数据包,将只显示从模型继承。否则,列表中将包括默认以及模型包中的所有内存段。
这些选项对于为给定子系统覆盖模型内存段设置很有用。有关如何对原子子系统应用内存段的详细信息,请参阅Override Default Memory Placement for Subsystem Functions and Data (Embedded Coder)。
依赖关系
此参数需要 Embedded Coder 许可证和一个基于 ERT 的系统目标文件。
要启用此参数,请将函数打包设置为不可重用函数或可重用函数。
编程用法
要以编程方式设置模块参数值,请使用 set_param 函数。
| 参数: | RTWMemSecFuncExecute |
| 值: | 'Inherit from model' (默认) | 'Default' | model memory section in quotes |
选择软件如何将内存段应用于子系统常量。
从模型继承 - 将根模型内存段应用于子系统数据。
默认 - 不要将内存段应用于子系统数据,将覆盖任何模型级的设置。
将模型的某个内存段应用于子系统。
提示
您指定的内存段将应用于生成的代码中对应的全局数据结构。有关为原子子系统生成的全局数据结构的基本信息,请参阅Standard Data Structures (Simulink Coder)。
可能的值根据您为模型配置设置的内存段数据包(如果有)而不同。请参阅Control Data and Function Placement in Memory by Inserting Pragmas (Embedded Coder)。
如果您没有为模型配置数据包,将只显示从模型继承。否则,列表中将包括默认以及模型包中的所有内存段。
这些选项对于为给定子系统覆盖模型内存段设置很有用。有关如何对原子子系统应用内存段的详细信息,请参阅Override Default Memory Placement for Subsystem Functions and Data (Embedded Coder)。
依赖关系
编程用法
要以编程方式设置模块参数值,请使用 set_param 函数。
| 参数: | RTWMemSecDataConstants |
| 值: | 'Inherit from model' (默认) | 'Default' | model memory section in quotes |
选择软件如何将内存段应用于子系统内部数据。
从模型继承 - 将根模型内存段应用于子系统数据。
默认 - 不要将内存段应用于子系统数据,将覆盖任何模型级的设置。
将模型的某个内存段应用于子系统。
提示
您指定的内存段将应用于生成的代码中对应的全局数据结构。有关为原子子系统生成的全局数据结构的基本信息,请参阅Standard Data Structures (Simulink Coder)。
可能的值根据您为模型配置设置的内存段数据包(如果有)而不同。请参阅Control Data and Function Placement in Memory by Inserting Pragmas (Embedded Coder)。
如果您没有为模型配置数据包,将只显示从模型继承。否则,列表中将包括默认以及模型包中的所有内存段。
这些选项对于为给定子系统覆盖模型内存段设置很有用。有关如何对原子子系统应用内存段的详细信息,请参阅Override Default Memory Placement for Subsystem Functions and Data (Embedded Coder)。
依赖关系
编程用法
要以编程方式设置模块参数值,请使用 set_param 函数。
| 参数: | RTWMemSecDataInternal |
| 值: | 'Inherit from model' (默认) | 'Default' | model memory section in quotes |
选择软件如何将内存段应用于子系统参数。
从模型继承 - 将根模型内存段应用于子系统函数代码。
默认 - 不将内存段应用于子系统的系统代码,覆盖任何模型级的设置。
将模型的某个内存段应用于子系统。
提示
您指定的内存段将应用于生成的代码中对应的全局数据结构。有关为原子子系统生成的全局数据结构的基本信息,请参阅Standard Data Structures (Simulink Coder)。
可能的值根据您为模型配置设置的内存段数据包(如果有)而不同。请参阅Control Data and Function Placement in Memory by Inserting Pragmas (Embedded Coder)。
如果您没有为模型配置数据包,将只显示从模型继承。否则,列表中将包括默认以及模型包中的所有内存段。
这些选项对于为给定子系统覆盖模型内存段设置很有用。有关如何对原子子系统应用内存段的详细信息,请参阅Override Default Memory Placement for Subsystem Functions and Data (Embedded Coder)。
依赖关系
编程用法
要以编程方式设置模块参数值,请使用 set_param 函数。
| 参数: | RTWMemSecDataParameters |
| 值: | 'Inherit from model' (默认) | 'Default' | model memory section in quotes |
子系统引用
指定要引用的子系统文件。有关子系统引用的信息,请参阅Create and Use Referenced Subsystems in Models。
依赖关系
要访问此参数,请在子系统引用部分中,点击转换。
有关如何将子系统转换为引用子系统的详细信息,请参阅Convert Between Subsystems and Referenced Subsystems。
编程用法
要以编程方式设置模块参数值,请使用 set_param 函数。
| 参数: | ReferencedSubsystem |
| 值: | '' (默认) | subsystem filename in quotes |
| 数据类型: | char | string |
模块特性
替代配置
Atomic Subsystem 模块选中视为原子单元参数。
库:
Simulink /
Ports & Subsystems
HDL Coder /
Ports & Subsystems
Subsystem Reference 模块引用存储在子系统文件 (.slx) 中的子系统。有关详细信息,请参阅Create and Use Referenced Subsystems in Models。
库:
Simulink /
Ports & Subsystems
Enabled Subsystem 是包含 Enable 模块的模板。
库:
Simulink /
Ports & Subsystems
HDL Coder /
Ports & Subsystems
Triggered Subsystem 是包含 Trigger 模块的模板,其中触发器类型设置为上升沿。
库:
Simulink /
Ports & Subsystems
HDL Coder /
Ports & Subsystems
Enabled and Triggered Subsystem 是包含 Enable 模块和 Trigger 模块的模板,其中触发器类型设置为上升沿。
库:
Simulink /
Ports & Subsystems
Resettable Subsystem 是包含 Reset 模块的模板。
库:
Simulink /
Ports & Subsystems
If Action Subsystem 是用于创建子系统的模板,该子系统的执行由 If 模块控制。子系统包含 Action Port 模块。
库:
Simulink /
Ports & Subsystems
Switch Case Action Subsystem 是用于创建子系统的模板,该子系统的执行由 Switch Case 模块控制。子系统包含 Action Port 模块。
库:
Simulink /
Ports & Subsystems
Function-Call Subsystem 是包含 Trigger 模块的模板,其中触发器类型设置为函数调用。
库:
Simulink /
Ports & Subsystems
For Iterator Subsystem 是包含 For Iterator 模块的模板。
库:
Simulink /
Ports & Subsystems
While Iterator Subsystem 是包含 While Iterator 模块的模板。
库:
Simulink /
Ports & Subsystems
For Each Subsystem 是包含 For Each 模块的模板。
库:
Simulink /
Ports & Subsystems
HDL Coder /
Ports & Subsystems
Message Triggered Subsystem 是包含 Trigger 模块的模板,其中触发器类型设置为消息,并且触发时间设置为在采样时间命中点上。Trigger 模块替换 Inport 模块。
库:
Simulink /
Messages & Events
Message Triggered Subsystem 是包含 Trigger 模块的模板,其中触发器类型设置为消息,触发时间设置为在消息可用时。Trigger 模块替换 Inport 模块。
库:
Simulink /
Messages & Events
CodeReuseSubsystem 模块选中视为原子单元参数,并将函数打包设置为可重用函数。
库:
Simulink /
Ports & Subsystems
Neighborhood Processing Subsystem 是包含 Neighborhood 模块的模板。
库:
Simulink /
Matrix Operations
提示
信号查看子系统是一种原子子系统,它封装了在外部模式下从目标系统接收到的信号的处理和查看。要将原子子系统指定为信号查看子系统,请将
SimViewingDevice设置为'on'。有关详细信息,请参阅信号查看子系统 (Simulink Coder)。
扩展功能
实际代码生成支持取决于模块实现。
HDL Coder™ 提供影响 HDL 实现和综合逻辑的额外配置选项。
| 架构 | 描述 |
|---|---|
| 模块(默认值) | 为子系统和子系统内的模块生成代码。 |
| BlackBox | 生成黑盒接口。生成的 HDL 代码仅包括子系统的输入/输出端口定义。因此,您可以在模型中使用子系统来生成与手动编写的现有 HDL 代码的接口。 子系统的黑盒接口生成类似于没有时钟信号的 Model 模块接口生成。 |
无 HDL | 从生成的代码中删除子系统。您可以在仿真中使用子系统,但在 HDL 代码中将其视为“无操作”。 |
对于 BlackBox 架构,您可以自定义端口名称并设置外部组件接口的属性。请参阅Customize Black Box or HDL Cosimulation Interface (HDL Coder)。
| 通用 | |
|---|---|
| AdaptivePipelining | 基于综合工具、目标频率和乘法器字长的自动流水线插入。默认值为 inherit。另请参阅AdaptivePipelining (HDL Coder)。 |
| ClockRatePipelining | 以较快的时钟频率而不是较慢的数据速率插入流水线寄存器。默认值为 inherit。另请参阅ClockRatePipelining (HDL Coder)。 |
| ConstrainedOutputPipeline | 通过移动设计中现有延迟的方式来放置在输出端的寄存器的数量。分布式流水线不会重新分发这些寄存器。默认值为 |
| DistributedPipelining | 流水线寄存器分配或寄存器重定时。默认值为 inherit。另请参阅DistributedPipelining (HDL Coder)。 |
| FlattenHierarchy | 从生成的 HDL 代码中删除子系统层次结构。默认值为 inherit。另请参阅FlattenHierarchy (HDL Coder)。 |
| InputPipeline | 要在生成的代码中插入的输入流水线阶段数。分布式流水线和受限输出流水线可以移动这些寄存器。默认值为 |
| OutputPipeline | 要在生成的代码中插入的输出流水线阶段数。分布式流水线和受限输出流水线可以移动这些寄存器。默认值为 |
| SharingFactor | 要映射到单个共享资源的功能等效的资源的数量。默认值为 0。另请参阅Resource Sharing (HDL Coder)。 |
| StreamingFactor | 并行数据路径或向量的数量,这些路径或向量通过时间多路复用的方式变换为串行标量数据路径。默认值为 0,表示实现完全并行的数据路径。另请参阅Streaming (HDL Coder)。 |
| SynthesisAttributes | 指定模型中模块和模块输出信号的综合属性。生成的 HDL 代码包含这些属性。有关详细信息,请参阅SynthesisAttributes (HDL Coder)。 |
如果此模块不是 DUT,将忽略目标设定选项卡中的模块属性设置。在 HDL 工作流顾问中,如果您使用 IP 核生成工作流,这些目标设定模块属性值将随模型一起保存。如果您使用 hdlset_param 指定这些目标设定模块属性值,则当您打开 HDL 工作流顾问时,系统将使用对应的值填充这些字段。
| 目标设定 | |
|---|---|
| AdditionalTargetInterfaces | 附加目标接口,指定为字符向量。 要在模型上保存此模块属性,请在 IP 核生成工作流的设置目标接口任务中,对应于您要添加更多接口的 DUT 端口,选择 Add more...。然后,您可以在“添加新目标接口”对话框中添加更多接口。指定接口类型、附加接口数量以及每个附加接口的唯一名称。 值: 示例: |
| ProcessorFPGASynchronization | 处理器/FPGA 同步模式,指定为字符向量。 要在模型上保存此模块属性,请在 IP 核生成工作流的设置目标接口任务中指定处理器/FPGA 同步。 值: 示例: |
| TestPointMapping | 要在模型上保存此模块属性,请在 IP 核生成工作流的设置目标接口任务中指定测试点端口到目标平台接口的映射。 值: 示例: |
| TunableParameterMapping | 要在模型上保存此模块属性,请在 IP 核生成工作流的设置目标接口任务中指定可调参数端口到目标平台接口的映射。 值: 示例: |
| WriteRegisterReadback | 要在模型上保存此模块属性,请在 IP 核生成工作流的生成 RTL 代码和 IP 核任务中指定是否对写寄存器(例如 AXI4 从接口)启用读回。要了解详细信息,请参阅Model Design for AXI4 Register Interface Generation (HDL Coder)。 值: |
| AXI4SubordinateIDWidth | 要在模型上保存此模块属性,请使用 IP 核生成工作流的生成 RTL 代码和 IP 核任务中的 AXI4 从 ID 宽度设置,指定要将 DUT IP 核连接到的 AXI 主设备接口的数量。要了解详细信息,请参阅Define Multiple AXI Master Interfaces in Reference Designs to Access DUT AXI4 Subordinate Interface (HDL Coder)。 值: |
| RegisterInterfaceReadPipeline | 要在模型上保存此模块属性,请使用 IP 核生成工作流的生成 RTL 代码和 IP 核任务中的寄存器接口读取流水线设置,指定要在读取地址解码器路径中插入的流水线阶段数。要了解详细信息,请参阅Model Design for AXI4 Register Interface Generation (HDL Coder)。 值: |
| GenerateDefaultRegisterInterface | 要在模型上保存此模块属性,请在 IP 核生成工作流的生成 RTL 代码和 IP 核任务中指定是否要禁用默认寄存器接口(例如 AXI4 从接口)的生成。 值: |
| IPCoreAdditionalFiles | 设计中黑盒的 Verilog®、SystemVerilog 或 VHDL® 文件。指定每个文件的完整路径,并用分号 (;) 分隔各文件名。 您可以在 HDL 工作流顾问的其他源文件字段中设置此属性。 值: 示例: |
| IPCoreName | IP 核名称,指定为字符向量。 您可以在 HDL 工作流顾问的 IP 核名称字段中设置此属性。如果将此属性设置为默认值,HDL 工作流顾问将基于 DUT 的名称构造 IP 核名称。 值: 示例: |
| IPCoreVersion | IP 核版本号,指定为字符向量。 您可以在 HDL 工作流顾问的 IP 核版本字段中设置此属性。如果此属性设置为默认值,则 HDL 工作流顾问将设置 IP 核版本。 值: 示例: |
| IPDataCaptureBufferSize | FPGA 数据采集缓冲区大小,指定为字符向量。当在 FPGA 上运行时,请使用 FPGA 数据采集来观察设计中的信号。 缓冲区大小的值为 128*2^n,其中 n 是整数。默认情况下,缓冲区大小为 128 (n=0)。n 的最大值是 13,即缓冲区大小的最大值是 1048576 (=128*2^13)。 值: 示例: |
| IPCoreVendorName | IP 核供应商名称,指定为字符向量。 您可以在 HDL 工作流顾问中通过在 IP 核供应商名称字段中输入值来设置此属性。如果此属性设置为默认值,则 HDL 工作流顾问会将供应商名称设置为您的主机的域名。 供应商名称不能以数字字符开头(例如, 值: 示例: |
要为包含具有原子子系统和代数环的 Subsystem 模块的模型生成 HDL 代码,请执行以下操作:
在“配置参数”对话框的诊断窗格中,将代数环和未消除人为代数环实例参数设置为无或警告。
在 Subsystem 模块的“模块参数”对话框中,选择视为原子单元和尽量减少出现人为代数环参数。
如果您的 DUT 是封装子系统,则仅当它位于模型的顶层时,您才能生成代码。
有关详细信息,请参阅:
Generate Black Box Interface for Subsystems (HDL Coder)
Custom HDL Code Integration (HDL Coder)
Vendor-Specific Component Integration (HDL Coder)
子系统必须为原子子系统才能支持 PLC 代码生成。
| UseExternalDefinition | 在生成的代码中取消模块定义。默认值为 Off。另请参阅UseExternalDefinition (Simulink PLC Coder)。 |
实际数据类型支持取决于模块实现。
版本历史记录
在 R2007a 中推出Subsystem 模块现在支持 DateTime 数据类型。有关详细信息,请参阅Simulink DateTime。
使用 SynthesisAttributes HDL 模块属性指定模块及其输出信号的综合属性。HDL Coder 在生成的 HDL 代码中包含这些属性。
DSPStyle HDL 模块属性已删除。要为乘法器映射指定综合特性,请改用 SynthesisAttributes HDL 模块属性。
MATLAB Command
You clicked a link that corresponds to this MATLAB command:
Run the command by entering it in the MATLAB Command Window. Web browsers do not support MATLAB commands.
选择网站
选择网站以获取翻译的可用内容,以及查看当地活动和优惠。根据您的位置,我们建议您选择:。
您也可以从以下列表中选择网站:
如何获得最佳网站性能
选择中国网站(中文或英文)以获得最佳网站性能。其他 MathWorks 国家/地区网站并未针对您所在位置的访问进行优化。
美洲
- América Latina (Español)
- Canada (English)
- United States (English)
欧洲
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)


