这个例子强调了当您使用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滤波器的Simulink模金宝app型作为SystemC / TLM生成的基础。
运行此示例的要求:
Systemc 2.3.1(包括TLM库)
注意:该示例包括一个代码生成构建过程。金宝appSimulink不允许您在MATLAB安装区构建程序。如果有必要,在开始任何构建之前,更改到不在MATLAB安装区域中的工作目录。
打开FIR滤波器模型与自动生成的内存映射与个别地址, 点击开放式按钮。
下面的模型在Simulink中打开。金宝app
在里面配置参数对话框,选择TLM代查看在左侧窗格中。在里面TLM映射选项卡,在套接字映射中,选择一个组合的TLM套接字用于输入数据、输出数据和控制.下组合TLM插座中,选择自动生成的存储器映射和单个输入和输出地址偏移,如下图所示。
将剩下的TLM代选项根据您的首选项(或保持默认值),然后单击行要应用这些设置并退出配置参数对话框。
在模型窗口中,右键单击DualFilter块并选择C / C ++代码>为此子系统生成代码在上下文菜单中启动TLM组件代.或者你可以在MATLAB命令窗口中执行以下命令:
> > slbuild (' tlmgdemo_aimem / DualFilter ');
当以下消息出现在MATLAB命令窗口时,生成完成:
###启动Simulink金宝app编码器型号的构建过程================================================================= DualFilter代码生成的代码生成信息文件不存在。1个1个模型(0型号已最新的型号)构建持续时间:0H 0M 24.974S
在MATLAB编辑器中打开以下文件:
找到以下代码行。这些行代表了作为具有单个地址存储器映射的TLM组件生成时的FIR滤波器的输入和输出定义。
要为生成的TLM组件提供一组输入,TLM Initiator应该发送两个写入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.