Main Content

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

高速データ転送を必要とする設計では、AXI4-Stream インターフェイスを使用します。HDL Coder™ を使用して、簡易ストリーミング プロトコルをモデルに実装できます。IP コアに AXI4-Stream インターフェイスが生成されます。

アルゴリズムの動作に基づいて、次の 3 つのスタイルのモデル化から選択します。

  • サンプルベースのモデル化 — アルゴリズムがサンプルのストリームで動作する場合は、これらのガイドラインを使用します。

  • フレームベースのモデル化 — アルゴリズムがデータの完全なフレームで動作する場合は、これらのガイドラインを使用します。テスト対象設計 (DUT) の境界での Data 信号は、ベクトルまたは行列にすることができます。Valid 信号と Ready 信号をモデル化する場合は、このモードを使用しないでください。

  • レガシ フレームベースのモデル化 — アルゴリズムがサンプルのストリームで動作し、Data 信号をテスト対象設計 (DUT) の境界のフレームとしてシミュレートする場合は、これらのガイドラインを使用します。

    メモ

    "レガシ フレームベースのモデル化" スタイルは、将来のリリースでは推奨されません。Valid 信号と Ready 信号をモデル化する場合、サンプルベースのモデル化のスタイルを使用します。

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

Data 信号を DUT の境界でサンプルのストリームとしてシミュレートする場合、サンプルベース モードでモデル化します。Data 信号はスカラーまたはベクトルのいずれかとしてモデル化できます。Data 信号をベクトルとしてモデル化する場合、HDL Coder ワークフロー アドバイザーの[タスク 1.2. ターゲット インターフェイスを設定][Interface Options] で、[Sample Packing Dimension][すべて] に設定します。HDL Coder はベクトル要素をまとめて、ベクトルを 1 つのサンプルとして扱います。HDL Coder でデータをパックする方法は、Packing Modeを使用して指定できます。Sample Packing Dimensionを参照してください。

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

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

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

  • Data

  • Valid

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

  • Ready

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

    • TSRTB

    • TKEEP

    • TLAST

    • TID

    • TDEST

    • TUSER

Data 信号および Valid 信号

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

Simulink での Data 信号と Valid 信号のモデル化

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

  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 interface with Ready Signals

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

次のイメージは、簡易ストリーミング プロトコルに従った Data 信号、Valid 信号、Ready 信号の間のタイミング関係を示しています。この図では、クロックは clk です。DUT からの ReadyIn 信号のアサート後に、AXI4-Stream スレーブ モジュールから DataIn 信号および ValidIn 信号が送信されます。これは、イメージ内でデータ パケット A、B、D、および E として表されています。ReadyIn 信号を破棄すると、DataIn 信号および ValidIn 信号がモジュールから常にもう 1 つ送信されます。これは、イメージ内でデータ パケット C として表されています。ReadyIn 信号をモデル化するときは、Ready 信号のデアサート後に DUT で値をもう 1 つ受け入れられるようにしなければなりません。

Simplified streaming protocol input timing diagram

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

Simplified streaming protocol Ready signal model

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

次のイメージは、簡易ストリーミング プロトコルに従った Data 信号、Valid 信号、 Ready 信号の間のタイミング関係を示しています。この図では、クロックは clk です。ReadyOut 信号をアサートした後、AXI4-Stream マスター モジュールに DataOut 信号および ValidOut 信号を送信できます。これは、イメージ内でデータ パケット A、B、E、F、および G として表されています。ReadyOut 信号の破棄後、DataOut 信号および ValidOut 信号をオプションでもう 1 つ送信できます。これは、イメージ内でデータ パケット C として表されています。ReadyOut 信号の破棄後に送信できる追加のパケットは 1 つだけで、後続のデータ パケットは Ready 信号が再びアサートされるまで破棄されます。これは、イメージ内でデータ パケット D として表されています。

Simplified streaming protocol output

簡易ストリーミング プロトコルの Valid 信号と Ready 信号の間のオプションの 1 サイクル レイテンシにより、クラシックまたはファースト ワード フォール スルー (FWFT) FIFO を使用して、下流のコンポーネントからのバックプレッシャーを処理できます。

FWFT FIFO による下流のバックプレッシャー処理

FWFT FIFO を使用すると、ValidOut 信号を ReadyOut および空でない FIFO としてモデル化することで、データのフレームを保存したり、下流コンポーネントからのバック プレッシャーを処理したりできます。

