《電子技術(shù)應(yīng)用》
您所在的位置:首頁(yè) > 可編程邏輯 > 設(shè)計(jì)應(yīng)用 > JPEG2000 MQ編碼器的設(shè)計(jì)與實(shí)現(xiàn)
JPEG2000 MQ編碼器的設(shè)計(jì)與實(shí)現(xiàn)
雷 磊,羅桂娥
(中南大學(xué),湖南 長(zhǎng)沙 410083)
摘要: 提出了一種JPEG2000 MQ編碼器的硬件設(shè)計(jì)方案。通過(guò)狀態(tài)更新超前預(yù)測(cè)、前導(dǎo)零檢測(cè)、重歸一化超前預(yù)測(cè)等方法以及字節(jié)輸出的改進(jìn)處理,使MQ編碼器的工作速率可達(dá)1CxD/cycle。同時(shí)對(duì)各流水段中的路徑進(jìn)行優(yōu)化改進(jìn),提高了系統(tǒng)的最高時(shí)鐘頻率。采用Verilog語(yǔ)言進(jìn)行RTL級(jí)描述,并在Altera的FPGA上進(jìn)行了仿真驗(yàn)證。結(jié)果表明,在Altera的EP2S60F67214上,該MQ編碼器的最高工作時(shí)鐘頻率可達(dá)65.19 MHz。
Abstract:
Key words :

摘  要: 提出了一種JPEG2000 MQ編碼器的硬件設(shè)計(jì)方案。通過(guò)狀態(tài)更新超前預(yù)測(cè)、前導(dǎo)零檢測(cè)、重歸一化超前預(yù)測(cè)等方法以及字節(jié)輸出的改進(jìn)處理,使MQ編碼器的工作速率可達(dá)1CxD/cycle。同時(shí)對(duì)各流水段中的路徑進(jìn)行優(yōu)化改進(jìn),提高了系統(tǒng)的最高時(shí)鐘頻率。采用Verilog語(yǔ)言進(jìn)行RTL級(jí)描述,并在Altera的FPGA上進(jìn)行了仿真驗(yàn)證。結(jié)果表明,在Altera的EP2S60F67214上,該MQ編碼器的最高工作時(shí)鐘頻率可達(dá)65.19 MHz。
關(guān)鍵詞: 圖像壓縮;JPEG2000;算術(shù)編碼;流水線

    JPEG2000是新一代的靜態(tài)圖像壓縮標(biāo)準(zhǔn)。與JPEG相比,JPEG2000不僅具有更為優(yōu)良的壓縮性能,而且提供了更多的新特性,例如支持質(zhì)量、分辨率的可伸縮性和感興趣域編碼等。JPEG2000編碼包括了小波變換、量化、位平面編碼和MQ編碼這4個(gè)主要的編碼流程。其中位平面編碼和MQ編碼是JPEG2000中復(fù)雜度較高的2個(gè)模塊。這2個(gè)模塊處理的時(shí)間花費(fèi)了整個(gè)編碼時(shí)間的一半以上。而當(dāng)前的位平面編碼處理速度已經(jīng)遠(yuǎn)超過(guò)MQ編碼的速度,也就是說(shuō)MQ編碼器的編碼速率已經(jīng)成為了JPEG2000處理速度快慢的關(guān)鍵所在。
  MQ編碼器是一種改進(jìn)的自適應(yīng)算術(shù)編碼器。雖然MQ編碼器避免了乘法運(yùn)算,但算法仍然比較復(fù)雜,同時(shí)采用串行處理方式的MQ編碼標(biāo)準(zhǔn)算法用硬件實(shí)現(xiàn)起來(lái)效率低下。而目前國(guó)內(nèi)外對(duì)MQ編碼硬件實(shí)現(xiàn)有不少有效的處理方法。本文對(duì)面向軟件的標(biāo)準(zhǔn)算法進(jìn)行了改進(jìn)以提高硬件實(shí)現(xiàn)的編碼速率:采用FIFO進(jìn)行輸入輸出的緩存處理,優(yōu)化了狀態(tài)更新及A、C區(qū)間處理過(guò)程以提高處理速度,改進(jìn)了字節(jié)輸出從而節(jié)約了資源面積。該設(shè)計(jì)方案采用了4級(jí)流水,能夠達(dá)到比較高的數(shù)據(jù)吞吐量。
