主要内容

自动生成内存映射与个人地址选项

这个例子强调了当您使用Simulink Coder或Embedded Coder的tlmgenerator目标从Simulink®模型生成SystemC™/TLM组件时,自动生成内存映射和单独地址选项的使用。金宝app

在Si金宝appmulink中,每个组件的输入或输出都点对点地绑定到另一个组件。在SystemC/TLM中,每个组件通过TLM套接字进行通信。该套接字处理TLM事务中格式化的所有传入和传出通信。因为每个系统处理通信的方式不同,所以当SystemC/TLM组件从Simulink模型生成时,我们必须为它定义一个通信接口。金宝app根据SystemC/TLM组件的预期用途,此通信接口可能需要为组件中的每个输入/输出构建内存映射(或地址)。这个内存映射可以是简单的,也可以是详细的。

带有单独地址选项的自动生成内存映射会生成一个TLM组件,每个模型输出都有一个读寄存器,每个模型输入都有一个写寄存器。每个Sim金宝appulink模型输入都绑定到其相应的写寄存器,每个输出都绑定到其相应的读寄存器。当使用此选项创建时,生成的TLM组件可以在虚拟平台(VP)中作为测试台上的独立组件使用,也可以附加到通信通道。

对于这个例子,我们使用一个FIR滤波器的Simuli金宝appnk模型作为SystemC/TLM生成的基础。

运行这个例子的要求:

  • SystemC 2.3.1(包括TLM库)

注意:该示例包括一个代码生成构建过程。金宝appSimulink不允许您在MATLAB安装区构建程序。如有必要,在开始任何构建之前,请更改到MATLAB安装区域之外的工作目录。

1.打开预配置模型

打开带有独立地址的自动生成内存映射的FIR滤波器模型,按开放模式按钮。

下面的模型在Simulink中打开。金宝app

2.将选项设置为“自动生成单个地址内存映射”

配置参数对话框中,选择TLM代在左侧窗格中查看。在TLM映射选项卡,在套接字映射中,选择一个组合式TLM套接字,用于输入数据、输出数据和控制.下组合式TLM插座中,选择自动生成内存映射而且单独的输入和输出地址偏移量,如下图所示。

3.设置其他选项

设置剩余的TLM代选项(或保持默认值不变),然后单击好吧要应用这些设置并退出配置参数对话框。

4.构建模型

在模型窗口中,右键单击DualFilter块并选择C/ c++代码>为这个子系统生成代码在上下文菜单中启动TLM组件生成.或者在MATLAB命令窗口中执行以下命令:

> > slbuild (' tlmgdemo_aimem / DualFilter ');

当MATLAB命令窗口中出现以下消息时,生成完成:

成功完成Simulink 金宝appCoder模型的构建过程:DualFilter构建摘要构建的顶级模型目标:模型动作重建原因===============================================================================生成的DualFilter代码。代码生成信息文件不存在。构建1 / 1模型(0个模型已经更新)构建持续时间:0h 0m 15.049s

5.打开生成的文件

在MATLAB编辑器中打开以下文件:

6.观察生成的代码

找到下面的代码行。这些行表示FIR Filter在生成为具有单独地址内存映射的TLM组件时的输入和输出定义。

为了向生成的TLM组件提供一组输入,TLM启动器应该发送两个写TLM事务:

  • 其中一个有效负载包含类型的数据input_1_REG_T在地址DualFilter_combined_IN_BANK_ADDR+input_1_REG_ADDR

  • 其中一个有效负载包含类型的数据input_2_REG_T在地址DualFilter_combined_IN_BANK_ADDR+input_2_REG_ADDR

为了从生成的TLM组件获得一组输出,TLM启动器应该发送三个读TLM事务:

  • 其中一个有效负载包含类型的数据output_1_REG_T在地址DualFilter_combined_OUT_BANK_ADDR+output_1_REG_ADDR

  • 其中一个有效负载包含类型的数据output_2_REG_T在地址DualFilter_combined_OUT_BANK_ADDR+output_2_REG_ADDR