FWFT FIFO を使用する DUT の場合、上流コンポーネントと下流コンポーネントの間の ReadyOut 信号のレイテンシはゼロです。次のイメージは、DataOut 信号、ValidOut 信号、ReadyOut 信号の間のタイミング関係を示しています。クロック信号は clk です。

Timing diagram showing relationship between Data, Valid, and Ready signals for FWFT FIFO

従来の FIFO による下流のバックプレッシャー処理

DUT が従来の FIFO を使用してデータのフレームを格納する場合、ValidOut 信号を ReadyOut および空でない FIFO としてモデル化します。

次のイメージは、DataOut 信号、ValidOut 信号、ReadyOut 信号の間のタイミング関係を示しています。クロック信号は clk です。

Timing diagram showing relationship between Data, Valid, and Ready signals for Classic FIFO

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

メモ

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

TLAST 信号 (オプション).  DUT の AXI4-Stream インターフェイスでは、データのフレームの終わりを示すために使用される TLAST 信号をオプションでモデル化できます。この信号をモデル化しない場合、信号は HDL Coder によって生成されます。AXI4-Stream スレーブ インターフェイスでは、入力 TLAST 信号は無視されます。AXI4-Stream マスター インターフェイスでは、有効なサンプルの数が既定のフレーム長の値までカウントすると、自動生成された TLAST 信号がアサートされます。既定のフレーム長の値は、ターゲット インターフェイス テーブルの AXI4-Stream インターフェイス オプションを使用して設定できます。AXI4-Stream データのインターフェイス オプションを参照してください。

IP コアに AXI4 スレーブ インターフェイスがある場合、既定のフレーム長の値は、IP コアのプログラム可能なレジスタに保存されます。既定のフレーム長は実行時に変更できます。既定のフレーム長のレジスタがフレームの途中で変更された場合、TLAST カウンターの状態はゼロにリセットされ、TLAST 信号は早期にアサートされます。IP コアの生成レポートでプログラム可能な TLAST レジスタのアドレスを確認できます。

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

データのフレームで動作する DUT を設計し、データ端子をストリーミング インターフェイスにマッピングできます。フレームの端子 (ベクトル、行列、および複素数行列) を AXI4-Stream インターフェイスにマッピングするには、フレームからサンプルへの最適化を使用します。詳細については、Model Design for Frame-Based IP Core Generationを参照してください。

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

サンプルのストリームで動作するアルゴリズムを設計し、Data 信号をベクトルとしてモデル化します。このモードで動作するには、HDL Coder ワークフロー アドバイザーのタスク [1.2. ターゲット インターフェイスを設定][Interface Options] で、[Sample Packing Dimension][なし] に設定します。

メモ

このスタイルのモデル化は将来のリリースでは推奨されません。

AXI4-Stream インターフェイスへのベクトル端子のマッピング

この例では、ベクトル データ型を AXI4-Stream インターフェイスにマッピングして IP コアを生成する方法について説明します。この例では、レガシ フレームベースのモデル化を使用します。このモデル化では、サンプルのストリームで動作するアルゴリズムを設計し、データ端子をストリーミング インターフェイスにマッピングします。

モデルを開く

モデルを開くために、以下を入力します。

open_system('hdlcoder_sfir_fixed_vector');

このモデルは、DUT という名前の最上位サブシステム ブロックで構成されています。このサブシステム ブロックは 1 つのベクトル入力と 3 つのスカラー入力を受け入れ、ストリーミング ベクトル出力を返します。

ベクトル端子を AXI4-Stream インターフェイスにマッピングするには、以下のようにします。

  • 各 DUT 入力のベクトル データ端子を Serializer1D ブロックに接続します。Serializer ブロックには [ValidOut] 端子が存在していなければならず、[Ratio] パラメーターはベクトルのビット幅に設定されていなければなりません。

  • 各 DUT 出力のベクトル データ端子を Deserializer1D ブロックに接続します。Deserializer ブロックには [ValidOut] 端子が存在していなければならず、ブロックの [Ratio] パラメーターはベクトルのビット幅に設定されていなければなりません。

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

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

Simulink インターフェイスを使用した HDL IP コアの生成

Simulink インターフェイスを使用して IP コアを生成するには、コンフィギュレーション パラメーターを使用してモデルを準備し、IP コア エディターを使用して設計を構成し、Simulink ツールストリップを使用して IP コアを生成します。

