Simulink® 環境内では、デザインの入力と出力は Inport ブロックおよび Outport ブロックを使用して定義されます。ただし、ソフトウェア アルゴリズムからハードウェアの RTL インプリメンテーションに移動する際に、特定の入力/出力 (I/O) プロトコルを使用して、これらの入力および出力ポートをデザイン インターフェイスのポートにマップする必要があり、実際には通常遅延が発生します。デザインの開発の一部として、デザインがその他のデザインやシステム内の IP とどのように通信するかを指定します。これには、デザインのインターフェイスを指定し、数個の標準 I/O プロトコルから選択します。
Model Composer では、インターフェイス仕様 (Interface Spec) ブロックを使用して、この I/O プロトコルを定義する必要があります。
インターフェイス合成は、デザイン内の最上位サブシステム モジュールでのみサポートされ、Model Composer で C++ コードが生成されます。次の図では、Edge Detection モジュールが最上位サブシステム モジュールで、Interface Spec ブロックをこのモジュール内にインスタンシエートする必要があります。
Interface Spec ブロックでは、デザインにインスタンシエートするインターフェイスを制御できます。Interface Spec ブロックは出力のコード生成にのみ影響し、デザインの Simulink シミュレーションには影響しません。Interface Spec ブロックをサブシステム モジュールに追加しない場合、Model Composer でデフォルト インターフェイスが割り当てられますが、ターゲット プラットフォームまたはデバイスには適切でないことがあります。このため、Interface Spec ブロックを使用して、サブシステム モジュールの要件を定義することをお勧めします。制御信号を指定するデフォルトの関数レベルのプロトコルは Handshake で、関数の戻り値のプロトコルは AXI4-Lite Slave です。デフォルトの I/O プロトコルは、スカラー ポートの場合は AXI4-Lite Slave、スカラー以外のポートの場合は AXI4-Stream です。
Interface Spec ブロックでは、インターフェイス合成で関数定義からどのように RTL ポートを作成するかを指定します。RTL インプリメンテーションのポートは、次のものから導出されます。
- モジュールの制御信号を定義する関数レベルのプロトコル。
- 関数入力および出力引数、および戻り値。
- 関数によりアクセスされ、スコープ外部で定義されるグローバル変数。注記: グローバル変数がアクセスされても、すべての読み出しおよび書き込みがサブシステムのローカルである場合は、リソースがデザイン内に作成されるので、ポートを定義する必要はありません。
- Function Protocol: ブロック レベルのインターフェイス プロトコルで、IP にデータ処理を開始するタイミングを指示する信号ポートをサブシステムに追加します。この情報は、IP が新しいデータを受信するのか、演算を終了したのか、アイドル状態なのかを知らせる目的でも使用されます。
- Input Ports: サブシステム内の入力ポートが検出され、これらのポートのインターフェイス プロトコルを指定できます。
-
Output Ports: サブシステム内の出力ポートが検出され、これらのポートのインターフェイス プロトコルを指定できます。重要: Interface Spec ブロックでは、現在のところ、サブシステム モジュールに入力ポート 8 つ、出力ポート 8 つまで含めることができます。
Interface Spec ブロックが表示され、次の関数または I/O ポート プロトコルの機能またはパラメーターを設定できるようになります。
属性 | 説明 |
---|---|
Mode | サブシステム モジュールに制御信号を追加するためのブロック レベルのプロトコルを指定します。サポートされるブロック レベルのプロトコルは、次のとおりです。
|
Bundle | AXI4-Lite Slave モードの場合にのみ有効になります。複数のポートを同じインターフェイスにまとめることを示します。<name> で指定します (スペースおよび特殊文字は使用不可)。 |
属性 | 説明 |
---|---|
Name | ポート名が表示されます。ここからは変更できません。 |
Mode | ポートレベル I/O プロトコルを指定します。サポートされるポート レベルのプロトコルは、次のとおりです。
|
Bundle |
色成分が複数の [AXI4-Stream (video)] インターフェイスを使用する場合に設定できます。この場合、色成分ごとに 1 つのポートがあり、ポートに同じバンドル名 (<name>) を指定して、同じ [AXI4-Stream (video)] インターフェイスにまとめられるようにします。 AXI4-Lite Slave モードの場合も設定できます。同じバンドル名 (<name>) の付いたインターフェイス ポートがすべて同じ AXI4-Lite Slave インターフェイスにまとめられます。 |
Offset | AXI4-Lite Slave モードの場合にのみ有効になります。AXI4-Lite Slave アドレス マップのポートに関連するアドレス オフセットを指定します。オフセットは負以外の整数で指定します。デフォルト値は 0 です。 |
Video Format | [AXI4-Stream (video)] モードの場合にのみ有効になります。このパラメーターでは、ビデオ ストリームのカラー フォーマットを指定します。有効なフォーマットは、次のとおりです。
|
Video Component | [AXI4-Stream (video)] モードの場合にのみ有効になります。複数の色成分を使用するビデオ フォーマットの色成分を指定します。有効な値は、次のとおりです。
|
ポート レベルのインターフェイス プロトコルを選択する場合は、次に注意してください。
- スカラー ポートは、[Default]、[AXI4-Lite Slave]、[Constant]、[Valid Port]、[No protocol] のいずれかのプロトコルを使用してインプリメントできます。
- 大型配列または行列のポートでは、AXI4-Stream、FIFO、または AXI4-Stream (ビデオ) などのストリーミング プロトコルを使用する必要があります。
- ビデオ信号は、AXI4-Stream (ビデオ) インターフェイスを使用して転送できます。この場合は、ビデオ フォーマットを YUV 4:2:2、YUV 4:4:4、RGB、または Mono に指定する必要もあります。色成分が複数のビデオ フォーマットの場合は、複数のポートを同じ信号バンドルに割り当て、色成分を送信するポートを指定する必要があります。ビデオ信号を構成するポートすべては、1 つの AXI4-Stream インターフェイス (開始フレームと行末の側帯波信号を含む) でインプリメントされます。詳細は、『AXI4-Stream Video IP およびシステム デザイン ガイド』 (UG934) を参照してください。