Bus Creator
将输入信号、总线或消息组合到总线中
库:
Simulink /
Commonly Used Blocks
Simulink /
Signal Routing
HDL Coder /
Signal Routing
描述
Bus Creator 模块将输入信号、总线或消息合并到总线中,该总线保留信号、嵌套总线和消息的各自的身份。默认情况下,Bus Creator 模块创建一个虚拟总线,它类似于用束线带绑在一起的一捆电线。或者,该模块可以创建非虚拟总线,这类似于 C 代码中的结构体。
总线元素必须具有唯一名称。默认情况下,总线的每个元素都继承连接到 Bus Creator 模块的元素的名称。如果存在重复名称,Bus Creator 模块会将端口号追加到所有输入元素名称。对于没有名称的元素,Bus Creator 模块会生成 signaln 形式的名称,其中 n 是连接到元素的端口号。当您搜索元素源或选择元素以连接到其他模块时,您可以按名称引用元素。有关元素命名规范,请参阅信号名称和标签。
要按名称从总线中提取元素,请使用 Bus Selector 模块。
要创建包含其他总线的总线,请将其他总线连接到 Bus Creator 模块输入端口。
提示
对于位于子系统和模型接口上的总线,使用 Out Bus Element 模块,而不是 Bus Creator 模块和 Outport 模块。Out Bus Element 模块能够:
减少模块图中线的复杂度和杂乱无章。
允许您更轻松地逐步更改接口。
示例
您可以使用 Bus Creator 模块将信号组合到一个组件内的一个虚拟总线中。
打开一个新模型并添加三个源模块。例如,添加 Chirp Signal、Sine Wave 和 Step 模块。

要创建一个包含来自多个模块的输出的总线,请点击并拖动以选择这些模块。对于此示例,选择 Chirp Signal 和 Sine Wave 模块。在出现的操作栏中,点击创建总线。

软件会添加 Bus Creator 模块,并将输入连接到该模块。Bus Creator 模块的输出是虚拟总线。

为了更容易识别总线的元素,请对 Bus Creator 模块的输入加标签。
双击 Chirp Signal 模块和 Bus Creator 模块之间的信号线。然后,输入
Chirp。双击 Sine Wave 模块和 Bus Creator 模块之间的信号线。然后,输入
Sine。
要创建包含第一条总线和 Step 模块输出的第二条总线,请点击并拖动以选择 Bus Creator 和 Step 模块。在出现的操作栏中,点击创建总线。在所选内容中包含 Sine Wave 和 Chirp Signal 模块不会影响结果,因为这些模块提供输入总线的元素。

软件会添加另一个 Bus Creator 模块,并将输入连接到该模块。Bus Creator 模块的输出是包含嵌套总线的虚拟总线。

您可以将总线嵌套至任意深度。如果 Bus Creator 模块的输入之一是总线,则其输出是包含至少一个嵌套总线的总线层次结构。
为新的 Bus Creator 模块的输入添加标签。
双击 Bus Creator 模块之间的信号线。然后,输入
Sinusoidal。双击 Step 模块和 Bus Creator 模块之间的信号线。然后,输入
Step。
或者,排列模块以提高模型的可读性。
将第二个 Bus Creator 模块的输出连接到 Scope 模块,并对输出加标签 Sources。
要通过信号线样式直观识别总线,请在 Simulink® 工具条的建模选项卡上,点击更新模型或运行。

您可以使用 Bus Creator 模块在组件中创建非虚拟总线。
打开并编译名为 BusHierarchy 的模型,该模型使用 Bus Creator 模块来创建虚拟总线的层次结构。要编译模型,请在 Simulink® 工具条的建模选项卡上,点击更新模型或运行。编译模型会更新线型,您可以使用线型来直观地标识总线。
或者,在 MATLAB® 命令行窗口中,输入这些命令。
mdl = "BusHierarchy"; open_system(mdl) set_param(mdl, SimulationCommand="Update")

此模型中的虚拟总线不是由 Simulink.Bus 对象定义的。要创建非虚拟总线,必须指定与总线层次结构匹配的总线对象。
要以交互方式创建总线对象,请执行以下操作:
打开类型编辑器。双击 Bus Creator 模块。然后,在输出数据类型框旁边,点击
。在类型编辑器中,通过点击
创建两个总线对象。在每个总线对象中,通过点击
创建两个元素。(可选)双击并重命名对象。对于此示例,使用信号和总线名称。
将
NestedBus元素的数据类型设置为NestedBus。

