高偉松 普瑤卉 盧小軍 陸愛春
(蘇州長(zhǎng)風(fēng)航空電子有限公司 江蘇省蘇州市 215151)
機(jī)載電子系統(tǒng)設(shè)備間交互的視頻圖像信息增多,傳統(tǒng)總線已不能滿足新型航空航天電子系統(tǒng)的技術(shù)要求,航空電子委員會(huì)提出了基于光纖通道的ARINIC 818 總線協(xié)議,具有抗電磁干擾能力強(qiáng)、傳輸距離長(zhǎng)、高帶寬、低延遲等特點(diǎn),適用航空航天系統(tǒng)中各設(shè)備間的視頻信息傳輸。
光纖通道音視頻協(xié)議(FC-AV)是FC 協(xié)議的子集,為視頻信息在光纖通道網(wǎng)絡(luò)中傳輸?shù)膫鬏斕峁┝朔椒ǎ瑸橐曨l設(shè)備間信息的交互制定了一種接口標(biāo)準(zhǔn)。FC-AV 協(xié)議基于光纖通道實(shí)現(xiàn),其傳輸?shù)幕締卧獮槿萜?Container),每個(gè)容器包含需要傳輸?shù)囊曨l流中一幀視頻信息。
根據(jù)視頻幀的傳輸方式,F(xiàn)C-AV 協(xié)議定義了兩種傳輸協(xié)議,分別為幀頭控制協(xié)議(FHCP)和簡(jiǎn)單移動(dòng)架構(gòu)(SCMA)。幀頭控制協(xié)議將視頻流通過(guò)容器映射為FC 幀,進(jìn)而在光纖通道中傳輸,ARINC 818 采取FHCP 傳輸協(xié)議。
ARINC 8I8 總線技術(shù)通過(guò)其獨(dú)特的技術(shù)優(yōu)勢(shì)已成為新型航空電子視頻系統(tǒng)的主流技術(shù)。ARINC 818 總線技術(shù)深入研究對(duì)航空電子視頻領(lǐng)域技術(shù)的發(fā)展具有較大意義。
ARINC 818 為點(diǎn)對(duì)點(diǎn)拓?fù)浣Y(jié)構(gòu)、采用8B/10B 編碼的串行音視頻傳輸協(xié)議。該協(xié)議由五個(gè)標(biāo)準(zhǔn)層構(gòu)成:FC-0 Physical(物理鏈路層)、FC-1 Code(編解碼層)、FC-2 Protocol(協(xié)議控制層)、FC-3 Management(通用服務(wù)層)、FC-4 Mapping(高層協(xié)議映射層)。
ARINC818 協(xié)議的基本傳輸單元是ADVB 幀,ADVB幀格式與FC 格式一致,由一個(gè)SOFx 指令開始,以一個(gè)EOFx 指令結(jié)束。ADVB 幀頭由24 字節(jié)組成,幀頭字節(jié)描述了源地址、目的地址、隊(duì)列中的具體位置等幀屬性。數(shù)據(jù)載荷最大可容納2112 個(gè)字節(jié),ADVB 幀中的CRC 同光纖通道中的定義一致,作用為校驗(yàn)SOFx 和CRC 之間的數(shù)據(jù)的完整性。
首個(gè)ADVB 幀的SOF 格式為SOFi(SOF initiate),其后每一個(gè)ADVB 幀的SOF 格式為SOFn(SOF normal)。最后一個(gè)ADVB 幀的EOF 格式為EOFt(EOF terminate),其他ADVB 幀的EOF 格式為EOFn(EOF normal)。
ADVB 幀之間為IDLE 數(shù)據(jù),為保證CRC 計(jì)算和接受端時(shí)鐘矯正的正常工作,發(fā)送IDLE 數(shù)據(jù)之前,8B/10B 編碼中的RD 值(Running Disparity,運(yùn)行不一致性)需要為負(fù),在每個(gè)ADVB 幀的結(jié)尾,根據(jù)當(dāng)前RD 值,選擇不同的EOF 格式控制RD 值。SOF、EOF 以及Idle 的格式如表1所示。
表1:SOF、EOF、Idle 的格式
ARINC818 一個(gè)視頻幀通過(guò)一個(gè)ADVB 容器傳輸,視頻幀與ADVB 容器是一對(duì)一映射關(guān)系,一個(gè)ADVB 容器中包括一系列的ADVB 幀,容器中ADVB 幀數(shù)的多少由視頻傳輸?shù)姆直媛蕸Q定。
ADVB 容器由容器頭和對(duì)象兩部分組成。容器頭共22個(gè)32 位字,包括容器的具體屬性信息,視頻數(shù)據(jù)通過(guò)容器的對(duì)象來(lái)傳輸。ADVB 定義了4 個(gè)對(duì)象:Object 0 ~ Object 3。Object 0 為輔助數(shù)據(jù),Object 1 為音頻數(shù)據(jù),Object 2 和Object 3 為視頻數(shù)據(jù),逐行視頻中只使用Object 2。
ADVB 幀頭(Frame header)由24 個(gè)字節(jié)的數(shù)據(jù)組成,如表2 所示。
表2:ADVB 幀頭
Dest._ID 與Source_ID 一般設(shè)置為0,動(dòng)態(tài)字段包括幀控制(F_CTL)、序列標(biāo)識(shí)符(SEQ_ID)和序列計(jì)數(shù)(SEQ_CNT)這三個(gè)字段。幀控制字段長(zhǎng)度24bit,bit19 在容器的最后一個(gè)ADVB 幀中應(yīng)置為1,用來(lái)通知接受端一個(gè)容器發(fā)送完畢。序列標(biāo)識(shí)符為容器計(jì)數(shù)器數(shù)值的低8bit,同一個(gè)容器中所有ADVB 幀序列標(biāo)識(shí)符均相同,其隨著視頻幀的增大而增大。序列計(jì)數(shù)字段用于標(biāo)識(shí)同一容器中幀的順序排列,共24bit,承載容器頭和對(duì)象0 的幀是計(jì)數(shù)的開始,隨著幀數(shù)量增加而增加。
通過(guò)ADVB 幀,視頻流在FC 網(wǎng)絡(luò)中傳輸,多個(gè)ADVB幀按照一定的順序組成一個(gè)容器,每場(chǎng)視頻幀對(duì)應(yīng)一個(gè)容器。容器頭和對(duì)象0 的輔助數(shù)據(jù)組成第一個(gè)ADVB 幀,第二幀到第n 幀的數(shù)據(jù)字段為對(duì)象2 的視頻數(shù)據(jù)。
輔助數(shù)據(jù)(Ancillary Data)由4 個(gè)32bit 字(Word 0 ~3)組成。采用XGA 視頻(1024*768@60Hz)舉例,描述各字段的含義。
(1)Word 0 字段。
Bit18 ~31 表示視頻一幀中的行數(shù)。Bit4 ~17 表示視頻每行的列數(shù)。最后4 個(gè)bits 表示視頻傳輸類型,基于場(chǎng)或基于視頻幀傳輸。
(2)Word 1 字段。
顏色信息(CL,ColorInformation)表示像素?cái)?shù)據(jù)類型,單色調(diào)或多色彩。
像素縱橫比(PA,Pixel Aspect ratio)表示視頻像素的高寬比例。
像素陣列順序(PAO,PixelArray order)表示視頻顯示中像素的掃描方式。PTN(Packing Table Number)表示像素的封裝類型。
Bits per subpixel 表示視頻對(duì)象中每個(gè)顏色分量所占用的比特?cái)?shù)。
Word 2 ~3 字段根據(jù)用戶需求進(jìn)行自定義,默認(rèn)值00000000h。
接口控制文件(ICD,Interface Control Document)包括各種視頻格式數(shù)據(jù)封裝為ADVB 幀及發(fā)送控制的詳細(xì)信息,是視頻數(shù)據(jù)發(fā)送的信息庫(kù),其含義是根據(jù)視頻的不同分辨率格式,對(duì)ADVB 幀的封裝和發(fā)送控制的詳細(xì)描述。對(duì)象0為輔助信息數(shù)據(jù),對(duì)象2 中分組封裝視頻數(shù)據(jù),ICD 的主要組成部分為鏈路速率和ADVB 幀發(fā)送間隔。
根據(jù)被傳輸視頻數(shù)據(jù)的格式選擇匹配的光纖通道鏈路速率,才能保證鏈路利用率最大化,減少帶寬的損失、降低成本。ARINC 818 協(xié)議鏈路速率有1.0625Gbps、2.125Gbps、3.1875Gbps、4.25Gbps 等。各種視頻分辨率格式所采用的鏈路速率如表3 所示。
表3:鏈路速率表
ARINC 818 與DVI、Firewire、Camera Link 和GigE 等數(shù)據(jù)總線相比,在傳輸速率、傳輸距離等關(guān)鍵技術(shù)方面具有優(yōu)勢(shì),如表4 所示。該協(xié)議已成功在多型飛機(jī)航電設(shè)備中運(yùn)用,如空客A400M 和波音787 等,經(jīng)歷了民用和軍用航空器的數(shù)萬(wàn)小時(shí)飛行驗(yàn)證。
表4:與其他協(xié)議的對(duì)比
光纖通道已在多個(gè)領(lǐng)域得到廣泛應(yīng)用,有多個(gè)廠家提供的芯片可以滿足ARINC 818 應(yīng)用需求。
Xilinx 在Kintex7 FPGA 中提供的GTX 接口能夠提供最高12.5Gbps 的鏈路速率,GTX 高度可配置化,具有8B10B編解碼、RD 控制、字對(duì)齊、時(shí)鐘矯正、預(yù)加重等功能,且與FPGA 的可編程邏輯資源緊密耦合。比較適合ARINC 818編解碼功能的開發(fā)。
ARINC818 高速串行數(shù)據(jù)送至FPGA 的比特收發(fā)器GTX0。ARINC818 解碼模塊(818 Decode)接收DVI 解碼芯片輸入的視頻數(shù)據(jù),再通過(guò)幀緩存將視頻調(diào)整到統(tǒng)一的時(shí)序下。ADVB 幀解析模塊接受GTX 發(fā)過(guò)來(lái)的32bit 并行數(shù)據(jù),解碼出其中視頻數(shù)據(jù)存入FIFO 當(dāng)中,視頻時(shí)序生成模塊檢測(cè)到FIFO 中有數(shù)據(jù)后生成視頻時(shí)序至視頻輸出模塊,視頻輸出模塊接收時(shí)序讀取FIFO 中的視頻數(shù)據(jù)一起輸出。在運(yùn)行過(guò)程中,GTX 能夠上報(bào)8B/10B 編解碼錯(cuò)誤(8B/10B notintable[3:0]) 及鏈路RD 錯(cuò)誤(disparity error[3:0]),CRC 計(jì)算模塊能夠上報(bào)CRC 錯(cuò)誤。如表5 所示。
表5:ARINC818 視頻解碼模塊接口定義
ADVB 幀解析模塊是ARINC818 視頻解碼的主要功能之一,只有通過(guò)幀解析后的數(shù)據(jù)才會(huì)有具體的實(shí)際意義,否則數(shù)據(jù)內(nèi)容就為亂碼,無(wú)法處理其內(nèi)容。ARINC 818 幀解析模塊的幀解析分為兩種情況,因?yàn)槿萜飨到y(tǒng)包含兩種類型的幀序列。一種是承載Object 0 輔助信息數(shù)據(jù)的第一幀,另一種是承載Object 2 視頻數(shù)據(jù)的ADVB 幀。
幀解析的第一步就是要分清幀的類型。區(qū)分兩種ADVB幀的關(guān)鍵就是起始定界符SOF,幀的起始定界符為SOFi 則此幀為第一種ADVB 幀;若為SOFn,則為第二種幀。第二步的主要工作是解析出正確的輔助信息數(shù)據(jù)和視頻數(shù)據(jù)。幀狀態(tài)解析主要是對(duì)SOFi、SOFn、EOFn 和EOFt 四類有序集進(jìn)行檢測(cè),并根據(jù)相應(yīng)的有序集對(duì)幀類型做出判斷。ARINC 818 協(xié)議,起始定界符為SOFi 表示當(dāng)前幀為承載容器頭、對(duì)象0 輔助信息數(shù)據(jù)的第一幀;結(jié)束定界符為EOFt 表示當(dāng)前幀為容器幀序列的最后一幀。其主要接口如表6 所示。
表6:ADVB 幀解析模塊接口定義
行場(chǎng)同步信號(hào)的產(chǎn)生模塊中,F(xiàn)PGA 利用接受到的ADVB 幀的狀態(tài)信息來(lái)還原行場(chǎng)同步信號(hào),F(xiàn)PGA 對(duì)ADVB幀的發(fā)送順序及時(shí)間標(biāo)識(shí)精確到一個(gè)串?dāng)?shù)字,目的是為正確完整地恢復(fù)行場(chǎng)同步信號(hào),實(shí)現(xiàn)異地間時(shí)鐘同步,利用幀間的時(shí)間間隔恢復(fù)行場(chǎng)同步信號(hào)。其時(shí)序圖如圖1 所示。
圖1:行場(chǎng)同步解析時(shí)序圖
循環(huán)冗余校驗(yàn)(CRC,Cyclic Redundancy Check)是數(shù)據(jù)通信領(lǐng)域中最常用的一種差錯(cuò)校驗(yàn)碼,其特征是校驗(yàn)字段和信息字段的長(zhǎng)度可以任意指定,在ARINC 818 協(xié)議中,CRC 的計(jì)算字段是SOFi/n 到CRC 之前,其32 比特多項(xiàng)式計(jì)算方法如下:
CRC 計(jì)算模塊接口如表7 所示。
表7:CRC 計(jì)算模塊接口定義
視頻數(shù)據(jù)存入FIFO 當(dāng)中,ADVB 模塊讀取FIFO 中的視頻數(shù)據(jù)加入ADVB 幀頭和容器頭發(fā)送到FPGA 的GTX模塊并經(jīng)過(guò)光電轉(zhuǎn)換模塊發(fā)送。其中txdata[31:0]為傳送給GTX 的32bit(4 字節(jié))并行數(shù)據(jù),txcharisk[3:0]指明4 字節(jié)數(shù)據(jù)中哪個(gè)字節(jié)需要8B10B 編碼成控制碼(K 碼)。txchardispmodel[3:0]、txchardispval[3:0]為RD 控制信號(hào)。如表8 所示。
表8:ARINC818 視頻編碼模塊接口定義
ADVB 幀的生成是發(fā)送器設(shè)計(jì)中最為重要的部分,是視頻信息在光纖網(wǎng)絡(luò)中正確傳輸?shù)那疤?。按照本樣?280x1024@60Hz 24bits 分辨率視頻,ADVB 不兼容音頻傳輸,即在ADVB 數(shù)據(jù)幀中不包括Obj1。本樣例中應(yīng)用的ADVB 數(shù)據(jù)幀只有Obj0 和Obj2 幀。其接口定義數(shù)據(jù)結(jié)構(gòu)如表9 所示。
表9:ADVB 幀數(shù)據(jù)結(jié)構(gòu)
本樣例進(jìn)行ADVB 幀的封裝和發(fā)送都是按照一定的視頻顯示時(shí)序標(biāo)準(zhǔn)進(jìn)行。1280x1024@60Hz 24bits 分辨率視頻按行同步模式構(gòu)建ADVB 數(shù)據(jù)幀的時(shí)序參考如表10 所示。
表10:ADVB 數(shù)據(jù)幀時(shí)序
ARINC 818 編碼模塊的主要功能是將寫入該模塊的視頻數(shù)據(jù)封裝為ADVB 傾并發(fā)送。本樣例的工作方式為行同步類型。在行同步工作模式中,發(fā)送器依據(jù)寫入視頻的場(chǎng)同步(Vertical Sync)和行同步(Horizontal Sync)信號(hào)封裝ADVB幀。
視頻編碼的循環(huán)冗余CRC 校驗(yàn)方法與視頻解碼相同。
本文完成了ARINIC 818 視頻傳輸協(xié)議內(nèi)容的研究并提供了一種基于FPGA 的ARINC 818 編解碼設(shè)計(jì)方法,實(shí)現(xiàn)了視頻數(shù)據(jù)ARINC 818 協(xié)議標(biāo)準(zhǔn)封裝轉(zhuǎn)換。