專利名稱:一種jpeg2000圖像壓縮處理系統(tǒng)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種圖像壓縮處理系統(tǒng),特別是一種采用多DSP和多FPGA 實現(xiàn)的,面向遙感圖像高保真、高可靠、實時處理的,基于JPEG2000標準的 圖像壓縮處理系統(tǒng)。
背景技術(shù):
JPEG2000是國際標準化組織靜止圖像編碼組在2000年制定并頒布的靜 止圖像壓縮標準。JPEG2000改變了傳統(tǒng)JPEG標準以DCT變換為核心的變 換方法,采用了具有能量特性更為集中的小波變換方法。JPEG2000的技術(shù)核 心是離散小波變換和率失真優(yōu)化截取內(nèi)嵌碼塊編碼算法EBCOT (Embedded Block Coding with Optimized Truncation )。 JPEG2000算法的基本結(jié)構(gòu)如圖1 所示。在進行離散小波變換之前,對圖像進行一些適當(dāng)?shù)念A(yù)處理,主要包括 對大圖像進行分塊(Tile)處理,每塊獨立編碼,減少系統(tǒng)的復(fù)雜性并有利于并 行處理;進行電平移位防止數(shù)據(jù)溢出;對彩色圖像或者多分量圖像進行分量變 換(可逆或者不可逆的)等,以便于圖像壓縮。EBCOT算法分為T1和T2兩 個編碼器。T1由內(nèi)嵌比特平面編碼和MQ算術(shù)編碼器組成,而T2編碼器完成 率控制和碼流組織。EBCOT編碼時,將各小波子帶劃分為更小的碼塊(如 64x64),以碼塊(Code-Block)為單位獨立進行T1編碼。不同的碼塊產(chǎn)生的 比特流長度是不相同的,它們對恢復(fù)圖像質(zhì)量的貢獻也是不同的。因此對于所 有碼塊產(chǎn)生的比特流,T2采用了率失真優(yōu)化技術(shù)進行后壓縮處理(PCRD: Post Compression Rate Distortion ),即對各碼塊的碼流按照對恢復(fù)圖像的質(zhì)量貢獻 分層,完成碼流的率控制和組織。
基于JPEG2000標準的圖像壓縮處理系統(tǒng)最具代表性的有AD公司推出的 基于JPEG2000算法的專用視頻和靜止圖像壓縮芯片ADV202。該芯片內(nèi)部集
成有一個32位的RISC處理器作為系統(tǒng)控制器;小波變換部分可以實現(xiàn)6級 97或53小波濾波器;三個熵編碼模塊完成量化、率失真優(yōu)化、基于上下文的 編碼,并將數(shù)據(jù)按照包和層的格式進行編排,最后形成JPEG2000的編碼數(shù)據(jù) 流。但是該芯片只有工業(yè)級的質(zhì)量等級,無法滿足航天遙感圖像等需要高可靠、 長壽命應(yīng)用場合的使用要求。
目前,JPEG2000標準的圖像壓縮處理采用非專用芯片的硬件系統(tǒng)比較少。 文獻"Development of Image Processing System Based on DSP and FPGA; Duan Jinghong, 2~4244-1135-1/07/2007 IEEE"公開了一種圖像壓縮處理系 統(tǒng),該系統(tǒng)采用單片DSP和單片F(xiàn)PGA的實現(xiàn)方案,其實現(xiàn)速度較低,僅為 262.144K像元/秒。專利號為CN1216485C,名稱為"適用于JPEG2000的高 速EBCOT編碼器"的專利文獻公開了一種圖^f象處理系統(tǒng)編碼器,其中所述的 嵌入式平臺是適合于網(wǎng)絡(luò)傳輸?shù)挠布到y(tǒng),強調(diào)的是數(shù)據(jù)采集、數(shù)據(jù)格式和滿 足傳輸協(xié)議,而對圖像質(zhì)量、處理速度均沒有描述。專利號為CN1313976C, 名稱為"基于嵌入式平臺的JPEG2000圖像編碼與傳輸方法和系統(tǒng)"公開了一 種圖像處理系統(tǒng),其所述的高速EBCOT編碼器提出了 JPEG2000核心算法 EBCOT的改進,VLSI結(jié)構(gòu)通過仿真速度可以達到100Mbit/s,如果像素為8 比特精度,其處理速度為12.5MSample/s。但是該專利并未給出實際的硬件系 統(tǒng)和算法改進后恢復(fù)圖像的質(zhì)量。由葛寶珊在2007年12月的計算機工程與設(shè) 計上發(fā)表的文章"基于多DSP的遙感圖像壓縮系統(tǒng)"也給出了一種遙感圖像壓 縮處理系統(tǒng),其所述的基于多DSP的遙感圖像壓縮系統(tǒng)采用四片DSP進行遙 感圖像壓縮,雖然恢復(fù)圖像質(zhì)量優(yōu)于JPEG2000,但是處理速度只有50Mbit/s, 如果像素為8比特精度,其處理速度僅為6.25MSample/s,無法滿足星載遙感 圖像壓縮對高速(30MSample/s)、高保真(與JPEG2000標準軟件KDU相當(dāng)) 的應(yīng)用要求。
發(fā)明內(nèi)容
本發(fā)明的技術(shù)解決問題是克服現(xiàn)有技術(shù)的不足,提供了一種適合于遙感
圖像壓縮應(yīng)用的高速、高保真JPEG2000圖像壓縮處理系統(tǒng)。
本發(fā)明的技術(shù)解決方案是 一種JPEG2000圖像壓縮處理系統(tǒng),包括圖像 小波變換單元、小波系數(shù)讀取控制單元、小波系數(shù)緩存單元、優(yōu)先級控制單元、 小波系數(shù)編碼單元、編碼系數(shù)緩存單元和碼流優(yōu)化截取單元;圖像小波變換單 元按照JPEG2000算法,將原始圖像數(shù)據(jù)分解成小波系數(shù)塊后送至存儲器;小 波系數(shù)讀取控制單元按照設(shè)定的掃描順序?qū)⑿〔ㄏ禂?shù)塊從存儲器中讀出并送至 小波系數(shù)緩存單元;小波系數(shù)編碼單元由一個或多個DSP組成,用于對小波系 數(shù)塊進行編碼,每個DSP發(fā)出數(shù)據(jù)交換請求并送至優(yōu)先級控制單元;優(yōu)先級控 制單元對小波系數(shù)編碼單元中的各DSP發(fā)出的數(shù)據(jù)交換請求進行優(yōu)先級排序, 并控制各DSP按照優(yōu)先級順序從小波系數(shù)緩存單元中讀出對應(yīng)的小波系數(shù)塊; 小波系數(shù)編碼單元將編碼后的小波系數(shù)碼塊送至編碼系數(shù)緩存單元;碼流優(yōu)化 截取單元從編碼系數(shù)緩存單元讀取所有系數(shù)塊以及與每個系數(shù)塊對應(yīng)的截取點 和失真值,根據(jù)Lagrange算法尋找規(guī)定壓縮碼率下失真最小的一組截取點, 并從所述截取點起截取每個系數(shù)塊的部分碼流,經(jīng)過RS編碼后與系統(tǒng)外部輸 入的輔助信息進行拼接,最后向系統(tǒng)外部輸出。
所述的小波系數(shù)讀取控制單元將'J 、波系數(shù)塊從存儲器中讀出時的掃描順序 為對于存儲器中存儲的將圖像進行n級小波變換后產(chǎn)生的3n+1個子帶,子
帶之間按照LLn、 HLn、 LHn、 HHn、 HLn-1、 LHn-1、 HHn國1........ HL2、
LH2、 HH2、 HL1、 LH1、 HH1的Z字形順序掃描;在每個子帶內(nèi)將所有的小 波系數(shù)塊劃分為對稱的四組,四組間按照Z字形順序掃描,每組再按照對稱的 四部分進行劃分,四部分間的掃描順序也為Z字形,直到劃分后得到的數(shù)據(jù)塊 與預(yù)定值大小相等;對于每個劃分后得到的與預(yù)定值大小相等的數(shù)據(jù)塊按照條 帶順序掃描,每個數(shù)據(jù)塊分成4行一個條帶,由上至下順序掃描每個條帶,條 帶內(nèi)部/人左至右順序掃描每列,每列從上到下掃描。
所述的優(yōu)先級控制單元對各DSP發(fā)出的數(shù)據(jù)交換請求進行優(yōu)先級排序的 方法為釆用兩級FIFO實現(xiàn),先將各DSP發(fā)出的請求狀態(tài)進行編碼并緩存在
FIFOA中,然后根據(jù)FIFOA的空標志判斷是否有請求被存儲,若有則讀出請 求的編碼信息,根據(jù)預(yù)先設(shè)定的優(yōu)先級對所述編碼信息進行排序并順序?qū)懭?FIFOB,根據(jù)FIFOB的空標志讀取FIFOB中存儲的編碼信息并譯碼,優(yōu)先級 控制單元產(chǎn)生響應(yīng)信號。
所述的小波系數(shù)緩存單元或編碼系數(shù)緩存單元采用FPGA內(nèi)部的雙口 BLOCKRAM實現(xiàn)。
所述的小波系數(shù)編碼單元中各DSP與小波系數(shù)緩存單元或編碼系數(shù)緩存
AA朵A 六A、 A 4 J!! Ak3lT右乂A嬰-
本發(fā)明與現(xiàn)有技術(shù)相比的優(yōu)點在于
(1 )本發(fā)明系統(tǒng)采用小波系數(shù)讀取控制單元、優(yōu)先級控制單元以及小波系 數(shù)編碼單元相配合完成圖像小波系數(shù)塊的讀取和編碼操作,小波系數(shù)讀取控制 單元按照設(shè)定的掃描順序?qū)⑿〔ㄏ禂?shù)塊從存儲器中讀出,與順序讀取相比提高 了讀取速率,小波系數(shù)編碼單元由一個或多個DSP組成,用于對小波系數(shù)塊進 行編碼,可充分利用多DSP的并行處理能力,提高整個系統(tǒng)的處理速度,優(yōu)先 級控制單元對各DSP發(fā)出的數(shù)據(jù)交換請求進行優(yōu)先級排序后再分別響應(yīng),進一 步提高了系統(tǒng)的處理速度。當(dāng)小波系數(shù)讀取控制單元和優(yōu)先級控制單元采用 FPGA實現(xiàn)時,其與多片DSP結(jié)合并行處理,可保證系統(tǒng)的處理速度達到每秒 30MSample/s。對于復(fù)雜的遙感圖像,4倍壓縮時峰值信噪比與JPEG2000標 準軟件計算結(jié)果僅差0.5Db,保真性好;
(2) 本發(fā)明中小波系數(shù)讀取控制單元的掃描順序為,數(shù)據(jù)塊與數(shù)據(jù)塊之間 是Z字形掃描,塊內(nèi)是條帶掃描的順序產(chǎn)生小波系數(shù)讀地址,可以大大節(jié)省實 現(xiàn)此功能的硬件實現(xiàn)空間,從而提高小波系數(shù)的尋址速度。另夕卜根據(jù)需求,可以 改變小波系數(shù)塊的子帶掃描順序為由低層小波系數(shù)到高層、或由高層小波系數(shù) 至低層,以更好的適應(yīng)DSP并行編碼時概率更新后編碼的高效性;
(3) 優(yōu)先級控制單元采用兩級FIFO實現(xiàn)各DSP發(fā)出的數(shù)據(jù)交換請求, 優(yōu)先級排序相對固定順序的排序方法可以最大限度減少DSP的等待時間,保證
整個系統(tǒng)的高速運行;
(4) 釆用FPGA內(nèi)部的雙口 BLOCKRAM實現(xiàn)小波系數(shù)《爰存單元或編碼 系數(shù)緩存單元,可通過雙口 RAM的讀寫控制實現(xiàn)FPGA與DSP之間小波系數(shù) 的交換,相對于采用FPGA片外存儲單元作為緩存的設(shè)計,硬件資源占用少, 路徑延遲小,BLOCKRAM讀寫速度快且易于控制;
(5) 小波系數(shù)編碼單元中各DSP采用外部存儲器接口的擴展型直接存儲 器存儲方式與小波系數(shù)緩存單元或編碼系數(shù)緩存單元的數(shù)據(jù)交換相對常用的直 接存儲器存儲方式,可以有效地提高DSP與FPGA數(shù)據(jù)交換的效率和速度, 以實現(xiàn)DSP編碼過程中數(shù)據(jù)交換和數(shù)據(jù)編碼并行執(zhí)行機制,從而保證整個系統(tǒng) 的高速處理能力。
圖1為JPEG2000算法的基本結(jié)構(gòu)框圖2為本發(fā)明圖像壓縮處理系統(tǒng)的硬件實現(xiàn)原理框圖3為本發(fā)明系統(tǒng)中小波系數(shù)塊塊計數(shù)、塊序號和塊地址對應(yīng)關(guān)系圖4為本發(fā)明系統(tǒng)中小波系數(shù)塊內(nèi)條帶掃描順序圖5為本發(fā)明系統(tǒng)中小波系數(shù)讀地址產(chǎn)生原理圖6為本發(fā)明系統(tǒng)中單片DSP與兩片F(xiàn)PGA數(shù)據(jù)交換原理框圖7為本發(fā)明系統(tǒng)中DSP與FPGA數(shù)據(jù)交換申請的優(yōu)先級排隊原理框圖8為本發(fā)明系統(tǒng)中各DSP申請判斷及產(chǎn)生機理圖9為本發(fā)明系統(tǒng)中優(yōu)先級控制單元進行優(yōu)先級排隊的狀態(tài)轉(zhuǎn)移圖10為本發(fā)明系統(tǒng)中數(shù)據(jù)緩存單元釆用的雙口 RAM讀寫控制原理框圖11為本發(fā)明系統(tǒng)中小波系數(shù)編碼單元的DSP處理小波系數(shù)的流程圖12為本發(fā)明系統(tǒng)中碼流優(yōu)化截取單元EDMA讀寫與DSP處理并行機制
原理框圖。
具體實施例方式
如圖2所示,本發(fā)明圖1象壓縮處理系統(tǒng)包括,下面以四片DSP與兩片F(xiàn)PGA
的設(shè)計方案為例進一步說明本發(fā)明系統(tǒng)的工作過程。
一、 四片DSP與兩片F(xiàn)PGA耳關(guān)合設(shè)計的高速實現(xiàn)方案
如圖2所示,在本發(fā)明系統(tǒng)中,JPEG2000算法是由四片DSP與兩片F(xiàn)PGA 共同來完成的,其中小波變換FPGA及其外圍SRAM完成圖像數(shù)據(jù)緩存和小 波變換的硬件實現(xiàn),四片DSP完成小波系數(shù)塊的嵌入式比特平面編碼,而另一 片F(xiàn)PGA完成編碼數(shù)據(jù)的優(yōu)化截取、RS編碼以及輔助數(shù)據(jù)的緩存。小波變換 FPGA內(nèi)部開辟有四個BLOCKRAM,分別作為四片DSP的一部分外部存儲空 間,以便存儲小波系數(shù)塊;優(yōu)化截取FPGA內(nèi)部開辟有四個BLOCKRAM作為 四片DSP的另一部分外部存儲空間,以存儲編碼后的小波數(shù)據(jù)。
圖像數(shù)據(jù)緩存采用兩片SRAM來實現(xiàn)乒乓緩存和圖像塊的劃分。在本實施 例中,輸入圖像(以3072*1024為例說明)以3072像素為一行,SRAM緩存 1024行可劃分為3個1024*1024大小的TILE。小波變換FPGA以一個TILE 為處理單位,分別讀出三個TILE進行小波變換。小波變換FPGA完成一個TILE 圖像數(shù)據(jù)97整形小波變換。整形小波變換系數(shù)采用JPEG2000標準中所對應(yīng) 的系數(shù)。硬件實現(xiàn)需要外部SRAM緩存中間計算結(jié)果。為節(jié)省存儲空間,可采 用LINE_BASED小波變換技術(shù),行變換、列變換可以同時進行,當(dāng)小波變換 結(jié)束后,將緩存的各級小波變換系數(shù)寫入外部SRAM。采用兩片外部SRAM可 以實現(xiàn)小波變換系數(shù)的乒乓緩存。
小波變換FPGA與多片DSP進行小波系數(shù)的高速交換時,是按照預(yù)先設(shè) 定的順序讀出小波系數(shù)塊并存入FPGA內(nèi)部存^f諸空間(雙口 BLOCKRAM ),該 存儲空間作為DSP的外部擴展存儲空間,由DSP進行數(shù)據(jù)讀取操作。
四片DSP對小波系數(shù)塊分別進行嵌入式比特平面編碼。每個小波系數(shù)塊編 碼后的系數(shù)存入優(yōu)化截取FPGA內(nèi)部存儲空間(雙口 BLOCKRAM )。優(yōu)化截取 程序先讀取所有系數(shù)塊并存入外部SRAM中,再讀取每個系數(shù)塊截取點和相應(yīng) 的失真值緩存在FPGA內(nèi)部開設(shè)的SRAM。根據(jù)處理速度,內(nèi)部和外部均開設(shè) 了三組區(qū)域進行數(shù)據(jù)的乒乓緩存。程序根據(jù)Lagrange算法尋找規(guī)定壓縮碼率
(如4:1)下失真最小的一組截取點,再根據(jù)截取點截取每塊系數(shù)的部分碼流, 碼流組合后進行RS編碼,再與緩存的輔助數(shù)據(jù)拼接后輸出。
該方案可高速實現(xiàn)JPEG2000算法的原因主要有以下幾點1 )充分利用 FPGA并行處理機制解決小波變換和優(yōu)化截取的快速碌/f牛實現(xiàn);2)采用DSP 編碼小波系數(shù)塊是根據(jù)EBCOT算法中T1編碼基于小波系數(shù)塊的特點,并利 用了 DSP強大的數(shù)據(jù)處理功能;3)小波變換FPGA與多片DSP進行小波系 數(shù)的高速交換是保證FPGA與DSP發(fā)揮各自處理優(yōu)勢,保證整體處理速度的 關(guān)鍵。經(jīng)測試,在DSP主頻為850Mhz時,單片DSP與FPGA數(shù)據(jù)交換速率 為7CT16Mbps,四片DSP與FPGA數(shù)據(jù)交換的速率可以達到4.48Gbps。
二 、 小波系數(shù)塊的高效尋址
小波系數(shù)塊的高效尋址要解決的問題是,根據(jù)JPEG2000算法的要求,將 小波系數(shù)塊以及塊內(nèi)的系數(shù)按照固定的順序讀出,即按照一定的掃描順序產(chǎn)生 讀小波系數(shù)的讀地址。小波系數(shù)塊讀出的掃描順序為塊與塊之間是Z字形掃 描順序,塊內(nèi)是條帶掃描順序。由于碼塊編碼過程中要根據(jù)幾個碼塊編碼系數(shù) 進行上下文概率更新,統(tǒng)計特性一致的碼塊為一組進行概率更新,會使概率分 布更為集中,編碼效率更高。因此按照Z字的掃描順序?qū)Υa塊進行掃描。Z字 形掃描順序即將小波系數(shù)分成大小相同的塊,按照Z字形順序進行編號。如圖 3所示,1024*1024大小的圖像經(jīng)過四級小波變換后,具有十三個子帶(粗實 線劃分出的區(qū)域)。按照64*64的大小為一個系數(shù)塊,可以劃分為256個系數(shù) 塊(虛線劃分出的區(qū)域)。Z字掃描首先體現(xiàn)在子帶掃描順序,即對四級小波變 換按照LL4、 HL4、 LH4、 HH4、 HL3、 LH3、 HH3、 HL2、 LH2、 HH2、 HL1、 LH1、 HH1的先后順序掃描。然后在每個子帶內(nèi)將所有的塊劃分為對稱的四組, 每組掃描順序也為Z字形。每組繼續(xù)劃分直到只剩一個數(shù)據(jù)塊為止,該數(shù)據(jù)塊 的大小可以根據(jù)需要設(shè)定,如32*32、 64*64等。圖3中每個系數(shù)塊中有兩個 數(shù)字,上層數(shù)字是按照LL4、 HL4、 LH4、 HH4、 HL3、 LH3、 HH3、 HL2、 LH2、 HH2、 HL1、 LH1、 HH1子帶順序進行的塊序號編排,對應(yīng)圖5中的塊計^:。
而下層數(shù)字是按照HL1、 LH1、 HH1、 HL2、 LH2、 HH2、 HL3、 LH3、 HH3、 HL4、 LH4、 HH4、 LL4子帶順序進行的塊序號編排,對應(yīng)圖5中的塊序號。 之所以按照這個順序是因為在4: 1的固定壓縮比下可以使得DSP的編碼效率 達到最優(yōu)值。
每個系數(shù)塊內(nèi)的條帶掃描順序如圖4所示,即將一個系數(shù)塊分成四行一個 條帶,由上至下順序掃描每個條帶,對于64*64大小的數(shù)據(jù)塊,共分成16個 條帶。條帶內(nèi)部從左至右順序掃描每列,每列是從上到下掃描。因為條帶中每 列小波系數(shù)往往是相同或相近的,該掃描順序有利于小波系數(shù)相關(guān)性的提:f又。
根據(jù)掃描順序,產(chǎn)生讀地址可以按照圖5所示的方法實現(xiàn)。圖5中SRAM 讀地址是由20位二進制數(shù)表示1024*1024大小地址,其中高8位是塊地址, 低12位表示塊內(nèi)條帶地址。塊地址是由圖5的輸入,塊計數(shù)經(jīng)塊序號產(chǎn)生模 塊和塊地址產(chǎn)生模塊生成的,而塊內(nèi)條帶地址則是由圖5的輸入,即塊內(nèi)計數(shù) 經(jīng)條帶地址產(chǎn)生模塊生成的。塊內(nèi)條帶地址的高4位表示條帶序號(從0到15), 低8位表示64*4大小條帶內(nèi)系數(shù)的序號。塊計數(shù)由一個8位計數(shù)器產(chǎn)生,通 過塊序號產(chǎn)生模塊映射為塊序號,塊序號通過塊地址產(chǎn)生模塊映射為塊地址。 塊地址就是按照從左到右,由上至下的逐塊掃描順序遞增。塊內(nèi)計數(shù)由一個12 位的計數(shù)器產(chǎn)生,表示一個系數(shù)塊內(nèi)部按照每行從左至右,再從上至下逐行掃 描的順序。通過條帶地址產(chǎn)生模塊可以轉(zhuǎn)化為圖4所示的掃描順序。例如圖3 中第12塊(較小數(shù)字)小波塊中第3行3列的小波系數(shù),其塊地址的產(chǎn)生過 程是塊計數(shù)12先變?yōu)閴K序號76再變?yōu)閴K地址42。條帶地址是由塊內(nèi)計數(shù)值 11中高4位表示的條帶序號0和條帶內(nèi)掃描順序11變?yōu)榈?30組成。其最終 地址是42*4096+0*256+130=172162。采用圖5所示的方法實現(xiàn)小波系數(shù)塊之 間的Z字掃描方法和小波系數(shù)塊內(nèi)的條帶掃描可以大大節(jié)省實現(xiàn)此功能的硬件 實現(xiàn)空間,從而提高小波系數(shù)的尋址速度。
三、雙口 RAM寫小波系數(shù)優(yōu)先級控制
如圖6所示,本發(fā)明實施例中DSP采用EMIF接口通過EDMA方式進行
外部存儲空間的訪問。該存儲空間是FPGA內(nèi)部的BLOCKRAM來實現(xiàn)雙口 RAM, FPGA對該空間也進行存儲操作。雙口 RAM的每個端口都有獨立的數(shù) 據(jù)線,地址線和讀、寫使能控制線。圖6中WV BLOCKRAM1為實現(xiàn)小波變 換系數(shù)緩存的雙口 RAM。其中A 口數(shù)據(jù)線、地址線、讀寫使能分別為 WV一DATA一A
、術(shù)—ADDR一攀.15]、 WV一EN一A、 WV—WE一A, B 口數(shù) 據(jù)線、地址線、讀寫使能分別為DATA_B
、 ADDR_B
、 EN—B、 WE—B。圖6中OT BLOCKRAM2為實現(xiàn)編碼系數(shù)緩存的雙口 RAM。其中A 口數(shù)據(jù)線、地址線、讀寫使能分別為WV—DATA—A[O..15]、 VW_ADDR—A[O.. 15]、 WV—EN_A、 WV—WE—A, B 口數(shù)據(jù)線、地址線、讀寫使能與WVBLOCKRAM1 的B 口公用。本實施例中采用16位數(shù)據(jù)線和15位地址線,B 口高位地址線 (ADDR—B[14])用于區(qū)分同一片DSP對應(yīng)的兩片存儲空間。ADDR—B[14]= '0,表明對應(yīng)小波變換緩存RAM, ADDR_B[14]= '1,表明對應(yīng)編碼系數(shù)緩 存RAM。 BLOCKRAM內(nèi)部數(shù)據(jù)空間劃分為標志位、有效數(shù)據(jù)區(qū)。設(shè)定零地址 空間為讀寫狀態(tài)標志,以表示雙口的操作狀態(tài)。如WV_BLOCKRAM1零地址 寫入"AAAA"表明小波數(shù)據(jù)塊已經(jīng)寫入,等待DSP讀出。DSP在讀完數(shù)據(jù)后 在零地址寫入"BBBB",表明小波數(shù)據(jù)已經(jīng)讀出,可以寫入下一塊小波數(shù)據(jù), 即對FPGA發(fā)出了可以寫入凄t據(jù)的申請。
圖7為本發(fā)明系統(tǒng)中DSP與FPGA數(shù)據(jù)交換申請的優(yōu)先級排隊原理框圖。 FPGA不斷查詢多個BLOCKRAM (多片DSP的外部存儲空間)中DSP申請 數(shù)據(jù)交換的標志位,對多個申請進行存儲、優(yōu)先級排序并將排序后的序號存儲, 最后逐個響應(yīng)申請。采用兩級FIFO加優(yōu)先級控制和時序控制的方法以完成申 請的判斷、存儲、排隊及響應(yīng),該方法可以保證多片DSP以最高效的速度讀出。 申請判斷及產(chǎn)生模塊要不斷查詢四個BLOCKRAM的零地址,當(dāng)某個 BLOCKRAM零地址數(shù)據(jù)為"AAAA"時,信號13*變高。由于四個BLOCKRAM 可能同時產(chǎn)生申請,因此要在任何一個申請產(chǎn)生時將四個申請狀態(tài)進行編碼并 緩存,即產(chǎn)生寫FIFO的數(shù)據(jù)和使能。圖8為申請判斷及產(chǎn)生機理圖,在b1、
b2、 b3或b4、由低變高的時刻產(chǎn)生一個時鐘寬度的脈沖信號S1、 S2、 S3或 S4以表示對應(yīng)的申請狀態(tài),并將此狀態(tài)鎖存并存入FIFO中。例如圖8中,b3 先由低變高時,申請狀態(tài)的編碼是S1、 S2、 S3和S4狀態(tài)組合,即"0010", 同時寫信號We—fjfoa變高,將"0010"寫入FIFOA。根據(jù)先入先出的原則, 先產(chǎn)生的申請將先寫入并先響應(yīng)。如果兩個以上的申請同時產(chǎn)生,例如b1、 b2 同時變高,則申請狀態(tài)為"1100",優(yōu)先級排序才莫塊會根據(jù)約定的優(yōu)先級順序決 定先響應(yīng)b1還是b2。之所以采用FIFO緩存是為了解決連續(xù)兩個以上的申請 先后到來時,優(yōu)先級排隊可能發(fā)生擁堵的情況。
申請的優(yōu)先級排序模塊在申請響應(yīng)的空隙根據(jù)FIFOA的空標志判斷是否 有申請被存儲。 一旦有申請即產(chǎn)生讀信號(圖7中Rd—a)并讀出申請的編碼 信號(圖7中Dout一a),然后根據(jù)預(yù)定的優(yōu)先級進行優(yōu)先級排隊,將排序好的 申請標志(圖7中Din—b)順序?qū)懭隖IFOB。優(yōu)先級排序模塊是采用狀態(tài)機的 寫法列舉16種輸入狀態(tài)及相應(yīng)的狀態(tài)轉(zhuǎn)移,針對每種非零狀態(tài)均產(chǎn)生寫FIFOB 的寫門控和相應(yīng)的寫數(shù)據(jù)。優(yōu)先級排隊狀態(tài)轉(zhuǎn)移圖見圖9,其中16個圓圈表示 16種狀態(tài),對應(yīng)FIFOA的15種可能的輸出和一種復(fù)位狀態(tài)"0000 "。每種 狀態(tài)旁"Dout "表示該狀態(tài)應(yīng)輸出到FIFOB的信號值,也就是優(yōu)先級排隊模 塊的輸出。針對每種輸入狀態(tài),狀態(tài)轉(zhuǎn)移及相應(yīng)的輸出是這樣的。復(fù)位信號到 來時,進入"0000"狀態(tài),無輸出,F(xiàn)IFOB寫信號無效FIFOA讀有效
(Wr=0,rd=1 )。在非復(fù)位狀態(tài)下,F(xiàn)IFOA輸出"0001",則狀態(tài)機進入"0001" 狀態(tài),Dout= "4",表明DSP4發(fā)出的申請進入FIFOB緩存,同時寫FIFOB 有效、讀FIFOA無效(Wr-1,rd二0),然后回到"0000"等待FIFOA非零輸出。 當(dāng)FIFOA輸出"0010",則狀態(tài)機進入輸入"0010"狀態(tài),Dout= "3",表明 DSP3發(fā)出的申請進入FIFOB緩存。如果輸入信號出現(xiàn)兩個以上"1",例如
"0011",則狀態(tài)機先輸出Dout= "4"表明先響應(yīng)DSP4,然后跳入"0010" 狀態(tài),輸出Dout= "3",即后響應(yīng)DSP3,最后回到"0000"狀態(tài)。進入輸入
"0001"狀態(tài),Dout= "2",表明DSP2發(fā)出的申請進入FIFOB緩存。當(dāng)輸入
是"1111",表明四片DSP同時產(chǎn)生申請,按照DSP4、 DSP3、 DSP2、 DSP1
的先后順序,則狀態(tài)轉(zhuǎn)移為"1110"、 "1100"、 "1000"、 "0000",同時產(chǎn)生連 續(xù)四個寫FIFOB門控和對應(yīng)的寫數(shù)據(jù)Dout- "4"、 Dout= "3"、 Dout- "2"、 Dout= "1"。依此類推,對應(yīng)FIFOA的15種輸出狀態(tài),都可以在圖9中找到 相應(yīng)的輸出和狀態(tài)轉(zhuǎn)移。在FIFOA非空時讀出的數(shù)據(jù)是有效的。FIFOB讀有 效信號產(chǎn)生是在申請相應(yīng)空閑期間進行查詢,如果FIFOB非空、FIFOB非寫 則產(chǎn)生FIFOB讀信號。
圖7中申請響應(yīng)模塊在申請響應(yīng)的空隙根據(jù)FIFOB的空標志在寫門控?zé)o效 時讀取FIFOB中存儲的標志并譯碼,產(chǎn)生響應(yīng)信號cT,同時將申請信號13*變 低,保證新的申請判斷能夠產(chǎn)生。例如FIFOB讀出"0001",則d4變?yōu)?1,, b4變?yōu)?0'。
四、小波系數(shù)雙口 RAM的讀寫控制
本發(fā)明實施例中,小波系凄t緩存單元和編碼系凄t緩存單元均采用雙口 RAM 來實現(xiàn)。小波系數(shù)雙口 RAM的讀寫控制模塊劃分如圖10。雙口 RAM的讀寫 控制完成的功能一方面是通過A 口信號產(chǎn)生模塊將從外部SRAM讀出的小波系 數(shù)塊根據(jù)門控d和地址addr按照雙口 RAM的寫時序?qū)懭階 口 (地址、數(shù)據(jù)、 寫使能、讀使能分別是圖10所示的addr_a、 data_a、 en—a、 we_a),并從A 口中讀出讀寫狀態(tài)標示(圖10所示的data—a—out)送入優(yōu)先級控制單元以進 行申請判斷和優(yōu)先級控制。另一方面DSP通過B 口信號產(chǎn)生模塊將從B 口讀 出標識(圖10所示的data—b一out)進行判斷,若讀出"AAAA"表明小波數(shù)據(jù) 塊已經(jīng)寫入,等待讀出。DSP產(chǎn)生讀使能、讀地址和讀時鐘(en、 addr、 elk) 通過B 口信號產(chǎn)生模塊從RAM的B 口將小波系數(shù)塊(data_dsp)讀出后,再 寫入"BBBB"標識(data—dsp),以表明數(shù)據(jù)已經(jīng)讀出,可以寫入下一小波系 數(shù)塊。A、 B 口信號產(chǎn)生模塊要保證B 口寫時,A口不發(fā)生讀,A口寫時,B口 不發(fā)生讀,以此保證讀數(shù)據(jù)正確。另外,B 口信號產(chǎn)生模塊還要根據(jù)高位地址 線狀態(tài)識別DSP發(fā)出的讀寫信號是針對小波變換FPGA還是優(yōu)化截取FPGA。
具體而言,當(dāng)Addr(14戶'0'時,表明針對小波變換FPGA,反之,當(dāng)Addr(14)=T 時,表明針對優(yōu)化截取FPGA。
五、DSP高速EMIF接口控制
為達到DSP和FPGA高速數(shù)據(jù)交換,DSP對于高速外部存儲器接口的控 制方式選擇和DSP處理數(shù)據(jù)流的并行處理機制設(shè)計是一個關(guān)4建環(huán)節(jié)。DSP訪 問外部存儲器時必須采用外部存儲器接口 (EMIF)接口。本實施例中DSP的 具體型號是TMS3206416,其CPU (中央處理單元)主頻可達1GHz,內(nèi)部具 有EMIFA和EMIFB兩個外部存儲器接口以及EDMA(擴展型直接存儲器存取) 控制器。本實施例中采用EMIFB接口完成對外部存儲器的訪問,具體采用16 比特數(shù)據(jù)總線寬度,同步接口模式。EDMA控制器負責(zé)DSP片內(nèi)存儲器L2與 外部存儲器之間的數(shù)據(jù)傳遞。經(jīng)實際測試,同步時鐘最高速率可達140MHz, 數(shù)據(jù)傳遞效率幾乎達到100%。當(dāng)DSP主頻工作在850MHz,單片DSP與FPGA 數(shù)據(jù)交換速率實際為7CT16Mbps時,四片DSP與FPGA數(shù)據(jù)交換的速率可以 達到4.48Gbps,設(shè)備已經(jīng)可以滿足30M采樣每秒的圖像輸入速率。
DSP處理小波系數(shù)流程如圖11所示。在DSP程序初始化過程中先寫 "BBBB"標識,表明FPGA可以寫小波系數(shù)了,然后等待"AAAA,,標識,等 到標識后置EDMA讀操作。在EDMA讀過程中首先判斷程序是否第一次寫, 如果是,則直接置"DDDD"標識(表明優(yōu)化截取FPGA內(nèi)部BLOACKRAM 已讀空)。在EDMA讀完后,等待"DDDD"標識,等到后置EDMA寫。在寫 上一塊編碼系數(shù)時,對當(dāng)前碼塊小波系數(shù)進行EBC處理(嵌入式比特平面編 碼)。編碼結(jié)束后等待EDMA寫結(jié)束和"AAAA"標識(表明小波變換FPGA 內(nèi)部BLOACKRAM已寫滿),如果兩者均滿足,則進行EDMA讀。讀下一塊 小波系數(shù)的過程中對當(dāng)前塊編碼數(shù)據(jù)進行MQ熵編碼,編碼結(jié)束后進入等待 EDMA讀完的判斷。
由于EDMA可以保證數(shù)據(jù)搬移過程中不啟用CPU(中央控制單元),因此, 在EDMA寫時,可以進行EBC操作,在EDMA讀時,可以進行MQ編碼。
EDMA讀寫與DSP處理并行機制如圖12。 一個完整的處理周期是從第一道豎 線開始至第三道豎線截至。在第一道豎線處判斷EDMA讀結(jié)束且讀到標識
"DDDD"(表明優(yōu)化截取FPGA內(nèi)部BLOACKRAM已讀空)時,在啟動EDMA 寫后立即開始EBC (嵌入式比特平面編碼)。如果EDMA足夠快,在EBC結(jié) 束時,就可在第二道豎線處判到EDMA寫結(jié)束,如果這時讀到標識"AAAA"
(表明小波變換FPGA內(nèi)部BLOACKRAM已寫滿)就可以立刻開始EDMA讀 和MQ熵編碼。如果讀寫EDMA速度足夠快時,DSP進行小波數(shù)據(jù)編碼的時 間就不受小波數(shù)據(jù)傳輸和編碼碼流傳輸?shù)挠绊懀蝗Q于EBC操作和MQ 編碼的速度。
嵌入式比特平面編碼(EBC)是按照重要性傳播、幅值細化和清理更新三 個編碼步驟順序進行的,每個PASS的結(jié)束點就是一個截取點。率失真優(yōu)化截 取算法就是在目標碼率為R的情況下,尋找每個碼塊的截取點,使各碼塊碼流 之和小于等于R時,每個碼塊的失真和最小。解決這種條件極值問題可以通過 Lagrange算法并歸結(jié)為單個碼塊的最小化問題,即對于給定的率失真門限可以 找到失真率大于率失真門P艮倒數(shù)時對應(yīng)的最大截取點。在編碼過程中可以計算 每個碼塊截取點相應(yīng)的失真率,得到一組率失真曲線。當(dāng)所有碼塊編碼結(jié)束后, 對于同一個率失真門限,可以找到每個碼塊的截取點和對應(yīng)的碼率之和。優(yōu)化 截取FPGA完成的功能就是就是采用二分法調(diào)整率失真門限,直到每個碼塊的 截取點對應(yīng)的碼率之和接近目標碼率R。
本發(fā)明說明書中未作詳細描述的內(nèi)容屬本領(lǐng)域技術(shù)人員的公知t支術(shù)。
權(quán)利要求
1、一種JPEG2000圖像壓縮處理系統(tǒng),其特征在于包括圖像小波變換單元、小波系數(shù)讀取控制單元、小波系數(shù)緩存單元、優(yōu)先級控制單元、小波系數(shù)編碼單元、編碼系數(shù)緩存單元和碼流優(yōu)化截取單元;圖像小波變換單元按照JPEG2000算法,將原始圖像數(shù)據(jù)分解成小波系數(shù)塊后送至存儲器;小波系數(shù)讀取控制單元按照設(shè)定的掃描順序?qū)⑿〔ㄏ禂?shù)塊從存儲器中讀出并送至小波系數(shù)緩存單元;小波系數(shù)編碼單元由一個或多個DSP組成,用于對小波系數(shù)塊進行編碼,每個DSP發(fā)出數(shù)據(jù)交換請求并送至優(yōu)先級控制單元;優(yōu)先級控制單元對小波系數(shù)編碼單元中的各DSP發(fā)出的數(shù)據(jù)交換請求進行優(yōu)先級排序,并控制各DSP按照優(yōu)先級順序從小波系數(shù)緩存單元中讀出對應(yīng)的小波系數(shù)塊;小波系數(shù)編碼單元將編碼后的小波系數(shù)碼塊送至編碼系數(shù)緩存單元;碼流優(yōu)化截取單元從編碼系數(shù)緩存單元讀取所有系數(shù)塊以及與每個系數(shù)塊對應(yīng)的截取點和失真值,根據(jù)Lagrange算法尋找規(guī)定壓縮碼率下失真最小的一組截取點,并從所述截取點起截取每個系數(shù)塊的部分碼流,經(jīng)過RS編碼后與系統(tǒng)外部輸入的輔助信息進行拼接,最后向系統(tǒng)外部輸出。
2、 根據(jù)權(quán)利要求1所述的一種JPEG2000圖像壓縮處理系統(tǒng),其特征在 于所述的小波系數(shù)讀取控制單元將小波系數(shù)塊從存儲器中讀出時的掃描順序 為對于存儲器中存儲的將圖像進行n級小波變換后產(chǎn)生的3n+1個子帶,子帶之間按照LLn、 HLn、 LHn、 HHn、 HLn-1、 LHn-1、 HHn-1........ HL2、LH2、 HH2、 HL1、 LH1、 HH1的Z字形順序掃描;在每個子帶內(nèi)將所有的小 波系數(shù)塊劃分為對稱的四組,四組間按照Z字形順序掃描,每組再按照對稱的 四部分進行劃分,四部分間的掃描順序也為Z字形,直到劃分后得到的數(shù)據(jù)塊 與預(yù)定值大小相等;對于每個劃分后得到的與預(yù)定值大小相等的數(shù)據(jù)塊按照條 帶順序掃描,每個數(shù)據(jù)塊分成4行一個條帶,由上至下順序掃描每個條帶,條 帶內(nèi)部從左至右順序掃描每列,每列從上到下掃描。
3、 根據(jù)權(quán)利要求1所述的一種JPEG2000圖像壓縮處理系統(tǒng),其特征在 于所述的優(yōu)先級控制單元對各DSP發(fā)出的數(shù)據(jù)交換請求進4亍優(yōu)先級排序的方 法為采用兩級FIFO實現(xiàn),先將各DSP發(fā)出的請求狀態(tài)進行編碼并緩存在 FIFOA中,然后根據(jù)FIFOA的空標志判斷是否有請求被存儲,若有則讀出請 求的編碼信息,根據(jù)預(yù)先設(shè)定的優(yōu)先級對所述編碼信息進行排序并順序?qū)懭?FIFOB,根據(jù)FIFOB的空標志讀取FIFOB中存儲的編碼信息并譯碼,優(yōu)先級 控制單元產(chǎn)生響應(yīng)信號。
4、 根據(jù)權(quán)利要求1所述的一種JPEG2000圖像壓縮處理系統(tǒng),其特征在 于所述的小波系數(shù)緩存單元或編碼系數(shù)緩存單元采用FPGA內(nèi)部的雙口 BLOCKRAM實現(xiàn)。
5、 根據(jù)權(quán)利要求1所述的一種JPEG2000圖像壓縮處理系統(tǒng),其特征在 于所述的小波系數(shù)編碼單元中各DSP與小波系凄t緩存單元或編碼系數(shù)緩存單 元的數(shù)據(jù)交換方式為采用外部存儲器接口的擴展型直接存儲器存取方式。
全文摘要
一種JPEG2000圖像壓縮處理系統(tǒng),圖像小波變換單元按照JPEG2000算法,將原始圖像分解成小波系數(shù)塊后送存儲器;小波系數(shù)讀取控制單元按設(shè)定的掃描順序?qū)⑾禂?shù)塊從存儲器中讀出并送小波系數(shù)緩存單元;小波系數(shù)編碼單元由DSP組成,對系數(shù)塊進行編碼,每個DSP發(fā)出數(shù)據(jù)交換請求并送優(yōu)先級控制單元進行優(yōu)先級排序,各DSP按照優(yōu)先級順序從小波系數(shù)緩存單元中讀出對應(yīng)的系數(shù)塊;小波系數(shù)編碼單元將編碼后的系數(shù)碼塊送至編碼系數(shù)緩存單元;碼流優(yōu)化截取單元從編碼系數(shù)緩存單元讀取所有系數(shù)塊及對應(yīng)的截取點和失真值,根據(jù)Lagrange算法尋找規(guī)定壓縮碼率下失真最小的一組截取點并截取每個系數(shù)塊的部分碼流,經(jīng)過RS編碼后與輔助信息拼接后向外部輸出。
文檔編號H04N7/26GK101365138SQ20081022391
公開日2009年2月11日 申請日期2008年10月10日 優(yōu)先權(quán)日2008年10月10日
發(fā)明者于巍巍, 張銳菊, 王菊花, 程亞娟, 譚賢紅 申請人:中國航天科技集團公司第五研究院第五〇四研究所