最もよく使用される AXI4-Stream 信号は、TVALID、TREADY、TDATA の 3 つです。AXI4-Stream 信号すべての中で必須なのは TVALID だけで、それ以外はオプションです。情報を伝達する信号はすべて TVALID と同じ方向に伝搬されますが、TREADY だけは反対方向に伝搬されます。
AXI4-Stream はポイント ツー ポイント インターフェイスなので、マスターおよびスレーブ インターフェイスの概念はデータフローの方向性を示す上で重要です。マスターがデータを生成し、スレーブがデータを消費します。
命名規則
AXI4-Stream 信号は、次のように命名されます。
<Role>_<ClassName>[_<BusName>]_[<ChannelName>]<SignalName>
次に例を示します。
m_axis_tvalid
この場合、m
は Role (マスター)、axis
は ClassName (AXI4-Stream)、tvalid
は SignalName です。
s_axis_control_tdata
この場合、s
は Role (スレーブ)、axis
は ClassName、control
は特定 IP の同じクラスの複数インスタンス間を区別する BusName、tdata
は SignalName です。
TREADY/TVALID ハンドシェイクに関する注意事項
TREADY/TVALID ハンドシェイクは、双方向フローを制御できるようにマスターとスレーブ間のデータ交換を制御する AXI の基本的概念です。TDATA およびその他すべての AXI4-Stream 信号 (TSTRB、TUSER、TLAST、TID、TDEST) はすべて TREADY/TVALID ハンドシェイクで認証されます。マスターは TVALID がアサートされるとデータの有効なビートを示し、TREADY がアサートされるまでデータ ビートを保持する必要があります。TVALID はアサートされると、TREADY がアサートされるまでディアサートできません。AXI では、TREADY を TVALID に依存させることはできても、TVALID のアサートは TREADY に依存させることができないという規則も追加されています。この規則により、タイミング ループが回避されます。次のタイミング図に、TREADY/TVALID ハンドシェイクの例を示します。
ハンドシェイクの例
- TREADY および TVALID の両方が同じサイクルで High になると、指定したチャネルで転送が発生します。
- TVALID がアサートされると、転送が終了するまでディアサートできません (TREADY は High)。転送を取り消したり、中止したりすることはできません。
- TVALID がアサートされると、同じチャネルのそれ以外の信号 (TREADY 以外) の値は転送が終了する (TREADY のアサート後のサイクル) まで変化しません。
- TREADY は TVALID のアサート前、アサート中またはアサート後のサイクルでアサートできます。
- TVALID のアサートは TREADY の値に依存させることができませんが、TREADY のアサートは TVALID の値に依存させることができます。
- マスターおよびスレーブ インターフェイスの両方で入力信号と出力信号の間に組み合わせパスがないようにする必要があります。
- AXI4-Stream IP に適用されます。つまり、TREADY スレーブ出力は TVALID スレーブ入力から組み合わせて生成できません。TVALID で認証されたデータを即時受信できるスレーブは、データを受信するまでその TREADY 信号をプレアサートする必要があります。または、TREADY にレジスタを付けて、TVALID アサートの次のサイクルを駆動することもできます。
- デフォルトのデザイン規則では、スレーブは TREADY を独立して駆動するか、TREADY をプレアサートして、レイテンシを最小限に抑える必要があります。
- 入力信号と出力信号間の組み合わせパスは別々の AXI4-Stream チャネル間で使用できますが、同じインターフェイス (一緒に動作するチャネルの関連グループ) に属する複数チャネルには、使用しないでください。
- 該当するチャネルでは、TREADY を除いてすべての信号がソース (通常はマスター) からデスティネーション (通常はスレーブ) まで伝搬されます。それ以外の反対方向へ伝搬する必要のある情報伝達信号または制御信号は、すべて別のチャネルの一部 (別の TREADY/TVALID ハンドシェイクを使用したバックチャネル) であるか、アウト オブ バンド信号 (ハンドシェイク以外) のいずれかである必要があります。スレーブからマスターへの反対方向への情報の転送には、TREADY を使用しないでください。
- AXI4-Stream では、TREADY を省略できます (デフォルトの値は 1)。これにより、TREADY を生成する IP での相互運用に制限が出ることがあります。AXI4-Stream マスターは、前方向のフロー制御 (TVALID) にのみ接続できます。