AXI4-Stream 格式:高性能流式數(shù)據(jù)傳輸?shù)臉?biāo)準(zhǔn)化協(xié)議(上)
在現(xiàn)代數(shù)字系統(tǒng)設(shè)計(jì)中,流式數(shù)據(jù)傳輸(如視頻、音頻、傳感器數(shù)據(jù)流)的高效性和可靠性直接決定了系統(tǒng)性能。AXI4-Stream 作為 ARM 公司 AMBA(Advanced Microcontroller Bus Architecture)協(xié)議家族的重要成員,專為連續(xù)流式數(shù)據(jù)傳輸設(shè)計(jì),已成為片上系統(tǒng)(SoC)和 FPGA 中高速數(shù)據(jù)鏈路的事實(shí)標(biāo)準(zhǔn)。本文將系統(tǒng)解析 AXI4-Stream 格式的協(xié)議規(guī)范、技術(shù)特性及應(yīng)用實(shí)踐。
一、AXI4-Stream 格式的核心定義與設(shè)計(jì)目標(biāo)
AXI4-Stream 是一種面向無地址、連續(xù)數(shù)據(jù)流的點(diǎn)對點(diǎn)傳輸協(xié)議,與面向存儲器映射的 AXI4 協(xié)議不同,它取消了地址通道,專注于數(shù)據(jù)的高效流式傳輸。其核心設(shè)計(jì)目標(biāo)包括:
高帶寬利用率:通過簡化控制信號和支持突發(fā)傳輸,最大化數(shù)據(jù)傳輸效率
靈活性:適應(yīng)不同類型的流式數(shù)據(jù)(從低速傳感器數(shù)據(jù)到高速視頻流)
可擴(kuò)展性:支持寬數(shù)據(jù)總線(8 位至 1024 位)和多種擴(kuò)展信號
簡單性:減少協(xié)議開銷,降低硬件實(shí)現(xiàn)復(fù)雜度
AXI4-Stream 格式的本質(zhì)是定義了一套數(shù)據(jù)幀結(jié)構(gòu)和傳輸規(guī)則,使發(fā)送端(Source)和接收端(Sink)能夠無縫協(xié)作,實(shí)現(xiàn)數(shù)據(jù)的有序、高效傳輸。
二、AXI4-Stream 的信號組成與幀結(jié)構(gòu)
1. 基礎(chǔ)信號集
AXI4-Stream 的核心信號包括數(shù)據(jù)傳輸和控制兩類,構(gòu)成了協(xié)議的基礎(chǔ)框架:
TDATA:數(shù)據(jù)總線,寬度可配置(8/16/32/64/128/256/512/1024 位),承載實(shí)際傳輸?shù)臄?shù)據(jù)
TVALID:發(fā)送端有效信號,高電平表示 TDATA 上的數(shù)據(jù)有效
TREADY:接收端就緒信號,高電平表示接收端可接收數(shù)據(jù)
TLAST:幀結(jié)束標(biāo)志,高電平標(biāo)識當(dāng)前數(shù)據(jù)是一個(gè)數(shù)據(jù)幀的最后一個(gè)傳輸單元
這四個(gè)信號構(gòu)成了 AXI4-Stream 的最小實(shí)現(xiàn)集,其中 TVALID 和 TREADY 組成握手機(jī)制:只有當(dāng) TVALID 和 TREADY 同時(shí)為高電平時(shí),數(shù)據(jù)傳輸才會發(fā)生。
2. 擴(kuò)展信號集
為滿足復(fù)雜場景需求,AXI4-Stream 定義了可選的擴(kuò)展信號:
TUSER:用戶自定義信號,可攜帶元數(shù)據(jù)(如視頻同步信號、錯(cuò)誤標(biāo)記),寬度可配置
TID:事務(wù)標(biāo)識,用于多流復(fù)用場景下的流識別,支持亂序傳輸?shù)闹匦屡判?span>
TDEST:目標(biāo)標(biāo)識,用于路由控制,指示數(shù)據(jù)應(yīng)發(fā)送到的目標(biāo)節(jié)點(diǎn)
TKEEP:字節(jié)使能信號,每 bit 對應(yīng) TDATA 的一個(gè)字節(jié),高電平表示該字節(jié)有效
TSTRB:字節(jié)選通信號,功能與 TKEEP 類似,主要用于寫操作的數(shù)據(jù)掩碼
這些擴(kuò)展信號使 AXI4-Stream 能夠適應(yīng)從簡單到復(fù)雜的各類應(yīng)用場景,例如 TUSER 在視頻傳輸中可攜帶 HSYNC/VSYNC 信號,TID 和 TDEST 則支持多通道數(shù)據(jù)的并行傳輸與路由。
3. 幀結(jié)構(gòu)定義
AXI4-Stream 的數(shù)據(jù)以 "幀(Frame)" 為基本傳輸單元,每個(gè)幀由一個(gè)或多個(gè) "傳輸單元(Transfer)" 組成:
傳輸單元:單次握手中傳輸?shù)臄?shù)據(jù),對應(yīng) TDATA 的寬度(如 32 位 TDATA 一次傳輸 32 位數(shù)據(jù))
幀:由 TLAST 信號界定的一組傳輸單元,TLAST=1 標(biāo)識幀結(jié)束
子幀:復(fù)雜場景中可通過 TUSER 信號定義更小的邏輯單元(如視頻的一行像素)
典型的視頻幀結(jié)構(gòu)示例:
[行1像素?cái)?shù)據(jù)] → [TLAST=0] → [行2像素?cái)?shù)據(jù)] → ... → [行n像素?cái)?shù)據(jù)] → [TLAST=1]
這種幀結(jié)構(gòu)使 AXI4-Stream 既能支持連續(xù)無界數(shù)據(jù)流(如音頻),也能支持有明確邊界的塊數(shù)據(jù)(如視頻幀、網(wǎng)絡(luò)包)。