AXI(Advanced eXtensible Interface)は、オンチップ通信バスプロトコルであり、AMBA(Advanced Microcontroller Bus Architecture )仕様の一部です。 [ 1 ] [ 2 ] AXIはロイヤリティフリーで、その仕様はARMから無料で入手できます。
AMBA AXIは多くのオプション信号を指定しており、設計の特定の要件に応じてこれらを含めることができるため、[ 3 ] AXIは多くのアプリケーションに使用できる多用途のバスとなっています。
AXIバス上の通信は単一のイニシエーターと単一のターゲットの間で行われますが、仕様にはN:M相互接続を含む詳細な記述と信号が含まれており、複数のイニシエーターとターゲットを持つトポロジーにバスを拡張できます。[ 4 ]
AXI3は2003年にAMBA3仕様とともに導入されました。2010年には、AMBAの新しい改訂版であるAMBA4が、AXI4、AXI4-Lite、AXI4-Streamプロトコルを定義しました。AMBA AXI4、AXI4-Lite、AXI4-Streamは、ザイリンクスとその多くのパートナー企業によって、自社製品の主要通信バスとして採用されています。 [ 5 ] [ 6 ] AXI5を搭載したAMBA5は2022年にリリースされ、アトミック性、データ保護、キャッシュ操作が追加されました。新しいACE(AXIコヒーレンシ拡張)が規定されています。[ 7 ]
スレッドID
スレッドIDを使用すると、単一のイニシエーターポートで複数のスレッドをサポートできます。各スレッドはAXIアドレス空間に順序どおりにアクセスできますが、単一のイニシエーターポートから開始された各スレッドIDは、互いに順序どおりに完了しない可能性があります。たとえば、1つのスレッドIDが低速の周辺機器によってブロックされた場合、別のスレッドIDが最初のスレッドIDの順序とは無関係に続行される場合があります。別の例として、CPU上の1つのスレッドに、read addr1、write addr1、read addr1などの特定のイニシエーターポートメモリアクセス用のスレッドIDが割り当てられている場合、各トランザクションは同じイニシエーターポートスレッドIDを持つため、このシーケンスは順序どおりに完了します。CPU上で実行されている別のスレッドに別のイニシエーターポートスレッドIDが割り当てられている場合、そのメモリアクセスも順序どおりに実行されますが、最初のスレッドIDのトランザクションと混在する可能性があります。[ 8 ]
イニシエータポート上のスレッドIDはグローバルに定義されていないため、複数のイニシエータポートを持つAXIスイッチは、内部的にイニシエータポートインデックスをスレッドIDの先頭に付加し、この連結されたスレッドIDをターゲットデバイスに提供します。その後、トランザクションが元のイニシエータポートに戻ると、このスレッドIDプレフィックスを使用してイニシエータポートが特定され、プレフィックスは切り捨てられます。これが、ターゲットポートのスレッドIDがイニシエータポートのスレッドIDよりもビット数が大きい理由です。[ 9 ]
AXI-Liteバスは、イニシエーターごとに1つのIDスレッドのみをサポートするAXIバスです。このバスは通常、UARTなどの単純な周辺機器など、一度に1つのイニシエーターデバイスとのみ通信する必要があるエンドポイントに使用されます。対照的に、CPUは一度に複数の周辺機器やアドレス空間へのトランザクションを開始することができ、AXIイニシエーターポートとAXIターゲットポートで複数のスレッドIDをサポートします。そのため、CPUは通常、フルスペックAXIバスをサポートします。フロントサイドAXIスイッチの典型的な例としては、CPUイニシエーターに接続されたフルスペックAXIイニシエーターと、異なる周辺機器からAXIスイッチに接続された複数のAXI-Liteターゲットが挙げられます。[ 10 ]
(さらに、AXI-Lite バスは、トランザクションごとに 1 つのデータ ワードのトランザクション長のみをサポートするように制限されています。)
ハンドシェーク

