此示例强调了在生成SystemC时使用“定时”计时模式™/使用任一Simulink®编码器的TLM生成器目标的Simulink®模型的TLM组件™ 或嵌入式编码器®。金宝app
在Si金宝appmulink®模型中,源和汇之间的数据移动由信号采样率和集中式定时解算器控制。在SystemC/TLM模型中,数据接收器和数据源之间的交互由SystemC仿真内核控制,时间通过SC_线程协同推进,从而通过等待
调用。
对于定时SystemC/TLM仿真,该模型遵循通信接口和处理的注释延迟。对于时间松散的模拟,该模型不允许线程在时间上“提前运行”,因此不知道“本地时间”与其他线程的时间感不同。相反,启动器会立即与TLM事务返回的延迟同步,并通常执行非零计时等待,以便按需执行轮询循环和同步。模拟时间将在一个时间松散的模型中提前,以反映系统中的通信、处理和轮询延迟。该模型的目标是,除了与不定时系统一样正确同步数据移动外,还具有功能正确的模拟,并具有快速的挂钟执行时间。这种速度允许在SystemC/TLM体系结构模型上进行近乎实时的软件开发。
对于本例,我们使用FIR滤波器的Simulink模型金宝app作为SystemC/TLM生成的基础。
下载188bet金宝搏运行此演示所需的产品:
SystemC 2.3.1(包括TLM库)
为了进行代码验证,在Linux®上创建一个兼容的gnu编译器,gcc,或者在Windows®上创建一个兼容的Visual Studio编译器
注意:该示例包括一个代码生成构建过程。金宝appSimulink不允许您在MATLAB安装区构建程序。如果有必要,在开始任何构建之前,更改到不在MATLAB安装区域中的工作目录。
打开TLM松散时间测试台模型,单击开放模型按钮
以下模型将在Simulink中打开。金宝app
在Simuli金宝appnk工具条中,选择模型设置从建模选项卡。在配置参数对话框中,选择TLM发电机查看然后单击选项卡TLM试验台查看和检查测试台设置,如下图所示。选择verbose testbench message复选框以查看SystemC/TLM模拟中启动器/目标交互的完整日志。由于这将有数千行,如果需要,取消选择获取SystemC/TLM模拟的简洁日志的选项。
在模型窗口中,右键单击DualFilter块并选择C/C++代码>为此子系统生成代码在关联菜单中启动生成TLM组件和测试台.或者你可以在MATLAB命令窗口中执行以下命令:
> > slbuild(“tlmgdemo_lttb / DualFilter”)
当以下消息出现在MATLAB命令窗口时,生成完成:
###成功完成Simuli金宝appnk Coder的模型构建过程:DualFilter build Summary模型重建行动的原因 ============================================================================== DualFilter代码生成的代码生成信息文件不存在。建造时间:0小时0米14.832秒
在MATLAB web浏览器中通过点击生成的报告中的'DualFilter_lttb_tlm_tb.cpp'或在MATLAB编辑器中打开生成的testbench源代码:
“带定时”的规范导致测试台通过特殊配置界面指示TLM组件在定时模式下运行,mw_backdoorcfg_IF
.如代码所示,定时模式的选择是动态的,可以在仿真过程中改变。因为这个选择纯粹是一个模拟构造,所以它不是通过“前门”TLM事务来编程的。
此外,如代码所示,testbench必须使用正确的计时模式设置本地助手对象,以确保其启动器线程在TLM事务调用中使用正确的同步。
松散时间同步类的实现,mw_syncfunctimed_tb
,在mw_金宝appsupport_tb.cpp
文件显示启动器线程和TLM事务使用的各种同步调用的详细信息。与无时间模拟不同,调用利用非零时间的等待,但与无时间模拟一样,不允许累积“本地时间”延迟。
在配置参数
对话框,进入TLM试验台
配置参数对话框,并推送验证TLM组件
按钮在松散定时模式下运行生成的测试台或在MATLAB命令窗口中执行:
> > verifyTlmgDemoModel(“lttb”)
这一行动将:
构建生成的代码
运行Si金宝appmulink以捕获输入刺激和预期结果
将Simulink数据转金宝app换为TLM矢量
运行独立的SystemC/TLM testbench可执行文件
将TLM结果转换回Simulink数据金宝app
执行数据比较
为数据错误比较的任何信号生成一个Figure窗口