基于ADV212的無人機遙感紅外視頻壓縮系統(tǒng)設(shè)計
作者 宋哲 朱鐵林 張志芳 天津航天中為數(shù)據(jù)系統(tǒng)科技有限公司(天津 300457)
本文引用地址:http://www.ex-cimer.com/article/201805/380758.htm宋哲(1987-),男,碩士,工程師,研究方向:圖像處理、無線通信。
摘要:針對無人機遙感紅外相機傳輸視頻實時性以及機載存儲空間有限等問題,提出了一種FPGA結(jié)合專用芯片ADV212的視頻壓縮處理方案,該方案可對720×576分辨率的紅外視頻進行實時壓縮并可通過串口接收外部命令調(diào)整視頻壓縮比,FPGA配置ADV212初始化以及接收ADV212壓縮后的視頻數(shù)據(jù),數(shù)據(jù)經(jīng)過FPGA處理后傳輸?shù)綑C載收發(fā)信機并傳回地面設(shè)備。測試結(jié)果表明,系統(tǒng)工作穩(wěn)定可控,視頻壓縮實時性強,可廣泛應(yīng)用于無人機遙感領(lǐng)域。
0 引言
無人機在高空飛行時,機載遙感相機實時采集的視頻數(shù)據(jù)量十分龐大,對其處理方法通常有兩種:一是利用無人機機載存儲設(shè)備直接存儲視頻數(shù)據(jù),待無人機降落后再處理,然而機載存儲空間畢竟有限,因此需將視頻數(shù)據(jù)進行壓縮后再存儲;二是通過無線數(shù)據(jù)鏈設(shè)備實時地將視頻數(shù)據(jù)傳回地面,而實際可用的無線通信帶寬非常有限,為了滿足實時性的要求,必須將視頻數(shù)據(jù)進行壓縮后再進行無線傳輸[1]。傳統(tǒng)的視頻壓縮方法,如MPEG-4、H.264是利用視頻的幀間相關(guān)性進行壓縮的,其解碼時間長,對實時性要求較高的系統(tǒng)不適合[2-3]。而JPEG2000是把運動的視頻序列作為連續(xù)的靜止圖像來處理,對每一幀圖像單獨壓縮,圖像恢復(fù)的實時性較好。
ADI公司的ADV212芯片是目前市場上為數(shù)不多的能夠單芯片支持JPEG2000編/解碼功能的芯片[4],它們能對動/靜態(tài)視頻圖像實時壓縮與解壓縮,并能獲得高清晰度的實時圖像,同時也能提供很好的圖像傳輸靈活性和可擴縮性。由于具有彈性的界面,ADV212可用來與多種形式視頻和靜態(tài)影像格式搭配使用。ADV212的一個突出優(yōu)點就是它可以多芯片并行工作,進而提高其編解碼效率,同時也支持更高格式的影像。相對其它的硬件解決方案,ADV212的解決方案更完整,功能更全面,適用于多種視頻和靜態(tài)圖像格式。
本文提出了基于ADV212和FPGA的紅外視頻壓縮系統(tǒng),AD轉(zhuǎn)換芯片ADV7189實時采集模擬視頻信號并轉(zhuǎn)換成10 bit數(shù)字信號輸出到ADV212,通過FPGA對ADV212芯片進行初始化配置,ADV212以1:100的壓縮率對輸入的視頻信號進行壓縮,壓縮后的數(shù)據(jù)經(jīng)機載射頻收發(fā)信機發(fā)送到地面接收設(shè)備。
1 系統(tǒng)總體設(shè)計
整個系統(tǒng)包含三個模塊:ADV7189負責模數(shù)轉(zhuǎn)換,ADV212負責視頻數(shù)據(jù)的壓縮,F(xiàn)PGA負責芯片的配置和數(shù)據(jù)的接收,圖1給出了視頻壓縮系統(tǒng)的總體架構(gòu)。ADV7189芯片具有模擬視頻信號的采集和模數(shù)轉(zhuǎn)換的功能,其支持NTSC、PAL、SECAM等制式的模擬視頻輸入,數(shù)據(jù)格式包括CVBS、S-Video和YPrPb等。輸出數(shù)字信號支持8、10、16和20位ITU-R BT.656 YCrCb數(shù)據(jù)。本系統(tǒng)紅外模擬視頻輸入信號采用PAL制式Y(jié)PbPr,分辨率為720×576,隔行掃描25 幀/s。FPGA通過I2C總線對ADV7189進行配置,工作時鐘為27 MHz,輸出數(shù)據(jù)位寬為10 bit,輸出數(shù)據(jù)格式Y(jié)CrCb為4:2:2,編碼格式為EAV/SAV。
ADV212芯片具有實時壓縮和解壓縮標清和高清視頻信號的功能[5],支持最高6級的9/7和5/3小波變換;圖像的尺寸可編程,3顏色分量4:2:2隔行掃描情況下寬帶可達2048像素,單顏色分量情況下寬帶可達4096像素;不可逆模式像素輸入最大速率為65 MS/s,可逆模式像素輸入最大速率為40 MS/s[6]。本系統(tǒng)中ADV212采用5級的5/3小波變換,每塊圖像的尺寸為128×32像素點,輸入數(shù)據(jù)為ADV7189輸出的數(shù)據(jù),速率為20 MS/s,即160 Mbps。ADV212配置壓縮比為100:1,即輸出數(shù)據(jù)的速率為1.6 Mbps,輸出數(shù)據(jù)的格式為JP2。
FPGA選用Xilinx公司的Virtex-5系列XC5VFX70T[7],其具有11200個Slice,5 MB Block RAM,6個時鐘管理單元,640個用戶I/O,全局時鐘由外部40 MHz晶振提供,完全可實現(xiàn)對ADV7189和ADV212的配置及數(shù)據(jù)的讀寫。
2 ADV212的工作原理及芯片配置流程
2.1 ADV212的工作原理
ADV212芯片內(nèi)部工作原理如圖2所示。該芯片由主機接口、像素接口、小波變換引擎、存儲器系統(tǒng)、熵編碼器和量化器、嵌入式處理器和內(nèi)外部DMA等組成[8]。本系統(tǒng)工作在ADV212的主控編碼模式(Normal Host),具體的工作流程為:視頻數(shù)據(jù)通過像素接口輸入到小波變換引擎中,進入小波變換引擎的數(shù)據(jù),每個128×32的圖塊將通過5/3濾波器分解成許多頻率不同的子帶,將對應(yīng)的小波系數(shù)寫入內(nèi)部存儲器中。小波變換后的系數(shù)通過3個熵編碼器被分解為獨立的碼塊單元,采用量化、率失真優(yōu)化和關(guān)聯(lián)性建模等方式對數(shù)據(jù)進行壓縮,壓縮結(jié)束后以JPEG2000碼流形式送回內(nèi)部存儲器。存儲在內(nèi)部存儲器中的JPEG2000碼流通過內(nèi)部DMA引擎?zhèn)鬏數(shù)骄幋aFIFO中,編碼FIFO作為高速內(nèi)部存儲器和低速主機接口間的緩存器,當編碼FIFO達到設(shè)定的閾值時,JPEG2000碼流便可以通過HDATA總線輸出到芯片外部。
2.2 ADV212芯片配置流程
如圖3所示,F(xiàn)PGA配置ADV212直接寄存器PLL_HI和PLL_LO,將ADV212內(nèi)部時鐘JCLK和HCLK配置為108 MHz,延時20 ms后設(shè)置ADV212為非主機啟動模式,設(shè)置ADV212數(shù)據(jù)總線寬度為32 bit,間接寄存器訪問模式為32 bit。FPGA通過間接地址寄存器IADDR和間接數(shù)據(jù)寄存器IDATA加載ADV212固件,固件參數(shù)來自ADI官方提供的.sea文件,存放在FPGA內(nèi)部的32 KB Block RAM中[9]。固件加載完畢后,配置ADV212,進行軟件重啟,再次設(shè)置數(shù)據(jù)總線寬度和間接寄存器的訪問模式,并設(shè)置視頻編碼參數(shù)和編碼FIFO的閾值。所有的寄存器配置完畢后,通過EIRQIE寄存器使能FIFO中斷,即當FIFO中的數(shù)據(jù)達到閾值時,系統(tǒng)會產(chǎn)生中斷。通過檢測系統(tǒng)的ID來判斷固件程序是否加載正確,芯片處于壓縮編碼工作的ID為0xFF82。當芯片開始進行壓縮編碼正常工作時,系統(tǒng)不斷檢測FIFO中的數(shù)據(jù)是否達到閾值,達到閾值并產(chǎn)生中斷后,F(xiàn)IFO中的數(shù)據(jù)將被讀取到FPGA中。
3 FPGA與ADV212之間通信及仿真測試
FPGA配置ADV212初始化和FPGA讀取ADV212壓縮后的數(shù)據(jù)過程中,F(xiàn)PGA與ADV212之間均采用異步通信方式,F(xiàn)PGA通過改變發(fā)送的地址來讀寫ADV212不同的寄存器值,下面給出具體的讀寫操作方式。
3.1 FPGA寫操作
FPGA向ADV212寫數(shù)據(jù)的時序如圖4所示,ADDR為地址總線,CS_為片選信號,WE_為寫使能信號,ACK_為ADV212握手信號,以上信號均為低電平有效,HDATA為數(shù)據(jù)總線。由圖4可以看出,ADV212在WE_的上升沿對HDATA總線上的數(shù)據(jù)進行采樣,采樣前后需要確保建立時間tSD和保持時間tHD內(nèi)數(shù)據(jù)不變。FPGA寫操作具體流程如下:
首先,F(xiàn)PGA向ADV212發(fā)出地址和片選使能,下一個時鐘周期FPGA將寫使能WE_拉低并將數(shù)據(jù)寫入HDATA數(shù)據(jù)總線,等待ADV212響應(yīng)寫請求ACK_有效。若ACK_有效,將WE_拉高,當WE_由低電平(有效)跳變?yōu)楦唠娖?無效)時,ADV212對HDATA數(shù)據(jù)線進行采樣。WE_拉高后,F(xiàn)PGA數(shù)據(jù)線和地址線均需保持一個周期,以確保數(shù)據(jù)正確輸入到ADV212中。
3.2 FPGA讀操作
圖5給出了FPGA從ADV212讀數(shù)據(jù)的時序,RD_為讀使能信號,其他信號與寫操作相同。FPGA讀操作具體流程如下:
首先,F(xiàn)PGA向ADV212發(fā)出地址和片選使能,下一個時鐘周期FPGA將寫使能RD_拉低,等待ADV212響應(yīng)寫請求ACK_有效,此時FPGA不采樣HDATA數(shù)據(jù)總線上的數(shù)據(jù)。當ACK_有效時,將RD_拉高,RD_由低電平(有效)跳變?yōu)楦唠娖?無效)的時刻,F(xiàn)PGA對HDATA數(shù)據(jù)線進行采樣。RD_拉高后,F(xiàn)PGA數(shù)據(jù)線和地址線均需保持一個周期,以保證數(shù)據(jù)正確采樣到FPGA中。
FPGA讀寫ADV212直接寄存器和間接寄存器的區(qū)別有兩點:第一,讀寫直接寄存器時,F(xiàn)PGA接收到ADV212握手信號ACK_需要一個時鐘周期,而讀寫間接寄存器時,F(xiàn)PGA需要一個或兩個時鐘周期;第二,F(xiàn)PGA讀寫間接寄存器需要通過數(shù)據(jù)總線HDATA來發(fā)送和接收間接地址,即完成一次數(shù)據(jù)的操作需要對HDATA進行兩次操作,先發(fā)送或接收間接地址,再發(fā)送或接收間接數(shù)據(jù)。因此,F(xiàn)PGA操作直接寄存器至少需要三個時鐘周期,而操作間接寄存器至少需要八個時鐘周期。
3.3 測試與仿真
基于Xilinx ISE建立FPGA工程,通過ISE自帶的ISim仿真軟件對系統(tǒng)進行仿真,如圖6所示,HDATA為FPGA與ADV212之間的數(shù)據(jù)總線,其端口類型為inout型,即雙向端口。當HDATA作為輸入端口時,需要屏蔽HDATA對外輸出值,即將HDATA的輸出賦值為高阻態(tài)。當IRQ_為低電平時,表明FIFO中的數(shù)據(jù)已達到閾值,F(xiàn)PGA開始從地址1中讀取FIFO的數(shù)據(jù)。
4 結(jié)論
JPEG2000算法可對視頻進行高效壓縮,然而其算法復(fù)雜度高、硬件實現(xiàn)困難、實現(xiàn)的系統(tǒng)規(guī)模大等一系列問題限制了其在無人機遙感領(lǐng)域的應(yīng)用。ADV212專用芯片逐一解決了這一系列問題,該芯片體積小、功耗低、性能穩(wěn)定,與FPGA共同搭建視頻壓縮處理系統(tǒng)可廣泛應(yīng)用于無人機遙感領(lǐng)域。經(jīng)測試,本系統(tǒng)工作性能穩(wěn)定,具有壓縮比可調(diào)、實時性好、壓縮數(shù)據(jù)易恢復(fù)和成本低等優(yōu)點。
參考文獻:
[1]謝清鵬.無人機序列圖像壓縮方法研究[D].武漢:華中科技大學, 2005.
[2]石迎波.MPEG-4視頻編碼系統(tǒng)的研究與實現(xiàn)[D].西安:西安電子科技大學, 2005.
[3]李楓.基于H.264的航拍視頻實時壓縮系統(tǒng)[D].北京:北京理工大學, 2011.
[4]Analog Devices Inc. ADV212 JPEG2000 Video Processor User’s Guide (Revision 1.1)[EB/OL].www.analog.com, 2006.
[5]劉春風,王惠平,潘利明.基于ADV212的高清視頻壓縮系統(tǒng)設(shè)計[J].電子設(shè)計工程, 2010, 18(3), 65-67.
[6]薛旭成,張淑艷,李洪法,等.基于ADV202的遙感圖像實時壓縮系統(tǒng)設(shè)計[J]. 微電子學與計算機, 2008, 25(5):197-199.
[7]Xilinx. Virtex-5 Family Overview [EB/OL]. www.xilinx.com, 2009.
[8]劉永征,劉學斌,胡柄樑,等.基于ADV212的JPEG2000靜態(tài)圖像壓縮系統(tǒng)設(shè)計[J].電子器件, 2009, 32(3), 504-508.
[9]Analog Devices Inc. ADV212 JPEG2000 Programming Guide (Revision 2.0) [EB/OL]. www.analog.com, 2007.
本文來源于《電子產(chǎn)品世界》2018年第6期第40頁,歡迎您寫論文時引用,并注明出處。
評論