Main Content

このページの翻訳は最新ではありません。ここをクリックして、英語の最新版を参照してください。

AXI4-Stream インターフェイス生成向けのモデル設計

HDL Coder™ ソフトウェアでは、簡易ストリーミング プロトコルをモデルに実装できます。IP コアに AXI4-Stream インターフェイスが生成されます。

簡易ストリーミング プロトコル

テスト対象設計 (DUT) 端子を AXI4-Stream インターフェイスにマッピングするには、簡易 AXI4-Stream プロトコルを使用します。実際の AXI4-Stream プロトコルをモデル化する必要はありません。代わりに、簡易プロトコルを使用できます。IP Core Generation ワークフローを実行すると、生成された HDL コードに、簡易プロトコルと実際の AXI4-Stream プロトコル間で変換されるラッパー ロジックが含まれます。簡易プロトコルでは、必要なプロトコル信号の数が少なく、Valid 信号と Ready 信号間のハンドシェイキング メカニズムが容易になり、任意の長さのバーストがサポートされます。

書き込みと読み取りのトランザクションに簡易 AXI4-Stream プロトコルを使用します。AXI4-Stream インターフェイスを IP コアに生成する場合、次の信号を DUT インターフェイスに実装します。

  • データ

  • 有効

オプションで、スカラー DUT 端子を AXI4-Stream インターフェイスにマッピングする際に、次の信号をモデル化できます。

  • Ready

  • 次のような、その他のプロトコルの信号

    • TSRTB

    • TKEEP

    • TLAST

    • TID

    • TDEST

    • TUSER

データ信号および Valid 信号

データ信号が有効である場合、Valid 信号がアサートされます。このブロック線図は、簡易ストリーミング プロトコルに従ったデータ信号および Valid 信号の関係を示しています。IP コアの生成ワークフローを実行すると、HDL Coder によってストリーミング インターフェイス モジュールが HDL IP コアで追加され、それにより簡易プロトコルが完全な AXI4-Stream プロトコルに変換されます。このブロック線図では、クロック信号を clk で表しています。

サンプルベースのモデル化

データ信号を DUT の境界でサンプルのストリームとしてシミュレートする場合、サンプルベース モードでモデル化します。サンプルベース モードでは、データ信号をスカラーまたはベクトルのいずれかとしてモデル化できます。データ信号をベクトルとしてモデル化する場合は、[Sample Packing Dimension] を [すべて] に設定します。生成される HDL コードで、ベクトル要素が 1 つにパックされ、ベクトル全体が単一のサンプルとして扱われます。データをパックする方法はPacking Modeを使用して指定できます。Sample Packing Dimensionを参照してください。

Simulink でのデータ信号と Valid 信号のモデル化

  1. Enabled Subsystem を使用して、データ信号を処理するアルゴリズムを含めます。

  2. Valid 信号を使用して、Enabled Subsystem のイネーブル端子を制御します。

たとえば、Valid 信号をイネーブル端子に直接接続できます。

Enable Subsystem 向けにイネーブル信号を生成するコントローラーを DUT で使用することもできます。

Ready 信号 (オプション)

下流のコンポーネントでデータを受信する準備ができていない場合、バック プレッシャーを使用して上流のコンポーネントに通知されます。DUT の AXI4-Stream インターフェイスには、オプションで Ready 信号を含めることができます。Ready 信号は次の目的で使用します。

  • AXI4-Stream スレーブ インターフェイスでバック プレッシャーを適用する。たとえば、下流のコンポーネントでデータを受信する準備ができていない場合に Ready 信号を破棄します。

  • AXI4-Stream マスター インターフェイスでバック プレッシャーに応答する。たとえば、下流のコンポーネントの Ready 信号が Low の場合にデータの送信を停止します。

単一のストリーミング チャネルを使用している場合、HDL Coder で Ready 信号とバック プレッシャーを処理するロジックが既定で生成されます。バック プレッシャー ロジックは、Ready 信号を DUT Enable 信号に結びつけます。入力マスター Ready 信号が Low の場合、DUT が無効になり、出力スレーブ Ready 信号は Low で駆動されます。単一のストリーミング チャネルを使用する場合は、HDL Coder でバック プレッシャー ロジックと Ready 信号が生成されるため、Ready 信号はオプションとなり、この信号を DUT 端子でモデル化する必要はありません。