1 MQ編碼器原理和算法流程
  MQ編碼器可以理解為這樣一種機(jī)器:它將二進(jìn)制數(shù)據(jù)判決位D和相關(guān)的上下文內(nèi)容CX所組成的序列映射成單個(gè)的壓縮碼字,即壓縮數(shù)據(jù)CD。當(dāng)數(shù)據(jù)判決位D和其上下文內(nèi)容CX組成的數(shù)據(jù)對(duì)(CX,D)從位平面編碼器輸出到達(dá)MQ編碼器后,由MQ編碼器產(chǎn)生壓縮數(shù)據(jù)位CD。
    MQ編碼器通過(guò)使用CX狀態(tài)表和概率估值表能夠?qū)崿F(xiàn)自適應(yīng)的功能。其中CX狀態(tài)表包括19個(gè)上下文,每個(gè)上下文都對(duì)應(yīng)著不同的狀態(tài),每個(gè)狀態(tài)包括索引值(index)和大概率符號(hào)值(mps)。而概率估值表是一個(gè)可以對(duì)原始數(shù)據(jù)快速適應(yīng)的概率估計(jì)模型,包括47個(gè)索引值。每個(gè)索引都對(duì)應(yīng)著不同的狀態(tài),這些狀態(tài)包括下一個(gè)狀態(tài)的索引值NMPS(6位)和NLPS(6位)、交換位SWITCH(1位)和小概率符號(hào)概率值Qe(15位)共28位。這2個(gè)表的具體內(nèi)容可以從參考文獻(xiàn)[2]中找到。
  MQ編碼是基于自適應(yīng)的算術(shù)編碼改進(jìn)而來(lái)的。而算術(shù)編碼的基本操作是遞歸地劃分當(dāng)前的子區(qū)間:當(dāng)編碼器接收到一個(gè)新的待壓縮碼,當(dāng)前子區(qū)間就被劃分成2個(gè)子區(qū)間,被劃分的邊界更新成為新的區(qū)間的左邊界,也即左區(qū)間值,子區(qū)間的間隔大小也更新成為新區(qū)間的間隔大小。
 因此,MQ編碼器采用一個(gè)A寄存器來(lái)存儲(chǔ)當(dāng)前子區(qū)間的間隔大小,而用一個(gè)C寄存器來(lái)存儲(chǔ)當(dāng)前子區(qū)間的左區(qū)間值。當(dāng)MQ編碼器接收到輸入數(shù)據(jù)對(duì)(CX,D),通過(guò)概率估計(jì)表和狀態(tài)表找到相應(yīng)的Qe值,根據(jù)當(dāng)前的情況來(lái)決定A和C如何進(jìn)行更新,其中包括了A、C寄存器值與Qe值的加減操作及對(duì)A、C寄存器的左移重歸一化操作,同時(shí)伴隨著壓縮字節(jié)輸出等過(guò)程。
