設計やデバッグテクニックのブログ

cancel
Showing results for 
Search instead for 
Did you mean: 

設計やデバッグテクニックのブログ

Xilinx Employee
Xilinx Employee

本ブログは英語版のAXI-Basics Blogを翻訳したものです。

 

概要:

近年、ほぼすべてのザイリンクス IP AXI インターフェイスを使用するようになりました。Zynq®、Zynq MPMicroBlaze™ および新しい Versal™ プロセッサなど、すべてが AXI インターフェイスを使用しています。このため、ザイリンクス デバイスのほぼすべての新規デザインに AXI インターフェイスが組み込まれています。AXI の基礎を理解しておくと、ザイリンクス デバイスでデザインを設計およびデバッグするのに役立ちます。

このブログ記事では、ザイリンクス デバイスでの AXI3/AXI4 の基礎についていくつか説明します。まず、理論および用語から説明します。

 

AXI とは:

AXI は、Advanced eXtensible Interface の略で、AMBA (Advanced Microcontroller Bus Architecture) 規格の一部として ARM により定義されたインターフェイス プロトコルです。

AXI3/AXI4 の仕様は、ARM ウェブサイト (リンク) から自由に入手可能なので、興味がおありの場合はダウンロードしてください。

AXI1.png

AXI4 インターフェイス (AMBA 4.0) には、次の 3 つのタイプがあります。

  • AXI4 (フル AXI4): パフォーマンスに優れたメモリ マップド要件用です。
  • AXI4-Lite: 単純なスループットの少ないメモリ マップド通信用です (たとえば、制御およびステータス レジスタの通信など)
  • AXI4-Stream: 高速のストリーミング データ用です。
    • 注記: AXI4-Stream については、この記事では説明しません。この記事の「AXI」とは、AXI3AXI4、および AXI4-Lite のことを意味します。

注記: AXI3 インターフェイスはフル AXI インターフェイスに近いものです。

AXI の読み出しおよび書き込みチャネル

AXI プロトコルでは、5 つのチャネルが定義されます。

  • 2 つは読み出しトランザクションに使用されます。
    • 読み出しアドレス
    • 読み出しデータ
  • 3 つは書き込みトランザクションに使用されます。
    • 書き込みアドレス
    • 書き込みデータ
    • 書き込み応答

AXI2.png

 

チャネルは、VALID および READY 信号に関連付けられた AXI 信号の独立したコレクションです。

注記: AXI4/AXI3/AXI4-Lite インターフェイスは読み出し専用 (2 つの読み出しチャネルのみを含む) または書き込み専用 (3 つの書き込みチャネルのみを含む) にできます。

1 つの信号チャネルで送信されるデータを転送と呼びます。転送は、VALID および READY 信号の両方が High の場合に、クロックの立ち上がりエッジで発生します。たとえば、次の図の場合、転送は T3 で発生します。

AXI3.png

 

AXI 読み出しトランザクション

AXI 読み出しトランザクションは、2 つの読み出しチャネルで複数の転送を必要とします。

  • まず、アドレス読み出しチャネルがマスターからスレーブに送信されて、アドレスと一部の制御信号が設定されます。
  • このアドレスのデータが読み出しデータチャネルでスレーブからマスターに送信されます。

次の図に示すように、アドレスごとに複数のデータ転送が発生することもあります。このようなトランザクション タイプは、バーストと呼ばれます。

AXI4.jpg

 

AXI 書き込みトランザクション

AXI 書き込みトランザクションは、3 つの読み出しチャネルで複数の転送を必要とします。

  • まず、アドレス書き込みチャネルがマスターからスレーブに送信されて、アドレスと一部の制御信号が設定されます。
  • このアドレスのデータが書き込みデータチャネルでマスターからスレーブに送信されます。
  • 最後に、書き込み応答が書き込み応答チャネルでスレーブからマスターに送信され、転送が問題なかったかどうかが示されます。

 

AXI5.jpg

書き込み応答チャネルの応答値は、次のいずれかになります。

  • OKAY (0b00): 通常アクセスに問題なし。通常アクセスに問題がなかったことを示します。
  • EXOKAY (0b01): 排他的アクセスに問題なし。
  • SLVERR (0b10): スレーブ エラー。スレーブには問題なく到達しましたが、スレーブが送信元のマスターにエラー状況 (たとえば、データ読み出しが有効ではないなど) を戻していることを示します。
  • DECERR (0b11): デコード エラー。通常はインターコネクト コンポーネントにより生成され、トランザクション アドレスにスレーブがないことを示します。

注記: 読み出しトランザクションにも応答値はありますが、この応答は読み出し応答チャネルの一部として送信されます。

AXI4 インターフェイス要件

AXI4 インターフェイスの要件は、AXI4 仕様に記述されています。