Block diagram view illustrating the auto-generated Ready signal and back pressure logic.

複数のストリーミング チャネルを使用している場合、HDL Coder で Ready 信号は生成されますが、バック プレッシャー ロジックは生成されません。複数のストリーミング チャネルをもつ DUT では次のようになります。

  • 下流のコンポーネントからの Ready 信号はマスター チャネルで無視されます。

  • スレーブ チャネルの Ready 信号は High になり、上流のコンポーネントでデータの送信が継続されます。

バック プレッシャー ロジックがない場合、データが破棄される可能性があります。データが失われないように、スレーブ インターフェイスでバック プレッシャーを適用するか、マスター インターフェイスからバック プレッシャーに応答するには、設計で以下を行います。

  • 追加の各ストリーム インターフェイスについて Ready 信号をモデル化します。

  • モデル化した Ready 信号を追加のインターフェイスの DUT 端子にマッピングします。

Ready 信号をモデル化していない場合、[ターゲット インターフェイスを設定] タスクで、Ready 端子を必要とするインターフェイスの名前を示す警告が表示されます。設計でバック プレッシャーの適用や応答が必要ない場合は、この警告は無視してください。

AXI4-Stream インターフェイスで Ready 信号をモデル化する場合、マスター インターフェイスは Ready 信号のデアサートの 1 クロック サイクル後に Data 信号および Valid 信号を無視します。Ready 信号がアサートされたら、Data 信号および Valid 信号の送信を開始できます。Ready 信号がデアサートされた後、Data 信号および Valid 信号をもう 1 つ送信できます。

Ready 信号をモデル化しない場合、HDL Coder は、信号と、関連するバック プレッシャーのロジックを生成します。次の図は、簡易ストリーミング プロトコルに従った Data 信号、Valid 信号、Ready 信号の間の関係を示しています。IP コアの生成ワークフローを実行すると、HDL Coder によってストリーミング インターフェイス モジュールが HDL IP コアで追加され、それにより簡易プロトコルが完全な AXI4-Stream プロトコルに変換されます。このブロック線図では、クロック信号を clk で表しています。

たとえば、DUT において先入れ先出し法 (FIFO) でデータのフレームを格納している場合、バック プレッシャーを上流のコンポーネントに適用するには、FIFO の完全な信号に基づいて Ready 信号をモデル化します。

メモ

遅延の均衡化を有効にしている場合、Ready 信号に 1 つ以上の遅延が挿入されます。Ready 信号のパスについて遅延の均衡化を無効にします。

その他のプロトコル信号 (オプション)

オプションで、その他の AXI4-Stream プロトコル信号をモデル化できます。必要なデータ信号および Valid 信号のみをモデル化する場合、TREADY および TLAST と AXI4-Stream プロトコル信号が生成されます。

TLAST 信号をモデル化しない場合、データ パケット サイズを指定できるよう、プログラミング可能なレジスタが IP コアに生成されます。プログラミング可能なパケット サイズのレジスタの詳細は、IP コア生成レポートにあります。

フレームベースのモデル化

データ信号を DUT の境界でフレームとしてシミュレートする場合、フレームベース モードでモデル化します。フレームベース モードでは、データ信号をベクトルとしてモデル化し、[Sample Packing Dimension] を [なし] に設定します。Sample Packing Dimensionを参照してください。

フレームベース モードは、ハードウェアとソフトウェアの間のシステムの相互作用をモデル化してシミュレートし、ソフトウェア ドライバー向けのコードを生成する場合に便利です。

データ信号および Valid 信号のモデリング要件