2 MQ編碼器的硬件設(shè)計(jì)
    本文設(shè)計(jì)的MQ編碼器采用4級(jí)流水線,并使用了一些加速技術(shù)對(duì)關(guān)鍵部分進(jìn)行了改進(jìn),改進(jìn)后的MQ編碼器流水線總體架構(gòu)如圖1所示。


    第1階段:用一個(gè)RAM對(duì)CX狀態(tài)進(jìn)行存儲(chǔ)和更新。把從FIFO中輸出的(CX,D)數(shù)據(jù)對(duì)做為輸入,根據(jù)CX的值來(lái)得到概率估值表的索引和mps的值。然后由D值與mps值比較判斷是進(jìn)行大概率編碼(mps)還是進(jìn)行小概率編碼(lps)。要注意的是,要確保RAM和ROM輸出消耗的時(shí)間為1個(gè)時(shí)鐘,否則就達(dá)不到本設(shè)計(jì)的時(shí)序要求。同時(shí),由于目標(biāo)是1個(gè)時(shí)鐘輸入1對(duì)數(shù)據(jù)對(duì),而在編碼過(guò)程中如果出現(xiàn)了連續(xù)2個(gè)輸入的CX具有相同的值并且編碼第1個(gè)數(shù)據(jù)發(fā)生了重歸一化時(shí),就會(huì)產(chǎn)生時(shí)序紊亂。一個(gè)解決的辦法是對(duì)下一個(gè)索引值加入一個(gè)超前狀態(tài)分析,這樣就可以在編碼同一個(gè)CX的數(shù)據(jù)時(shí)不必等待RAM的輸出而直接讀入由組合邏輯產(chǎn)生的下一個(gè)索引值,從而滿足了時(shí)序的要求。圖2所示為加入超前狀態(tài)分析的CX表。


 第2階段:用一個(gè)ROM對(duì)概率估值表進(jìn)行存儲(chǔ)和讀取。把從RAM中輸出的index和mps作為輸入數(shù)據(jù),數(shù)據(jù)位由高到低排列。根據(jù)index的值導(dǎo)出相應(yīng)的Qe、NMPS、NLPS、SWITCH等值。本設(shè)計(jì)由于采用了超前狀態(tài)預(yù)測(cè),沒(méi)必要把下一次的lps和mps的概率值加入到估值表中,而僅需添加前導(dǎo)零的個(gè)數(shù),使得在第3階段發(fā)生重歸一化時(shí)能夠一步完成移位操作,避免了重復(fù)和循環(huán)過(guò)程,大大提高了編碼效率。具體的移位思想可以參看參考文獻(xiàn)[3]。
 第3階段:對(duì)A寄存器和C寄存器低17位進(jìn)行更新處理。把28位的C寄存器分開(kāi)處理可以有效縮短關(guān)鍵路徑,因此在這個(gè)階段先對(duì)C寄存器的低17位進(jìn)行處理。另外,由于要對(duì)A和2Qe的大小進(jìn)行比較從而判斷是否需要進(jìn)行歸一化。為了減少路徑消耗,可以把A<2Qe替換成A[14:0]-Qe[14:0],看是否有借位產(chǎn)生來(lái)處理,把它作為是否要進(jìn)行重歸一化的判斷條件,同時(shí)把A和C寄存器的加減更新判斷邏輯簡(jiǎn)化成2個(gè)由于1個(gè)時(shí)鐘輸入1對(duì)數(shù)據(jù)對(duì)的關(guān)系,A、C寄存器將在1個(gè)時(shí)鐘周期后進(jìn)行數(shù)據(jù)更新替換,所以A、C的數(shù)據(jù)處理過(guò)程必須要在1個(gè)時(shí)鐘周期內(nèi)完成,因此本設(shè)計(jì)不能對(duì)這段路徑進(jìn)行流水線分割處理。圖3為對(duì)A寄存器處理的優(yōu)化設(shè)計(jì)結(jié)構(gòu)。C寄存器的處理結(jié)構(gòu)和A類似。


 第4階段:Chigh的處理和字節(jié)輸出。按照標(biāo)準(zhǔn)的字節(jié)輸出算法流程,需要1個(gè)緩沖寄存器B和1個(gè)減法計(jì)數(shù)器來(lái)輔助處理:先把高8位賦給B寄存器,看其值是否是0xFF和有沒(méi)有進(jìn)位位產(chǎn)生。如果為0xFF,則進(jìn)行位填充處理,如果有進(jìn)位位產(chǎn)生,則對(duì)B寄存器值進(jìn)行加1處理,再看是否要進(jìn)行位填充。這種處理方法具有很強(qiáng)的串行性,無(wú)法在1個(gè)時(shí)鐘周期內(nèi)完成全部的字節(jié)輸出過(guò)程,因此,有必要對(duì)這種方式進(jìn)行改進(jìn)。由于原算法加入了3位間隔位來(lái)限制輸出值的范圍,為了符合標(biāo)準(zhǔn),至少要左移19(即8+3+8)位才輸出1個(gè)字節(jié),同理,至少左移27位才輸出2個(gè)字節(jié),而小于19位的則不輸出字節(jié),處理好的數(shù)據(jù)全部放到剩余的數(shù)據(jù)存儲(chǔ)器bitbuf中去。而MQ編碼器的輸出方式是增量輸出的,因此可以把要左移處理的數(shù)據(jù)與上一次剩余的數(shù)據(jù)進(jìn)行合并,這與標(biāo)準(zhǔn)算法的思想是完全一致的。
 首先把tempC中的數(shù)據(jù)進(jìn)行掩膜處理得到包含左移數(shù)據(jù)位的Cmask,同時(shí)對(duì)Cmask進(jìn)行左移17位,使Cresult的位數(shù)和augment的位數(shù)相同(augment為34位),再對(duì)其進(jìn)行右移一定位數(shù),使左移數(shù)據(jù)能夠正確地合并到編碼數(shù)據(jù)中去。Cresult可以表示為:
 Cresult={Cmask,17{1’b0}}>>CT-1