或者,使用 Simulink.Bus.createObject 函数。
bctop = "BusHierarchy/Bus Creator1";
Simulink.Bus.createObject(mdl,bctop);该函数创建两个总线对象,它们以对应的总线 TopBus 和 NestedBus 命名。
现在,您已有对应于要创建的非虚拟总线的总线对象,接下来通过更新对应的 Bus Creator 模块参数,将顶层总线转换为非虚拟总线。
打开属性检查器。在 Simulink 工具条中,在仿真选项卡的准备库中,选择属性检查器。
选择名为
Bus Creator1的 Bus Creator 模块。在属性检查器中,将输出数据类型设置为
Bus: TopBus。在属性检查器中,选择以非虚拟总线输出。
要通过线型识别非虚拟总线,请重新编译模型。
或者,输入这些命令。
set_param(bctop, OutDataTypeStr="Bus: TopBus") set_param(bctop, NonVirtualBus="on") set_param(mdl, SimulationCommand="Update")

TopBus 现在是非虚拟总线,而 NestedBus 仍是虚拟总线。
要将嵌套总线转换为非虚拟总线,请更新对应的 Bus Creator 模块参数:
选择名为
Bus Creator的 Bus Creator 模块。在属性检查器中,将输出数据类型设置为
Bus: NestedBus。在属性检查器中,选择以非虚拟总线输出。
要通过线型识别非虚拟总线,请重新编译模型。
或者,输入这些命令。
bcnested = "BusHierarchy/Bus Creator"; set_param(bcnested, OutDataTypeStr="Bus: NestedBus") set_param(bcnested, NonVirtualBus="on") set_param(mdl, SimulationCommand="Update")

NestedBus 现在是非虚拟总线。
如果不保存总线对象,您必须在重新打开模型时重新创建总线对象。有关如何保存总线对象的信息,请参阅使用总线对象指定总线属性。
扩展示例
端口
输入
输入端口接受要包含在总线中的元素。输入端口的数量由输入数目参数决定。
每个 Bus Creator 模块都支持这些输入元素的组合:
仅信号
信号和信号总线
仅消息
消息和总线
仅限总线
您可以指定可变大小输入信号,其上界小于对应的 Bus Creator 模块输入端口可以接受的可变大小信号的上界。要配置 Bus Creator 模块输入端口可接受的可变大小信号的上界,请使用 Simulink.BusElement 对象。有关详细信息,请参阅 Simulink.BusElement。可变大小输入信号的维度必须与对应的 Bus Creator 模块输入端口配置的可接受信号维度相同。
数据类型: single | double | half | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | string | Boolean | fixed point | enumerated | bus
复数支持: 是
输出
参数
要以交互方式编辑模块参数,请使用属性检查器。在 Simulink 工具条中,在仿真选项卡的准备库中,选择属性检查器。
要创建一个总线,模块输入的数目必须为大于或等于 2 的整数。
增加输入数目会向模块添加未连接的输入端口。在对模型进行仿真之前,请确保为每个输入端口连接了一个输入。
如果每个输入端口都已连接,您可以通过将另一条线连接到 Bus Creator 模块来添加一个输入端口。