ベクトル端子を AXI4-Stream インターフェイスにマッピングする際の制限は次のとおりです。

  • 各 DUT 入力のベクトル データ端子は Serializer1D ブロックに接続する。

    Serializer1D ブロックには ValidOut 端子があり、[Ratio] にはベクトルのビット幅が設定されていなければなりません。

  • 各 DUT 出力のベクトル データ端子は Deserializer1D ブロックに接続する。

    Deserializer1D ブロックには ValidIn 端子があり、[Ratio] にはベクトルのビット幅が設定されていなければなりません。

  • AXI4-Lite インターフェイスにマッピングされている各スカラー端子を Rate Transition ブロックに接続する。

    Rate Transition ブロックの比率は、Serializer1D ブロックおよび Deserializer1D ブロックの比率と一致していなければなりません。

  • 外部端子にマッピングされている各スカラー端子のサンプル時間は、ストリーミング アルゴリズム サブシステムのサンプル時間と同じでなければなりません。

ストリーミング アルゴリズム サブシステムは、スカラー端子の AXI4-Stream インターフェイスへのマッピングに使用するパターンと同じデータ信号および Valid 信号のモデル化パターンに従います。Simulink でのデータ信号と Valid 信号のモデル化を参照してください。

ベクトル端子を AXI4-Stream インターフェイスにマッピングするには、hdlcoder_sfir_fixed_vector.slx モデルを開きます。hdlcoder_sfir_fixed_vector.slx モデルでは、symmetric_fir ブロックはストリーミング アルゴリズム サブシステムです。

複数のストリーミング チャネルをもつ設計のモデル化

IP Core Generation ワークフローを実行する場合、複数のスカラー DUT 端子を AXI4-Stream マスター チャネルと AXI4-Stream スレーブ チャネルにマッピングできます。ベクトル端子を使用する場合、この端子は、最大 1 つの AXI4-Stream マスター チャネルと 1 つの AXI4-Stream スレーブ チャネルにマッピングできます。

メモ

複数のストリーミング チャネルを使用する場合、HDL Coder は、Ready 信号を生成しますが、バック プレッシャー ロジックは生成しません。設計でバック プレッシャーを処理する場合、設計内の Ready 信号をモデル化します。

詳細については、複数の AXI4-Stream および AXI4 Master インターフェイスを使用した HDL IP コアの生成を参照してください。

複数のサンプル レートをもつ設計のモデル化

IP コアの生成ワークフローの実行時、複数のサンプル レートをもつ設計には HDL Coder ソフトウェアを使用します。インターフェイス端子を AXI4-Stream マスターまたは AXI4-Stream スレーブ インターフェイスにマッピングする場合に複数のサンプル レートを使用するには、それらの AXI4 インターフェイスにマッピングされた DUT 端子が設計の最速のレートか設計のレートよりも遅いレートで実行されるようにマッピングします。

AXI4-Stream マスターおよびスレーブ インターフェイスにマッピングされた DUT 端子が HDL Coder でモデル設計のレートよりも遅いレートで実行されるようにするには、次のようにします。

  • AXI4-Stream マスター チャネルの Valid 信号を N クロック サイクルごとの最初のサイクルで High に設定します。たとえば、設計のレートが遅いレートの DUT 端子の 8 倍であれば、8 クロック サイクルごとの最初のクロック サイクルで Valid 信号が High になります。

  • AXI4-Stream スレーブ インターフェイスでバック プレッシャーをアサートして、入力データが N クロック サイクルごとに 1 データ フレームのレートでストリーミングされるようにします。たとえば、設計のレートが遅いレートの DUT 端子の 8 倍であれば、クロック サイクル 1 で最初のフレーム、クロック サイクル 9 で 2 番目のフレームのようにストリーミングされます。

AXI4-Stream インターフェイスの DUT 端子を設計の最速のレートにマッピングすると、Valid 信号が High になり、AXI4-Stream スレーブ インターフェイスのバック プレッシャーは常にない状態になります。

複数のサンプル レートをもつモデルを設計する際は、DUT 端子にマップングされたすべての AXI4-Stream マスター インターフェイスで実行レートが同じでなければなりません。DUT 端子にマップングされたすべての AXI4-Stream スレーブ インターフェイスで実行レートが同じでなければなりません。

詳細については、マルチレートの IP コア生成を参照してください。