其中CT為一個(gè)5位的加法計(jì)數(shù)器,它對(duì)當(dāng)前剩余的數(shù)據(jù)進(jìn)行位數(shù)計(jì)數(shù)。為了減少路徑開(kāi)銷,可以把Cresult改成:
    Cresult={Cmask,18{1’b0}}>>CT
  由于剩余的數(shù)據(jù)位最多為18位,因此bitbuf采用一個(gè)18位的寄存器作為處理空間。可以這樣把左移數(shù)據(jù)合并到數(shù)據(jù)流中:
 augment[33:16]=bitbuf+Cresult[33:16]
 augment[15:0]=Cresult[15:0]
 這是因?yàn)閮H有高18位的Cresult需要進(jìn)行相加,而后16位只進(jìn)行簡(jiǎn)單的復(fù)制即可。這樣做就可以不必考慮進(jìn)位位的值及緩沖值B加1后是否需要進(jìn)行位填充這幾個(gè)因素,可以在一個(gè)時(shí)鐘周期內(nèi)一步到位地進(jìn)行字節(jié)輸出。同時(shí),為了與標(biāo)準(zhǔn)輸出一致,把CT(5位)的初始值設(shè)為-1,即為11111。圖4為改進(jìn)的字節(jié)輸出的bitbuf更新處理部分,圖5為字節(jié)輸出的計(jì)數(shù)更新處理部分。


    最后,由于輸出的字節(jié)數(shù)可能為0、1、2這3種情況,有必要對(duì)輸出數(shù)據(jù)進(jìn)行緩沖,因此需要在最后添加一個(gè)FIFO對(duì)輸出的數(shù)據(jù)進(jìn)行緩沖。
