Main Content

複数の AXI4-Stream および AXI4 Master インターフェイスを使用した HDL IP コアの生成

Simulink® モデルで汎用の IP コアの生成ワークフローを実行したり、ユーザーが作成した独自のカスタム リファレンス設計をターゲットにする場合は、複数の AXI4-Stream インターフェイス、AXI4-Stream Video インターフェイス、または AXI4 Master インターフェイスを使用して HDL IP コアを生成できます。これらのインターフェイスの詳細については、ターゲット プラットフォーム インターフェイスを参照してください。

複数の AXI4 インターフェイスを使用する理由

複数のストリーミング インターフェイスを使用して、次のような各種用途で高速データ転送を容易にすることができます。

  • A/D コンバーターと D/A コンバーター間でのデータの転送

  • 複数のトランシーバー チャネルを処理するソフトウェア定義の無線アルゴリズム

  • イメージの注釈またはオブジェクトの検出を実行するビジョン アルゴリズム

汎用 IP コアの生成ワークフローでの複数の AXI4 インターフェイスの指定

複数の AXI4-Stream、AXI4-Stream Video、または AXI4 マスター チャネルを指定するには、次のようにします。

  1. [ターゲット デバイスおよび合成ツールを設定] タスクで、[ターゲット ワークフロー] として [IP Core Generation] を選択し、[ターゲット プラットフォーム] として [Generic Xilinx Platform] または [Generic Altera Platform] を選択します。このタスクを実行します。

  2. 複数のターゲット インターフェイスを追加するには、[ターゲット インターフェイスを設定] タスクで、[ターゲット プラットフォーム インターフェイス テーブル] の [ターゲット プラットフォーム インターフェイス] セクションで、[さらに追加...] を選択します。

  3. これで、[Add New Target Interfaces] ダイアログ ボックスでさらにインターフェイスを追加できます。追加するインターフェイスのタイプ、インターフェイスの数、追加した各インターフェイスのカスタム名を指定します。

    設定を適用した後に、作成したインターフェイスが [ターゲット プラットフォーム インターフェイス テーブル] に表示されます。このタスクを実行した後、指定された追加のインターフェイスが AdditionalTargetInterfaces HDL ブロック プロパティとして DUT サブシステムに保存されます。

マップ済みのインターフェイスの削除や名前の変更など、既に DUT 端子にマッピングされている追加のインターフェイスを変更すると、前のインターフェイス マッピング情報が失われる可能性があります。次に、端子はインターフェイスへのマッピングが解除されて、[ターゲット プラットフォーム インターフェイス] セクションには、[No interface specified] が表示されます。したがって、追加のターゲット インターフェイスに変更を加える場合は、DUT 端子が正しいターゲット インターフェイスにマッピングされていることを確認します。

カスタム リファレンス設計での複数の AXI4 インターフェイスの指定

ユーザー独自のカスタム リファレンス設計を作成する場合は、複数の AXI4-Stream インターフェイス、AXI4-Stream Video インターフェイス、および AXI4 Master インターフェイスを追加できます。追加するインターフェイス タイプに応じて、hdlcoder.ReferenceDesign クラスの addAXI4StreamInterfaceaddAXI4StreamVideoInterface、または addAXI4MasterInterface メソッドを使用して追加のインターフェイスを指定します。

さらにインターフェイスを追加するには、plugin_rd ファイルで、インターフェイスを追加するたびにインターフェイス メソッドを呼び出します。次の例は、2 つの AXI4-Stream インターフェイスを追加する方法を示しています。

function hRD = plugin_rd()
% Reference design definition

%   Copyright 2017-2019 The MathWorks, Inc.

% Construct reference design object
hRD = hdlcoder.ReferenceDesign('SynthesisTool', 'Xilinx Vivado');

hRD.ReferenceDesignName = 'Multiple Interface Reference Design';
hRD.BoardName = 'ZedBoard';

% Tool information
hRD.SupportedToolVersion = {'2019.1'}; 

% ...
% ...

% Add AXI4-Stream interface 1
hRD.addAXI4StreamInterface (...
    'MasterChannelEnable',      true, ...
    'SlaveChannelEnable',       true, ...
    'MasterChannelConnection',  'axi_dma_s2mm/S_AXIS_S2MM', ...
    'SlaveChannelConnection',   'axi_dma_mm2s/M_AXIS_MM2S', ...
    'MasterChannelDataWidth',   32, ...
    'SlaveChannelDataWidth',    32, ...
    'InterfaceID',              'AXI4-Stream1');