AXI4-Stream ベクトル データのインターフェイス オプション

ベクトル データをもつモデルで IP コアの生成ワークフローを実行する際、ベクトル データをサンプルまたはフレームとして扱う方法を [Sample Packing Dimension] を使用して指定できます。ベクトル データをサンプルとして扱う場合、ベクトル要素を 1 つにパックする方法を [Packing mode] オプションを使用して指定できます。

Sample Packing Dimension

ベクトル データをサンプルまたはフレームとして扱うかどうかを指定します。

  • なしこれは既定値です。[なし] を指定すると、ベクトルがフレームとして扱われ、ベクトル要素が 1 つずつストリーミングされます。たとえば、入力が 6 行 1 列のベクトルの場合、最初のクロック サイクルで最初のベクトル要素、2 番目のクロック サイクルで 2 番目のベクトル要素のようにストリーミングされます。このモードを使用するには、モデルに入力用の Serializer ブロックと出力用の Deserializer ブロックが含まれていなければなりません。[Sample Packing Dimension] が [なし] に設定されている場合、[Packing mode] は使用できません。

  • すべて。[すべて] を指定すると、ベクトルが 1 つにパックされ、単一のクロック サイクルでストリーミングされます。たとえば、入力が 6 行 1 列のベクトルの場合、すべてのベクトル要素が 1 つにパックされ、単一のクロック サイクルでストリーミングされます。この場合、ベクトル要素をパックする方法を [Packing mode] オプションを使用して指定できます。

Packing Mode

[Sample Packing Dimension] が [すべて] に設定されている場合に、ベクトル要素を 1 つにパックする方法を指定します。パック モードは、AXI4-Stream スレーブおよびマスター チャネルに適用されます。マスター チャネルでは、[Bit Aligned] または [Power of 2 Aligned] の形式を使用してデータがパックされます。スレーブ チャネルでは、マスター チャネルのパック形式に基づいてデータがアンパックされます。

  • Bit Aligned。このモードでは、ベクトル要素が直接隣り合わせてパックされます。パックされたビット幅が AXI4-Stream チャネルの幅に満たない場合、パックされたデータがチャネルの幅に合わせてゼロでパディングされます。

    以下に例を示します。

    • AXI4-Stream チャネルの幅は 256 ビットです。

    • ベクトルの長さは 30 ビットで、ベクトルのフレーム数は 4 です。合計データ幅は 120 ビットです。

    パック モードが [Bit Aligned] に設定されている場合、AXI4-Stream データは次の図のようにパックされます。

    zero padded bit aligned vector data

  • Power of 2 Aligned。このモードでは、最初にベクトル要素が最も近い 2 のべき乗の境界までゼロでパディングされます。その後、パディングされた要素が 1 つにパックされます。パックされたベクトルのビット幅が AXI4-Stream チャネルの幅に満たない場合、パックされたデータがチャネルの幅に合わせてゼロでパディングされます。

    以下に例を示します。

    • AXI4-Stream チャネルの幅は 256 ビットです。

    • ベクトルの長さは 30 ビットで、ベクトルのフレーム数は 4 です。合計データ幅は 120 ビットです。

    パック モードが [Power of 2 Aligned] に設定されている場合、AXI4-Stream データは次の図のようにパックされます。

    power of 2 packed vector data

    ビット幅 30 の各ベクトル要素が、最も近い 2 のべき乗の境界である 32 までビット幅 2 のゼロでパディングされます。

制限

スカラーまたはベクトル DUT 端子を AXI4-Stream インターフェイスにマッピングするには、次の制限に従います。

  • ターゲット プラットフォームは Xilinx® Zynq® -7000 または Intel® Quartus® Prime でなければなりません。

  • 合成ツールは、Xilinx Vivado® または Intel Quartus Prime でなければなりません。

  • [プロセッサ/FPGA 同期] は [フリー ラン] でなければなりません。

フレームベースのモデル化を使用する場合、データおよび Valid 以外のプロトコル信号は使用できません。たとえば、Ready および TLAST はサポートされていません。

関連するトピック

関連するトピック