AXIは、信号と信号で構成される基本的なハンドシェイク機構を定義しています。[ 11 ]この信号は、送信側エンティティによって駆動され、チャネル上のペイロードが有効であり、そのクロックサイクル以降に読み取ることができることを宛先エンティティに通知します。同様に、この信号は受信側エンティティによって駆動され、データを受信する準備が整ったことを通知します。 xVALIDxREADYxVALIDxREADY
xVALID信号と信号の両方xREADYが同じクロックサイクルでハイの場合、データペイロードは転送されたとみなされ、送信元はハイを維持して新しいデータペイロードを提供するか、xVALIDデアサートして転送を終了することができます。個々のデータ転送、つまり信号と信号の両方がハイであるxVALIDクロックサイクルは「ビート」と呼ばれます。 xVALIDxREADY
これらの信号の制御には、次の 2 つの主なルールが定義されています。
xREADYソースは、アサートするためにハイを待つことはできませんxVALID。- 一度
xVALIDアサートされると、ハンドシェイクが発生するまでソースはアサーションを維持する必要があります。
このハンドシェイクメカニズムのおかげで、送信元と送信先の両方がデータの流れを制御し、必要に応じて速度を調整できます。
チャンネル
AXI仕様では5つのチャネルが記述されている: [ 12 ]
- 読み取りアドレスチャネル(AR)
- 読み取りデータチャネル (R)
- 書き込みアドレスチャネル(AW)
- 書き込みデータチャネル (W)
- 書き込み応答チャネル(B)
いくつかの基本的な順序付けルールを除けば、[ 13 ]各チャネルは互いに独立しており、独自のハンドxVALID/xREADYシェイク信号を持っています。[ 14 ]
アキシ
信号
| 信号の説明 | 書き込みアドレスチャネル | 読み取りアドレスチャネル |
|---|---|---|
| 単一チャネル上の複数のストリームを識別するためのアドレスID | AWID | 乾燥 |
| バーストの最初のビートのアドレス | アワドル | アラダー |
| バースト内のビートの数 | オーレン[ nb 1 ] | アーレン[ nb 1 ] |
| 各ビートのサイズ | AWSサイズ | アースサイズ |
| バーストの種類 | AWBURST | アーバースト |
| アトミック操作を提供するためのロックタイプ | AWLOCK [ nb 1 ] | アーロック[ nb 1 ] |
| メモリタイプ、トランザクションがシステム内でどのように進行するか | AWCACHE | アルカッシュ |
| 保護の種類:特権、セキュリティ レベル、データ/命令アクセス | AWPROT | ARPROT |
| 取引のサービス品質 | AWQOS [注 2 ] | ARQOS [注 2 ] |
| 単一の物理インターフェースから複数の論理インターフェースにアクセスするための領域識別子 | AWREGION [ nb 2 ] | 地域[ nb 2 ] |
| ユーザー定義データ | AWUSER [注 2 ] | ARUSER [ nb 2 ] |
xVALID握手信号 | AWVALID | アルバリッド |
xREADY握手信号 | すでに | すでに |
| 信号の説明 | 書き込みデータチャネル | データチャネルの読み取り |
|---|---|---|
| データID:単一チャネル上の複数のストリームを識別する | WID [注 3 ] | 取り除く |
| データの読み取り/書き込み | Wデータ | Rデータ |
| 読み取り応答、現在のRDATA信号の状態を指定する | RRESP | |
| バイトストローブは、WDATA信号のどのバイトが有効かを示す | WSTRB | |
| 最後のビート識別子 | WLAST | RLAST |
| ユーザー定義データ | WUSER [ nb 2 ] | RUSER [注 2 ] |
xVALID握手信号 | 有効 | RVALID |
xREADY握手信号 | 準備完了 | 準備完了 |
| 信号の説明 | 書き込み応答チャネル |
|---|---|
| 単一チャネル上の複数のストリームを識別するための書き込みレスポンスID | 入札 |
| バーストのステータスを指定するための書き込み応答 | ブレスプ |
| ユーザー定義データ | BUSER [ nb 2 ] |
xVALID握手信号 | B有効 |
xREADY握手信号 | ブレディ |
バースト