3 實(shí)驗(yàn)結(jié)果和性能比較
 本文的MQ編碼器采用Verilog語(yǔ)言進(jìn)行RTL級(jí)描述,在Modelsim-Altera軟件下進(jìn)行仿真,仿真結(jié)果和標(biāo)準(zhǔn)算法的計(jì)算結(jié)果一致,如圖6所示。在QuartusII中選用器件EP2S60F67214對(duì)代碼進(jìn)行綜合、布局布線及時(shí)序分析。仿真結(jié)果表明,本設(shè)計(jì)結(jié)構(gòu)最大的時(shí)鐘頻率可達(dá)65.19 MHz,吞吐量可達(dá)65.19 MCxD/s。與參考文獻(xiàn)[5]中的方案的比較如表1所示。表2所示為MQ編碼器的資源使用情況。

 結(jié)果顯示,本設(shè)計(jì)占用資源很少的情況下,在最高時(shí)鐘頻率上不及參考文獻(xiàn)[5],因?yàn)楸驹O(shè)計(jì)結(jié)構(gòu)為了節(jié)省時(shí)鐘周期在關(guān)鍵路徑上沒(méi)有采用流水線分割,但在整體的處理速度上有較大的改進(jìn),可以滿足硬件高速編碼要求。
 本文針對(duì)JPEG2000MQ編碼器的硬件實(shí)現(xiàn),提出了一種4級(jí)流水的設(shè)計(jì)方案。對(duì)MQ編碼器的原理和算法流程進(jìn)行了分析,采用超前狀態(tài)分析避免了時(shí)序上的沖突,同時(shí)優(yōu)化了條件判斷邏輯以及改進(jìn)了字節(jié)輸出的處理結(jié)構(gòu),減少了路徑的開(kāi)銷。最終通過(guò)Aletra的FPGA的驗(yàn)證,處理速度可達(dá)65.19 MCxD/s。
參考文獻(xiàn)
[1] TAUBMAN D S, MARCELLIM M W. JPEG2000圖像壓縮基礎(chǔ)、標(biāo)準(zhǔn)和實(shí)踐[M]. 魏立江,柏正堯,譯. 北京:電子工業(yè)出版社,2005.
[2] ISO/IEC. FCD 1544421, final committee draft, JPEG2000 lmage coding systems[Z].
[3] HSIAO Y T, LIN H D, LEE K B, et al. High-speed memory-saving architecture for the embedded block coding in JPEG2000[C]//IEEE International Symposium on Circuits and Systems, 2002,5:133-136.
[4] DYER M, TAUBMAN D, NOOSHABADI S.Improved  throughput arithmetic coder for JPEG2000[J]. Proc.Internation Conference on Image Processing(ICIP’04),2004.
[5] 周赟. 基于JPEG2000的高速M(fèi)Q算術(shù)編碼器的研究與實(shí)現(xiàn)[A].Information technology, 2007(10):49-52.
[6] 王鎮(zhèn)道,章兢,曾云,等.一種高速JPEG2000 MQ編碼器的VLSI 實(shí)現(xiàn)[A].微計(jì)算機(jī)信息,2006,(9-3):232-233.

此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載。
主站蜘蛛池模板: 狠狠色综合网站 | 久久国产精品亚洲va麻豆 | 日本aⅴ永久免费网站www | 国产成年人网站 | 涩涩动漫网站 | 夜夜天天 | 国产一级特黄高清在线大片 | 最好看2019高清中文字幕视频 | 国产精品偷伦视频免费观看的 | 成人免费视频在线 | 成年人午夜在线 | 欧美成人免费全网站大片 | 亚洲人成网站在线播放观看 | 欧美成人在线观看 | 91视频第一页 | 污香蕉| yiren22亚洲综合高清一区 | 亚洲一区色图 | 国产精品综合色区在线观看 | 久久99精品国产麻豆不卡 | 在线观看免费精品国产 | 午夜剧场在线播放 | 国产一区日韩二区欧美三区 | 欧美一区二区在线视频 | 成人xxxxxx| 天天精品 | 国产成人精品三级91在线影院 | 日韩欧美高清一区 | 精品伊人久久大线蕉色首页 | 在线毛片观看 | 最新亚洲精品国自产在线观看 | 日韩三级伦理片 | 午夜在线观看免费 | 日本波多野结衣在线 | 中文字幕视频一区 | 又粗又长又黄又爽视频 | 在线免费一级片 | 中文字幕免费观看 | 亚洲精品另类有吗中文字幕 | 成人午夜激情 | 黄色a级片免费 |