黃德祥,湯愛武,徐 升,潘建兵,林仕材,胡愛民
(深圳航天科技創新研究院,深圳 518057)
近年來,無人機在搶險救災、反恐應急、交通巡查與疏導和地質勘探等領域得到廣泛應用。無人機采集的實時視頻是在上述應用領域中尤為重要的信息。圖像的清晰度、實時性、高可靠性與連貫性等性能指標是影響地面人員進行決策的重要因素[1]。JPEG2000由于其壓縮算法的特點,能彌補傳統視頻壓縮算法(如H264、MPEG4等)在無線傳輸上的缺陷[2-5],受到了業界的關注。而由于 JPEG2000壓縮算法的復雜性,使得其解壓運算復雜、計算量大,對運算設備要求較高,傳統采用PC進行軟件解壓縮或FPGA加專用解碼芯片的應用模式很難保證其實時性,并且資源占用率高、功耗大、體積笨重和靈活性差[6],從而限制了JPEG2000壓縮標準在無線傳輸領域的發展與應用,因此研究適合于基于JPEG2000的無人機實時視頻圖像解壓系統具有重大的意義。
本文所述解碼系統是手持式一體化測控站的一部分,無線鏈路系統在小于0.6 Mb/s的有限帶寬條件下,傳輸一路分辨率為720×576,幀率為25 FPS的JPEG2000視頻壓縮數據,系統要求在保證對無人機的實時控制及遙測數據計算的基礎上,視頻信號的解碼與回放控制在50 ms以內。
基于上述需求,設計了一種基于ADV212的無人機實時視頻解壓縮系統,運用于無人機手持式一體化測控站當中,使得JPEG2000視頻圖像的解壓縮擺脫對計算設備的高要求,進而實現小型化、輕型化。
ADV212是 ADI公司推出的一款符合 ISO/IEC15444-1圖像壓縮標準的單芯片JPEG2000編解碼芯片,采用小波變換和自適應算術編解碼技術,具有高可靠性、配置靈活、支持多種視頻格式和功耗低等特點[7]。
ADV212主要包括1個專門的小波變換引擎、3個熵編解碼器、1個片內存儲器和1個內置精簡指令集(RISC)處理器,如圖1所示。

圖1 ADV212內部示意
小波變換引擎基于AD公司的SURF專利技術,可實現6級小波變換,在解碼模式下,從內部存儲器中讀取小波變換系數,并通過解碼計算,得到編碼前的原始數據。熵編解碼器用來對小波系數的編碼塊進行背景建模和算術編碼。片內存儲器用來存儲小波系數數據和臨時的代碼塊特征數據,以及用于RISC處理器的程序和數據存儲。RISC處理器用來配置、控制和管理其他專用硬件模塊以及分解和產生JPEG2000視頻流。內部DMA引擎提供存儲器之間的高帶寬傳輸以及各模塊和存儲器之間的高性能傳輸[8]。
系統主要由3部分組成:數據預處理及邏輯控制單元、ADV212解碼單元及視頻輸出接口,如圖2所示。數據預處理及邏輯控制單元通過以太網口與外部的數據接收單元連接,接收圖像數據,解析通信協議得到有效的JPEG2000圖像數據,送入ADV212解碼單元,并控制ADV212解碼單元。ADV212解碼單元主要完成JPEG2000圖像數據的解壓縮工作,輸出 BT.656信號。視頻輸出接口主要把ADV212解碼輸出的BT.656格式的視頻經轉換后送入顯示器,或者直接接入到其他處理器當中[9]。