AXIはバーストベースのプロトコルであり[ 16 ]、単一のリクエストに対して複数のデータ転送(またはビート)が行われる可能性がある。これは、特定のアドレスパターンとの間で大量のデータを転送する必要がある場合に有効である。AXIでは、バーストには3つの種類があり、ARBURST(読み取り)またはAWBURST(書き込み)信号によって選択される。[ 17 ]
- 修理済み
- 増分
- 包む
FIXEDバーストでは、転送中の各ビートは同じアドレスを持ちます。これは、 FIFOの読み取りや書き込みなど、同じメモリ位置への繰り返しアクセスに便利です。
一方、INCRバーストでは、各ビートのアドレスは前のビートに転送サイズを加えた値になります。このバーストタイプは、連続したメモリ領域の読み書きによく使用されます。
WRAPバーストはINCRバーストに似ており、各転送のアドレスは前の転送のアドレスに転送サイズを加えた値になります。ただし、WRAPバーストでは、現在のビートのアドレスが「上位アドレス境界」に達した場合、「ラップ境界」にリセットされます。
と
取引
読む

読み取りトランザクションを開始するには、イニシエーターは読み取りアドレス チャネルで次の情報を提供する必要があります。
- ARADDRの開始アドレス
- ARBURST のバースト タイプ (FIXED、INCR、WRAP のいずれか) (存在する場合)
- ARLEN のバースト長(存在する場合)。
さらに、他の補助信号が存在する場合は、より具体的な転送を定義するために使用されます。
通常の ARVALID/ARREADY ハンドシェイクの後、ターゲットは読み取りデータ チャネルで以下を提供する必要があります。
- RDATA上の指定されたアドレスに対応するデータ
- RRESPにおける各拍動の状態
加えて、その他のオプション信号も含みます。ターゲットからの応答の各ビートはRVALID/RREADYハンドシェイクによって行われ、最後の転送では、ターゲットはRLASTをアサートして、新しい読み取り要求がなければそれ以上ビートが続かないことを通知する必要があります。
書く

