Loosely-Timed SystemC / TLM模拟

这个示例强调了在使用针对Simulink编码器或Embedded Coder™的tlmgenerator目标从Simulink模型生成SystemC™/TLM组件时,“定时”计时模式的使用。万博1manbetx

在Si万博1manbetxmulink®模型中,数据在源和汇之间的移动由信号采样率和一个集中的定时求解器控制。在SystemC/TLM模型中,数据汇和源之间的交互由SystemC模拟内核控制,时间通过SC_THREADs向前推进,协同地将控制权交给另一个通过的线程等待调用。

对于定时的SystemC/TLM仿真,该模型遵循通信接口和处理的注释延迟。对于时间较松的模拟,模型不允许线程在时间上“提前运行”,因此不存在与其他线程的时间感觉不同的“本地时间”概念。相反,启动程序会立即同步TLM事务返回的延迟,并且通常执行非零时间等待,以便执行轮询循环和按需同步。仿真时间将在一个松散的时间模型中提高,以反映系统中的通信、处理和轮询延迟。该模型的目标,除了与非定时系统一样正确地同步数据移动之外,还包括具有快速时钟执行时间的功能正确的模拟。这种速度允许在SystemC/TLM体系结构模型上进行接近实时的软件开发。

对于这个例子,我们使用FIR滤波器的Simulink万博1manbetx模型作为SystemC/TLM生成的基础。

s manbetx 845运行此演示所需的产品:

  • SystemC 2.3.1(包括TLM库)

  • 对于代码验证,在Linux上的path中创建一个兼容的gnu编译器,gcc,或者在Windows上的path中的Visual Studio编译器

注意:该示例包含一个代码生成构建过程。万博1manbetxSimulink不允许您在MATLAB安装区域中构建程序。如果有必要,在开始任何构建之前,将其更改为不在MATLAB安装区域中的工作目录。

1.打开预配置的模型

打开TLM宽松时间测试平台模型,单击开放模式按钮。

下面的模型在Simulink中打开。万博1manbetx

2.检查TLM生成器目标配置选项

在模型窗口中,从模拟菜单选择模型配置参数…配置参数对话框中,选择TLM发电机查看,然后选项卡TLM Testbench查看和检查testbench设置,如下图所示。选择verbose testbench消息复选框,以查看SystemC/TLM模拟中启动程序/目标交互的完整日志。因为这将有数千行,所以如果需要,可以取消选择获得SystemC/TLM模拟的简洁日志的选项。

3.构建模型

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

> > rtwbuild(“tlmgdemo_lttb / DualFilter”)

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

成功完成Simulink编万博1manbetx码器的建模过程:DualFilter

4.打开生成的文件

通过单击'DualFilter_lttb_tlm_tb,在MATLAB web浏览器中打开生成的testbench源代码。在生成的报告或在MATLAB编辑器:

5.检查生成的代码

“With timing”的规范在测试台中指示TLM组件通过一个特殊的配置接口以计时模式运行,mw_backdoorcfg_IF。正如代码所示,时序模式的选择是动态的,可以在仿真过程中改变。由于这个选择纯粹是一个模拟构造,所以它不是通过“前门”TLM事务来编程的。

另外,正如代码所示,testbench必须设置一个具有正确计时模式的本地helper对象,以确保它的启动程序线程在TLM事务调用中使用正确的同步。

松定时同步类的实现,mw_syncfunctimed_tb,在mw_万博1manbetxsupport_tb.cpp文件显示启动程序线程和TLM事务使用的各种同步调用的详细信息。与非定时模拟不同,调用利用了非零时间的等待,但是,与非定时模拟一样,不允许积累“本地时间”延迟。

6.验证生成的代码

配置参数对话框,进入TLM Testbench配置参数对话框,并推送验证TLM组件按钮以松散计时的计时模式运行生成的测试工作台或在MATLAB命令窗口中执行:

> > verifyTlmgDemoModel(“lttb”)

这一行动将:

  • 构建生成的代码

  • 运行Si万博1manbetxmulink以捕获输入刺激和预期结果

  • 将Simulink数据转万博1manbetx换为TLM向量

  • 运行独立的SystemC/TLM testbench可执行文件

  • 将TLM结果转换回Simulink数据万博1manbetx

  • 执行数据比较

  • 为数据比较错误的信号生成一个图形窗口