MENU

FPGAにおけるAXI入門

FPGA開発を進める中で、M_AXI(Master AXI)やS_AXI(Slave AXI)といった用語が頻出します。これらはFPGA内でデータをやり取りする際の重要なプロトコルですが、初心者にとって混乱を招きやすい概念です。この入門記事では、AXIの基本的な仕組みと役割について、具体例を交えて解説します。


目次

1. AXIとは?

AXI(Advanced eXtensible Interface)は、ARM社が策定した通信プロトコルです。FPGA開発では、データを送受信するための標準的な手段として広く利用されています。AXIには以下のような特徴があります:

  • 高効率なデータ転送: 高速データ転送と低レイテンシを両立。
  • マルチチャネル: 読み出し(Read)と書き込み(Write)が独立して動作可能。
  • 階層構造: マスタ(Master)とスレーブ(Slave)の役割分担。

AXIはFPGAのProcessing System(PS)Programmable Logic(PL)の間でデータをやり取りする際にも利用されます。


2. M_AXIとS_AXIの違い

AXIは、接続するデバイスの役割によって以下の2つに分かれます:

2.1 M_AXI(Master AXI)

  • 役割: リクエスト(要求)を発行します。
    • 読み出しや書き込みの指示を出す役割。
  • 主体: 通常、PS側がM_AXIとして動作します。
    • 例: PSが「データを読み出したい」「データを書き込みたい」という指示をPLに送る。

2.2 S_AXI(Slave AXI)

  • 役割: リクエストを受け付け、実際にデータを送受信します。
    • データの応答を返す役割。
  • 主体: 通常、PL側がS_AXIとして動作します。
    • 例: PLが「データを送る」「データを受け取る」という動作を実行。

まとめ表

インターフェース主な役割主体
M_AXIリクエストの発行PS(マスタ)
S_AXIリクエストの受け付けPL(スレーブ)

3. データフローの例

3.1 PSがPLからデータを読み出す場合

  1. PS(M_AXI): データを読み出すリクエストを発行します。
  2. PL(S_AXI): リクエストを受け取り、該当するデータをPSに返します。
  3. 実際のデータフローは、以下のようになります:
PS(M_AXI) -> PL(S_AXI): リクエスト送信
PL(S_AXI) -> PS(M_AXI): データ応答

3.2 PSがPLにデータを書き込む場合

  1. PS(M_AXI): 書き込みリクエストを発行し、データを送信します。
  2. PL(S_AXI): リクエストを受け取り、データを内部に格納します。
  3. データフローは次のようになります:
PS(M_AXI) -> PL(S_AXI): 書き込みリクエストとデータ送信

4. AXIの種類

Xilinx FPGAでは、以下のような異なる種類のAXIが提供されています:

4.1 General Purpose(GP)インターフェース

  • 用途: 汎用通信。
  • 特徴: 比較的低速な通信に適しており、主に制御や設定に使用されます。
  • : M_AXI_GP0(PS -> PLの汎用通信)。

4.2 High Performance(HP)インターフェース

  • 用途: 高速通信。
  • 特徴: 高スループットが求められる大量データの転送に使用されます。
  • : S_AXI_HP0(PL -> PSの高速データ転送)。
インターフェース主な用途帯域幅
M_AXI_GP0汎用制御、設定32ビット/64ビット
S_AXI_HP0高速データ転送64ビット/128ビット

5. よくある勘違い

勘違い1: M_AXIとS_AXIは物理的に異なるリソースを使う

  • 正解: M_AXIとS_AXIはプロトコル上の役割を表しており、必ずしも異なる物理リソースを使うわけではありません。

勘違い2: PSは常にマスタ、PLは常にスレーブ

  • 正解: PSもPLも、状況によってマスタにもスレーブにもなり得ます。
    • 例: PLがM_AXIを使ってPSのDDRメモリに直接データを書き込むことも可能です。

6. AXIの設計におけるポイント

  • リクエストと応答の役割を理解する:
    • 誰がリクエストを発行し、誰が応答を返すかを明確にする。
  • データ量とスループットを考慮する:
    • 小規模データはGPインターフェース、大規模データはHPインターフェースを使う。
  • 適切なタイミング制御を行う:
    • AXI通信は非同期処理が基本のため、タイミングの調整が重要。

7. まとめ

  • M_AXIとS_AXIは通信の役割を表すインターフェースです。
    • M_AXI: リクエストを発行するマスタ側。
    • S_AXI: リクエストを受け付けるスレーブ側。
  • PSとPLは状況に応じてマスタ・スレーブを切り替えることが可能です。
  • 用途に応じてGPインターフェースとHPインターフェースを使い分けることで、効率的なシステム設計が可能です。

FPGA開発におけるAXIの基本を理解すれば、PSとPLの連携をスムーズに進めることができるでしょう!

目次