書き込み操作を開始するには、イニシエーターはアドレス情報とデータ情報の両方を提供する必要があります。
アドレス情報は、読み取り操作と同様の方法で、書き込みアドレス チャネルを介して提供されます。
- 開始アドレスはAWADDRに指定する必要があります
- AWBURST のバースト タイプ (FIXED、INCR、WRAP のいずれか) (存在する場合)
- AWLENのバースト長(存在する場合)
また、存在する場合は、すべてのオプション信号。
イニシエーターは、指定されたアドレスに関連するデータを書き込みデータ チャネルに提供する必要もあります。
- WDATAのデータ
- WSTRBの「ストローブ」ビット(存在する場合)。これは、個々のWDATAバイトを条件付きで「有効」または「無効」としてマークします。
読み取りパスと同様に、最後のデータ ワードでは、イニシエーターによって WLAST がアサートされる必要があります。
両方のトランザクションが完了したら、ターゲットは、BRESP 信号を介して結果を返すことにより、書き込み応答チャネルを介してイニシエーターに書き込みのステータスを送り返す必要があります。
サブセット
AXI-Lite
AXI4-LiteはAXI4プロトコルのサブセットであり、機能と複雑さを削減したレジスタのような構造を提供します。[ 19 ]注目すべき違いは次のとおりです。
- すべてのバーストは1ビートのみで構成されています
- すべてのデータアクセスは、32ビットまたは64ビットの全データバス幅を使用します。
AXI4-LiteはAXI4信号の一部を削除しますが、残りの信号についてはAXI4仕様に準拠しています。AXI4のサブセットであるAXI4-LiteのトランザクションはAXI4デバイスと完全に互換性があり、追加の変換ロジックなしでAXI4-LiteイニシエータとAXI4ターゲット間の相互運用性を実現します。[ 20 ]
信号
| 書き込みアドレスチャネル | 書き込みデータチャネル | 書き込み応答チャネル | 読み取りアドレスチャネル | データチャネルの読み取り |
|---|---|---|---|---|
| AWVALID | 有効 | B有効 | アルバリッド | RVALID |
| すでに | 準備完了 | ブレディ | すでに | 準備完了 |
| アワドル | Wデータ | ブレスプ | アラダー | Rデータ |
| AWPROT | WSTRB | ARPROT | RRESP |
AXIストリーム
AXI4-Streamは、高速ストリーミングデータアプリケーション向けに特別に設計された、簡素化された軽量バスプロトコルです。アドレス指定や複雑なハンドシェイクを必要とせず、単方向のデータフローのみをサポートします。AXI StreamはAXI書き込みデータチャネルに似ていますが、データの配置方法にいくつかの重要な違いがあります。
- バーストはなく、代わりにデータはパケット、フレーム、データストリームに詰め込まれます。
- データの長さに制限はなく、連続する可能性がある
- データ幅は任意の整数バイト数にすることができます
AXI5 ストリーム プロトコルは、ウェイクアップ シグナリングとパリティを使用した信号保護を導入します。
単一の AXI Stream トランスミッタは、インターリーブ可能な複数のストリームを駆動できますが、順序の変更は許可されません。
| 信号 | ソース | 幅 | 説明 |
|---|---|---|---|
| ACLK | クロック | 1 | ACLKはグローバルクロック信号です。すべての信号はACLKの立ち上がりエッジでサンプリングされます。 |
| ARESETn | リセット | 1 | ARESETn はグローバル リセット信号です。 |
| TVALID | 送信機 | 1 | TVALIDは、トランスミッタが有効な転送を実行していることを示します。TVALIDとTREADYの両方がアサートされると、転送が実行されます。 |
| トレディ | 受信機 | 1 | TREADY は、受信者が転送を受け入れることができることを示します。 |
| Tデータ | 送信機 | TDATA_WIDTH | TDATA は、インターフェースを介して渡されるデータを提供するために使用される主要なペイロードです。TDATA_WIDTH は整数バイト数で指定する必要があり、8、16、32、64、128、256、512、または 1024 ビットが推奨されます。 |
| TSTRB | 送信機 | TDATA_WIDTH/8 | TSTRB は、TDATA の関連するバイトの内容がデータ バイトとして処理されるか、位置バイトとして処理されるかを示すバイト修飾子です。 |
| ティーキープ | 送信機 | TDATA_WIDTH/8 | TKEEP は、TDATA の関連バイトの内容がデータ ストリームの一部として処理されるかどうかを示すバイト修飾子です。 |
| 信頼 | 送信機 | 1 | TLAST はパケットの境界を示します。 |
| TID | 送信機 | TID_幅 | TIDはデータストリーム識別子です。TID_WIDTHは8以下にすることをお勧めします。 |
| TDEST | 送信機 | TDEST_WIDTH | TDEST はデータ ストリームのルーティング情報を提供します。TDEST_WIDTH は 8 以下が推奨されます。 |
| チューザー | 送信機 | TUSER_WIDTH | TUSER は、データストリームに沿って送信できるユーザー定義のサイドバンド情報です。TUSER_WIDTH は、TDATA_WIDTH/8 の整数倍にすることが推奨されます。 |
| ウェイクアップ | 送信機 | 1 | TWAKEUP は、AXI-Stream インターフェイスに関連付けられたすべてのアクティビティを識別します。 |
参照
参考文献
- ^ 「AMBA | ドキュメント」 Arm Holdings。
- ^ Toole, Christina (2016年10月24日). 「AXIプロトコル入門:AXIインターフェースの理解」 . arm.com . Arm Limited . 2023年9月11日閲覧。
今日、多くのSoC設計者が使用しているプロトコルはAXI(Advanced eXtensible Interface)であり、ArmのAdvanced Microcontroller Bus Architecture(AMBA)仕様の一部です。特にXilinxのZynqデバイスでは広く採用されており、チップのプロセッシングシステムとプログラマブルロジック部間のインターフェースとして利用されています。
- ^ Arm Holdings. 「AMBA AXIおよびACEプロトコル仕様」(PDF) . developer.arm.com . pp. 109– 118. 2019年7月5日時点のオリジナル(PDF)からのアーカイブ。 2019年7月5日閲覧。
- ^ Arm Holdings. 「AMBA AXIおよびACEプロトコル仕様」(PDF) . developer.arm.com . pp. 23– 24. 2019年7月5日時点のオリジナル(PDF)からのアーカイブ。 2019年7月5日閲覧。
- ^ 「AMBA AXI4 インターフェースプロトコル」 . www.xilinx.com . Xilinx Inc.
- ^ 「AXI4 IP」 . www.xilinx.com . Xilinx Inc.
- ^ ARM Ltd. 「AMBA 5」。Arm | デジタル世界のためのアーキテクチャ。
- ^ 「AMBA AXIおよびACEプロトコル仕様」(PDF) Arm Ltd. 2013年2月22日. 2025年11月28日閲覧。
- ^ 「AXI Interconnect v2.1 LogiCORE IP 製品ガイド」(PDF) . ザイリンクス. 2022年5月17日. 2025年11月28日閲覧。
- ^ 「AXIスレッドID(TID)– SoCの基礎」(PDF) . Institute for Embedded Systems, TU Graz. 2021. 2025年11月28日閲覧。
- ^ Arm Holdings. 「AMBA AXIおよびACEプロトコル仕様」(PDF) . developer.arm.com . pp. 37– 38. 2019年7月5日時点のオリジナル(PDF)からのアーカイブ。 2019年7月5日閲覧。
- ^ Arm Holdings. 「AMBA AXIおよびACEプロトコル仕様」(PDF) . developer.arm.com . pp. 22– 23. 2019年7月5日時点のオリジナル(PDF)からのアーカイブ。 2019年7月5日閲覧。
- ^ Arm Holdings. 「AMBA AXIおよびACEプロトコル仕様」(PDF) . developer.arm.com . p. 40. 2019年7月5日時点のオリジナル(PDF)からアーカイブ。 2019年7月5日閲覧。
- ^ Arm Holdings. 「AMBA AXIおよびACEプロトコル仕様」(PDF) . developer.arm.com . p. 38. 2019年7月5日時点のオリジナル(PDF)からアーカイブ。 2019年7月5日閲覧。
- ^ Arm Holdings. 「AMBA AXIおよびACEプロトコル仕様」(PDF) . developer.arm.com . pp. 28– 34. 2019年7月5日時点のオリジナル(PDF)からのアーカイブ。 2019年7月5日閲覧。
- ^ Arm Holdings. 「AMBA AXIおよびACEプロトコル仕様」(PDF) . developer.arm.com . p. 22. 2019年7月5日時点のオリジナル(PDF)からアーカイブ。 2019年7月5日閲覧。
- ^ Arm Holdings. 「AMBA AXIおよびACEプロトコル仕様」(PDF) . developer.arm.com . pp. 45– 47. 2019年7月5日時点のオリジナル(PDF)からのアーカイブ。 2019年7月5日閲覧。
- ^ a b Arm Holdings. 「AMBA AXIおよびACEプロトコル仕様」(PDF) . developer.arm.com . p. 44. 2019年7月5日閲覧。
- ^ Arm Holdings. 「AMBA AXIおよびACEプロトコル仕様」(PDF) . developer.arm.com . pp. 121– 128. 2019年7月5日時点のオリジナル(PDF)からのアーカイブ。 2019年7月5日閲覧。
- ^ Arm Holdings. 「AMBA AXIおよびACEプロトコル仕様」(PDF) . developer.arm.com . p. 124. 2019年7月5日時点のオリジナル(PDF)からアーカイブ。 2019年7月5日閲覧。
- ^ Arm Holdings. 「AMBA AXIおよびACEプロトコル仕様」(PDF) . developer.arm.com . p. 122. 2019年7月5日時点のオリジナル(PDF)からアーカイブ。 2019年7月5日閲覧。