IP コア生成用のモデルの準備

  1. アプリ ギャラリーで [HDL Coder] をクリックします。[HDL コード] タブの [出力] セクションで、ドロップダウン ボタンを [IP コア] に設定します。あるいは、[HDL コード] タブで [設定] をクリックし、[コンフィギュレーション パラメーター] ダイアログ ボックスを開きます。[HDL コード生成]、[ターゲット] タブで [ワークフロー] パラメーターを IP Core Generation に設定します。

  2. [コンフィギュレーション パラメーター] ダイアログ ボックスで [ターゲット プラットフォーム]ZedBoard に、[合成ツール]Xilinx Vivado に設定します。必要に応じて、[プロジェクト フォルダー] パラメーターを使用して、生成されるフォルダーおよびファイルの最上位フォルダーを指定できます。[プロジェクト フォルダー] が空の場合、HDL Coder では、生成されたファイルは現在のディレクトリに保存されます。

  3. [コンフィギュレーション パラメーター] ダイアログ ボックスで [リファレンス設計]Default system with AXI4-Stream interface に設定します。

  4. [適用] をクリックして、更新した設定を保存します。

設計の構成

DUT 端子を IP コア ターゲット ハードウェアにマッピングし、DUT レベルの IP コア オプションを設定することで、ターゲット ハードウェアにマッピングするように設計を構成します。この例では、入力端子 [x_in] が AXI4-Stream スレーブ インターフェイスにマッピングされ、入力端子 [h_in1][h_in2][h_in3]、および [h_in4] が AXI4-Lite インターフェイスにマッピングされています。そのため、HDL Coder はそれらに対して AXI インターフェイスでアクセス可能なレジスタを生成します。

  1. Simulink で、[HDL コード] タブの [ターゲット インターフェイス] をクリックして IP コア エディターを開きます。

  2. [Interface Mapping] タブを選択して、各 DUT 端子を IP コアのターゲット インターフェイスのいずれかにマッピングします。生成された設計は、展開するとハードウェア システムの残りの部分と通信できます。マッピング テーブルが表示されない場合は、IP コア設定を再読み込みするボタン をクリックし、モデルをコンパイルして DUT 端子およびそのデータ型を再び取り込みます。

  3. IP コア設定を検証するボタン をクリックして、設定を検証します。

IP コア エディターで、IP コア設定を調整し、ターゲット ハードウェアのインターフェイス マッピングを構成できます。

  • [一般] タブを使用して、IP コアの名前や IP コア レポートを生成するかどうかなど、最上位の IP コア設定を構成する。

  • [クロック設定] タブを使用して IP コアのクロック関連の設定を構成する。

IP コアの生成

設計の IP コア設定およびマッピングを構成した後には、IP コアを生成できます。Simulink ツールストリップの [HDL コード] タブで [IP コアを生成] をクリックします。カスタム IP コアを生成すると、IP コア ファイルが現在のディレクトリ内の ipcore フォルダーに配置されます。ipcore フォルダーを他の生成されるすべてのファイルと共に保存する最上位プロジェクト フォルダーを指定するには、[コンフィギュレーション パラメーター] ダイアログ ボックスで [HDL コード生成]、[ターゲット] タブ内の [プロジェクト フォルダー] パラメーターを使用します。[プロジェクト フォルダー] パラメーターが空の場合、HDL Coder では、生成されたファイルは現在のディレクトリに保存されます。

IP コアを生成すると、コード生成レポートも生成されます。[コード生成レポート] ウィンドウの左側のペインで、[IP コアの生成レポート] をクリックします。このレポートには、生成されたカスタム IP コアの動作と内容が記載されています。

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

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

メモ

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

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

フレームベース モードを使用して DUT をモデル化すると、複数のフレーム DUT 端子を AXI4-Stream マスター チャネルと AXI4-Stream スレーブ チャネルにマッピングできます。フレームベース モードを使用すると、HDL Coder はすべてのストリーミング端子に対して Ready 信号と Valid 信号を生成します。

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

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 スレーブ インターフェイスのバック プレッシャーはない状態になります。

複数のサンプル レートをもつモデルを設計する際は、AXI4-Stream インターフェイスごとに、AXI4-Stream インターフェイスの Data 信号や Valid 信号などの信号とすべてのオプションの信号を同じレートでマッピングする必要があります。

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

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

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

信号が TLAST にマッピングされていない AXI4-Stream インターフェイスをもつモデルで [IP コアの生成] ワークフローを実行する際、TLAST レジスタ値を [DefaultFrameLength] オプションを使用して指定できます。

既定のフレーム長