圖2 JPEG2000解碼系統
本解碼系統作為無人機一體化測控站的主要功能子系統,從系統的功能性、易維護性及系統的功耗、體積等方面考慮,采用 32位處理器結合ADV212的方式來實現。
從上述手持式一體化測控站要完成的各種功能的要求,并考慮到性能、溫度、功耗及兼容性等方面的設計要求,系統邏輯控制單元選擇Freescale公司的i.MX6Quad芯片。這是一款基于ARM Cortex-A9核心的性能強大的低功耗32位4核處理器,主頻高達1.2 GHz,內置 1 MB 的 L2 cache,支持浮點運算。i.MX6Quad芯片可直接與DDR SDRAM連接,內置功能強大的圖像及視頻處理引擎,內置多種接口,如ENET以太網接口和SPI接口等,在滿足實時控制無人機及處理遙測數據的基礎上,可以實現與ADV212的無縫連接。
由于無人機下傳的視頻為720×576的JPEG2000視頻圖像,所以本系統采用一片ADV212解壓縮器件,輸出的YCbCr數據采取4∶2∶2的格式。為了盡可能地降低功耗,依據ADV212輸出BT.656標準的信號,外接27 MHz的有源晶振,輸入到ADV212的 MCLK引腳,以供 ADV212內部的JPEG2000處理時鐘及內嵌的MCU時鐘使用。
C57/BL6小鼠成瘤率為100%。小鼠皮下接種LLC細胞后d10,皮下移植瘤直徑長至約6 mm,質硬,活動度差,腫瘤呈膨脹性生長,呈類球形。
系統要求將視頻直接顯示在屏幕上,故需要將ADV212輸出的數據進行轉換,以直接顯示在LCD面板上。TW8816是一款高集成度的LCD顯示接口芯片,其內置8位的MCU及CCFL/LED控制器,支持CVBS、S-Video、YPbPr和RGB等模擬信號以及24位 RGB、8/16/24位 YCbCr數字信號[9]。
如圖3所示,i.MX6Quad通過以太網接口與外部無線接收單元連接,通過擴展的16位總線與ADV212連接。i.MX6Quad完成通信協議的解析、圖像數據的組幀及存儲等任務,并通過16位HOST總線讀寫ADV212內部的相關寄存器的方式來完成ADV212初始化、代碼裝載、參數配置以及傳遞壓縮和解壓縮數據。

圖3 硬件原理
解碼工作時,i.MX6Quad通過 HOST接口把JPEG2000數據寫入 ADV212的 CODE FIFO中,ADV212內嵌的RISC處理器把JPEG2000數據從CODE FIFO搬動到內部的RAM,待一幀JPEG2000圖像數據接收完成后,數據被送入熵編解碼器,還原小波系數數據,而后經過小波變換引擎,最后形成YUV圖像數據放在PIXEL接口中,圖像數據格式配置成BT.656格式,送入TW8816芯片中,視頻數據最終在 LCD 面板上輸出[10,11]。
解碼系統軟件流程如圖4所示。

圖4 解碼軟件流程
根據硬件設計,解碼系統采用16位HDATA輸入、VDATA輸出模式。ADV212內部有直接寄存器、間接寄存器、存放固件及其參數的內存區域。在對ADV212的操作過程中,會對內部直接或者間接寄存器進行訪問。對直接寄存器的訪問操作相對簡單,通過總線直接訪問對應的直接寄存器即可。而對間接寄存器的訪問相對復雜,需要先將間接寄存器的地址分高低16位寫入STAGE和IADDR寄存器當中,再訪問IDATA寄存器,其流程如圖5所示。

圖5 ADV212讀/寫間接寄存器流程
i.MX6Quad操作ADV212的內部寄存器實現對ADV212的初始化、固件下載、碼流下載和開始/結束解碼等操作,其操作流程如圖6所示。

