劉宏娟,孫恒義,賀若飛,李 瑞
(1.西安愛(ài)生技術(shù)集團(tuán)公司,西安 710065;2.西北工業(yè)大學(xué)第365 研究所,西安 710065)
當(dāng)前國(guó)內(nèi)外主流的在役軍用中小型無(wú)人機(jī)系統(tǒng)由于飛機(jī)規(guī)模重量和視距數(shù)據(jù)鏈/衛(wèi)通鏈路帶寬的限制,任務(wù)載荷以單裝載為主,因此,地面站的信息處理系統(tǒng)主要針對(duì)單獨(dú)光電/多光譜圖像或單獨(dú)雷達(dá)/相機(jī)圖片,數(shù)據(jù)量低,數(shù)據(jù)類(lèi)型少。出于工程實(shí)踐中增強(qiáng)可靠性和降低成本的考慮,主流地面站通常采用軟件解碼或較為簡(jiǎn)單的硬件解碼方案,主要針對(duì)單一單路的數(shù)據(jù)類(lèi)型。
隨著機(jī)載設(shè)備小型化和數(shù)據(jù)鏈帶寬的快速發(fā)展,無(wú)人機(jī)同時(shí)裝載多種任務(wù)設(shè)備技術(shù)成為未來(lái)無(wú)人機(jī)發(fā)展的重要趨勢(shì)[1-6]。與之相對(duì)應(yīng)的,在有限空間和計(jì)算資源的條件下完成多種海量復(fù)合任務(wù)信息的實(shí)時(shí)解碼、顯示和分發(fā),成為了新一代地面控制站信息處理系統(tǒng)的新要求和新趨勢(shì)。
相比當(dāng)前較為簡(jiǎn)單的軟硬件方案,新一代地面站必須從數(shù)據(jù)傳輸、存儲(chǔ)和處理等方面進(jìn)行全面提升。本文主要關(guān)注地面站海量任務(wù)信息處理的解決方案。
通用偵察型無(wú)人機(jī)主要攜帶晝夜光電偵察載荷、多光譜偵察載荷、SAR 雷達(dá)載荷以及數(shù)碼相機(jī)載荷。晝夜光電偵察載荷實(shí)現(xiàn)可見(jiàn)光與紅外視頻的實(shí)時(shí)獲取,多光譜偵察載荷實(shí)現(xiàn)多種類(lèi)型光譜成像融合視頻的實(shí)時(shí)獲取,SAR 雷達(dá)載荷將地面各種地形進(jìn)行成像為圖片,對(duì)于數(shù)碼相機(jī)載荷,可實(shí)現(xiàn)單幅或?qū)挿鶖?shù)碼照片的拍攝[5-8]。
簡(jiǎn)單而言,無(wú)人機(jī)偵察信息按照信息形式可主要分為兩類(lèi),即高實(shí)時(shí)性壓縮視頻數(shù)據(jù),包括可見(jiàn)光/紅外/多光譜視頻等,和高分辨率巨幅圖片數(shù)據(jù),包括SAR 雷達(dá)圖片數(shù)據(jù)和寬幅數(shù)碼照片等。
同時(shí),由于無(wú)人機(jī)同時(shí)裝載的任務(wù)載荷增多,信息源數(shù)量也大幅增加。根據(jù)任務(wù)載荷的不同配置,可能同時(shí)存在多種下傳數(shù)據(jù)模式組合。例如雷達(dá)+光電雙裝載(1 路黑白圖片+2 路視頻+前視攝像頭+后視攝像頭,1 路圖片4 路視頻);雷達(dá)+數(shù)碼相機(jī)(1 路黑白圖片+1 路彩色圖片+前視攝像頭+后視攝像頭,2 路圖片2 路視頻)等。因此,地面信息處理系統(tǒng)必須能同時(shí)處理多路任務(wù)信息數(shù)據(jù)。
為滿(mǎn)足上述需求,通常有兩種備選方案:軟件方案和硬件方案。
軟件方案是采用軟件解碼方式對(duì)多路視頻和圖片進(jìn)行同時(shí)處理,性能方面依賴(lài)對(duì)多核CPU 性能的充分挖掘和大量?jī)?nèi)存用于存儲(chǔ)解碼過(guò)程中間數(shù)據(jù)。優(yōu)點(diǎn)是不占用額外空間,實(shí)現(xiàn)簡(jiǎn)單,運(yùn)用開(kāi)源解碼庫(kù),成本也較低。缺點(diǎn)是對(duì)計(jì)算機(jī)運(yùn)算負(fù)擔(dān)重,會(huì)擠占后續(xù)情報(bào)處理計(jì)算資源,同時(shí)計(jì)算機(jī)長(zhǎng)期運(yùn)行在高負(fù)載模式,易降低長(zhǎng)時(shí)間工作性能和可靠性。
本文提出的硬件方案采用獨(dú)立板卡對(duì)上述任務(wù)信息進(jìn)行解碼。采用硬件解壓技術(shù),功能相對(duì)獨(dú)立,可靠性高,不占用地面站主控計(jì)算機(jī)資源,執(zhí)行效率高,實(shí)時(shí)性好。
本文從工作原理、視頻解碼、圖片解碼和差錯(cuò)控制等多個(gè)方面對(duì)本信息采集解壓設(shè)備進(jìn)行介紹。最后對(duì)硬件和軟件方案進(jìn)行試驗(yàn)對(duì)比。
偵察信息解碼系統(tǒng)通過(guò)網(wǎng)絡(luò)接收數(shù)據(jù)鏈實(shí)時(shí)下傳的偵察信息復(fù)合數(shù)據(jù),該復(fù)合數(shù)據(jù)包括機(jī)載H.264 壓縮的四路視頻數(shù)據(jù)與機(jī)載JPEG2000[9-10]壓縮的兩路圖片數(shù)據(jù)。偵察信息解碼系統(tǒng)包括信息采集解壓設(shè)備與配套上位機(jī)調(diào)試軟件圖像顯示軟件。
信息采集解壓設(shè)備安裝在地面控制站任務(wù)監(jiān)控計(jì)算機(jī)內(nèi),通過(guò)PCIE 接口與計(jì)算機(jī)相連接,接收地面控制站數(shù)據(jù)鏈的實(shí)時(shí)復(fù)合數(shù)據(jù),進(jìn)行數(shù)據(jù)分類(lèi)同步與解碼,地面控制站內(nèi)部計(jì)算機(jī)通過(guò)圖像顯示軟件,對(duì)高清視頻圖像進(jìn)行顯示,系統(tǒng)組成如圖1所示。
其中,信息采集解壓設(shè)備,采用嵌入式軟件編程方式,完成偵察信息的采集,分類(lèi)同步、組幀與解碼傳輸?shù)裙ぷ鳌?/p>
圖1 系統(tǒng)組成圖
信息采集解壓設(shè)備利用網(wǎng)絡(luò)接口接收偵察復(fù)合數(shù)據(jù),將采集到的數(shù)據(jù)送入核心處理器,利用FPGA 硬件進(jìn)行相應(yīng)的數(shù)據(jù)分類(lèi)同步,在處理器中進(jìn)行圖像信號(hào)解碼處理,得到解碼流數(shù)據(jù);通過(guò)PCIE接口將解碼后的數(shù)據(jù)傳輸至地面控制站計(jì)算機(jī)中。
信息采集解壓設(shè)備主要包括2 個(gè)FPGA、2 個(gè)ADV212[11-13]及1 個(gè)HI3536[14-15],可同時(shí)對(duì)4 路H.264 碼流(4 路1080P 高清)和2 路JPEG2000 圖像進(jìn)行解壓縮。主FPGA 通過(guò)PCIE 接收J(rèn)PEG2000 圖片壓縮數(shù)據(jù),然后進(jìn)行位同步識(shí)別信息頭檢測(cè)碼流是何種類(lèi)型圖片,根據(jù)圖片格式配置不同的ADV212,同時(shí)將去掉信息頭的圖片數(shù)據(jù)發(fā)送到ADV212 進(jìn)行解壓,ADV212 解壓后會(huì)把解壓縮后的YUV 數(shù)據(jù)發(fā)回到主FPGA。副FPGA 負(fù)責(zé)將SRIO 獲取的視頻轉(zhuǎn)成PCIE 2X 傳給HI3536 進(jìn)行解壓處理,同時(shí)將解壓縮后的視頻數(shù)據(jù)通過(guò)8X 的SRIO 傳輸給主FPGA。最后主FPGA 通過(guò)PCIE 將解碼后的數(shù)據(jù)傳送至圖像顯示軟件。
1 路千兆網(wǎng)絡(luò)和1 路RS232 是板卡的調(diào)試接口,主要用于板卡的維護(hù)。1 路PCI Express 2.0 8x 總線(xiàn)接口,用于數(shù)據(jù)交互。系統(tǒng)工作原理如圖2 所示。
圖2 系統(tǒng)工作原理圖
信息采集解壓設(shè)備硬件平臺(tái)的核心處理器為海思3536 芯片與ADV212 芯片,
使用HI3536 實(shí)時(shí)、高效地解壓縮4 路1080PH.264 碼流。使用ADV212 芯片對(duì)2 路JPEG2000 壓縮數(shù)據(jù)進(jìn)行解壓。
HI3536 內(nèi)部集成有ARM 子系統(tǒng),其中ARM子系統(tǒng)的內(nèi)核為A ARM Cortex A17,具有4 個(gè)處理器,主頻為1.4 GHz,處理器中集成獨(dú)立的32 kB L1 I-Cache,32 kB L1 D-Cache,以及1 MB L2 Cache,用于運(yùn)行外設(shè)驅(qū)動(dòng)及應(yīng)用程序;該芯片是一個(gè)面向多通道HD(8M/4M/1080P/720P)NVR 的專(zhuān)業(yè)片上系統(tǒng)。HI3536 高性能H.265/H.264 視頻編解壓縮引擎、具有各種復(fù)雜圖形處理算法、HDMI/VGA-HD 輸出和各種外圍接口的高性能視頻/圖形處理引擎。
ADV212 針對(duì)視頻和高帶寬圖像壓縮應(yīng)用,可實(shí)現(xiàn)JPEG2000 圖像壓縮標(biāo)準(zhǔn)的計(jì)算密集型操作,并且提供完全兼容、適合多數(shù)應(yīng)用的碼流產(chǎn)生方法,運(yùn)用它的解壓能力,高效實(shí)時(shí)地解壓JPEG2000圖像[9]。
表1 硬件器件性能環(huán)境
信息采集解壓設(shè)備加電之后,控制電源使能順序,硬件驅(qū)動(dòng)初始化、FPGA 初始化、HI3536 初始化、各種接口初始化,啟動(dòng)時(shí)間小于20 s。如果初始化出現(xiàn)異常,復(fù)位板卡重啟板卡初始化。
初始化包括3 部分內(nèi)容:
1)初始化主FPGA,在主FPGA 上初始化PCIE總線(xiàn)和I2C 總線(xiàn),通過(guò)I2C 來(lái)配置ADV212 芯片,同時(shí)加載各種必需的驅(qū)動(dòng),加載完成后自動(dòng)啟動(dòng)可執(zhí)行程序;(主FPGA 的PCIE 速率為4 Gb/s;主FPGA初始化I2C,主FPGA 板為主機(jī),ADV212 為從機(jī);)
2)初始化副FPGA,加載驅(qū)動(dòng)、初始化PCIE 總線(xiàn)、運(yùn)行可執(zhí)行文件,為接下來(lái)的傳輸與短時(shí)間存儲(chǔ)做準(zhǔn)備;
3)初始化HI3536,初始化PCIE 總線(xiàn)、加載驅(qū)動(dòng),啟動(dòng)可執(zhí)行文件。
信息采集解壓設(shè)備初始化完成。
3.2.1 H.264 碼流采集同步
主FPGA 通過(guò)PCIE 接收H.264 視頻碼流,按每包16 kB 數(shù)據(jù)逐包接收并將數(shù)據(jù)轉(zhuǎn)化為每包128 bit數(shù)據(jù)。按照協(xié)議進(jìn)行位同步識(shí)別信息頭,檢測(cè)碼流是否符合協(xié)議要求(分辨率為1 920*1 080、1 280*720 或640*512),若符合輸入要求將碼流數(shù)據(jù)送至副FPGA。
采集數(shù)據(jù)步驟包括:
1)接收網(wǎng)絡(luò)接口輸出的數(shù)據(jù)包;
2)H.264 視頻數(shù)據(jù)采用dma 方式傳輸,模塊申請(qǐng)一個(gè)緩存fifo,用于不同時(shí)域之間的數(shù)據(jù)轉(zhuǎn)換;
3)讀寫(xiě)指令采用訪問(wèn)寄存器方式,生成一個(gè)32 位BAR0 空間,上位機(jī)往對(duì)應(yīng)地址里寫(xiě)數(shù)據(jù)發(fā)送讀寫(xiě)指令;
4)輸出128 bit 位寬的單幅視頻壓縮數(shù)據(jù)包。
3.2.2 H.264 碼流解碼
HI3536 進(jìn)行第2 次解析H.264 碼流信息頭,根據(jù)信息頭信息獲取輸入H.264 視頻的分辨率,然后根據(jù)H.264 視頻的分辨率進(jìn)行硬件解碼。副FPGA將壓縮碼流發(fā)送到HI3536 進(jìn)行解碼,解碼得到的YUV 數(shù)據(jù)再經(jīng)過(guò)副FPGA 發(fā)送到主FPGA,由主FPGA 通過(guò)PCIE 發(fā)回到圖像顯示軟件[10]。數(shù)據(jù)解析流程如下頁(yè)圖3 所示。
解析壓縮碼流步驟包括:
1)解析碼流信息頭,找出H.264 視頻碼;
2)第2 次解析碼流信息頭,識(shí)別H.264 視頻的分辨率。
3)主FPGA 中第1 次核對(duì)協(xié)議規(guī)定的信息頭,找到H.264 視頻碼流;
4)把H.264 數(shù)據(jù)經(jīng)由副FPGA 傳到HI3536;
5)再次對(duì)信息頭進(jìn)行位同步,根據(jù)信息頭解碼得到的YUV 數(shù)據(jù)。
圖3 數(shù)據(jù)解析流程圖
3.2.3 H.264 解壓碼流發(fā)送
HI3536 解壓縮H.264 視頻碼流后會(huì)轉(zhuǎn)化位YUV 格式數(shù)據(jù),HI3536 將YUV 數(shù)據(jù)傳輸?shù)礁盕PGA,副FPGA 接收到Y(jié)UV 格式數(shù)據(jù)后,把YUV 數(shù)據(jù)發(fā)送到主FPGA,主FPGA 在收到Y(jié)UV 數(shù)據(jù)后將數(shù)據(jù)暫時(shí)存放在DDR3 中,通過(guò)PCIE 傳送到圖像顯示軟件進(jìn)行顯示。發(fā)送解壓數(shù)據(jù)流程如圖4所示。
圖4 發(fā)送解壓數(shù)據(jù)流程圖
3.3.1 數(shù)據(jù)解析檢測(cè)
主FPGA 接收PCIE 發(fā)送來(lái)的每一包數(shù)據(jù),當(dāng)接收到一定長(zhǎng)度的數(shù)據(jù)包后,會(huì)對(duì)數(shù)據(jù)進(jìn)行位同步處理解析數(shù)據(jù)包頭數(shù)據(jù)(每一幀JPEG2000 圖片碼流均包含一個(gè)的數(shù)據(jù)包頭),分析包頭數(shù)據(jù),將JPEG2000 圖片的包頭和包尾剔除,保留有效的JPEG2000 圖片碼流。
檢測(cè)到ADV212 發(fā)送緩沖區(qū)為空后,從主FPGA 的DDR3 中讀出去包頭的JPEG2000 壓縮數(shù)據(jù),識(shí)別JPEG2000 圖片的幀頭數(shù)據(jù),若為FFFFFFF0則表示為黑白圖片,若為FFFFFFF1 則表示為彩色圖片,分別用指定的ADV212 芯片實(shí)現(xiàn)圖片解碼[6]。解析檢測(cè)流程如圖5 所示。
解析檢測(cè)步驟為:
1)從DDR3 緩存讀取碼流數(shù)據(jù);
2)區(qū)分圖片壓縮碼流類(lèi)別(黑白和彩圖)識(shí)別幀頭信息,根據(jù)JPEG2000 協(xié)議確認(rèn)圖片類(lèi)型;
3)校驗(yàn)碼流數(shù)據(jù)是否完整;
4)若碼流數(shù)據(jù)完整,讀取幀長(zhǎng)度信息,取相應(yīng)長(zhǎng)度大小的數(shù)據(jù),查詢(xún)特有的幀尾標(biāo)識(shí)(FFD9),校驗(yàn)圖片壓縮碼流是否完整。
5)若碼流數(shù)據(jù)不完整,輸出復(fù)位信號(hào),復(fù)位碼流發(fā)送的緩存FIFO,該幀圖片放棄解碼。
圖5 數(shù)據(jù)解析檢測(cè)流程圖
3.3.2 JPEG2000 壓縮數(shù)據(jù)解碼
按照ADV212 芯片要求配置好數(shù)據(jù)發(fā)送時(shí)序,將一幀JPEG2000 壓縮圖片發(fā)送到ADV212,在ADV212 進(jìn)行硬件解碼[12]。壓縮數(shù)據(jù)解碼流程如下頁(yè)圖6 所示。
1)接收來(lái)自圖片幀數(shù)據(jù)檢測(cè)模塊輸出的碼流數(shù)據(jù);
2)將一幀碼流放進(jìn)緩存FIFO,進(jìn)行時(shí)域與位寬轉(zhuǎn)換;
3)接收碼流發(fā)送緩存FIFO 復(fù)位信號(hào);
4)將碼流送進(jìn)ADV212 芯片進(jìn)行解碼;
5)接收緩存FIFO 復(fù)位信號(hào);若復(fù)位無(wú)效,表明碼流數(shù)據(jù)準(zhǔn)確,按ADV212 時(shí)序要求將碼流發(fā)送至ADV212 進(jìn)行當(dāng)前幀解碼;若復(fù)位信號(hào)有效,表明碼流數(shù)據(jù)有誤,復(fù)位緩存FIFO,清空數(shù)據(jù),放棄當(dāng)前幀的解碼。
6)ADV212 解壓縮JPEG2000 后會(huì)產(chǎn)生YUV格式的數(shù)據(jù),解壓縮后的數(shù)據(jù)會(huì)發(fā)送至主FPGA,并存儲(chǔ)在DDR3 中,通過(guò)PCIE 傳送到圖像顯示軟件進(jìn)行顯示。
圖6 壓縮數(shù)據(jù)解碼流程圖
盡管數(shù)據(jù)鏈具有一定的糾錯(cuò)能力,使數(shù)據(jù)傳輸?shù)恼`碼率能夠低于10-6的水平,但對(duì)于大流量的實(shí)時(shí)視頻和圖像數(shù)據(jù),僅靠傳輸段的數(shù)據(jù)糾錯(cuò)仍會(huì)出現(xiàn)數(shù)據(jù)誤碼。如果仍然選擇在傳輸段增加糾錯(cuò)碼,會(huì)顯著增大傳輸?shù)念~外數(shù)據(jù)開(kāi)銷(xiāo),變相降低帶寬,工程中使用并不劃算。
對(duì)于實(shí)時(shí)視頻,數(shù)據(jù)誤碼表現(xiàn)為畫(huà)面局部短暫花屏。實(shí)際使用中,只要數(shù)據(jù)鏈保持基本穩(wěn)定,這種短暫花屏基本不影響偵察質(zhì)量,可以不予處理。
對(duì)于大幅的JPEG2000 圖片,某幾個(gè)字節(jié)的誤碼會(huì)引起整幅圖片解碼失敗,只能重新下傳,浪費(fèi)大量時(shí)間和資源。因此,對(duì)于圖片傳輸必須進(jìn)行差錯(cuò)控制。
圖片差錯(cuò)控制的主要策略是將大幅圖片進(jìn)行分包壓縮,將小包下傳在地面站解碼。小包解碼失敗時(shí),整幅圖像大部分仍然能夠成功解碼顯示,這時(shí)只需將解碼錯(cuò)誤的包序號(hào)重新上傳至無(wú)人機(jī),指示無(wú)人機(jī)將相應(yīng)包數(shù)據(jù)重新下傳,就可以完成整幅圖像的完整解碼。
通過(guò)對(duì)軟硬件平臺(tái)的搭建,應(yīng)用程序可執(zhí)行文件及一些配置腳本文件的編譯,制作了根文件系統(tǒng),與內(nèi)核鏡像一起燒寫(xiě)到硬件平臺(tái)Flash 中,上電啟動(dòng)執(zhí)行代碼,得到如下部分實(shí)驗(yàn)結(jié)果。
通過(guò)啟動(dòng)上位機(jī)圖像顯示軟件,得到的4 路視頻圖像,如圖7 所示。2 路圖片圖像雷達(dá)圖像與數(shù)碼照片如圖8 所示。
將本文方案與純軟件解碼方式進(jìn)行了性能對(duì)比。純軟件解碼采用了開(kāi)源Kakadu 軟件對(duì)JPEG2000 進(jìn)行解碼,H.264 視頻采用ffmpeg 解碼庫(kù)進(jìn)行解碼。本方案與純軟件解碼對(duì)比如表1 所示。
圖7 4 路視頻圖像畫(huà)面
圖8 2 路圖片圖像畫(huà)面
表1 軟硬件解碼方案性能對(duì)比
顯然硬件方案在運(yùn)行效能方面大幅降低了主控機(jī)的計(jì)算負(fù)擔(dān)。從系統(tǒng)設(shè)計(jì)的角度講,硬件方案分散了系統(tǒng)核心節(jié)點(diǎn)的功能負(fù)擔(dān),有利于提升系統(tǒng)可靠性和健壯性。同時(shí),軟件方案可以作為硬件方案的備份,提高地面站信息處理冗余度。
本設(shè)計(jì)基于硬件板卡的偵察信息解碼系統(tǒng),經(jīng)過(guò)實(shí)驗(yàn)測(cè)試,系統(tǒng)可靠穩(wěn)定,實(shí)時(shí)性好,支持多種載荷任務(wù)數(shù)據(jù)分類(lèi)解碼,采取這種硬件板卡解碼的形式,模塊設(shè)計(jì)靈活,硬件與軟件相互獨(dú)立的,配置靈活、裁剪性強(qiáng)。通過(guò)對(duì)當(dāng)前主流的偵察信息壓縮方式解壓的二合一解碼設(shè)計(jì),同步解壓4路H.264 視頻編碼流與2 路JPEG2000 圖片,將信息解碼功能集中,大大減輕了地面控制站內(nèi)部計(jì)算機(jī)的工作壓力。
將該系統(tǒng)應(yīng)用在飛行試驗(yàn)中,通過(guò)接收數(shù)據(jù)鏈實(shí)時(shí)傳輸?shù)膫刹煨畔?fù)合數(shù)據(jù),很好地解決了地面控制站內(nèi)部資源不足的情況,且此解壓系統(tǒng)組件靈活,功能擴(kuò)展性強(qiáng),標(biāo)準(zhǔn)化程度高,方便在多型無(wú)人機(jī)系統(tǒng)地面控制站內(nèi)推廣使用。飛行結(jié)果表明4 路1 080 p 分辨率的視頻,視頻流暢,實(shí)時(shí)性高,JPE G2000 圖片畫(huà)面清晰。