中でも次の要件は、必ず覚えておく必要があります。

  • VALID (AxVALID/xVALID) 信号がアサートされる場合、スレーブが AxREADY/xREADY をアサートしてからクロック エッジが立ち上がるまでアサートされたままにしておく必要があります。

  • 情報を送信する AXI インターフェイスの VALID 信号は、その情報を受信する AXI インターフェイスの READY 信号に依存しないようにします。
    • ただし、READY 信号のステートは VALID 信号に依存できます。

  • 書き込み応答は、常に書き込みトランザクションの最後の書き込み転送の後に続く必要があります。

  • 読み出しデータは、常にそのデータの関連するアドレスの後に続く必要があります。

  • スレーブは、有効なデータが使用可能になったことを示す RVALID のがアサートされる前に、ARVALID ARREADY の両方がアサートされるまで待機する必要があります。

 

AXI の基礎シリーズ」の次の記事では、AXI Verification IP (AXI VIP) を使用して AXI4 インターフェイスをシミュレーションします。

Read more
0 0 170
Xilinx Employee
Xilinx Employee

本ブログは英語版のAXI-Basics Blogを翻訳したものです。

 

AXI Verification IP (AXI VIP) の概要:

ザイリンクス AXI Verification IP (AXI VIP) は、AXI4 および AXI4-Lite をシミュレーションするための IP です。AXI プロトコル チェッカーとしても使用できます。

この IP はシミュレーション用なので合成されず、パススルー コンフィギュレーション ワイヤに置き換えられます。

AXI VIP コアは、次の目的で使用できます。

  • マスター AXI コマンドおよび書き込みペイロードの生成
  • スレーブ AXI 読み込みペイロードおよび書き込み応答の生成
  • AXI トランザクションのプロトコル準拠チェック

次の 5 つの構成がサポートされます。

  • AXI マスター VIP
  • メモリ モデルなしの AXI パススルー VIP
  • メモリ モデルを含む AXI パススルー VIP
  • メモリ モデルなしの AXI スレーブ VIP
  • メモリ モデルを含む AXI スレーブ VIP

AXI VIP コアの詳細は『AXI Verification IP 製品ガイド』 (PG267: 英語版日本語版)、VIP API の詳細はこのリンクからダウンロード可能な ZIP ファイルに含まれる資料を参照してください。

AXI4 VIP のサンプル デザイン

AXI VIP のサンプル デザインが Vivado に含まれています。

AXI VIP のサンプル デザインを生成するには、次の手順に従います。

  1. 新規プロジェクトを開き、[IP Catalog] をクリックします。
  2. AXI Verification IP を検索します。IP をダブルクリックし、IP を設定して生成します。
  3. IP を右クリックし、[Open IP Example Design] をクリックします。

 

AXI VIP のサンプル デザインには 3 つの AXI VIP が含まれており、それぞれマスター、パススルー、およびスレーブとして設定されています。

AXI2_1.png

 

プロジェクトには、AXI VIP を異なる組み合わせで使用する複数のテストベンチが含まれています。

AXI2_2.png

 

注記: すべてのテストベンチ ファイルは SystemVerilog で記述されています。AXI VIP のすべての機能を活用するには、この IP SystemVerilog テストベンチに含める必要があります。

 

AXI インターフェイス トランザクションの解析:

Vivado シミュレーションの便利な機能に、プロトコル インスタンスがあります。これを波形に追加すると、信号をトランザクション レベルで表示できます。

ここでは、sim_basic_mst_active_pt_mem__slv_passive シミュレーション セットを使用する手順を示します。

このシミュレーション セットを使用するには、[Sources] ウィンドウでシミュレーション セットを右クリックし、[Make Active] をクリックします。

AXI2_3.png

 

このシミュレーション セットでは、マスター AXI VIP とパススルー AXI VIP (メモリ レベルでスレーブとして動作) のみが使用されます。

シミュレーションを実行するには、Flow Navigator [Run Simulation] をクリックします。

デフォルトでクロック信号とリセット信号のみを含む波形が開きます。

AXI2_4.png

次に、マスター AXI VIP とパススルー AXI VIP の間に AXI インターフェイスを追加します。

[Scope] ウィンドウで [DUT]   [ex_design] の下にあるマスター AXI VIP (axi_vip_mst) を選択します。[Objects] ウィンドウに IP のすべてのポートが表示されます。M_AXI インターフェイス オブジェクトを右クリックし、[Add to Wave Window] をクリックします。

AXI2_5.png

 

波形ウィンドウに AXI トランザクションが表示されます。

AXI2_6.png

 

シミュレーションの開始からシミュレーション時間 1 us までの間に、読み出しトランザクションと書き込みトランザクションの両方が発生しています。

波形ウィンドウで M_AXI を展開表示すると、これらのトランザクションの詳細が表示されます。

AXI2_7.png

チャネル上の数値はトランザクション番号です。読み出しチャネル (紫) では 5 つのトランザクションが発生し、書き込みチャネルでは 4 つのトランザクションが発生しています。

特定のトランザクションをクリックすると、トランザクションがどのように発生したのかがわかります。たとえば、書き込みチャネルの最初のトランザクションをクリックすると、これがバースト トランザクションであることがわかります。

  1. トランザクションは、書き込みアドレス チャネルでアドレスが設定されて開始します。
  2. その後、データのバーストが書き込みデータ チャネルで送信されます。
  3. 書き込みが成功すると、書き込み応答チャネルでスレーブからの応答が送信されます。

AXI2_8.png

 

 

Read more
0 0 6,906