圖6 ADV212初始化、固件下載和解碼流程
ADV212的初始化工作始于硬件復位,通過i.MX6Quad的GPIO,向ADV212的復位腳發送一個負脈沖信號即可完成硬件復位工作,在全程正常工作過程中,需保持ADV212的復位腳為高電平。將PLL_HI與PLL_LO兩個直接寄存器分別設置為0x0008與0x0004來設置ADV212內部PLL時鐘為27 MHz,并且設置完這2個寄存器之后,在后續初始化操作進行之前,必須有至少20 μs的延遲,否則會導致錯誤。接著設置BOOT寄存器為0x008A,設定為非主機模式。設置MMODE寄存器為0x05,設定間接寄存器訪問模式為16位及地址自增寬度為16位模式。最后設置BUSMODE寄存器為0x05,設定內部總線寬度為16位。
ADV212的固件有編碼用和解碼用2種。下載解碼固件時將STAGE寄存器設置為0x0005,IADDR寄存器設置為0x0000,然后將固件按順序寫入IDATA寄存器中即可,ADV212內部會自動將IDATA寄存器的數據搬運到內部的RAM當中。將全部固件數據寫入IDATA之后,需要設置BOOT寄存器發起一個軟復位操作,然后重新設置MMODE和BUSMODE寄存器。接著需要設置固件的運行參數,將STAGE和IADDR寄存器分別設置為0x0005和0x7F00,依次往IDATA寄存器寫入從偏移量0x00~0x0B的參數設置值。接著設置EIRQIE寄存器為0x0400,以使能0號軟件中斷。在設置完固件參數之后需要對下載的固件進行校驗,以檢驗是否正確,校驗是通過讀取應用程序ID來進行,查詢EIRQFLG寄存器,查看0號軟件中斷是否發生,如果0號軟件中斷發生,則讀取SWFLG寄存器的值,與解碼應用程序ID(0xffa2)進行比較,如果兩者一致,則說明固件及固件參數已經正確下載及設置,否則需要重新進行初始化及固件下載等操作[12]。
ADV212的解碼工作,首先需要設置EIRQFLG寄存器,清除所有中斷標志。然后按順序往CODE寄存器中寫入JPEG2000數據。因為在初始化及設置解碼參數時已經設置了模式,所以只需不斷地往CODE寄存器寫入 JPEG2000數據,ADV212的VDATA接口會輸出BT.656的信號。
設計的JPEG2000解碼系統已經應用于自主研發的一體化手持測控站中。在模擬測試中,運用自制的測試設備,通過往本解碼系統輸入壓縮的JPEG2000圖像數據,計算不同復雜度的完整壓縮圖像輸入到LCD顯示屏上顯示圖像的時間差,多次測試結果表明,視頻的延遲時間為40~48 ms。在實際使用中,視頻圖像延遲時間120~150 ms,由于無人機系統中圖像采集設備的延遲以及無線圖傳的發射端和接收端對圖像數據的處理造成的延遲為80~100 ms,由此可以得出本解碼系統的視頻延遲時間在50 ms以內。
通過測量解碼系統的輸入電壓與電流,計算各個單元的功耗,數據預處理及邏輯控制單元的平均功耗為0.6 W,SDRAM存儲器單元功耗為0.4 W,ADV212解碼單元功耗為0.1 W,其他約為 0.2 W,總計1.3 W。
在對比實驗中,采用了FPGA結合ADV212的方式及軟件解碼等另外2種方式進行對比。軟件解碼方式采用開源的Kakadu軟件,硬件平臺采用主頻為2.67 GHZ的酷睿i5 CPU,內存為4 GB的主流硬件配置。實驗中采用了Altera公司的EP3C55-F484C8。測試結果如表1所示。由于FPGA的邏輯單元及用戶IO不同,會導致資源占用率有較大的不同,故表1未給出其CPU及內存的資源占用率。

表1 不同解碼方法測試對比
基于i.MX6Quad與 ADV212的解碼系統實現了JPEG2000視頻圖像的實時解壓,系統資源占用率低,且實時性較好,能夠解決傳統JPEG2000解壓縮方式中存在的可靠性差、體積大、功耗高和軟件復雜等缺陷。該解碼系統設計能夠很好地應用于微小型無人機的測控站系統當中,以簡化無人機的測控系統,使無人機的操控更加簡單方便,最終將使得無人機更加普及。 ■
[1]李艷斌.通信電子戰面臨的挑戰[J].無線電通信技術,2013,39(2):1 -3.
[2]高保生,朱良彬.無人機地空鏈路信道特性與寬帶數據傳輸[J].無線電工程,2011,41(9):4 -6.
[3]崔弘珂.一種空間環境下的TCP傳輸技術研究[J].無線電通信技術,2011,37(4):21 -24.
[4]孫志剛,周 越,申冀湘.一種新型小型化寬帶無人機機載智能天線研究[J].無線電工程,2013,43(5):42-44.
[5]湯一峰.h.264標準暫不適用于無人機實時視頻數據傳輸[J].航空電子技術,2012,43(2):56 -58.
[6]張 鋮,楊奎河,李雅麗,等.視頻中運動目標的檢測及數據安全傳輸[J].無線電通信技術,2012,38(2):55-58.
[7]王 丹,楊允基.ADV212編解碼芯片原理及應用[J].艦船電子工程,2008,28(5):106 -109.
[8]王 珊.基于ARM9的近程無人機數據采集系統[J].無線電工程,2013,43(8):40 -43.
[9]王保杰,彭 力.嵌入式Linux車載智能中心的設計與實現[J].自動化儀表,2013,34(9):19 -22.
[10]丁建橋,周 磊,張正華.基于IMX53的視頻編碼的研究與應用[J].無線電通信技術,2014,40(2):86 -89.
[11]劉春風,王惠平,潘利明.基于ADV212的高清視頻壓縮系統設計[J].電子設計工程,2010,18(3):65 -67.
[12]鄧寰偉,趙寶軍.基于ADV212的實時圖像壓縮系統[J].電視技術,2008,32(12):35-37.