【问题标题】:Simulink C/C++ code generation for parallel (AND) states用于并行 (AND) 状态的 Simulink C/C++ 代码生成
【发布时间】:2014-12-03 08:41:49
【问题描述】:

我有一个基本问题;抱歉,它可能非常愚蠢和通用,但对我们的知识非常重要。 C/C++ 生成的代码是如何为并行 (AND) 状态实现的?它是否使用多线程方法实现它们?

我为一个简单的场景生成了C源代码,只有2个并行状态,如图所示。即使对于这种简单的场景,它也是一个复杂的代码,但我没有看到任何线程基础。

【问题讨论】:

    标签: matlab simulink stateflow


    【解决方案1】:

    您将并行性与并发性混淆了。在 simulink 术语中,所有并行状态都在单个时间步中执行。这在仿真中是可以接受的,但在您可能想要充分利用多个执行内核时,对于实时系统的代码生成则不行。这也适用于一般的 simulink 模块。异步块(具有不同的采样率)和并行状态在同一线程(在 step 函数中)按顺序执行。您唯一可以控制的是执行顺序。见下文:

    http://uk.mathworks.com/help/stateflow/ug/execution-order-for-parallel-states.html

    例如,下面是生成的并行状态代码:

    请注意,在第 13 行和第 15 行的 step() 函数中,输出是根据 stateflow 中的顺序分配的。

    您可能需要考虑 PCT(并行计算工具箱),看看它是否支持您的需求。

    http://uk.mathworks.com/solutions/parallel-computing/index.html

    或者,根据目标硬件,您可能会发现使用 C11 std::thread 手动编写源代码并使用 s-function 和/或遗留代码工具将其带入您的模拟是合适的。

    【讨论】:

      猜你喜欢
      • 2017-07-06
      • 1970-01-01
      • 1970-01-01
      • 2020-02-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-08-20
      相关资源
      最近更新 更多