Bus Selector
从输入总线中选择元素
库:
Simulink /
Commonly Used Blocks
Simulink /
Signal Routing
HDL Coder /
Signal Routing
描述
Bus Selector 模块从输入总线层次结构中按名称提取您选择的元素。该模块可以分别输出选定的各个元素或在一个新的虚拟总线中输出所有选定元素。当模块分别输出选定元素时,每个选定元素对应于一个输出端口。当模块输出新的虚拟总线时,对于包含所有选定元素的虚拟总线,该模块具有一个与之对应的输出端口。
虽然多个元素在总线层次结构中的不同位置可以具有相同的名称,但每个元素都有唯一的完全限定名称供 Bus Selector 模块使用。例如,顶层总线和一个嵌套总线都可以有名为 chirp
的元素。顶层总线中该元素的完全限定名称为 chirp
。嵌套总线中该元素的完全限定名称为 nestedbus.chirp
,其中 nestedbus
是嵌套总线的名称。
提示
对于子系统和模型接口上的总线,请使用 In Bus Element 模块,而不要使用搭配 Bus Selector 模块的 Inport 模块。In Bus Element 模块能够:
减少模块图中线的复杂度和杂乱无章。
允许您更轻松地逐步更改接口。
允许访问更靠近使用点的总线元素,避免使用 Bus Selector 和 Goto 模块配置。
示例
从总线中选择元素
Bus Selector 模块允许您按名称从总线中提取元素。
打开并编译名为 BusElementSelection
的示例模型。要编译模型,请在 Simulink 工具条的建模选项卡上,点击更新模型或运行。编译模型会更新线型,您可以使用线型来直观地标识总线。
Bus Creator 模块根据源信号创建一个总线层次结构。
名为
Bus Creator
的 Bus Creator 模块将名为sine
和chirp
的信号组合到一个名为sinusoidal
的总线中。名为
Bus Creator1
的 Bus Creator 模块将名为pulse
和saw
的信号组合到一个名为nonsinusoidal
的总线中。名为
Bus Creator2
的 Bus Creator 模块将这两个总线和名为constant
的信号组合到一个名为sources
的总线中。
Bus Selector 模块接收名为 sources
的总线作为输入,并返回名为 chirp
的信号作为输出。
在此示例中,Bus Selector 模块输出连接到一个 Out Bus Element 模块。另有两个 Out Bus Element 模块未连接任何输入输出。
要向 Bus Selector 模块添加输出端口,请点击 Bus Selector 模块的输出边。
开始键入要选择的元素的名称,例如 nonsinusoidal
。
使用箭头键选择名为 nonsinusoidal
的元素。然后按 Enter 键。或者,点击菜单中的元素名称。
将新端口连接到一个 Out Bus Element 模块。(可选)编译模型以显示选定总线的总线线型。
要将模块连接到 Bus Selector 模块上的一个新输出端口,请从模块未连接的输入端口拖拽一条线到 Bus Selector 模块的输出边。
例如,从剩下的最后一个 Out Bus Element 模块的输入端口拖拽一条线到 Bus Selector 模块的输出边。
开始键入要选择的元素的名称,例如 saw
。
使用箭头键选择名为 nonsinusoidal.saw
的元素。然后按 Enter 键。或者,点击菜单中的元素名称。
在此示例中,完全限定的元素名称为 nonsinusoidal.saw
,因为名为 saw
的信号位于名为 nonsinusoidal
的嵌套总线中。
虽然此示例说明了如何从模块图的输入总线中选择元素,但您也可以双击 Bus Selector 模块,并在打开的对话框中选择输出元素。
扩展示例
端口
输入
输出
参数
要以交互方式编辑 Bus Selector 模块参数,请双击该模块。
默认情况下,对话框以垂直布局打开,选定元素位于总线中的元素列表下。要并排查看总线中的元素和选定输出元素,请点击 。
总线中的元素 — 输入总线层次结构
元素名称列表
此 参数 为只读。
总线中的元素列表提供进入模块的元素,包括嵌套总线及其元素。元素旁边的箭头表示输入元素是总线。要显示该总线的内容,请点击箭头。
要按名称过滤总线中的元素(使用或不使用正则表达式均可),请在过滤器框中输入搜索词。请勿将搜索词括在引号内。(可选)通过点击 将过滤后的结果显示为扁平列表。扁平列表使用圆点表示法来反映总线层次结构。默认情况下,过滤结果显示在层次结构树中。
要突出显示进入模块的元素的来源,请在列表中选择该元素。然后,点击 。或者,右键点击该元素。然后,选择突出显示源模块。
要刷新进入模块的元素的列表,请点击 。例如,在对话框打开的情况下更改元素名称时,点击此按钮。
提示
绿色复选标记图标出现在选定输出元素旁边。
当您将鼠标暂停在一个选定输出元素上方时,会在括号中会显示 Bus Selector 模块选定该元素的次数。
正则表达式允许您根据输入元素是否匹配某个模式进行过滤。例如,在滤波器框中输入
t$
,以显示名称以小写字母t
结尾的所有元素。有关详细信息,请参阅正则表达式。
编程用法
要以编程方式获取模块参数值,请使用 get_param
函数。
参数: | InputSignals |
值: | cell array of element names |
示例: get_param(gcb,'InputSignals')
输出元素 — 选择的输出元素
元素名称的列表
所选元素的列表提供退出模块的元素。该列表对每个元素使用完全限定名称。
在 Simulink® 编辑器中,当取消选中以虚拟总线输出选项时,通过向模块添加端口来从输入总线中选择元素。
点击 Bus Selector 模块的输出边。或者,当模块接收到一个总线且所有输出端口都连接到其他端口时,在靠近 Bus Selector 模块的输出边处绘制一条新信号线。
指定一个要选择的元素。
在“模块参数”对话框中,将元素添加到输出元素列表,以此方式从输入总线中选择元素。
在总线中的元素列表中,选择一个或多个要添加到模块输出的元素。
当您从总线中的元素列表中选择多个元素时,您将它们添加到输出元素列表时的顺序将设置它们在列表中的顺序。
(可选)在输出元素列表中,选择您要在下面添加元素的元素。如果未选择任何元素,软件会将元素添加到列表的末尾。
根据对话框的布局,点击 或 。或者,右键点击选定元素之一。然后,点击添加到输出。
要更改输出元素的顺序,请将输出元素列表中的元素拖到一个不同位置。当您更改元素顺序时,端口会保持连接。
要从模块输出中删除元素,请从输出元素列表中选择要删除的元素。然后,点击 。或者,右键点击选定元素之一。然后,选择删除。
如果列表中的某个元素不在输入总线中,则该元素名称显示为红色。从选定元素列表中删除该元素,或修改输入总线以包含具有指定名称的元素。要删除不在输入总线中的所有输出元素,请右键点击红色元素名称。然后,选择删除所有无效元素。
限制
为了避免递归限制,请为每个 Bus Selector 模块选择少于 500 个元素。
编程用法
要以编程方式设置模块参数值,请使用 set_param
函数。
参数: | OutputSignals |
值: | 'signal1,signal2' (默认) | comma-separated list of element names in quotes |
数据类型: | char | string |
示例: set_param(gcb,'OutputSignals','constant,sine')
以虚拟总线输出 — 将选定元素作为虚拟总线输出的选项
off (默认) | on
默认情况下,模块将每个选定元素从一个单独的输出端口输出,该端口上标有对应总线元素的名称。要从一个端口输出所选元素,这些元素组合在一个虚拟总线中,请选择此参数。
要将输出转换为非虚拟总线,请在 Bus Selector 模块后插入一个 Signal Conversion 模块。将 Signal Conversion 模块的输出参数设置为非虚拟总线,并将数据类型设置为 Simulink.Bus
对象。
当输出元素列表中只包含一个元素,而您又选中了此参数时,则该元素不会包装在总线中。例如,如果元素是一个总线,则输出元素是该总线。如果该元素不是总线,则输出元素不是总线。
依存关系
要使用此参数,模块输出不能包含消息。
编程用法
要以编程方式设置模块参数值,请使用 set_param
函数。
参数: | OutputAsBus |
值: | 'off' (默认) | 'on' |
示例: set_param(gcb,'OutputAsBus','on')
模块特性
数据类型 |
|
直接馈通 |
|
多维信号 |
|
可变大小信号 |
|
过零检测 |
|
提示
默认情况下,对话框以垂直布局打开,选定元素位于总线中的元素列表下。要并排查看总线中的元素和选定输出元素,请点击 。
扩展功能
C/C++ 代码生成
使用 Simulink® Coder™ 生成 C 代码和 C++ 代码。
实际数据类型或功能支持取决于模块实现。
HDL 代码生成
使用 HDL Coder™ 为 FPGA 和 ASIC 设计生成 VHDL、Verilog 和 SystemVerilog 代码。
HDL Coder™ 提供影响 HDL 实现和综合逻辑的额外配置选项。
要了解有关使用总线进行 HDL 代码生成的更多信息,请参阅Buses (HDL Coder) 和Use Buses to Improve Readability of Model and Generate HDL Code (HDL Coder)。
此模块具有一个默认 HDL 架构。
ConstrainedOutputPipeline | 通过移动设计中现有延迟的方式来放置在输出端的寄存器的数量。分布式流水线不会重新分发这些寄存器。默认值为 |
InputPipeline | 要在生成的代码中插入的输入流水线阶段数。分布式流水线和受限输出流水线可以移动这些寄存器。默认值为 |
OutputPipeline | 要在生成的代码中插入的输出流水线阶段数。分布式流水线和受限输出流水线可以移动这些寄存器。默认值为 |
PLC 代码生成
使用 Simulink® PLC Coder™ 生成结构化文本代码。
定点转换
使用 Fixed-Point Designer™ 设计和仿真定点系统。
实际数据类型或功能支持取决于模块实现。
版本历史记录
在 R2006a 之前推出R2024a: 右键点击元素以访问选项
在 Bus Selector 模块的“模块参数”对话框中,右键点击元素并选择所需的操作。
添加到输出 - 将输入总线中的元素添加到模块输出。
突出显示源模块 - 突出显示输入总线中元素的源模块。
删除 - 从模块输出中删除元素。
删除所有无效元素 - 删除不在输入总线中的所有输出元素。无效元素名称为红色。
要查看元素的可用操作,请右键点击该元素。要查看多个选定元素的可用操作,请右键点击选定元素之一。例如,假设您的所选内容只包含无效元素。右键点击时,出现两个选项:删除和删除所有无效元素。如果您的所选内容包含有效元素,将出现一个选项:删除。
R2024a: 重命名的参数和更直观的交互
当您与 Bus Selector 模块交互时,您的操作结果会更加清晰。
“选择元素”按钮 现在重命名为“添加到输出”按钮 。
选定元素列表现在重命名为输出元素列表。
“以虚拟总线输出”按钮 现在改为以虚拟总线输出复选框。
R2023b: 简化的对话框设计
Bus Selector 模块对话框采用简化的设计,还有一些附加功能。
在总线中的元素列表中,选定输出元素的旁边会显示一个绿色对勾图标。
在总线中的元素列表中,当您将鼠标暂停在选定输出元素上方时,会在括号中显示 Bus Selector 模块选择该元素的次数。
默认情况下,过滤支持正则表达式。
您可以在垂直和水平布局之间切换。
先前的功能保持不变。
默认情况下,对话框以垂直布局打开,选定元素位于总线中的元素列表下。要并排查看总线中的元素和选定输出元素,请点击 。
水平布局更接近以前 Bus Selector 模块对话框的设计。
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)