% Add AXI4-Stream interface 2
hRD.addAXI4StreamInterface (...
    'MasterChannelEnable',      true, ...
    'SlaveChannelEnable',       true, ...
    'MasterChannelConnection',  'ADC/S_AXIS_S2MM', ...
    'SlaveChannelConnection',   'DAC/M_AXIS_MM2S', ...
    'MasterChannelDataWidth',   32, ...
    'SlaveChannelDataWidth',    32, ...
    'InterfaceID',              'AXI4-Stream2');



% ...
% ...

IP Core Generation ワークフローを実行し、カスタム リファレンス設計 Multiple Interface Reference Design をターゲットにする場合は、[ターゲット インターフェイスを設定] タスクで、DUT 端子を AXI4-Stream1 マスター チャネルとスレーブ チャネルおよび AXI4-Stream2 マスター チャネルとスレーブ チャネルにマッピングできます。

メモ

ユーザー独自のカスタム リファレンス設計をターゲットにして、[ターゲット インターフェイスを設定] タスクで追加のインターフェイスを DUT 端子にマッピングすると、追加のインターフェイスは、AdditionalTargetInterfaces HDL ブロック プロパティとしてモデルに保存されません。代わりに、plugin_rd.m ファイルで追加のインターフェイスがカスタム リファレンス設計に保存されます。

また、リファレンス設計を動的にカスタマイズして、追加するインターフェイスの数とインターフェイスのプロパティを指定することもできます。

  1. plugin_rd ファイルで、追加するインターフェイス数のリファレンス設計パラメーターを作成します。

  2. 追加するインターフェイス数のさまざまな選択肢をもつコールバック関数を作成して、plugin_rd ファイルで hdlcoder.ReferenceDesign クラスのCustomizeReferenceDesignFcn メソッドを使用して関数を参照します。

詳細については、リファレンス設計のパラメーターに基づいたリファレンス設計の動的なカスタマイズを参照してください。

複数のストリーミング インターフェイスでの Ready 信号のマッピング

単一のストリーミング チャネルを使用している場合、HDL Coder™ では Ready 信号と関連付けられたバック プレッシャー ロジックが自動的に生成されます。

複数のストリーミング チャネルを使用する場合、HDL Coder ではバック プレッシャー ロジックは自動的に生成されません。この場合、Ready 信号は生成されますが、入力時のマスター Ready 信号は無視され、出力時のスレーブ Ready 信号は High 値に結び付けられます。バック プレッシャー ロジックがない場合、サンプルは破棄される場合があります。スレーブ インターフェイスでバック プレッシャーを適用するか、マスター インターフェイスからバック プレッシャーに応答する設計が必要になる場合、追加のインターフェイスごとに Ready 信号をモデル化してから、そのインターフェイスの Ready 信号に端子をマッピングしなければなりません。モデル化しない場合、[ターゲット インターフェイスを設定] タスクでは、Ready 端子を必要とするインターフェイスの名前を示す警告が表示されます。設計でバック プレッシャーに適用および応答する必要がない場合は、警告を無視することができ、Ready 信号をモデル化する必要はありません。

複数の AXI4-Stream インターフェイスを使用しているときに、スレーブ インターフェイスでバック プレッシャーを適用するか、マスター インターフェイスからバック プレッシャーに応答する設計が必要になる場合、追加のインターフェイスごとに Ready 信号をモデル化してから、そのインターフェイスの Ready 信号に端子をマッピングしなければなりません。単一のストリーミング チャネルでバック プレッシャー ロジックを生成する方法および Ready 信号をモデル化する方法については、Ready 信号 (オプション)を参照してください。

制限

  • 汎用 IP コアの生成ワークフローを実行する場合は、追加のインターフェイスごとにインターフェイス タイプとカスタムのインターフェイス ID を指定できます。データ幅などの他のインターフェイス プロパティはカスタマイズできないため、既定値を使用します。独自のカスタム リファレンス設計を作成する場合は、インターフェイス名とインターフェイス プロパティをカスタマイズできます。

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

関連するトピック

関連するトピック