田靜安,畢篤彥,李權(quán)合
(空軍工程大學(xué) 工程學(xué)院,陜西 西安710038)
隨著多媒體技術(shù)的快速發(fā)展對數(shù)字圖像的分辨率和處理速度提出了越來越高的要求。本文基于FPGA+PowerPC架構(gòu),設(shè)計出一種機(jī)載高分辨率圖像實時壓縮系統(tǒng),可以實現(xiàn)對輸入的高分辨率(4 008×5 344)圖像的實時壓縮,適合在各種復(fù)雜環(huán)境下工作,可應(yīng)用于各種航拍、監(jiān)控和偵察系統(tǒng)。
本系統(tǒng)是航空數(shù)碼相機(jī)壓縮存儲系統(tǒng)的子系統(tǒng),大系統(tǒng)主要由圖像預(yù)處理模塊、壓縮模塊和存儲模塊構(gòu)成,本文主要針對壓縮模塊進(jìn)行了設(shè)計。由于系統(tǒng)CCD輸入圖像分辨率較高,一幅完整圖像數(shù)據(jù)的大小為4 008×5 344×12 bit,約 33 MB,這樣龐大的數(shù)據(jù)量對壓縮系統(tǒng)的緩存和處理速度提出了很高的要求。根據(jù)系統(tǒng)任務(wù)要求,壓縮系統(tǒng)屬于機(jī)載系統(tǒng),對CCD輸入的圖像完成2種功能。一種是每隔3幅圖像抽取一幅進(jìn)行有損壓縮并通過載機(jī)傳送回地面實時顯示;另一種是對圖像進(jìn)行無損壓縮并直接存入電子盤中。綜合以上考慮,本系統(tǒng)選用Freescale公司Power PC處理器MPC8245作為主控CPU,Analog Devices公司圖形圖像編解碼芯片ADV202作為壓縮芯片,Xilinx公司XC2V1000-6FG456作為各接口的邏輯控制,選用2片SDRAM進(jìn)行乒乓方式交叉緩存。
如圖1所示,本系統(tǒng)工作信號流程如下:圖像數(shù)據(jù)經(jīng)過CCD接口,由FPGA采集,暫時緩存在SDRAM中,然后由FPGA邏輯輸入到ADV202的視頻接口,經(jīng)過ADV202壓縮后,由PowerPC經(jīng)過 PCI總線讀取,形成文件,存入電子盤。
圖1 系統(tǒng)信號流程圖
在圖1中,做為緩存的SDRAM有2片,每個緩存一幅圖像,交叉緩存。ADV202也有2片,分別進(jìn)行有損壓縮和無損壓縮。圖中粗邊框的功能模塊由FPGA邏輯完成。
本系統(tǒng)基于FPGA+PowerPC架構(gòu)設(shè)計,PowerPC是本系統(tǒng)的核心,F(xiàn)PGA完成圖像數(shù)據(jù)流程中各個環(huán)節(jié)控制,ADV202完成圖像壓縮功能。系統(tǒng)具體電路由CPU控制電路、電壓轉(zhuǎn)換電路、存儲器電路、中斷控制電路、控制邏輯電路、時鐘電路、復(fù)位電路、JTAG調(diào)試接口以及看門狗電路等組成,如圖2所示。
圖2 系統(tǒng)結(jié)構(gòu)框圖
本系統(tǒng)主控采用PowerPC處理器。PowerPC體系結(jié)構(gòu)規(guī)范發(fā)布于 1993年,芯片由 IBM、Apple和Motorola公司開發(fā)成功,并制造出基于PowerPC的多處理器計算機(jī)。PowerPC體系結(jié)構(gòu)是RISC體系結(jié)構(gòu)的一個示例,它采用了超標(biāo)量架構(gòu),從內(nèi)存檢索數(shù)據(jù)、在寄存器中進(jìn)行操作,然后將其存儲回內(nèi)存,幾乎沒有指令(除了裝入和存儲)是直接操作內(nèi)存的,可伸縮性好、方便靈活,非常適合用于機(jī)載系統(tǒng)。
本設(shè)計采用Freescale公司的MPC8245處理器。MPC8245是主頻333 MHz的速度增強(qiáng)型集成主處理器。該處理器設(shè)計基于PowerPC架構(gòu),全功能的嵌入式PowerPC 603e內(nèi)核將高性能32 bit處理器與浮點(diǎn)、存儲器管理、分支預(yù)測單元、16 KB數(shù)據(jù)及16 KB指令緩存集成在一起,其他片上特性還包括高性能存儲控制器、中斷控制器、DMA控制器、I2C接口及16550兼容DUART,同時還為 PCI及存儲器配備了內(nèi)置時鐘發(fā)生邏輯,因而無需使用外部時鐘發(fā)生器,降低了系統(tǒng)的組成開銷、簡化了電路板的設(shè)計、降低了功耗并加快了開發(fā)調(diào)試時間。
系統(tǒng)主控CPU模塊上時鐘有14.745 6 MHz和33 MHz。33 MHz時鐘輸入到MPC8245上,MPC8245產(chǎn)生5路33 MHz同步時鐘供PCI設(shè)備使用,同時MPC8245內(nèi)部實現(xiàn)時鐘鎖相環(huán)電路,經(jīng)MPC8245中的DLL產(chǎn)生4路同步時鐘時鐘供SDRAM使用,14.745 6 MHz時鐘提供給串行接口芯片使用。
本系統(tǒng)壓縮功能主要由ADV202完成。ADV202對外有2種總線接口:與處理器 (Host)進(jìn)行交換數(shù)據(jù)的HDATA總線以及和視頻設(shè)備交換數(shù)據(jù)的VDATA總線。在本應(yīng)用中數(shù)據(jù)只經(jīng)過VDATA輸入進(jìn)行壓縮,然后被主機(jī)讀走,為了簡化邏輯,可以把VDATA設(shè)計成單向傳輸。圖3為ADV202的電路設(shè)計。
圖3 ADV202電路設(shè)計
ADV202是一個基于小波轉(zhuǎn)換(Wavelet-based)的圖像數(shù)據(jù)壓縮/解壓的集成芯片,符合JPEG2000(J2K)—ISO/IEC15444-1的壓縮標(biāo)準(zhǔn),其內(nèi)部主要由像素接口、小波變換引擎、熵編解碼器、嵌入式處理器、存儲器系統(tǒng)和內(nèi)部DMA引擎等組成,如圖4所示。
本系統(tǒng)輸入分辨率為4 008×5 344的靜止圖像,ADV202可以工作在 2種模式[1]:一種是通過 VDATA總線輸入的Raw Pixel模式,一種是通過HDATA總線輸入的HIPI模式。本系統(tǒng)選用通過VDATA總線輸入的Raw Pixel模式。同時,對一幅圖像數(shù)據(jù)的輸入,ADV202也不是完全無限制的,它能處理的最大圖片為1 MB,由于本系統(tǒng)輸入的圖像遠(yuǎn)遠(yuǎn)大于1 MB,因此必須對圖像進(jìn)行分塊處理[3]。本系統(tǒng)采取的策略是將一幅分辨率為4 008×5 344的圖像分成了44塊分辨率為512×1 024的塊圖像,大小不足512×1 024的塊圖像通過補(bǔ)0進(jìn)行擴(kuò)展,此分塊和補(bǔ)0操作通過軟件對ADV202進(jìn)行初始化時完成。在這種策略模式下,ADV202的編碼壓縮過程如下:待壓縮圖像經(jīng)VDATA接口送入小波引擎,每個圖塊在小波引擎中進(jìn)行最高達(dá)6級的5/3小波變換得到若干子帶,然后通過內(nèi)部存儲器把得到的小波系數(shù)交給編碼器編碼,最終得到ADV202的JPEG2000壓縮碼流。壓縮后的JPEG2000碼流存入碼FIFO中通過普通讀寫方式或DMA方式經(jīng)主機(jī)接口輸出,碼FIFO起到一個內(nèi)部高速總線和外部主機(jī)接口之間的緩沖作用。在整個過程中,內(nèi)部總線及DMA引擎提供了存儲器之間的高帶寬傳輸及各功能模塊和存儲器之間的高性能傳輸[2]。
圖4 ADV202結(jié)構(gòu)框圖
系統(tǒng)FPGA的主要功能是完成圖像數(shù)據(jù)流程中各個環(huán)節(jié)控制,同時為PowerPC和外界通信擴(kuò)展異步、同步串口,提供存儲器訪問的基本周期控制等。
SDRAM控制器的主要功能是對外接收處理CCD接口的寫入數(shù)據(jù),完成ADV202接口的讀取請求;對內(nèi)產(chǎn)生SDRAM控制時序,刷新、充電,正確完成外部讀寫請求。圖5是SDRAM控制器的設(shè)計。
圖5 SDRAM控制器
SDRAM是一個分時復(fù)用地址線,將片選、行選、列選、寫使能等控制信號按一定組合形成命令的動態(tài)存儲器。所有信號都在SDRAM同步時鐘上升沿采集鎖存。SysCLK是系統(tǒng)時鐘為 33 MHz、CLK_SD是 SDRAM 時鐘為133 MHz、CS表示SDRAM的片選,完成乒乓交叉緩存,RAS表示行地址選通,當(dāng)RAS為低時,在時鐘上升沿鎖存行地址、CAS表示列地址選通,當(dāng)CAS為低時,在時鐘上升沿鎖存列地址、WE表示寫使能和行充電,在CAS、WE有效時開始鎖存數(shù)據(jù)、SA[24:0]表示 SDRAM線性地址、SD[15:0]表示所讀取 SDRAM數(shù)據(jù)。
FPGA和ADV202的接口同時包括了HDATA和VDATA。HDATA的最終控制權(quán)屬于PowerPC,它通過PCI總線訪問ADV202的HDATA,下載ADV202工作固件(Firmware),進(jìn)行圖像壓縮模式的初始化。在 PowerPC訪問ADV202時,F(xiàn)PGA必須提供PCI接口和 HDATA接口轉(zhuǎn)換。在VDATA接口一邊,F(xiàn)PGA一方面要從SDRAM中讀出圖像數(shù)據(jù),另一方面將它寫入VDATA總線。圖6、圖7分別是 ADV202主機(jī) Host接口和視頻接口設(shè)計。
圖6 ADV202Host接口
圖7 ADV202視頻接口
采用 VHDL語言編寫 FPGA程序[4],圖8為 FPGA將待壓縮數(shù)據(jù)寫入ADV202的時序仿真。mclk是系統(tǒng)時鐘,reset_n為系統(tǒng)復(fù)位信號(低電平有效),CPU向 FPGA發(fā)出的寫指令為 dreq0_n,讀指令為 dreq1_n(讀寫指令均為低電平有效)。dack1_n和dack0_n分別是FPGA發(fā)送給ADV202進(jìn)行讀、寫控制的信號(低電平有效),壓縮過程中每次順序送入ADV202芯片16組待壓縮數(shù)據(jù),壓縮結(jié)果先暫存在ADV202芯片內(nèi)部16個直接寄存器里,等寄存器用完再由CPU發(fā)出讀信號,將壓縮過的數(shù)據(jù)依次讀出,然后再進(jìn)行下一輪壓縮。Count用于記錄使用中的寄存器個數(shù)。DMA_wr用于標(biāo)記壓縮進(jìn)度。
系統(tǒng)開始工作前,要確保加載了正確的固件,在FPGA主控程序中通過4個步驟來實現(xiàn)。(1)向外部中斷使能寄存器中寫人0X0400來屏蔽軟件中斷0位;(2)等待到中斷引腳IRQ被拉低;(3)檢查外部中斷標(biāo)記寄存器的EIRQFLG位是否被設(shè)置;(4)從軟件標(biāo)記寄存器中讀應(yīng)用標(biāo)識,如果讀到的是0XFF82,則說明固件加載正確,系統(tǒng)可以開始工作。
圖8 FPGA將待壓縮數(shù)據(jù)寫入ADV202的時序仿真
ADV202的工作模式是在初始化固件中通過寫寄存器的狀態(tài)字設(shè)定的。根據(jù)系統(tǒng)功能要求,系統(tǒng)用一片ADV202進(jìn)行無損壓縮,WKERNEL/QUANT參數(shù)設(shè)為1,另外一片 ADV202進(jìn)行有損壓縮,WKERNEL/QUANT參數(shù)設(shè)為2。具體的初始化流程和寄存器狀態(tài)字設(shè)定如圖9。
經(jīng)系統(tǒng)軟硬件調(diào)試,系統(tǒng)的有損壓縮速率達(dá)到了20 Mb/s,壓縮后的圖像數(shù)據(jù)經(jīng)過RS-422接口發(fā)送到載機(jī)飛機(jī)數(shù)據(jù)總線上,經(jīng)數(shù)據(jù)鏈傳送到地面中心站,可以實時獲取戰(zhàn)場信息和目標(biāo)變化數(shù)字影像信息;無損壓縮的數(shù)據(jù)實時存儲在IDE硬盤中,待回到地面后進(jìn)行處理?;贔PGA+PowerPC的嵌入式高分辨率實時壓縮系統(tǒng),可工作于各種復(fù)雜的環(huán)境條件下,非常適合機(jī)載環(huán)境,在其他圖像偵察和監(jiān)控領(lǐng)域也有廣泛應(yīng)用。
圖9 ADV202 Raw pixel模式流程
[1]ADV202-JPEG2000 Video Codec(Rev.B)[EB].Analog Devices.Inc,2006(1).
[2]ADV202 JPF02000 Video Processor User′s Guide(Revision3.4)[EB].Analog Devices.Inc.04,2006(10).
[3]Getting Started with the ADV202(Rev 2.5)[EB].Analog Devices,Inc.2006(9).
[4]孟慶海,張洲.VHDL基礎(chǔ)及經(jīng)典實例開發(fā)[M].西安:西安交通大學(xué)出版社,2008.
[5]潘松,黃繼業(yè).EDA技術(shù)與 VHDL[M].北京:清華大學(xué)出版社,2007.