文獻(xiàn)標(biāo)識(shí)碼: A
文章編號(hào): 0258-7998(2015)05-0046-04
0 引言
隨著新型傳感技術(shù)的發(fā)展,衛(wèi)星遙感圖像的分辨率迅速提升,數(shù)據(jù)量的爆炸式增長(zhǎng)趨勢(shì)為傳輸信道和存儲(chǔ)空間帶了極大的壓力,因而,能否對(duì)遙感圖像進(jìn)行在軌實(shí)時(shí)高效壓縮便成為制約遙感技術(shù)發(fā)展的一個(gè)關(guān)鍵問題[1]。目前,相對(duì)于基于離散余弦變化廣泛采用的小波變換壓縮算法具有非常好的抗誤碼性能,不過相對(duì)于早期的壓縮算法,這類算法的復(fù)雜度明顯提高,運(yùn)算量和內(nèi)存消耗增大[2],這對(duì)圖像壓縮處理系統(tǒng)提出了較高的要求。
FPGA和DSP在數(shù)據(jù)處理平臺(tái)中發(fā)揮著日益重要的作用,F(xiàn)PGA擅長(zhǎng)執(zhí)行并行處理,而DSP擅長(zhǎng)多算法任務(wù)和多條件操作等,因而采用FPGA和多片DSP的并行運(yùn)算系統(tǒng)受到越來越多的關(guān)注。
為了探索遙感圖像的機(jī)載實(shí)時(shí)壓縮技術(shù),本文首先根據(jù)遙感圖像處理數(shù)據(jù)及流程特點(diǎn),設(shè)計(jì)了2 FPGA+8 DSP的并行拓?fù)浼軜?gòu),并構(gòu)建了機(jī)載實(shí)時(shí)處理硬件平臺(tái),最后基于該平臺(tái)介紹了JPEG2000壓縮算法的實(shí)現(xiàn)方法,實(shí)驗(yàn)結(jié)果表明該平臺(tái)具有較強(qiáng)的遙感數(shù)據(jù)實(shí)時(shí)處理能力。
1 圖像壓縮系統(tǒng)設(shè)計(jì)
1.1 芯片選型
在本系統(tǒng)中,F(xiàn)PGA主要實(shí)現(xiàn)外部接口、邏輯控制和時(shí)序控制等功能,并承擔(dān)部分?jǐn)?shù)據(jù)處理工作,因此,需要具有較大的存儲(chǔ)空間,支持PCIE接口設(shè)計(jì),具備較多的邏輯資源實(shí)現(xiàn)圖像預(yù)處理功能,并具有足夠的I/O口為FPGA管理多片DSP提供管腳支持。本系統(tǒng)選用Xilinx公司的XC6VLX240T。
為了滿足遙感圖像實(shí)時(shí)壓縮的要求,系統(tǒng)中選用的DSP要具有很強(qiáng)的定點(diǎn)和浮點(diǎn)運(yùn)算能力;要具有高性能的互聯(lián)接口;支持DSP之間、DSP與FPGA之間建立高速的數(shù)據(jù)通道;并且具有較大的內(nèi)部存儲(chǔ)空間,適應(yīng)圖像壓縮過程中大量中間數(shù)據(jù)的高速緩存。因此本系統(tǒng)選用ADI公司的TS201。
1.2 并行互聯(lián)方式
實(shí)現(xiàn)大規(guī)模運(yùn)算的高速執(zhí)行,需要借助多個(gè)處理單元同時(shí)運(yùn)行來減少任務(wù)執(zhí)行時(shí)間。并行技術(shù)可以體現(xiàn)在處理器內(nèi)部、處理器級(jí)以及系統(tǒng)級(jí)等方面,處理器間的拓?fù)浣Y(jié)構(gòu)可分為兩種[3]:(1)多處理器共享總線和存儲(chǔ)器的緊耦合結(jié)構(gòu);(2)多處理器通過獨(dú)立接口實(shí)現(xiàn)互聯(lián)的松耦合結(jié)構(gòu)。
緊耦合結(jié)構(gòu)的優(yōu)點(diǎn)在于提供全局物理地址空間,允許任何處理器對(duì)等訪問全部存儲(chǔ)器,便于程序設(shè)計(jì)。ADSP-TS201的主機(jī)接口可以支持最高64 bit位寬的總線共享,全局映射的統(tǒng)一尋址空間可實(shí)現(xiàn)多處理器及存儲(chǔ)器間的無縫連接。但是,當(dāng)處理器數(shù)目較多時(shí),頻繁的數(shù)據(jù)交換會(huì)產(chǎn)生嚴(yán)重的總線控制權(quán)競(jìng)爭(zhēng)問題,從而導(dǎo)致系統(tǒng)運(yùn)算效率降低,特別是在進(jìn)行大數(shù)據(jù)量運(yùn)算和大數(shù)據(jù)量通信時(shí),這個(gè)缺點(diǎn)會(huì)極大地制約整個(gè)系統(tǒng)的運(yùn)行效率。遙感圖像的實(shí)時(shí)壓縮是運(yùn)算密集型、數(shù)據(jù)吞吐密集型的數(shù)據(jù)處理過程,緊耦合結(jié)構(gòu)很難實(shí)現(xiàn)運(yùn)算、存儲(chǔ)、傳輸間的平衡,不利于實(shí)現(xiàn)復(fù)雜壓縮算法的實(shí)時(shí)處理。
在分布式松耦合結(jié)構(gòu)中,每片DSP通過獨(dú)立的接口連接到FPGA,這樣就能避免多個(gè)DSP同時(shí)訪問FPGA時(shí)的數(shù)據(jù)沖突。FPGA與DSP間常用的接口設(shè)計(jì)方法主要有3種:(1)采用外部雙口RAM;(2)在FPGA內(nèi)部構(gòu)建雙口RAM;(3)通過DSP的高速傳輸接口。前兩種連接方式中數(shù)據(jù)直接通過總線傳輸,且不涉及復(fù)雜的通信協(xié)議,接口設(shè)計(jì)比較簡(jiǎn)單[4],但是當(dāng)芯片數(shù)量較多時(shí),硬件設(shè)計(jì)中的管腳及布線壓力會(huì)很大;另外DSP的數(shù)據(jù)總線將同時(shí)用于與FPGA和與外部存儲(chǔ)器通信,仍然會(huì)存在總線競(jìng)爭(zhēng)風(fēng)險(xiǎn)。TS201可提供4路鏈路口,在采用4位并行方式傳輸時(shí),可支持高達(dá)1.2 GB/s的雙向吞吐率;數(shù)據(jù)通信可由處理器核控制,也可由DMA控制器控制,而不需要占用處理器資源,這能為FPGA與DSP、DSP與外部存儲(chǔ)器以及DSP與DSP之間的高速數(shù)據(jù)傳輸提供便利,解決在數(shù)據(jù)密集型處理中這一制約系統(tǒng)整體性能的問題,因此,本系統(tǒng)將采用這種互聯(lián)結(jié)構(gòu)。
1.3 系統(tǒng)結(jié)構(gòu)
本系統(tǒng)采用2片F(xiàn)PGA和8片DSP的拓?fù)浣Y(jié)構(gòu),其結(jié)構(gòu)框圖如圖1所示。8片DSP分為結(jié)構(gòu)對(duì)稱的2簇,構(gòu)成兩個(gè)并行的運(yùn)算子模塊。每簇內(nèi)的4片DSP利用鏈路口點(diǎn)對(duì)點(diǎn)互聯(lián),并且每片DSP分別通過一個(gè)鏈路口與FPGA相連。2片F(xiàn)PGA各負(fù)責(zé)一個(gè)運(yùn)算子模的任務(wù)和數(shù)據(jù)交互管理工作。這種拓?fù)浣Y(jié)構(gòu)使得簇內(nèi)各DSP以及DSP與FPAG間都能實(shí)現(xiàn)高速互聯(lián),且增強(qiáng)了數(shù)據(jù)流的靈活性,可實(shí)現(xiàn)按任務(wù)劃分的流水并行計(jì)算,也可實(shí)現(xiàn)按數(shù)據(jù)劃分的分布式并行計(jì)算。每片DSP都外掛4 M×32 bit的SDRAM作為外部存儲(chǔ)空間,利用TS201內(nèi)的SDRAM地址映射空間和外部接口,借助SDRAM控制器可輕松實(shí)現(xiàn)無縫連接,滿足大量數(shù)據(jù)實(shí)時(shí)處理過程中的存儲(chǔ)需求。DSP采用EPROM和鏈路口相結(jié)合的程序引導(dǎo)和加載方式[5],每簇外掛1片F(xiàn)lash,簇內(nèi)其他DSP采用鏈路口形式,這種設(shè)計(jì)避免了給每片DSP配備Flash,降低了功耗和電路面積。
1.4 FPGA程序設(shè)計(jì)
在本系統(tǒng)中,F(xiàn)PGA作為邏輯控制中心,主要實(shí)現(xiàn)以下幾個(gè)功能:(1)數(shù)據(jù)解包、切分、串/并轉(zhuǎn)換、打包、分發(fā)等數(shù)據(jù)管理功能;(2)數(shù)據(jù)緩存,利用DDR3 SDRAM乒乓作業(yè)的工作方式實(shí)現(xiàn)數(shù)據(jù)無縫緩存;(3)快速流水協(xié)議,實(shí)現(xiàn)與TS201鏈路口進(jìn)行高速通信;(4)自定義接口協(xié)議,參考快速流水協(xié)議設(shè)計(jì)自定義協(xié)議,通過LVDS總線實(shí)現(xiàn)與另一片F(xiàn)PGA通信;(5)數(shù)據(jù)預(yù)處理功能,利用內(nèi)部DSP和邏輯資源實(shí)現(xiàn)數(shù)據(jù)預(yù)處理,發(fā)揮FPGA并行處理的運(yùn)算優(yōu)勢(shì)。此外,系統(tǒng)中的FPGA_A還負(fù)責(zé)與上位機(jī)通信,因此,需要利用設(shè)計(jì)PCIE接口單元。FPGA_A中的邏輯結(jié)構(gòu)如圖2所示,F(xiàn)PGA_B采用相似的邏輯設(shè)計(jì)。
2 JPEG2000壓縮應(yīng)用實(shí)例
JPEG2000作為新一代靜止圖像壓縮標(biāo)準(zhǔn),能在甚低比特率壓縮時(shí)提供良好的率失真特性和主觀視覺質(zhì)量,并且具有非常好的抗誤碼性能,在星載遙感圖像壓縮領(lǐng)域受到越來越多的關(guān)注。
JPEG2000的基本編碼過程為:源圖像數(shù)據(jù)經(jīng)正向預(yù)處理后進(jìn)行離散小波變換(DWT),對(duì)變換后的DWT系數(shù)進(jìn)行量化,再進(jìn)行熵編碼,最后根將熵編碼后的數(shù)據(jù)組織成壓縮碼流輸出[6]。
為了使程序在TS201上高效運(yùn)行,從系統(tǒng)層、算法層、代碼層三個(gè)不同層面上對(duì)JPEG2000壓縮程序進(jìn)行了優(yōu)化[7,8],例如:優(yōu)化DWT中的中間結(jié)果存儲(chǔ)方式,在節(jié)約內(nèi)存的同時(shí)減少訪問時(shí)間;采用建立上下文索引表的方法減小嵌入式最優(yōu)截?cái)嗑幋a過程中的掃描運(yùn)算量;適當(dāng)修改數(shù)據(jù)類型,進(jìn)行數(shù)據(jù)拼接存儲(chǔ),提高數(shù)據(jù)讀寫效率等。
2.1 DSP與FPGA接口設(shè)計(jì)
此外,系統(tǒng)的高效運(yùn)行還依賴于高效的數(shù)據(jù)收發(fā)機(jī)制。DSP通過Link Port接口與FPGA通信,實(shí)現(xiàn)原始圖像數(shù)據(jù)的接收和壓縮碼流的發(fā)送,本系統(tǒng)DSP中的發(fā)送和接收單元中分別采用了乒乓緩存+突發(fā)式DMA傳輸?shù)脑O(shè)計(jì)方法。以數(shù)據(jù)接收單元為例,DSP中分配了3個(gè)緩存空間:input_buffer1、input_buffer2和input,其中,input_buffer1和input_buffer2以乒乓作業(yè)的方式緩存接收數(shù)據(jù),input用于緩存預(yù)處理后的圖像數(shù)據(jù),以備后續(xù)壓縮處理。在接收數(shù)據(jù)時(shí),DSP接收到FPGA的發(fā)送指令,便開啟Link Port接口接收數(shù)據(jù)到Link Port Receive Buffer中,在接收到指定數(shù)據(jù)量后,Link Port接口自動(dòng)開啟DMA傳輸,將數(shù)據(jù)轉(zhuǎn)移到input_buffer1中,并關(guān)閉Link Port口,以防止接收到錯(cuò)誤數(shù)據(jù)。此后,DSP對(duì)input_buffer1中的數(shù)據(jù)進(jìn)行數(shù)據(jù)類型轉(zhuǎn)換等預(yù)處理,然后轉(zhuǎn)存到input緩存區(qū)中??紤]到Link Port接收、DMA傳輸均需要耗時(shí),而又可以不需要內(nèi)核參與,因此,設(shè)計(jì)了雙通道乒乓作業(yè)的接收方式,這樣在數(shù)據(jù)的突發(fā)傳輸任務(wù)中,可以配置好參數(shù)交給Link Port接口和DMA來獨(dú)立完成,從而解放出內(nèi)核的邏輯計(jì)算單元,使之專注于運(yùn)算和判斷。DSP內(nèi)核在監(jiān)測(cè)到本次DMA傳輸完成后,首先交換DMA接收端的選擇指針,指向input_buffer2,再開啟Link Port接口,便可以利用內(nèi)核進(jìn)行預(yù)處理操作了。處理過程中如果有新數(shù)據(jù)到來,硬件會(huì)自動(dòng)完成接收操作并更改狀態(tài)標(biāo)識(shí),內(nèi)核只需要在完成當(dāng)前處理后,查詢其狀態(tài)標(biāo)識(shí)便可知道數(shù)據(jù)是否已經(jīng)接收完成。如此循環(huán),便可實(shí)現(xiàn)圖像數(shù)據(jù)的快速接收。
2.2 軟件設(shè)計(jì)流程
從系統(tǒng)層面來看,F(xiàn)PGA與其控制的4片DSP組成兩個(gè)運(yùn)算節(jié)點(diǎn)A、B,8個(gè)DSP之間執(zhí)行以數(shù)據(jù)劃分的分布式并行計(jì)算。FPGA_A通過PCIE總線接收源圖像數(shù)據(jù),解析包頭獲取任務(wù)信息并進(jìn)行串/并轉(zhuǎn)換、數(shù)據(jù)緩存、數(shù)據(jù)切分、將數(shù)據(jù)分發(fā)給DSP和FPGA_B等。DSP內(nèi)的壓縮處理以圖像塊為單位,在完成當(dāng)前圖像塊數(shù)據(jù)的接收后,開始?jí)嚎s處理并將壓縮碼流實(shí)時(shí)回傳至FPGA,DSP內(nèi)程序流程如圖3所示。FPGA接收各DSP發(fā)送的壓縮數(shù)碼流數(shù)據(jù)包,再以圖像塊為單位進(jìn)行碼流重組、緩存,最終通過PCIE總線傳輸給上位機(jī)。
3 實(shí)驗(yàn)結(jié)果
為了驗(yàn)證壓縮系統(tǒng)的可行性,本文采用12 800×12 800的8 bit圖像數(shù)據(jù)分別進(jìn)行了2:1無損壓縮和8:1高倍率壓縮實(shí)驗(yàn)。圖4所示為L(zhǎng)ena圖像和一副紋理復(fù)雜的城市場(chǎng)景遙感圖像的無損壓縮實(shí)驗(yàn)結(jié)果,可見系統(tǒng)具有較高的壓縮質(zhì)量。表1為應(yīng)用本平臺(tái)的JPEG2000壓縮系統(tǒng)的性能測(cè)試結(jié)果,無損壓縮時(shí)系統(tǒng)最高吞吐速率可達(dá)5.9 Mpixels/s,高倍率壓縮時(shí)性能略有提升,最高吞吐速率可達(dá)6.2 Mpixels/s,可見,本系統(tǒng)具有較強(qiáng)的數(shù)據(jù)處理能力。
4 結(jié)論
本文首先分析了多DSP并行處理拓?fù)浣Y(jié)構(gòu)及片間互聯(lián)方式,為了有效平衡系統(tǒng)運(yùn)行速度、數(shù)據(jù)傳輸能力和板上存儲(chǔ)空間三大因素,采用松耦合結(jié)構(gòu)設(shè)計(jì)了基于2 FPGA+8 DSP的高速大容量實(shí)時(shí)壓縮處理平臺(tái)。最后,基于該平臺(tái)實(shí)現(xiàn)了JPEG2000壓縮處理。實(shí)驗(yàn)結(jié)果表明,該系統(tǒng)具有強(qiáng)大的數(shù)據(jù)處理和吞吐能力,能夠?yàn)檫b感圖像實(shí)時(shí)壓縮應(yīng)用奠定技術(shù)基礎(chǔ)。
參考文獻(xiàn)
[1] 劉榮科,張曉林,廖小濤.星載遙感圖像壓縮編碼技術(shù)綜述[J].遙測(cè)遙控,2004,25(2):7-12.
[2] 肖志東,肖明君,劉淼.基于小波變換的遙感圖像壓縮算法綜述[J].科技創(chuàng)新導(dǎo)報(bào),2008(35):75.
[3] Wu Jie.分布式系統(tǒng)設(shè)計(jì)[M].高傳善,譯.北京:機(jī)械工業(yè)出版社,2001.
[4] 唐垚,曹劍中,李變俠,等.高分辨率圖像采集與壓縮系統(tǒng)的設(shè)計(jì)實(shí)現(xiàn)[J].科學(xué)技術(shù)與工程,2007,5(20):1510-1513.
[5] Analog Devices.ADSP-TS20x TigerSHARC processor boot loader kernels operation[Z].2004.
[6] ISO/IEC 15444-13:2008(E).Information technology-JPEG 2000 image coding system:An entry level JPEG 2000 encoder[S].2008.
[7] BISHOP S L,RAI S,GUNTURK B,et al.Reconfigurable implementation of wavelet integer lifting transforms for image compression[C].ReConFig 2006,IEEE International Conference on:1-9.
[8] LIAN C J,CHEN K F.Analysis and architecture design of block-coding engine for EBCOT in JPEG2000[J].IEEE Transactions on Circuits and Systems for Video Teehnology,2003,13(3):219-230.