1 概述
JPEG2000[1,2]是新的靜止圖像壓縮標準,,它具有的多種特性使得它有著廣泛的應(yīng)用前景,。目前為止,,JPEG2000的解決方案比較少,,并且其中的絕大部分是軟件解決方案:Jasper[3]軟件是經(jīng)IEC JTC1/SC29/WG1小組推薦使用的實現(xiàn)JPEG2000的為數(shù)不多的軟件之一,。
由于軟件實現(xiàn)JPEG2000的時間開銷比較大,,因此,,JPEG2000編碼系統(tǒng)很難應(yīng)用于實際系統(tǒng)中;硬件解決方案由于處理速度大大提高,,因而用硬件實現(xiàn)JPEG2000具有廣泛的市場前景,。但是,JPEG2000算法復(fù)雜,,完全用硬件實現(xiàn)比較困難,;然而使用硬件實現(xiàn)JPEG2000中的某些模塊,相對而言就比較容易實現(xiàn),,同時也能大大提高編碼效率,。
圖1為JPEG2000的幾個基本模塊。文獻[4]指出,,軟件處理中,,圖1中的算術(shù)編碼模塊的時間開銷占據(jù)了整個軟件時間開銷的40%左右,若使用硬件實現(xiàn)算術(shù)編碼模塊必然能大大提高編碼速度,,對于提高JPEG2000的編碼速度有著重要的意義,。
Q-Coder算術(shù)編碼器的IP核設(shè)計" height="138" src="http://files.chinaaet.com/images/20110720/16a58e01-a538-48a5-8077-bc205346187d.jpg" width="350" />
2 Q-Coder算術(shù)編碼器原理
Q-coder算術(shù)編碼是一種特殊的高效自適應(yīng)二進制算術(shù)編碼器。其輸入是成對待編碼數(shù)據(jù)D(DATA)以及上下文CX(CONTEXT),,數(shù)據(jù)D和上下文CX是由比特平臺(bit plane)[1]產(chǎn)生的,;輸出則是壓縮數(shù)據(jù)CD(COMPRESSED DATA)。在JPEG2000中,,上下文指D周圍8個相鄰比特的狀態(tài),,這些狀態(tài)被特定的規(guī)則劃分為19類,稱為19種上下文,。每種上下文都包含兩部分內(nèi)容,,一部分選擇了對數(shù)據(jù)D編碼時使用的概率估計值對應(yīng)的索引,另一部分決定了當前大概率符號所代表的符號,,這兩部分內(nèi)容將在編碼后被更新,。
2.1 區(qū)間的遞歸劃分
概率區(qū)間的遞歸劃分是二進制算術(shù)編碼的基礎(chǔ)。每執(zhí)行一次二元判定,當前概率區(qū)間就被劃分成為兩個子區(qū)間,,并在必要的時候修改輸出碼流,,使之指向該符號所在的概率子區(qū)間的下界。
在區(qū)間劃分時,,小概率符號的子區(qū)間和大概率符號的子區(qū)間這樣排序:通常取靠近0的區(qū)間作為MPS的子區(qū)間,,因此,若編碼的是MPS,,則應(yīng)向輸出碼流中加入LPS子區(qū)間的長度,。這種約定要求把編碼的符號區(qū)別為LPS或MPS,而不是0或者1,。因此在對一次二元判定編碼時,,必須知道該判定的LPS子區(qū)間的長度和MPS的含義。
2.2 編碼約定和近似計算
Q-coder算術(shù)編碼器設(shè)置兩個寄存器:一個是概率區(qū)間寬度寄存器A,,用于存放子區(qū)間的寬度,,另一個是碼字寄存器C,用來表示概率區(qū)間的下限,。編碼過程使用固定精度的整數(shù)運算和小數(shù)的整型表示形式,,即X‘8000’代表十進制小數(shù)0.75。概率區(qū)間A的范圍是,,并且當A的整型值小于X‘8000’時,,把A翻倍,即把A限制在十進制范圍0.75–1.5之間,,這個“翻倍”過程稱為重整化,。當A進行重整化時,C也必須同時翻倍,。為了防止寄存器C發(fā)生上溢,,每隔一段時間,應(yīng)將寄存器C的高位部分移出并送至另外的寄存器中,。
將A限制在十進制范圍0.75~1.5之間,,概率區(qū)間的劃分可以使用簡單的算術(shù)近似方法。如果LPS當前的概率估計值是,,則子區(qū)間的精確計算如下進行:
3 算術(shù)編碼器的實現(xiàn)
3.1 算術(shù)編碼流程
所有的設(shè)計都是用Verilog硬件描述語言編寫的,,由上述描述可知,算術(shù)編碼器的輸出不僅和當前狀態(tài)有關(guān),,而且和輸入也相關(guān),,所以本文選擇Mearly有限狀態(tài)機[5]來描述復(fù)雜的控制模塊。整個設(shè)計的主有限狀態(tài)機如圖2所示,。
圖2 算術(shù)編碼主有限狀態(tài)機
3.2 模塊設(shè)計
duram是雙口sram作為片內(nèi)存儲單元存儲輸入的數(shù)據(jù),,當采用FPGA進行驗證時,,直接調(diào)用Altera公司的宏功能塊即可;ari_core是實現(xiàn)算術(shù)編碼的運算處理單元,,包含一個存儲概率估值和當前MPS符號的表以及LPS和MPS編碼子程序,;模塊control是數(shù)據(jù)流控制單元,用于組織片內(nèi)存儲單元duram和運算處理單元ari_core以及片外sram的數(shù)據(jù)交換,。模塊control是整個設(shè)計的控制單元,,負責調(diào)度以上各個模塊,產(chǎn)生控制和聯(lián)絡(luò)信號以及地址信號,。模塊結(jié)構(gòu)原理如圖3所示,。
3.3 電路驗證
將布局布線后生成的文件下載到自行設(shè)計的一塊FPGA的PCI開發(fā)板里進行驗證,,如圖4所示,。板上是一片Altera cyclone系列FPGA ep1c12qfp240,該FPGA含有約25萬邏輯門,、30KB內(nèi)部RAM,。PCI接口控制邏輯也是在FPGA中實現(xiàn)[6~8],然后編寫PCI驅(qū)動程序和應(yīng)用程序,,先由Jasper軟件處理,,抽取軟件中量化模塊處理后的數(shù)據(jù),輸入FPGA中進行處理,,再將數(shù)據(jù)返回給軟件中的下一模塊,,驗證本文設(shè)計的算術(shù)編碼IP核的正確性,并計算處理時間,。
4 實驗結(jié)果與分析
(1)將Verilog源程序在QuartusⅡ軟件中綜合后,,得到的參數(shù)如下:
1)器件名稱:EP20K200efc484-2x;
2)FPGA時鐘最高頻率:45.18MHz,;
3)Total logic elements:3660/8320 (44%),。
(2)功能驗證。目前,,只有JBIG[8]標準中有驗證算術(shù)編碼器編碼正確性的測試向量,,因此該測試向量被用以測試本文設(shè)計IP核的正確性。需要說明的是:JBIG標準中的算術(shù)編碼器會產(chǎn)生“FF AC”標志位[8],,而JPEG2000中的MQ-Coder算術(shù)編碼器并不產(chǎn)生該標志位[1],。
將JBIG中的測試向量作為輸入,經(jīng)過本文設(shè)計的算術(shù)編碼IP核處理后的結(jié)果如圖5所示,,由圖5可知本文設(shè)計的算術(shù)編碼IP核完全正確,。
(3)由概述可知,Jasper軟件具有一定的權(quán)威性,,因此在實驗中被使用,。表1列出了對于同一個圖像文件,,Jasper軟件中算術(shù)編碼模塊執(zhí)行所需的時間和本文設(shè)計的算術(shù)編碼IP核執(zhí)行所需的時間以及兩者時間之比。
5 結(jié)論
本文提出的一種實現(xiàn)算術(shù)編碼的集成電路IP核,,經(jīng)過仿真和FPGA驗證,,能夠符合JPEG2000標準,仿真結(jié)果表明,,在相同的條件下,,該IP核編碼所需時間僅約為軟件編碼所需時間的40%,從而大大提高了算術(shù)編碼的效率,,使得將來其應(yīng)用于實時處理系統(tǒng)成為可能,;并且將來可以定制所需的ASIC電路,用于新一代數(shù)字照相機等具有廣泛市場前景的項目,。
作者:毛文娟 王建立 張孝三 上海工程技術(shù)大學(xué)高職學(xué)院 來源:《計算機工程》2006年21期