インターフェイス仕様の定義 - 2021.2 日本語

Vitis Model Composer ユーザー ガイド (UG1483)

Document ID
UG1483
Release Date
2021-10-22
Version
2021.2 日本語

Simulink® 環境内では、デザインの入力と出力は Inport ブロックおよび Outport ブロックを使用して定義されます。ただし、ソフトウェア アルゴリズムからハードウェアの RTL インプリメンテーションに移動する際に、特定の入力/出力 (I/O) プロトコルを使用して、これらの入力および出力ポートをデザイン インターフェイスのポートにマップする必要があり、実際には通常遅延が発生します。デザインの開発の一部として、デザインがその他のデザインやシステム内の IP とどのように通信するかを指定します。これには、デザインのインターフェイスを指定し、数個の標準 I/O プロトコルから選択します。

Model Composer では、インターフェイス仕様 (Interface Spec) ブロックを使用して、この I/O プロトコルを定義する必要があります。

インターフェイス合成は、デザイン内の最上位サブシステム モジュールでのみサポートされ、Model Composer で C++ コードが生成されます。次の図では、Edge Detection モジュールが最上位サブシステム モジュールで、Interface Spec ブロックをこのモジュール内にインスタンシエートする必要があります。

ヒント: その他のサブシステム モジュールや入れ子のサブシステム モジュールにインスタンシエートされた Interface Spec ブロックは無視されます。
図 1. 最上位サブシステム モジュール

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 インプリメンテーションのポートは、次のものから導出されます。

  • モジュールの制御信号を定義する関数レベルのプロトコル。
  • 関数入力および出力引数、および戻り値。
  • 関数によりアクセスされ、スコープ外部で定義されるグローバル変数。
    注記: グローバル変数がアクセスされても、すべての読み出しおよび書き込みがサブシステムのローカルである場合は、リソースがデザイン内に作成されるので、ポートを定義する必要はありません。
図 2. Interface Spec ブロック
Interface Spec ブロックには、次の 3 つのタブが含まれます。
  • Function Protocol: ブロック レベルのインターフェイス プロトコルで、IP にデータ処理を開始するタイミングを指示する信号ポートをサブシステムに追加します。この情報は、IP が新しいデータを受信するのか、演算を終了したのか、アイドル状態なのかを知らせる目的でも使用されます。
  • Input Ports: サブシステム内の入力ポートが検出され、これらのポートのインターフェイス プロトコルを指定できます。
  • Output Ports: サブシステム内の出力ポートが検出され、これらのポートのインターフェイス プロトコルを指定できます。
    重要: Interface Spec ブロックでは、現在のところ、サブシステム モジュールに入力ポート 8 つ、出力ポート 8 つまで含めることができます。

Interface Spec ブロックが表示され、次の関数または I/O ポート プロトコルの機能またはパラメーターを設定できるようになります。

表 1. [Function Protocol] タブ
属性 説明
Mode サブシステム モジュールに制御信号を追加するためのブロック レベルのプロトコルを指定します。サポートされるブロック レベルのプロトコルは、次のとおりです。
  • AXI4-Lite Slave: 戻り値のポートを AXI4-Lite Slave インタースレーブフェイスとしてインプリメントし、Handshake プロトコルで定義されたブロック レベルの制御ポートを追加します。これはデフォルトの関数プロトコルです。
  • Handshake: 入力処理の start、デザインの idledone ステート、新しい入力データの ready など、関数のブロック レベルの制御ポートを定義します。
  • No block-level I/O protocol: サブシステムに制御ポートは追加されません。
Bundle AXI4-Lite Slave モードの場合にのみ有効になります。複数のポートを同じインターフェイスにまとめることを示します。<name> で指定します (スペースおよび特殊文字は使用不可)。
表 2. [Input Ports]/[Output Ports] タブ
属性 説明
Name ポート名が表示されます。ここからは変更できません。
Mode ポートレベル I/O プロトコルを指定します。サポートされるポート レベルのプロトコルは、次のとおりです。
  • Default: スカラー ポートの場合は AXI4-Lite Slave インターフェイス、スカラー以外のポートの場合は AXI4-Stream インターフェイスが使用されます。
  • AXI4-Stream: 高速ストリーミング データ用にポートが AXI4-Stream インターフェイスとしてインプリメントされます。
  • AXI4-Stream (video): ポートが AXI4-Stream インターフェイスとしてインプリメントされます。Video Format および Video Component 属性も指定できます。
  • AXI4-Lite Slave: ポートが AXI4-Lite Slave インターフェイスの一部としてインプリメントされます。同じ名前の Bundle 名の入力ポートまたは出力ポートが AXI4-Lite Slave インタースレーブフェイスにまとめられます。
  • FIFO: ポートが標準 FIFO インターフェイスでインプリメントされ、アクティブ Low FIFO の empty および full 制御信号が関連付けられたデータ入力および出力がまとめられます。
    注記: [FIFO] インターフェイスは、メモリ エレメントへのアクセスが常に順次で、ランダム アクセスが不要な場合に最も効率的です。連続していないアドレス位置から読み出す場合は、[Block RAM] インターフェイスを使用します。
  • Constant: 入力ポートに適用されるデータは関数演算中は安定したままで変化しませんが、最適化で削除可能な定数値ではありません。これを選択すると、内部最適化で不要なレジスタを削除できるようになります。
  • Valid Port: データ ポートを、データが読み出しまたは書き込みに対して有効になったことを示す valid ポートと共にインプリメントします。
  • No protocol: プロトコルなし。入力データ信号にも出力データ信号にも、データの読み出しまたは書き込みをいつ実行するかを示す制御ポートは含まれません。
  • Block RAM: 配列引数を標準 RAM インターフェイスとしてインプリメントします。Vivado IP インテグレーターで生成された IP を使用する場合、メモリ インターフェイスはシングル ポートとして表示されます。
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)] モードの場合にのみ有効になります。このパラメーターでは、ビデオ ストリームのカラー フォーマットを指定します。有効なフォーマットは、次のとおりです。
  • YUV 4:2:2: 削減されたカラー コンテントの明るさ (輝度) および色 (クロミナンス) に基づくビデオ フォーマット。
  • YUV 4:4:4: フル カラー コンテントの明るさ (輝度) および色 (クロミナンス) に基づくビデオ フォーマット。
  • RGB: 赤、青、緑の色信号に基づくビデオ フォーマット。
  • Mono: ビデオのオーディオ フォーマット。
Video Component [AXI4-Stream (video)] モードの場合にのみ有効になります。複数の色成分を使用するビデオ フォーマットの色成分を指定します。有効な値は、次のとおりです。
  • Y,U, V: YUV ビデオ フォーマットの成分の 1 つを指定します。
  • R, G, B: RGB ビデオ フォーマットの成分の 1 つを指定します。

ポート レベルのインターフェイス プロトコルを選択する場合は、次に注意してください。

  • スカラー ポートは、[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) を参照してください。