使用总线信号改进模型和生成HDL代码的可读性

你可以遵循这些指导方针,了解总线信号,如何设计模型通过使用这些信号,并生成HDL代码。每个指南都有严重性级别,表明合规要求的水平。欲了解更多,请看高密度脂蛋白建模指南严重的水平

指导ID

1.3.3

严重程度

信息丰富的

描述

什么时候使用公共汽车吗?

如果你的DUT或者其他块在你的模型有很多输入或输出信号,您可以创建总线信号来改善你的模型的可读性。总线信号或总线是一个复合信号,由其他的信号,称为元素。总线信号可以有一个不同的数据类型或结构矢量信号具有相同的数据类型。如果所有信号有相同的数据类型,您通常使用Mux。一辆公共汽车的组成信号或元素可以是:

  • 混合数据类型的信号,如双整数,定点

  • 混合标量和向量元素

  • 混合现实和复杂的信号

  • 其他公交车嵌套任何级别

  • 多维信号

高密度脂蛋白编码器™支金宝app持公共汽车

您可以生成HDL代码的设计:

  • DUT子系统端口连接到公共汽车。

  • 金宝app仿真软件®和Stateflow®块支持HDL代码生成。金宝app

高密度脂蛋白编码器支金宝app持bus-capable块的代码生成高密度脂蛋白编码器块库。Bus-capable块是块可以接受总线信号作为输入,并产生总线信号作为输出。仿真软件支持的bus-capable块列表,看看金宝app金宝appBus-Capable块

看到信号和数据类型的支持金宝app块支持HDL代码生成与公交车。金宝app

创建总线信号

您可以创建总线信号通过总线的创造者块。公交车创造者阻止它产生每个信号分配一个名称。然后您可以参考信号的名字当你搜索他们的来源。

为一个示例,演示了如何使用公共汽车、模型的开放hdlcoder_bus_nested.slx。双击HDL_DUT子系统。

open_system (“hdlcoder_bus_nested”)set_param (“hdlcoder_bus_nested”,“SimulationCommand”,“更新”)open_system (“hdlcoder_bus_nested / HDL_DUT”)

在这个模型中,总线创造者块创建两个总线信号。一个总线信号包含data1_EnCounterForParam信号。包含其他总线信号参数信号。缺省情况下,每个信号在公共汽车上继承了信号连接到总线的名称。这图显示了在公共汽车上的信号公共汽车创造者块的参数,输入data1_EnCounterForParam

巢公交车

你看到另一辆车的创造者块相结合这两种总线信号。当一个或多个输入总线创造者块是一个公共汽车,输出是一个嵌套的公共汽车。

公车创造者块为总线信号的生成名称对应输入没有名字。的名字是形式signaln的数量,其中n是该端口输入信号连接。例如,如果您打开第二个总线创造者块的参数对话框,你可以看到在公共汽车上的信号作为signal1Param_sin

另请参阅巢公交车

信号值分配给公共汽车

改变汽车元素值,使用一个总线分配块。使用一个总线分配块改变总线元素值没有添加总线选择器和总线的创造者块选择总线元素和重新组装成一辆公共汽车。

例如,打开模型hdlcoder_bus_nested_assignment

open_system (“hdlcoder_bus_nested_assignment”)set_param (“hdlcoder_bus_nested_assignment”,“SimulationCommand”,“更新”)open_system (“hdlcoder_bus_nested_assignment / HDL_DUT”)

在模型中,你看到一个公交分配块分配值5data1_En在公共汽车上的信号。

选择总线输出

提取信号总线,包括嵌套的巴士,使用总线选择器块。默认情况下,块指定总线输出的元素作为单独的信号。你也可以作为另一个总线输出信号。您可以使用OutputSignals块属性的在公共汽车上的信号块的输出。通过使用该属性,您可以跟踪信号输入总线选择器块深处你的模型层次结构。

get_param (“hdlcoder_bus_nested / HDL_DUT /总线Selector5”,“OutputSignals”)
ans = ' signal1.data1_En、signal1.CounterForParam Param_sin.Param, Param_sin.sin”

生成HDL代码

为这个模型生成HDL代码,运行这个命令:

makehdl (“hdlcoder_bus_nested / HDL_DUT”)

你看到代码生成器扩展总线信号的标量信号生成的代码。例如,如果您打开生成的Verilog文件HDL_DUT子系统,延迟块,两个嵌套总线信号signal1Param_sin,你总是看到四个街区为每个信号在总线中创建。例如,你看到一个总是阻止的data1_En信号的一部分signal1。这个图显示的标量信号为每个总线信号的模块创建定义。

简化子系统总线接口

可以简化子系统总线接口通过总线块元素。在总线元素和总线模块提供一个简化和灵活的方式使用总线信号作为输入和输出子系统。在总线元素块相当于一个尺寸块结合总线选择器块。总线元素块相当于一个外港块结合公交创造者块。重构现有的模型,利用轮廓尺寸、总线选择器,总线的创造者,和外港块用于总线元素和总线模块,您可以使用仿真软件®编辑动作酒吧。金宝app

例如,打开模型hdlcoder_bus_nested_simplified。这个模型的功能相当于hdlcoder_bus_nested模型,但更简化版本。

open_system (“hdlcoder_bus_nested_simplified”)set_param (“hdlcoder_bus_nested_simplified”,“SimulationCommand”,“更新”)open_system (“hdlcoder_bus_nested_simplified / HDL_DUT”)

模型有两个子系统执行总线创建和总线选择通过总线块元素。的Bus_Creator_Subsystem结合了外港阻塞与总线的创造者创造出总线元素块。

open_system (“hdlcoder_bus_nested_simplified / HDL_DUT / Bus_Creator_Subsystem”)

Bus_Selection_Subsystem结合了尺寸块与总线选择器阻塞创建总线元素。

open_system (“hdlcoder_bus_nested_simplified / HDL_DUT / Bus_Selection_Subsystem”)

欲了解更多,请看简化子系统总线接口

虚拟和Nonvirtual公交车

总线信号模型中hdlcoder_bus_nested前面创建通过总线创造者和总线选择器块虚拟巴士。每个总线元素信号存储在内存中,但是没有存储总线信号。公共汽车简化了图,但没有功能的效果。在生成的HDL代码中,您可以看到组成信号而不是总线信号。

更容易跟踪总线之间的通信信号模型和生成的HDL代码,使用nonvirtual公交车。Nonvirtual公交车生成干净的HDL代码,因为它使用一个结构来控制总线信号。将虚拟总线nonvirtual总线,总线创造者块参数的块,你指定输出数据类型作为总线:object_name通过替换object_name与总线的名称,然后选择对象输出作为nonvirtual总线

数组的公交车

公交车是一个数组的数组元素是公交车。数组中每个元素的公交车必须nonvirtual和必须具有相同的数据类型。

了解更多关于建模数组的公交车,看到的生成HDL代码为子系统的公交车

另请参阅

功能

相关的话题