Simulink へのパイプラインの実装
次の例は、Simulink® モデル内のシステムにパイプラインを実装する方法を示しています。モデルは、入力、同じ入力に適用された機能コンポーネント、連結された出力で構成されます。パイプラインの詳細については、パラレル化のタイプを参照してください。
このモデルを同時実行用に設定します。完成したモデルを見るには、ex_pipelining_top を開きます。
このモデル内の領域を参照モデルに変換します。同じ参照モデルを使用して、入力を処理する各機能コンポーネントを置き換えます。次の図は、サンプル コンフィギュレーションを示しています。
最上位モデルのモデル コンフィギュレーション パラメーターを開きます。[MAT ファイルのログ] チェック ボックスをオフにします。
[ソルバー] ペインで、[タイプ] を
[固定ステップ]
に設定し、[適用] をクリックします。また、[周期的なサンプル時間の制約] が[制約なし]
に設定されていることを確認します。[追加オプション] で、[ターゲット上でタスクの同時実行を許可] を選択し、[タスクの構成] をクリックします。[同時実行] ダイアログ ボックスの右側のペインで、[同時実行用に明示的なモデル分割を有効にする] チェック ボックスをオンにします。明示的な分割を使用することにより、モデルを手動で分割できます。
選択ペインで、[CPU] を選択します。[タスクの追加]
を 3 回クリックし、新しいタスクを 3 つ追加します。
選択ペインで、[タスクとマッピング] を選択します。[タスクにブロックをマッピング] ペインで次を行います。
[Block: Input] で
[select task]
をクリックし、[Periodic: Task]
を選択します。[Block: Function 1] で、
[Periodic: Task1]
を選択します。[Block: Function 2] で、
[Periodic: Task2]
を選択します。[Block: Output] で、
[Periodic: Task]
を選択します。
これは、作成したタスクに分割をマッピングします。Input と Output モデル ブロックは 1 つのタスク上にあります。各機能コンポーネントは個々のタスクに割り当てられます。
[同時実行] ダイアログ ボックスを閉じます。
これらのコンフィギュレーション パラメーターをすべての参照モデルに適用します。詳細については、コンフィギュレーションの複数のモデル間での共有を参照してください。
モデルを更新し、個別のモデル ブロックにマッピングされたタスクを確認します。
メモ
z-1 バッジで示される遅延が異なるタスク間で発生していることに注目してください。これらの遅延が発生すると、Simulink で異なるモデル出力が生じる可能性があります。並列化されたモデルのシミュレーション時に、モデルで期待した出力が得られることを確認してください。