TLAST 信号をモデル化しない場合は、AXI4-Stream マスター インターフェイスに対して既定のフレーム長 (TLAST) の値を指定します。TLAST 信号は生成された IP コアに作成され、有効なサンプルの数が既定のフレーム長カウンターの値までカウントすると、その信号がアサートされます。生成された IP コアに AXI4 スレーブ インターフェイスがある場合、既定のフレーム長は HDL Coder によってプログラム可能なレジスタとして生成されます。既定のフレーム長のレジスタがフレームの途中で変更された場合、TLAST カウンターの状態はゼロにリセットされ、TLAST 信号は早期にアサートされます。詳細については、TLAST 信号 (オプション)を参照してください。[既定の AXI4 スレーブ インターフェイスの生成] を選択しない場合、既定のフレーム長はプログラム可能なレジスタではなく定数値として生成されます。

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][すべて] に設定すると、[Packing Mode] パラメーターを [Bit Aligned] または [Power of 2 Aligned] のいずれかに指定することで、HDL Coder がベクトル要素、複素数データ、および複素数ベクトルをパックする方法を指定できます。この設定は、AXI4-Stream マスターおよびスレーブ チャネルに適用されます。

非複素数ベクトルのデータ パック

  • [Bit Aligned][Packing Mode] をこの設定に設定すると、HDL Coder はベクトル要素を直接隣り合わせてパックします。パックされたビット幅が AXI4-Stream チャネルの幅に満たない場合、パックされたデータをチャネルの幅に合わせてゼロでパディングします。

    たとえば、AXI4-Stream チャネルの幅が 256 ビットで、4 つのベクトル要素があり、ベクトル要素の長さが 30 ビットである場合、合計データ幅は 120 ビットです。パック モードが [Bit Aligned] に設定されている場合、HDL Coder は AXI4-Stream データを次の図に示すようにパックします。

    zero padded bit aligned vector data

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

    たとえば、AXI4-Stream チャネルの幅が 256 ビットで、4 つのベクトル要素があり、ベクトル要素の長さが 30 ビットである場合、合計データ幅は 120 ビットです。パック モードが [Bit Aligned] に設定されている場合、HDL Coder は AXI4-Stream データを次の図に示すようにパックします。パック モードが [Power of 2 Aligned] に設定されている場合、HDL Coder は AXI4-Stream データを次の図に示すようにパックします。

    zero padded power of two aligned data

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

複素数データのパック.  入力データが複素数の場合、HDL Coder は、実数部と虚数部を、最も近い 2 のべき乗の境界までゼロでパディングします。次に、HDL Coder はデータをまとめてパックして、チャネルの幅に合わせてデータをゼロでパディングします。たとえば、AXI4-Stream チャネルの幅が 64 ビットで、複素数データ型が ufix7 の場合、HDL Coder は次の図に示すようにストリーム データをパックします。

complex data with zero padding to the closest power of two boundary

HDL Coder は、複素数データをビット幅 1 のゼロでパディングし、実数データと虚数データのパケットをサイズ 8 に拡張します。次に、幅 48 のゼロでデータをパディングして、複素数データ フレームのサイズを AXI4-Stream チャネルの幅である 64 に拡張します。

生成されたソフトウェア インターフェイス モデルを使用して複素数データをターゲット ボードにストリーミングする場合、この例の図に示すように複素数データをパックしなければなりません。

複素数ベクトルのデータ パック.  複素数データ信号を DUT 境界上のフレームとしてモデル化するには、フレームベースのモデル化要件に従います。この場合、HDL Coder は、「複素数データのパック」のセクションで説明されているように、フレームの複素数データ要素をパックします。

または、複素数ベクトル全体をサンプルとして扱う場合は、「サンプル ベースのモデル化」のセクションのガイドラインに従ってください。HDL Coder は [Sample Packing Dimension] パラメーターを [すべて] に設定し、[Packing Mode] パラメーターを [Power of 2 Aligned] に設定します。

たとえば、AXI4-Stream チャネルの幅が 64 ビット、複素数データ型が ufix7、さらに複素数ベクトルに 3 つの要素がある場合、HDL Coder は、次の図に示すようにデータをパックします。

complex vector with zeroes padded to the closest power of two boundary

HDL Coder は、次を使用して複素数データをパディングします。

  • 実数および虚数のベクトル要素ごとにビット幅 1 のゼロを追加して、データ サイズを最も近い 2 のべき乗の境界である 8 に拡張。

  • 最後にビット幅 16 のゼロを追加して、フレーム サイズを AXI4-Stream チャネルの幅である 64 に拡張。

生成されたソフトウェア インターフェイス モデルを使用して複素数データをターゲット ボードにストリーミングする場合、この例の図に示すように、複素数データをデータ パック形式でパックしなければなりません。

制限

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

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

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

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

関連する例

詳細