以交互方式添加端口会更新输入的数目参数值并将新输入添加到输入列表。
编程用法
要以编程方式设置模块参数值,请使用 set_param 函数。
将输入的数目指定为大于或等于 2 的整数。
| 参数: | Inputs |
| 值: | '2' (默认) | integer in quotes |
| 数据类型: | char | string |
示例: set_param(gcb, Inputs="3")
输入列表提供进入模块的元素,包括嵌套总线的元素。元素旁边的箭头表示输入是总线。要显示该总线的内容,请点击箭头。
要对输入元素重新排序,请从输入列表中选择一个或多个顶层元素。然后,将元素拖到新位置。
要添加或删除输入元素,请分别点击
或
。在仿真模型之前,确保每个输入端口都已连接。
要刷新输入元素列表,请点击
。例如,在以下情况下刷新输入元素列表:
在对话框打开时重命名输入元素。
添加、删除或重新排序未命名的输入元素。Bus Creator 模块将这些元素命名为
signalN,其中 N 是对应模块端口的编号。当对应的模块端口更改时,自动生成的名称也会随之更改。
要按名称过滤输入元素(使用或不使用正则表达式均可),请在过滤器框中输入搜索词。请勿将搜索词括在引号内。(可选)通过点击
将过滤后的结果显示为扁平列表。扁平列表使用圆点表示法来反映总线层次结构。默认情况下,过滤结果显示在层次结构树中。
在 R2025a 之前的版本中: 要使用正则表达式进行过滤,请点击
。然后,选择启用正则表达式。
要选择进入模块的元素的来源,请在列表中选择该元素。然后,点击
。属性检查器显示选定源模块的参数。当您选择包含多个元素的源模块时,属性检查器会显示具有焦点的源模块的参数。
无法撤消或重做对输入列表的更改。
提示
指定输出总线的数据类型。
如果选择 Bus: <object name>,请用 Simulink.Bus 对象的名称替换 <object name>。编辑模型时,必须可以访问总线对象。
提示
要使用类型编辑器创建一个
Simulink.Bus对象,请点击
。要从输出总线创建一个
Simulink.Bus对象,请使用Simulink.Bus.createObject函数。
编程用法
要以编程方式设置模块参数值,请使用 set_param 函数。
| 参数: | OutDataTypeStr |
| 值: | "Inherit: auto" (默认) | "Bus: <object name>" |
示例: set_param(gcb, OutDataTypeStr="Bus: control")
默认情况下,Bus Creator 模块使用模块输入的名称作为输出总线元素的名称,即使将 Simulink.Bus 对象指定为数据类型也是如此。
根据输入 - 从模块输入继承输出总线元素的名称。
在 R2025a 之前的版本中: 选择使用来自输入的名称,而不是来自总线对象的名称。
根据输出数据类型 - 从指定的总线对象继承输出总线元素的名称。
在 R2025a 之前的版本中: 清除使用来自输入的名称,而不是来自总线对象的名称。
将元素名称设置为根据输出数据类型时:
强制应用强数据定型。
避免在总线对象和模型中多次输入一个元素名称。多次输入名称可能导致意外的元素名称不匹配。
支持在数组元素之间必须具有一致的元素名称这一总线数组要求。
当元素名称设置为根据输入时,考虑将元素名称不匹配配置参数设置为错误。此配置参数检查输入元素名称是否与总线对象中的对应名称匹配。
依赖关系
要启用此参数,请将输出数据类型设置为 Simulink.Bus 对象。
编程用法
要以编程方式设置模块参数值,请使用 set_param 函数。
| 参数: | InheritFromInputs |
| 值: | "on" (默认) | "off" |
示例: set_param(gcb, InheritFromInputs="off")
下表将交互值映射到此参数的等效编程值。
元素名称值 | InheritFromInputs 值 |
|---|---|
| 根据输入(默认值) | "on"(默认值) |
| 根据输出数据类型 | "off" |
选择此参数以输出非虚拟总线。
非虚拟总线类似于 C 代码中的结构体。选中此参数可以:
构造总线数组。
总线数据需要跨 MATLAB Function 模块或 Stateflow® 图边界。
将总线数据打包为生成的 C 代码中的结构体。
通过 S-Function 对接外部代码。
减少生成代码中传递给子组件的函数参量数目。
非虚拟总线中的所有元素都必须具有相同的采样时间,即使关联的 Simulink.Bus 对象的元素为某些元素指定了继承采样时间也是如此。任何导致包含不同采样率元素的非虚拟总线的操作都会生成错误。要更改采样时间不同于其他非虚拟总线输入元素的元素或总线的采样时间,请使用 Rate Transition 模块。有关详细信息,请参阅Modify Sample Times for Nonvirtual Buses。
依赖关系
要启用此参数,请将输出数据类型设置为 Simulink.Bus 对象。
编程用法
要以编程方式设置模块参数值,请使用 set_param 函数。
| 参数: | NonVirtualBus |
| 值: | "off" (默认) | "on" |
示例: set_param(gcb, NonVirtualBus="on")
模块特性
数据类型 |
|
直接馈通 |
|
多维信号 |
|
可变大小信号 |
|
过零检测 |
|
扩展功能
实际数据类型或功能支持取决于模块实现。
HDL Coder™ 提供影响 HDL 实现和综合逻辑的额外配置选项。
此模块具有一个默认 HDL 架构。
| ConstrainedOutputPipeline | 通过移动设计中现有延迟的方式来放置在输出端的寄存器的数量。分布式流水线不会重新分发这些寄存器。默认值为 |
| InputPipeline | 要在生成的代码中插入的输入流水线阶段数。分布式流水线和受限输出流水线可以移动这些寄存器。默认值为 |
| OutputPipeline | 要在生成的代码中插入的输出流水线阶段数。分布式流水线和受限输出流水线可以移动这些寄存器。默认值为 |
此模块支持使用以下数据类型进行 HDL 代码生成:
| 输入端口 | 维度 | 定点 | 浮点 | 内置整数 | 总线 | 布尔 | 复信号 |
|---|---|---|---|---|---|---|---|
| Port_1 | 标量 向量 矩阵(最高二维) | 是 | 半精度 单精度 双精度 | 是 | 是 | 是 | 是 |
您可以使用以下 HDL Coder 优化来优化速度、面积和 I/O。
面积优化
| 优化 | 描述 |
|---|---|
| Resource Sharing (HDL Coder) | 资源复用是一种面积优化,其中 HDL Coder 确定多个在功能上等效的资源,并用单个资源替换它们。 |
| Streaming (HDL Coder) | 流式处理是一种面积优化,其中 HDL Coder 将向量数据路径变换为标量数据路径(或多个较小的向量数据路径)。 |
速度优化
| 优化 | 描述 |
|---|---|
| Distributed Pipelining (HDL Coder) | 分布式流水线或寄存器重定时是一种速度优化,它可以移动设计中的现有延迟,以在缩减关键路径的同时保留功能性行为。 对于 Sqrt 模块,HDL Coder 在模块周围(而不是在模块内)分布流水线寄存器。 |
| Clock-Rate Pipelining (HDL Coder) | 时钟频率流水线是 HDL Coder 中的一个优化框架,它允许其他速度优化和面积优化在时钟频率下引入延迟。 |
| Adaptive Pipelining (HDL Coder) | 自适应流水线优化创建带寄存器的模块模式或组合,通过在设计中的模块中插入流水线寄存器,可以提高可实现的时钟频率并减少 FPGA 板上的面积使用量。 |
| 关键路径估计 (HDL Coder) | 要快速确定设计中最可能的关键路径,请使用关键路径估计。关键路径估计加速寻找关键路径的迭代过程。要了解在关键路径估计中表征的模块,请参阅Characterized Blocks (HDL Coder)。 |
要了解有关使用总线进行 HDL 代码生成的更多信息,请参阅Buses (HDL Coder)。
PLC 代码生成
使用 Simulink® PLC Coder™ 生成结构化文本代码。
实际数据类型或功能支持取决于模块实现。
版本历史记录
在 R2006a 之前推出Bus Creator 模块现在为模块参数值提供更直观和简化的编辑功能。
现在,您可以在属性检查器中指定 Bus Creator 模块参数值。您可以继续使用“模块参数”对话框。
下表描述参数和交互更改。
| 目的 | R2025a 之前的操作 | R2025a 及之后的操作 |
|---|---|---|
| 应用更改。 | 进行您的更改。然后,点击应用或确定。 | 进行您的更改。 在属性检查器或“模块参数”对话框中指定模块参数值时,更改会立即应用。 |
| 使用正则表达式过滤。 | 点击 ,然后选择启用正则表达式。然后,在按名称过滤框中输入搜索词。 | 在过滤框中输入搜索词。 |
| 将过滤结果显示为扁平列表。 | 点击将过滤结果显示为扁平列表。 | 点击 。 |
| 查找源模块。 | 选择一个或多个输入。然后,点击查找。 软件会突出显示源模块。 | 选择一个或多个输入。然后,点击 软件会选择源模块,并且属性检查器会显示具有焦点的模块的参数。 |
| 添加模块输入。 | 点击添加。 | 点击 。 |
| 刷新输入列表。 | 点击刷新。 | 点击 。 |
| 删除模块输入。 | 点击删除。 | 点击 。 |
| 重新排序输入。 | 选择一个或多个相邻输入。然后,点击上移或下移,直到输入处于所需位置。 | 选择一个或多个输入。然后,将输入拖到所需位置。 |
打开类型编辑器以定义 Simulink.Bus 对象。 | 点击 ,并将模式设置为总线对象。然后,点击编辑按钮。 | 点击 。 |
| 指定输出总线元素名称的源。 | 选中或清除使用来自输入的名称,而不是来自总线对象的名称复选框。 | 将元素名称设置为根据输入或根据输出数据类型。 |
| 重命名输入。 | 编辑输入元素的信号标签。 或者,选择要求输入的名称与以上的名称匹配,选择元素,并在重命名所选信号框中指定新名称。 | 编辑输入元素的信号标签。 |
要求输入的名称与以上的名称匹配和重命名所选信号参数已删除。要指定所需名称,请改用 Simulink.Bus 对象。
将输出数据类型设置为
Simulink.Bus对象。选择以下选项之一:
要从指定的
Simulink.Bus对象继承输出总线元素名称,请将元素名称设置为根据输出数据类型。若要求输入名称与指定的
Simulink.Bus对象中的名称匹配,请将元素名称设置为根据输入,并将元素名称不匹配配置参数设置为错误。此配置参数检查输入名称是否与Simulink.Bus对象中的对应名称匹配。
不推荐将 Inputs 设置为以逗号分隔的元素名称列表。
从 R2023a 开始,Bus Creator 模块支持可变大小输入信号,其上界小于对应的 Bus Creator 模块输入端口可接受的可变大小信号的上界。
当输入信号的上界不等于对应的 Bus Creator 模块输入端口可以接受的可变大小信号的上界时,此增强功能允许您使用可变大小输入信号。
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)

