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

库:
Simulink /
Commonly Used Blocks
Simulink /
Ports & Subsystems
HDL Coder /
Ports & Subsystems
描述
Subsystem 模块包含模型或系统中的一组模块。Subsystem 模块可以表示虚拟子系统或非虚拟子系统。
非虚拟子系统 - 子系统中包含的内容作为一个单元进行计算和控制(以原子单位执行)。可以创建条件执行子系统,仅在满足触发条件、函数调用条件、动作条件或使能输入条件的情况下才触发事件并执行(请参阅条件执行子系统和模型)。
虚拟子系统 - 子系统既不是依条件而执行的子系统,也不是以原子单位执行的子系统。虚拟子系统没有校验和。要确定一个子系统是否为虚拟子系统,请使用
get_param
函数检索布尔值模块参数IsSubsystemVirtual
的值。
Atomic Subsystem 模块是视为原子单元模块参数处于选中状态的 Subsystem 模块,表示这是一个非虚拟子系统。
Code Reuse Subsystem 模块是选择了视为原子单元参数且函数打包参数设置为“可重用函数
”(用于指定子系统的函数代码生成格式)的 Subsystem 模块。
要创建子系统,请执行以下任一操作:
从 Ports & Subsystems 模块库中,将一个 Subsystem 模块复制到您的模型中。然后打开 Subsystem 模块并向其中复制模块,以此方式在子系统中添加一些模块。
选择构成子系统的所有模块和线条,然后在多个选项卡中,点击创建子系统。Simulink® 会将这些模块替换为一个 Subsystem 模块以及必要的 Inport 和 Outport 模块,以反映进入和离开子系统的信号。
Subsystem 模块图标上显示的输入端口数对应于子系统中的 Inport 模块数。类似地,模块上显示的输出端口数对应于子系统中的 Outport 模块数。
Subsystem 模块通过子系统 Inport 和 Outport 模块支持信号标签传播。
注意
引用的子系统是存储在使用 Subsystem Reference 模块引用的单独文件中的子系统。要重用该子系统,请添加引用同一子系统文件的多个 Subsystem Reference 模块。引用的子系统在运行时的行为与常规子系统相同。
端口
输入
In — 子系统的信号输入
标量 | 向量 | 矩阵
在子系统中放置一个 Inport 模块会向 Subsystem 模块添加一个外部输入端口。端口标签与 Inport 模块的名称相匹配。
使用 Inport 模块可以从局部环境中获取信号。
数据类型: half
| single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
| Boolean
| fixed point
| enumerated
| bus
| image
reinit — 子系统重新初始化事件的控制信号
标量
重新初始化事件端口提供触发子系统重新初始化事件的函数调用控制信号,这会重置子系统的状态。
对于每个子系统重新初始化事件,子系统必须包含一个对应的 Reinitialize Function 模块。有关详细信息,请参阅使用初始化、重新初始化、重置和终止函数。
要指定端口名称,请使用 Reinitialize Function 模块中 Event Listener 模块的事件名称参数。
依存关系
要启用这种类型的端口,请选中显示子系统重新初始化端口复选框。
输出
Out — 子系统的信号输出
标量 | 向量 | 矩阵
在子系统中放置一个 Outport 模块会从 Subsystem 模块添加一个输出端口。Subsystem 模块上的端口标签是 Outport 模块的名称。
使用 Outport 模块可以向局部环境发送信号。
数据类型: half
| single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
| Boolean
| fixed point
| enumerated
| bus
| image
参数
常设
显示端口标签 — 端口标签的显示选项
“FromPortIcon
” (默认) | “FromPortBlockName
” | “SignalName
”
选择如何在 Subsystem 模块图标上显示端口标签。
- “
无
” 不显示端口标签。
- “
FromPortIcon
” 如果对应的端口图标显示了信号名称,则在 Subsystem 模块上显示信号名称。否则,如果模块名称是默认名称,则显示端口模块名称或端口号。
- “
FromPortBlockName
” 在 Subsystem 模块上显示对应端口模块的名称。
- “
SignalName
” 如果连接到端口的信号已命名,则会在 Subsystem 模块上显示信号的名称。否则,显示相应端口模块的名称。
有关 Subsystem 模块上的端口标签编辑,请参阅编辑子系统模块上的端口标签。
编程用法
参数:ShowPortLabels |
类型:字符向量 |
值:'FromPortIcon' | 'FromPortBlockName' | 'SignalName' |
默认值:'FromPortIcon' |
读/写权限 — 子系统内容的访问级别
“ReadWrite
” (默认) | “ReadOnly
” | “NoReadOrWrite
”
控制用户对子系统内容的访问。
- “
ReadWrite
” 允许打开和修改子系统内容。
- “
ReadOnly
” 允许打开但不允许修改子系统。如果子系统在模块库中,您可以创建和打开该子系统的链接,创建和修改子系统的本地副本,但不能更改权限或修改原始模块库实例的内容。
- “
NoReadOrWrite
” 禁止打开或修改子系统。如果子系统在模块库中,您可以在模型中创建该子系统的链接,但不能打开、修改、更改权限或创建子系统的本地副本。
注意
如果您尝试查看其读/写权限参数设置为 “NoReadOrWrite
” 的子系统的内容,将不会有响应。例如,当您双击此类子系统时,Simulink 不会打开该子系统,并且不显示任何消息。
编程用法
参数:Permissions |
类型:字符向量 |
值:'ReadWrite' | 'ReadOnly' | 'NoReadOrWrite' |
默认值:'ReadWrite' |
错误回调函数的名称 — 发生错误时要调用的函数的名称
''
(默认) | 函数名称
输入当 Simulink 执行子系统时,如果发生错误,要调用的函数的名称。
Simulink 向函数传递两个参数:子系统的句柄以及指定错误类型的字符向量。如果未指定任何函数,当执行子系统导致错误时,Simulink 将显示常规错误消息。
编程用法
参数: ErrorFcn |
类型:字符向量 |
值:'' | '<function name>' |
默认值:'' |
允许层次解析 — 工作区变量名称解析
“全部
” (默认) | “ExplicitOnly
” | “无
”
选择是否解析此子系统引用的工作区变量的名称。
- “
全部
” 解析此子系统使用的所有工作区变量的名称,包括用来指定模块参数值和 Simulink 数据对象(例如,
Simulink.Signal
对象)的工作区变量的名称。- “
ExplicitOnly
” 只解析用来指定模块参数值、数据存储内存(不存在模块)、信号以及标有“must resolve”状态的工作区变量的名称。
- “
无
” 不解析任何工作区变量名称。
编程用法
参数:PermitHierarchicalResolution |
类型:字符向量 |
值:'All' | 'ExplicitOnly' | 'None' |
默认值:'All' |
视为原子单元 — 将子系统作为整个单元执行的选项
off (默认) | on
在确定模块方法的执行顺序时,让 Simulink 将子系统视为一个单元。
off
在确定模块方法的执行顺序时,将子系统子中的所有模块视为与子系统处于模型层次结构中的同一级别。这样将使得子系统内的模块方法的执行与子系统外的模块方法的执行交错在一起。
on
在确定模块方法的执行顺序时,将子系统视为一个单元。例如,当需要计算子系统的输出时,Simulink 会先调用子系统中的所有模块的输出方法,然后再调用与 Subsystem 模块同一级别的其他模块的输出方法。
编程用法
参数:TreatAsAtomicUnit |
类型:字符向量 |
值:'off' | 'on' |
默认值:'off' |
显示子系统重新初始化端口 — 显示重新初始化事件端口的选项
off (默认) | on
选中此参数可显示重新初始化事件端口。清除此参数可删除这些端口。
依存关系
要启用此参数,请选中视为原子单元复选框。
编程用法
模块参数:ShowSubsystemReinitializePorts |
类型:字符向量 |
值:'off' | 'on' |
默认值:'off' |
尽量减少出现代数环 — 消除人为代数环的选项
off (默认) | on
尝试消除任何包含原子子系统的人为代数环
off
不尝试消除任何包含原子子系统的人为代数环。
on
尝试消除任何包含原子子系统的人为代数环。
依存关系
要启用此参数,请选择视为原子单元参数。
编程用法
参数:MinAlgLoopOccurrences |
类型:字符向量 |
值:'off' | 'on' |
默认值:'off' |
调度类型 — 调度类型
“采样时间
” (默认) | “周期性分区
” | “非周期性分区
”
指定如何调度子系统。
- “
采样时间
” 指定此子系统中的所有模块是必须以相同的速率运行,还是能可以不同的速率运行。
- “
周期性分区
” 将子系统作为周期性分区进行调度。指定分区名称和与分区运行的速率对应的采样时间。
- “
非周期性分区
” 将子系统作为非周期性分区调度。指定分区名称。
依存关系
要启用此参数,请选择视为原子单元参数。
编程用法
参数:ScheduleAs |
类型:字符向量 |
值:'SampleTime' | 'PeriodicParition' | 'AperiodicPartition' |
默认值:'SampleTime' |
分区名称 — 分区名称
字符向量
指定子系统的分区的名称。
依存关系
要启用此参数,请选择视为原子单元参数,并将调度类型设置为“周期性分区
”或“非周期性分区
”。
编程用法
参数:PartitionName |
类型:字符向量 |
值:'' |
默认值:'' |
采样时间 — 时间间隔
-1
(默认) | [Ts 0]
指定此子系统中的所有模块是必须以相同的速率运行,还是能可以不同的速率运行。
如果子系统中的模块可以不同的速率运行,则为子系统指定继承采样时间 (
-1
)。如果所有模块必须以相同的速率运行,则将与此速率对应的采样时间指定为采样时间参数的值。
如果子系统中的任何模块指定了不同的采样时间(而不是
-1
或inf
),则当您更新或仿真模型时,Simulink 会显示错误消息。例如,假设子系统中的所有模块必须以5
次/秒的速率运行。要确保这一点,请将子系统的采样时间指定为0.2
。在此示例中,如果子系统中的任何模块指定了除0.2
、-1
或inf
之外的其他采样时间,则当您更新或仿真模型时,Simulink 将显示错误。
-1
指定继承的采样时间。如果子系统中的模块可以不同的速率运行,则使用此采样时间。
[Ts 0]
指定周期性采样时间。
依存关系
要启用此参数,请选择视为原子单元参数。
编程用法
参数:SystemSampleTime |
类型:字符向量 |
值:'-1' | '[Ts 0]'
|
默认值:'-1' |
变体控制项 — 变体控制项(条件)表达式
Variant
(默认) | 逻辑表达式
指定变量控制项(条件)表达式,当该表达式的计算结果为 true
时执行变体 Simulink Function 模块。
有关详细信息,请参阅 Simulink.Variant
。
Variant
逻辑(布尔)表达式的默认名称。
- 逻辑表达式
逻辑(布尔)表达式或表示逻辑表达式的
Simulink.Variant
对象。当表达式的计算结果为
true
时将激活函数。如果要为模型生成代码,请将表达式中的变量定义为
Simulink.Parameter
对象。
依存关系
通过在 Variant Subsystem 模块内添加一个 Subsystem 模块来启用此参数。
编程用法
模块参数: VariantControl |
类型:字符向量 |
值:'Variant' | '<logical expression>' |
默认值:'Variant' |
传播变体条件时视为组合单元 — 传播变体条件时将子系统视为单元的选项
on
(默认) | off
当从 Variant Source 模块或者向 Variant Sink 模块传播变体条件时,使 Simulink 将子系统视为一个单元。
on
当从 Variant Source 模块或者向 Variant Sink 模块传播变体条件时,Simulink 会将子系统视为一个单元。例如,当 Simulink 计算子系统的变体条件时,它会将该条件传播给子系统中的所有模块。
off
在确定模块的变体条件时,Simulink 将子系统子中的所有模块视为与子系统处于模型层次结构中的同一级别。
编程用法
参数:TreatAsGroupedWhenPropagatingVariantConditions |
类型:字符向量 |
值:'on' | 'off' |
默认值:'on' |
代码生成
设置“代码生成”选项卡上的参数需要具有 Simulink Coder™ 或 Embedded Coder® 许可证。
函数打包 — 代码格式
“自动
” (默认) | “内联
” | “不可重用函数
” | “可重用函数
”
选择要为原子(非虚拟)子系统生成的代码格式。
- “
自动
” Simulink Coder 和 Embedded Coder 将基于模型中存在的子系统的类型和实例数为您选择最佳格式。
- “
内联
” Simulink Coder 和 Embedded Coder 无条件地内联子系统。
- “
不可重用函数
” 如果文件名选项设置为“
自动
”,Simulink Coder 和 Embedded Coder 将单独函数打包到模型文件中。如果将文件名选项设置为“使用子系统名称
”、“使用函数名称
”或“用户指定
”并使用其他文件名,Simulink Coder 和 Embedded Coder 将单独函数分别打包到独立的文件中。采用此设置的子系统生成的函数可能有参数,具体取决于 函数接口, Function interface函数接口Function interface 参数设置。您可以使用参数 函数名称, Function name函数名称Function name 和 文件名(无扩展名), File name (no extension)文件名(无扩展名)File name (no extension) 为生成的函数和文件命名。这些函数不可重入。
- “
可重用函数
” Simulink Coder 和 Embedded Coder 可以生成带参数的函数,当模型中包含子系统的多个实例时,将允许重用子系统的代码。
此选项还可生成带参数的函数,允许在为模型引用层次结构(其中引用的模型包含子系统的多个实例)生成的代码中重用子系统代码。在这种情况下,子系统必须是模块库中的子系统。
有关详细信息,请参阅:
Generate Code and Executables for Individual Subsystems (Simulink Coder)
Generate Inlined Subsystem Code (Simulink Coder)
Generate Subsystem Code as Separate Function and Files (Simulink Coder)
Generate Reusable Code from Library Subsystems Shared Across Models (Simulink Coder)
提示
如果您希望子系统的多个实例表示为一个可重用函数,可以为每个子系统指定“
自动
”或“可重用函数
”。最好是使用其中一个,因为使用两个将生成两个可重用函数,每个指定一个函数。仅当可以重用时,这些选项的结果才会有区别。选择“自动
”则不允许控制子系统代码的函数或文件名。“
可重用函数
”和“自动
”选项都尝试确定是否存在子系统的多个实例,以及是否可以重用代码。这两个选项的行为区别体现在不能重用时:“
自动
”生成内联代码,或者在禁止内联的情况下为每个子系统实例生成一个单独的函数。“
可重用函数
”为模型中的每个子系统实例生成一个单独的参数函数。
如果您在生成的代码处于源代码管理状态下时选择了“
可重用函数
”,请将文件名选项设置为“使用子系统名称
”、“使用函数名称
”或“用户指定
”。否则,只要您修改模型,代码文件的名称就会改变,从而无法对文件进行源代码管理。如果您选择除“
自动
”或“内联
”以外的选项,并且使用模型配置参数状态,则代码生成器会生成单独的输出和更新方法。代码生成器不考虑为代码生成和仿真合并输出和更新方法设定。
依存关系
此参数需要 Simulink Coder 才能生成代码。
要启用此参数,请选择视为原子单元。
编程用法
参数:RTWSystemCode |
类型:字符向量 |
值:'Auto' | 'Inline' | 'Nonreusable function' | 'Reusable function' |
默认值:'Auto' |
函数名称选项 — 如何命名生成的函数
“自动
” (默认) | “使用子系统名称
” | “用户指定
”
选择 Simulink Coder 如何命名它为子系统生成的函数。
如果您拥有 Embedded Coder 许可证,则可以使用“配置参数”对话框的代码生成 > 标识符窗格上的选项来控制函数名称。
- “
自动
” 使用默认的命名约定
指定唯一的函数名称,其中model
_subsystem
()model
是模型的名称,subsystem
是子系统的名称(或者,在重用代码时,也可以是相同子系统的名称)。如果您为函数打包参数选择了“
可重用函数
”,而模型引用层次结构中存在可重用子系统的多个实例,则要为子系统生成可重用代码,必须将函数名称选项设置为“自动
”。- “
使用子系统名称
” 使用子系统名称作为函数名称。默认情况下,函数名称使用命名约定
。model
_subsystem
注意
当子系统在模块库模块中而子系统参数 函数打包, Function packaging函数打包Function packaging 设置为“
可重用函数
”时,如果您设置“使用子系统名称
”选项,代码生成器将使用模块库模块的名称作为子系统函数名和文件名。- “
用户指定
” 启用函数名称字段。输入任何合法的 C 或 C++ 函数名,此名称必须唯一。
有关详细信息,请参阅Generate Subsystem Code as Separate Function and Files (Simulink Coder)。
依存关系
此参数要求具有 Simulink Coder 许可证。
要启用此参数,请将函数打包设置为“
不可重用函数
”或“可重用函数
”。
编程用法
参数:RTWFcnNameOpts |
类型:字符向量 |
值:'Auto' | 'Use subsystem name' | 'User specified' |
默认值:'Auto' |
函数名称 — 子系统代码的函数名称
''
(默认) | 函数名称
为子系统代码指定唯一的有效 C 或 C++ 函数名称。
如果您想为函数指定特定的名称,而不是让 Simulink Coder 代码生成器分配其自己自动生成的名称或者使用子系统名称,请使用此参数。有关详细信息,请参阅Generate Subsystem Code as Separate Function and Files (Simulink Coder)。
依存关系
此参数要求具有 Simulink Coder 许可证。
要启用此参数,请将函数名称选项参数设置为“
用户指定
”。
编程用法
参数:RTWFcnName |
类型:字符向量 |
值:'' | '<function name>' |
默认值:'' |
文件名选项 — 如何命名生成的文件
“自动
” (默认) | “使用子系统名称
” | “使用函数名称
” | “用户指定
”
选择 Simulink Coder 如何命名它为子系统生成的函数的单独文件。
- “
自动
” 根据子系统的配置以及子系统在模型中的实例数,“
自动
”将生成不同的结果:如果代码生成器不为子系统生成单独的文件,将在从子系统的父级系统生成的代码模块内生成子系统代码。如果子系统的父级就是模型本身,将在
或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
)。
依存关系
此参数要求具有 Simulink Coder 许可证。
要启用此参数,请将函数打包设置为“
不可重用函数
”或“可重用函数
”。
编程用法
参数:RTWFileNameOpts |
类型:字符向量 |
值:'Auto' | 'Use subsystem name' | 'Use function name' | 'User specified' |
默认值:'Auto' |
文件名(无扩展名) — 所生成文件的名称
''
(默认) | 文件名
您指定的文件名不必是唯一的。但是,应避免指定可能会导致循环依存关系的不唯一名称(例如,sys_a.h
包含 sys_b.h
,sys_b.h
包含 sys_c.h
,而 sys_c.h
包含 sys_a.h
)。
有关详细信息,请参阅Generate Subsystem Code as Separate Function and Files (Simulink Coder)。
依存关系
此参数要求具有 Simulink Coder 许可证。
要启用此参数,请将文件名选项设置为“
用户指定
”。
编程用法
参数:RTWFileName |
类型:字符向量 |
值:'' | '<file name>' |
默认值:'' |
函数接口 — 选择生成带参数还是不带参数的函数
“void_void
” (默认) | “允许参数(优化)
” | “允许参数(匹配图形接口)
”
选择是生成带参数还是不带参数的函数。
- “
void_void
” 生成不带参数的函数,并将数据作为全局变量进行传递。例如:
void subsystem_function(void)
- “
允许参数(优化)
” 生成带参数的函数,而不是将数据作为全局变量进行传递。此规范可以减少全局 RAM。它可以减小代码大小、提高执行速度,并支持代码生成器应用更多的优化。例如:
在某些情况下,当生成优化代码时,代码生成器可能不会生成具有参数的函数。void subsystem_function(real_T rtu_In1, real_T rtu_In2, real_T *rty_Out1)
- “
允许参数(匹配图形接口)
” 生成一个函数接口,该接口使用与子系统图形模块接口相匹配的参数。生成的函数接口是可预知的,并且不会更改。可预知的接口对于调试和测试代码以及与外部应用程序集成非常有用。例如,如果一个模型有两个输入端口和两个输出端口,则生成的函数接口是:
void subsystem_function(real_T rtu_In1, real_T rtu_In2, real_T *rty_Out1, real_T *rty_Out2)
有关详细信息,请参阅:
Reduce Global Variables in Nonreusable Subsystem Functions (Embedded Coder)
Generate Predictable Function Interface to Match Graphical Block Interface (Embedded Coder)
为非虚拟子系统生成模块化函数代码 (Embedded Coder)
依存关系
此参数需要 Embedded Coder 和一个基于 ERT 的系统目标文件。
要启用此参数,请将函数打包设置为“
不可重用函数
”。
编程用法
参数:FunctionInterfaceSpec |
类型:字符向量 |
值:'void_void' | 'Allow arguments (Optimized)' | 'Allow arguments (Match graphical interface)' |
默认值:'void_void' |
具有独立数据的函数 — 控制子系统的代码生成
off (默认) | on
生成其中原子子系统的内部数据与其父级模型分离且归子系统所有的子系统函数代码。
off
不生成其中原子子系统的内部数据与其父级模型分离且归子系统所有的子系统函数代码。
on
生成其中原子子系统的内部数据与其父级模型分离且归子系统所有的子系统函数代码。子系统数据结构的声明独立于父模型数据结构。带单独数据的子系统具有其自己的模块 I/O 和
DWork
数据结构。因此,为子系统生成的代码更容易跟踪和检验。数据分离还可以减小整个模型的全局数据结构的最大大小,因为它们被拆分成多个数据结构。
有关如何为原子子系统生成模块化函数代码的详细信息,请参阅为非虚拟子系统生成模块化函数代码 (Embedded Coder)。
有关如何对原子子系统应用内存段的详细信息,请参阅Override Default Memory Placement for Subsystem Functions and Data (Embedded Coder)。
依存关系
此参数需要具有 Embedded Coder 许可证和基于 ERT 的系统目标文件。
要启用此参数,请将函数打包设置为“
不可重用函数
”。
编程用法
参数:FunctionWithSeparateData |
类型:字符向量 |
值:'off' | 'on' |
默认值:'off' |
用于初始化/终止函数的内存段 — 选择如何应用内存段
“从模型继承
” (默认) | “默认
” | “感兴趣的内存段
”
选择 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 的系统目标文件。
要启用此参数,请将函数打包设置为“
不可重用函数
”或“可重用函数
”。
编程用法
参数:RTWMemSecFuncInitTerm |
类型:字符向量 |
值:'Inherit from model' | 'Default' | 'The memory section of interest' |
默认值:'Inherit from model' |
用于执行函数的内存段 — 选择如何应用内存段
“从模型继承
” (默认) | “默认
” | “感兴趣的内存段
”
选择 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 的系统目标文件。
要启用此参数,请将函数打包设置为“
不可重用函数
”或“可重用函数
”。
编程用法
参数:RTWMemSecFuncExecute |
类型:字符向量 |
值:'Inherit from model' | 'Default' | 'The memory section of interest' |
默认值:'Inherit from model' |
用于常量的内存段 — 选择如何应用内存段
“从模型继承
” (默认) | “默认
” | “感兴趣的内存段
”
选择 Embedded Coder 如何将内存段应用于子系统常量。
- “
从模型继承
” 将根模型内存段应用于子系统数据
- “
默认
” 不将内存段应用于子系统数据,将覆盖任何模型级的设置
- “
感兴趣的内存段
” 将模型的某个内存段应用于子系统
提示
您指定的内存段将应用于生成的代码中对应的全局数据结构。有关为原子子系统生成的全局数据结构的基本信息,请参阅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)。
依存关系
此参数需要具有 Embedded Coder 许可证和基于 ERT 的系统目标文件。
要启用此参数,请将函数打包设置为“
不可重用函数
”,然后选择具有独立数据的函数参数。
编程用法
参数:RTWMemSecDataConstants |
类型:字符向量 |
值:'Inherit from model' | 'Default' | 'The memory section of interest' |
默认值:'Inherit from model' |
用于内部数据的内存段 — 选择如何应用内存段
“从模型继承
” (默认) | “默认
” | “感兴趣的内存段
”
选择 Embedded Coder 如何将内存段应用于子系统内部数据。
- “
从模型继承
” 将根模型内存段应用于子系统数据
- “
默认
” 不将内存段应用于子系统数据,将覆盖任何模型级的设置
- “
感兴趣的内存段
” 将模型的某个内存段应用于子系统
提示
您指定的内存段将应用于生成的代码中对应的全局数据结构。有关为原子子系统生成的全局数据结构的基本信息,请参阅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)。
依存关系
此参数需要具有 Embedded Coder 许可证和基于 ERT 的系统目标文件。
要启用此参数,请将函数打包设置为“
不可重用函数
”,然后选择具有独立数据的函数参数。
编程用法
参数:RTWMemSecDataInternal |
类型:字符向量 |
值:'Inherit from model' | 'Default' | 'The memory section of interest' |
默认值:'Inherit from model' |
用于参数的内存段 — 选择如何应用内存段
“从模型继承
” (默认) | “默认
” | “感兴趣的内存段
”
选择 Embedded Coder 如何将内存段应用于子系统参数。
- “
从模型继承
” 将根模型内存段应用于子系统函数代码
- “
默认
” 不将内存段应用于子系统的系统代码,覆盖任何模型级的设置
- 感兴趣的内存段
将模型的某个内存段应用于子系统
提示
您指定的内存段将应用于生成的代码中对应的全局数据结构。有关为原子子系统生成的全局数据结构的基本信息,请参阅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)。
依存关系
此参数需要具有 Embedded Coder 许可证和基于 ERT 的系统目标文件。
要启用此参数,请将函数打包设置为“
不可重用函数
”,然后选择具有独立数据的函数参数。
编程用法
参数:RTWMemSecDataParameters |
类型:字符向量 |
值:'Inherit from model' | 'Default' | 'The memory section of interest' |
默认值:'Inherit from model' |
子系统引用
子系统文件名 — 引用子系统的文件名
字符串标量 | 字符向量
指定要引用的子系统文件。有关子系统引用的信息,请参阅Subsystem Reference。
依存关系
要访问此参数,请在子系统引用部分中,点击转换。
有关如何将子系统转换为引用子系统的详细信息,请参阅Convert an Existing Subsystem to a Referenced Subsystem。
编程用法
参数:ReferencedSubsystem |
类型:字符向量 |
值:'' | '<filename>' |
默认值:'' |
模块特性
扩展功能
C/C++ 代码生成
使用 Simulink® Coder™ 生成 C 代码和 C++ 代码。
实际代码生成支持取决于模块实现。
HDL 代码生成
使用 HDL Coder™ 为 FPGA 和 ASIC 设计生成 Verilog 代码和 VHDL 代码。
HDL Coder™ 提供影响 HDL 实现和综合逻辑的额外配置选项。
架构 | 描述 |
---|---|
“模块 ”(默认值) | 为子系统和子系统内的模块生成代码。 |
“BlackBox ” | 生成黑盒接口。生成的 HDL 代码仅包括子系统的输入/输出端口定义。因此,您可以在模型中使用子系统来生成与手动编写的现有 HDL 代码的接口。 子系统的黑盒接口生成类似于没有时钟信号的 Model 模块接口生成。 |
“ | 从生成的代码中删除子系统。您可以在仿真中使用子系统,但在 HDL 代码中将其视为“无操作”。 |
对于 “BlackBox
” 架构,您可以自定义端口名称并设置外部组件接口的属性。请参阅Customize Black Box or HDL Cosimulation Interface (HDL Coder)。
通用 | |
---|---|
AdaptivePipelining | 基于综合工具、目标频率和乘法器字长的自动流水线插入。默认值为 “ |
BalanceDelays | 检测沿一条路径引入的新延迟,并在其他路径上插入匹配的延迟。默认值为 “ |
ClockRatePipelining | 以较快的时钟频率而不是较慢的数据速率插入流水线寄存器。默认值为 “ |
ConstrainedOutputPipeline | 通过移动设计中现有延迟的方式来放置在输出端的寄存器的数量。分布式流水线处理不会重新分发这些寄存器。默认值为 |
DistributedPipelining | 流水线寄存器分配或寄存器重定时。默认值为 “ |
DSPStyle | 乘法器映射的综合属性。默认值为“ |
FlattenHierarchy | 从生成的 HDL 代码中删除子系统层次结构。默认值为 “ |
InputPipeline | 要在生成的代码中插入的输入流水线阶段数。分布式流水线处理和受限输出流水线处理可以移动这些寄存器。默认值为 |
OutputPipeline | 要在生成的代码中插入的输出流水线阶段数。分布式流水线处理和受限输出流水线处理可以移动这些寄存器。默认值为 |
SharingFactor | 要映射到单个共享资源的功能等效的资源的数量。默认值为 0。另请参阅Resource Sharing (HDL Coder)。 |
StreamingFactor | 并行数据路径或向量的数量,这些路径或向量通过时间多路复用的方式变换为串行标量数据路径。默认值为 0,表示实现完全并行的数据路径。另请参阅Streaming (HDL Coder)。 |
如果此模块不是 DUT,将忽略目标设定选项卡中的模块属性设置。在 HDL 工作流顾问中,如果您使用 IP 核生成工作流,这些目标设定模块属性值将随模型一起保存。如果您使用 hdlset_param
指定这些目标设定模块属性值,则当您打开 HDL 工作流顾问时,系统将使用对应的值填充这些字段。
目标设定 | |
---|---|
AdditionalTargetInterfaces | 附加目标接口,指定为字符向量。 要在模型上保存此模块属性,请在 IP 核生成工作流的设置目标接口任务中,对应于您要添加更多接口的 DUT 端口,选择 Add more...。然后,您可以在“添加新目标接口”对话框中添加更多接口。指定接口类型、附加接口数量以及每个附加接口的唯一名称。 值: 示例: |
ProcessorFPGASynchronization | 处理器/FPGA 同步模式,指定为字符向量。 要在模型上保存此模块属性,请在 IP 核生成工作流的设置目标接口任务中指定处理器/FPGA 同步。 值: 示例: |
TestPointMapping | 要在模型上保存此模块属性,请在 IP 核生成工作流的设置目标接口任务中指定测试点端口到目标平台接口的映射。 值: 示例: |
TunableParameterMapping | 要在模型上保存此模块属性,请在 IP 核生成工作流的设置目标接口任务中指定可调参数端口到目标平台接口的映射。 值: 示例: |
AXI4RegisterReadback | 要在模型上保存此模块属性,请在 IP 核生成工作流的生成 RTL 代码和 IP 核任务中指定是否对 AXI4 从属站写寄存器启用读回。要了解详细信息,请参阅Model Design for AXI4 Slave Interface Generation (HDL Coder)。 值: |
AXI4SlaveIDWidth | 要在模型上保存此模块属性,请使用 IP 核生成工作流的生成 RTL 代码和 IP 核任务中的 AXI4 从属 ID 宽度设置,指定要将 DUT IP 核连接到的 AXI 管理器接口的数量。要了解详细信息,请参阅Define Multiple AXI Master Interfaces in Reference Designs to Access DUT AXI4 Slave Interface (HDL Coder)。 值: |
AXI4SlavePortToPipelineRegisterRatio | 要在模型上保存此模块属性,请使用 IP 核生成工作流的生成 RTL 代码和 IP 核任务中的 AXI4 从属站端口与流水线寄存器的比率设置,指定要为其插入流水线寄存器的 AXI4 从属端口的数量。要了解详细信息,请参阅Model Design for AXI4 Slave Interface Generation (HDL Coder)。 值: |
GenerateDefaultAXI4Slave | 要在模型上保存此模块属性,请在 IP 核生成工作流的生成 RTL 代码和 IP 核任务中指定是否要禁用默认 AXI4 从属站接口的生成。 值: |
IPCoreAdditionalFiles | 设计中黑盒的 Verilog® 或 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)。 值: 示例: |
如果您的 DUT 是封装子系统,则仅当它位于模型的顶层时,您才能生成代码。
有关详细信息,请参阅:
External Component Interfaces (HDL Coder)
Generate Black Box Interface for Subsystem (HDL Coder)
PLC 代码生成
使用 Simulink® PLC Coder™ 生成结构化文本代码。
子系统必须为原子子系统才能支持 PLC 代码生成。
定点转换
使用 Fixed-Point Designer™ 设计和仿真定点系统。
实际数据类型支持取决于模块实现。
版本历史记录
在 R2007a 中推出
MATLAB 命令
您点击的链接对应于以下 MATLAB 命令:
请在 MATLAB 命令行窗口中直接输入以执行命令。Web 浏览器不支持 MATLAB 命令。
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list:
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- 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)