專利名稱:基于Avalon總線JPEG2000的EBCOT編碼器的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種JPEG2000的^COT編碼器。
技術(shù)背景 JPEG2000標準為了實現(xiàn)比JPEG標準更高的性能,其編解碼的復(fù)雜度是JPEG的 2 3倍,特別是在EBCOTTier-I編碼算法中。JPEG2000編碼系統(tǒng)中的預(yù)處理,離散小波變 換,量化和EBCOTTier-2等都是以樣本為基本運算單位,并且基本以數(shù)據(jù)為驅(qū)動的算法。而 EBCOTTier-I編碼算法中的位平面編碼和基于內(nèi)容的自適應(yīng)二進制算術(shù)編碼兩個主要算 法,各自都包含了相當?shù)谋忍丶夁\算和復(fù)雜的控制,因而是整個JPEG2000編碼系統(tǒng)中最主 要的處理瓶頸。EBCOTTier-I編碼器通常要占去整個JPEG2000編碼器中50%以上的運行時 間。由此可見,高性能的EBCOTTier-I編碼器設(shè)計是JPEG2000編碼器實現(xiàn)中的關(guān)鍵。同時由 于EBCOTTier-I編碼算法包含有相當?shù)谋忍丶夁\算和復(fù)雜的控制,使其無法在通用RISC, DSP體系上完成高性能的實現(xiàn)。因此,高速、低功耗、面積合理的專用硬件實現(xiàn)EBCOTTier-I 編碼器對JPEG2000標準的應(yīng)用推廣有重要的意義。在JPEG2000眾多實現(xiàn)方法中,通常要求其進行實時處理,而軟件實現(xiàn),如DSP (數(shù) 字信號處理器),因為其的串行執(zhí)行導(dǎo)致編碼速度受到了制約;而ASIC設(shè)計方法,如AD公 司的ADV2x2系列芯片,每秒可處理25幅720X576的彩色圖片,即可以實時壓縮PAL制視 頻,但是此類芯片通常需要較多外設(shè),并且靈活性較差,能夠?qū)崿F(xiàn)的壓縮模式比較有限,不 利于進行二次開發(fā)。EBCOTTier-I編碼器包括位平面編碼和算術(shù)編碼兩部分。常規(guī)的位平面編碼器,需 要對來自原始圖像經(jīng)小波變化并量化后得到的系數(shù)編碼塊進行編碼,將編碼塊系數(shù)按位平 面展開后,按從高到低的順序?qū)γ恳粚游黄矫孢M行掃描編碼,這樣的串行掃描編碼制約了 整個編碼器的編碼速度。對于算術(shù)編碼器,JPEG2000標準中的算術(shù)編碼算法需要上下文信 息輸入、概率估計、區(qū)間歸一化及交換和碼字輸出這一系列過程,并涉及復(fù)雜的判斷操作, 硬件實現(xiàn)時組合邏輯的延時比較大,致使編碼器工作的時鐘頻率較低。
發(fā)明內(nèi)容
本發(fā)明為了解決現(xiàn)有技術(shù)的JPEG2000的EBCOT編碼器存在速度慢、靈活性差、過 程復(fù)雜的問題,提出一種基于Avalon總線JPEG2000的EBCOT編碼器?;贏valon總線JPEG2000的EBCOT編碼器,它包括NI0SIICPU處理器、Avalon 總線接口和EBCOTTier-I編碼器,所述EBCOTTier-I編碼器內(nèi)部固化有最高位平面檢測 模塊、編碼控制模塊、多個位平面編碼器、多個算術(shù)編碼器、多個輸出字節(jié)存儲器RAM,所述 NIOSIICPU處理器通過Avalon總線接口與^COTTier-I編碼器連接,
NIOSIICPU處理器通過Avalon總線接口發(fā)送開始信號start至編碼控制模塊,編碼控 制模塊接收開始信號start后開始編碼,NIOSIICPU處理器通過編碼塊寫信號blkram_Wr、 編碼塊數(shù)據(jù)信號blkram_data和編碼塊地址信號blkram_address向EBCOTTier-I編碼器中寫系數(shù)數(shù)據(jù),最高位平面檢測模塊檢測編碼控制模塊的最高位平面,所述最高平面以下 有msb個平面,編碼控制模塊調(diào)用msb個位平面編碼器進行并行編碼,每一個編碼控制模 塊將其圖像信息經(jīng)小波變換和量化后的數(shù)據(jù)發(fā)送至一個位平面編碼器,所述位平面編碼器 根據(jù)所述編碼信息生成編碼信息的上下文矢量CX和判決信息D,并將編碼信息的上下文矢 量CX和判決信息D發(fā)送至一個算術(shù)編碼器,所述算術(shù)編碼器對上下文矢量CX和判決信息 D進行編碼,并將經(jīng)過編碼的字節(jié)數(shù)據(jù)存儲在一個輸出字節(jié)存儲器RAM中,NIOSIICPU處理 器通過Avalon總線接口從msb個輸出字節(jié)存儲器RAM中讀取地址信號Bram_address和數(shù) 據(jù)信號Bram_data,編碼控制模塊通過Avalon總線接口將編碼完成信號ebc0t_d0ne發(fā)送中 NIOSIICPU 處理器。本發(fā)明的位平面編碼器采用了系數(shù)讀取與掃描編碼并行執(zhí)行處理,并且通過消 除位平面狀態(tài)位之間的相關(guān)性使各位平面編碼并行執(zhí)行,整個編碼器通過“雙并行”優(yōu)化 相比于常規(guī)的位平面編碼器,編碼速度得到了很大的提高,并且在編碼之前查找幅值不 為0的最高位平面MSB,使編碼只在最高位平面及以下幾個位平面進行,節(jié)省了編碼器資 源耗用。本發(fā)明的算術(shù)編碼器采用四級流水線模塊結(jié)構(gòu),將整個算法分割成四段,并且在 各流水線模塊級中采用寄存器、ROM存儲信息、索引Index更新問題處理、前導(dǎo)零預(yù)測等 一系列優(yōu)化處理,使編碼器的編碼能在時鐘頻率IlOMhz下達到lbit/cycle。本發(fā)明為了 使EBCOTTier-I編碼器應(yīng)用于整個JPEG2000編碼系統(tǒng),采用了 Avalon總線接口,其中定 義了兩個功能寄存器編碼開始寄存器和編碼結(jié)束寄存器,兩個數(shù)據(jù)存儲器編碼塊系數(shù) 存儲器和輸出字節(jié)存儲器,有利于編碼器的控制和數(shù)據(jù)通信,使編碼器更好的應(yīng)用于整個 JPEG2000編碼器中。
圖1為基于Avalon總線JPEG2000的EBCOT編碼器結(jié)構(gòu)示意圖。圖2為位平面 編碼器的結(jié)構(gòu)示意圖。圖3算術(shù)編碼器結(jié)構(gòu)示意圖。圖4為平面編碼器掃描方式示意圖。
具體實施例方式具體實施方式
一、結(jié)合圖1說明本實施方式,基于Avalon總線JPEG2000的 EBCOT編碼器,它包括NI0SIICPU處理器0、Avalon總線接口 1和^COTTier-I編碼器2, 所述EBCOTTier-I編碼器2內(nèi)部固化有最高位平面檢測模塊40、編碼控制模塊3、多個位平 面編碼器4、多個算術(shù)編碼器5、多個輸出字節(jié)存儲器RAM6,所述NI0SIICPU處理器0通過 Avalon總線接口 1與^COTTier-I編碼器2連接,
NI0SIICPU處理器O通過Avalon總線接口 1發(fā)送開始信號start至編碼控制模塊 3,編碼控制模塊3接收開始信號start后開始編碼,NIOSIICPU處理器O通過編碼塊寫 信號b 1 kram_wr、編碼塊數(shù)據(jù)信號b 1 kram_data和編碼塊地址信號b 1 kram_address向 EBCOTTier-I編碼器2中寫系數(shù)數(shù)據(jù),最高位平面檢測模塊40檢測編碼控制模塊3的最高 位平面,所述最高平面以下有msb個平面,編碼控制模塊3調(diào)用msb個位平面編碼器4進行 并行編碼,每一個編碼控制模塊3將其圖像信息經(jīng)小波變換和量化后的數(shù)據(jù)發(fā)送至一個位 平面編碼器4,所述位平面編碼器4根據(jù)所述編碼信息生成編碼信息的上下文矢量CX和判 決信息D,并將編碼信息的上下文矢量CX和判決 信息D發(fā)送至一個算術(shù)編碼器5,所述算術(shù)編碼器5對上下文矢量CX和判決信息D進行編碼,并將經(jīng)過編碼的字節(jié)數(shù)據(jù)存儲在一個輸 出字節(jié)存儲器RAM6中,NIOSIICPU處理器0通過Avalon總線接口 1從msb個輸出字節(jié)存儲 器RAM6中讀取地址信號Bram_address和數(shù)據(jù)信號Bram_data,編碼控制模塊3通過Avalon 總線接口 1將編碼完成信號ebCot_done發(fā)送中NIOSIICPU處理器O。為了使EBCOTTier-I編碼器2應(yīng)用于整個JPEG2000編碼系統(tǒng),必須使 EBCOTTier-I編碼器2與整個JPEG2000編碼系統(tǒng)的小波變換、量化等部分進行數(shù)據(jù)通信。 本發(fā)明采用了 Avalon總線接口 1,有利于EBCO TTier-I編碼器2的控制和數(shù)據(jù)通信,使 EBCOTTier-I編碼器2更好的應(yīng)用于整個JPEG2000編碼器中。在Avalon總線接口 1主要用于連接^COTTier-I編碼器2和NI0SIICPU,實現(xiàn)與 JPEG2000編碼器其它編碼部分數(shù)據(jù)通信。Avalon總線接口 1與NIOSIICPU相連的接口有時 鐘信號elk、復(fù)位信號rst_n、讀信號read、寫信號write、片選信號cs、地址信號address、 讀數(shù)據(jù)信號readdata和寫數(shù)據(jù)信號writedata ;Avalon總線接口 1與EBCOTTier-Ι編碼 器2相連的接口有時鐘信號elk、復(fù)位信號rst_n、開始信號start、編碼完成信號ebcot_ done、編碼塊寫信號blkram_wr、編碼塊數(shù)據(jù)信號blkram_data、編碼塊地址信號blkram_ address、輸出字節(jié)存儲器地址信號Bran^address和輸出字節(jié)存儲器數(shù)據(jù)信號Bram_data。在EBCOTTier-I編碼器2中由編碼控制模塊3控制整個編碼流程,首先編碼控 制模塊3接收開始信號start開始編碼,由編碼塊寫信號blkram_wr、編碼塊數(shù)據(jù)信號 blkram_data和編碼塊地址信號blkram_address往^COTTier-I編碼器2中寫系數(shù)數(shù)據(jù), 在寫系數(shù)數(shù)據(jù)過程中最高位平面檢測模塊40檢測編碼控制模塊3的最高位平面msb,找到 最高的平面msb,這個平面以上的都無需編碼,以下的需要編碼,即總共需要對msb個位平 面進行編碼,通過編碼控制模塊3調(diào)用位平面編碼器4進行位平面編碼,總共調(diào)用msb個 位平面編碼器4實現(xiàn)并行編碼。在位平面編碼過程中,會輸出編碼信息的上下文矢量CX 和判決信息D,算術(shù)編碼器5以lbit/cycle的編碼速度處理這些數(shù)據(jù),算術(shù)編碼器5編碼 完生成輸出字節(jié)數(shù)據(jù)存儲在輸出字節(jié)存儲器RAM6中,通過編碼控制模塊3地址信號Bram_ address、編碼控制模塊3數(shù)據(jù)信號Bran^data從輸出字節(jié)存儲器RAM6中讀取輸出字節(jié)數(shù) 據(jù)。整個EBCOTTier-I編碼器2編碼完成后,通過編碼完成信號ebCot_done發(fā)送編碼完成 標志ο具體實施方式
二、結(jié)合圖2說明本實施方式,本實施方式是對具體實施方式
一中 的位平面編碼器4的進一步說明,位平面編碼器4包括RAM地址生成模塊7、小波系數(shù)隨機 存儲器RAM41、狀態(tài)位隨機存儲器RAM42、狀態(tài)位預(yù)測模塊13、三寄存器生成模塊14、位平面 編碼控制模塊15、三掃描編碼模塊43,所述小波系數(shù)隨機存儲器RAM41由符號位存儲器8 和幅值位存儲器9組成,所述狀態(tài)位隨機存儲器RAM42由有效性位存儲器10、量級細化位存 儲器11和訪問位存儲器12組成,所述三掃描編碼模塊43由有效性傳播掃描模塊16、量級 細化掃描模塊17和清理掃描模塊18組成,
編碼控制模塊3輸出的圖像信息經(jīng)小波變換和量化后的數(shù)據(jù)通過RAM地址生成模塊7 將符號位Z寫入符號位存儲器8,編碼控制模塊3輸出的系數(shù)數(shù)據(jù)通過RAM地址生成模塊7 將幅值位r寫入幅值位存儲器9,狀態(tài)位預(yù)測模塊13對有效性位σ、量級細化位δ和訪 問位Π預(yù)測,狀態(tài)位預(yù)測模塊13將有效性位σ的預(yù)測結(jié)果存入有效性位存儲器10,狀態(tài) 位預(yù)測模塊13將量級細化位δ的預(yù)測結(jié)果存入量級細化位存儲器11,狀態(tài)位預(yù)測模塊13將訪問位η的預(yù)測結(jié)果存入訪問位存儲器12,
位平面編碼控制模塊15分別輸出控制信息給三寄存器生成模塊14和三掃描編碼模塊 43,位平面編碼控制模塊15控制三寄存器生成模塊14接收符號位X、幅值位κ、有效性位 σ、量級細化位δ和訪問位/7,三寄存器生成模塊14生成三寄存器數(shù)據(jù),并將三寄存器數(shù) 據(jù)發(fā)送至有效性傳播掃描模塊16,有效性傳播掃描模塊16以三寄存器為單位對系數(shù)數(shù)據(jù) 按從上到下順序進行編碼,并將編碼結(jié)果發(fā)送至量級細化掃描模塊17,量級細化掃描模塊 17對接受的系數(shù)數(shù)據(jù)進行編碼,并將編碼結(jié)果發(fā)送至清理掃描模塊18,有效性傳播掃描模 塊16、量級細化掃描模塊17和清理掃描模塊18將當前編碼信息的上下文矢量CX和判決信 息D發(fā)送至算術(shù)編碼器5。 本發(fā)明的位平面編碼器4采用了系數(shù)讀取與掃描編碼并行執(zhí)行處理,并且通過消 除位平面狀態(tài)位之間的相關(guān)性使各位平面編碼并行執(zhí)行,整個編碼器通過“雙并行”優(yōu)化 相比于常規(guī)的位平面編碼器,編碼速度得到了很大的提高,并且在編碼之前查找幅值不為 0的最高位平面MSB,使編碼只在最高位平面及以下幾個位平面進行,節(jié)省了編碼器資源耗用。位平面編碼主要負責生成當前編碼信息的上下文矢量CX和判決信息D,并與比特 流一起送到算術(shù)編碼器進行熵編碼。由小波變換經(jīng)量化得到的系數(shù),可以將其分割成固定 大小的代碼塊,大小一般可取32X32或64X64。各代碼塊可按每個系數(shù)樣本比特位做位 平面展開,最高層是符號位平面,下幾層是幅值位平面。編碼以位平面方式進行,從最高幅 值位平面(MSB)開始,自上而下到最低幅值位平面(LSB)結(jié)束。在每個位平面上,除了最高 幅值位平面只進行清理掃描(CUP),其它位平面按順序進行有效性傳播掃描過程(SPP)、量 級細化掃描過程(MRP)和清理掃描過程(CUP),掃描方式如圖4所示,以每4行組成一個條 帶,每個條帶內(nèi)按列從左到右,列內(nèi)從上到下進行掃描。連續(xù)掃描第一列的第一組4個系數(shù) 后,然后轉(zhuǎn)向掃描第二列的第一組4個系數(shù),如此一直掃描到最后一列的第一組4個系數(shù), 然后轉(zhuǎn)向掃描第一列的第二組4個系數(shù),一直到最后一列的第二組4個系數(shù);按照這樣的順 序一次掃描整個位平面。在對一組4個數(shù)據(jù)進行掃描編碼時,還需要使用4個系數(shù)的領(lǐng)域 14個系數(shù),與4個編碼系數(shù)共同組成三寄存器結(jié)構(gòu)。而對單獨一個系數(shù)編碼時,需要四周8 個領(lǐng)域系數(shù)。位平面編碼器4結(jié)構(gòu)如圖2所示,圖1編碼控制模塊3輸出的系數(shù)數(shù)據(jù)寫入符號 位存儲器8和幅值位存儲器9后,的編碼控制模塊3控制位平面編碼器4開始編碼,由于位 平面編碼器4采用位平面并行的編碼方式,首先要對各狀態(tài)位通過狀態(tài)位預(yù)測模塊13預(yù) 測,對于有效性位σ,在符號編碼原語中,只要幅值位為1,就執(zhí)行符號編碼原語,置有效性
位為1,所以有效性位σ可用公式
預(yù)測,其中%表示當前位平面的系數(shù)有效性
位
表亍第i層系數(shù)幅值位,即當前位平面的系數(shù)有效性位值是上幾層系數(shù)幅值位值模2
加和,將預(yù)測值寫入有效性位存儲器10中;對于量級細化位δ只有在量級細化掃描編碼中
會更新,可以由公式4 預(yù)測,其中今第P平面的系數(shù)量級細化位,表示Ρ+1層位
平面的系數(shù)有效性位,即當前位平面的系數(shù)量級細化位值是上一層位平面的系數(shù)有效性位 值,將量級細化位δ預(yù)測值寫入量級細化存儲器11中;對于訪問位/7,因為位平面編碼算 法中,在每個位平面編碼開始時就重設(shè)所有系數(shù)的訪問位為0,所以在此處就不需要提前預(yù)測更新了,初始值都是0,所以訪問位存儲器12初值全為0。 由于狀態(tài)位隨機存儲器RAM42在三掃描編碼時還需要更新,對于狀態(tài)位隨機存儲 器RAM42既要從中讀取數(shù)據(jù)又要寫入,所以有效性位存儲器10、量級細化位存儲器11和訪 問位存儲器12采用雙口 RAM ;而符號位和幅值位只需要讀取,所以符號位存儲器8和幅值 位存儲器9采用單口 RAM。系數(shù)和狀態(tài)位存儲完后,通過三寄存器生成模塊14生成三寄存 器數(shù)據(jù),由于三掃描編碼按照列的掃描順序進行編碼,共有三列數(shù)據(jù)需要生成,左邊一列數(shù) 據(jù)可以從前一個三寄存器數(shù)據(jù)的中間一列讀取,中間一列數(shù)據(jù)可以從前一個三寄存器數(shù)據(jù) 的右邊一列讀取,而右邊一列需要從存儲器中讀取,通過RAM地址生成模塊7生成一列數(shù)據(jù) 的地址,然后讀取系數(shù)數(shù)據(jù)。在生成三寄存器結(jié)構(gòu)數(shù)據(jù)時會遇到邊界問題當掃描數(shù)據(jù)處于 編碼塊上邊界時,三寄存器結(jié)構(gòu)頂端三個數(shù)據(jù)值取0 ;當掃描數(shù)據(jù)處于編碼塊左邊界時,三 寄存器結(jié)構(gòu)左邊一列數(shù)據(jù)值取0 ;當掃描數(shù)據(jù)處于編碼塊右邊界時,三寄存器結(jié)構(gòu)右邊一 列數(shù)據(jù)值取0 ;當掃描數(shù)據(jù)處于編碼塊下邊界時,三寄存器結(jié)構(gòu)底端三個數(shù)據(jù)值取0。生成 三寄存器數(shù)據(jù)后,位平面編碼按照有效性傳播掃描編碼、量級細化掃描編碼、清理掃描編碼 的順序進行三掃描編碼。在有效性傳播掃描模塊16中,以三寄存器為單位,對中間4個系數(shù)按從上到下順 序進行編碼。當前系數(shù)在位平面上的位置表示為[m,n],m表示行數(shù),η表示列數(shù)。首先判斷 在當前系數(shù)有效性位σ [m, η] =0且當前系數(shù)領(lǐng)域系數(shù)是有效時,則進行零編碼原語(ZC), 并設(shè)置訪問位Π [m, n]=l ;反之,如果不滿足有效性傳播掃描過程(SPP)的條件,則直接跳 轉(zhuǎn)到下一個系數(shù)進行編碼。然后判斷當前系數(shù)幅值位「[m,n]=l時,則進行符號編碼原語 (SC),并設(shè)置有效性位σ [m,n]=l,跳轉(zhuǎn)到下一系數(shù)進行編碼。對三寄存器結(jié)構(gòu)中間一列四 個系數(shù)編碼完后轉(zhuǎn)入下一三寄存器結(jié)構(gòu)進行編碼;在量級細化掃描模塊17中,首先判斷當 前系數(shù)滿足有效性位σ [m, n]=l且訪問位η [m,η] =0,則進行量級細化編碼原語(MRC),并 且設(shè)置量級細化位δ [m,n]=l,然后跳轉(zhuǎn)到下一系數(shù);如果不滿足MRP條件,則直接跳轉(zhuǎn)到 下一個系數(shù)進行編碼;在清理掃描模塊18中,在最高位平面只進行清理掃面過程(CUP),其 它位平面上CUP是最后執(zhí)行的掃描過程。執(zhí)行CUP時,首先應(yīng)該滿足有效性位σ[π!,η]=0 且訪問位Π [m,η] =0,然后再檢測是否滿足執(zhí)行游程長度編碼(RLC)和零編碼原語(ZC)的 條件。執(zhí)行游程長度編碼原語(RLC)必須滿足以下三個條件
1當前系數(shù)在位平面上位置為[m,η],m是4的倍數(shù),或者m=0 ; 2當前系數(shù)所在的一列條帶四個連續(xù)系數(shù)的σ都等于0 ; 3當前系數(shù)所在條帶領(lǐng)域的σ都等于0。其中條件2 和 3 兩條可歸納為 σ [i, j]=0, i=m_l,m,m+1, m+2, m+3, m+4 ; j=n_l, n, n+1。如果不滿足以上條件則執(zhí)行零編碼原語。游程長度編碼原語(RLC)或零編碼原語 (ZC)執(zhí)行完后,判斷當前系數(shù)如果K[m,n]=l,則執(zhí)行符號編碼。以上規(guī)程結(jié)束后,跳轉(zhuǎn)到 下個系數(shù)進行編碼,直到位平面所有系數(shù)都編碼完,因為CUP是一層位平面編碼最后的一 個掃描過程,結(jié)束時首先重設(shè)所有系數(shù)的訪問位7=0。在掃描編碼過程中,通過編碼控制模 塊15,使讀取系數(shù)和狀態(tài)位并生成三寄存器結(jié)構(gòu)這一過程能與掃描編碼過程并行執(zhí)行。
具體實施方式
三、結(jié)合圖3說明本實施方式,本實施方式是對具體實施方式
一中 的算術(shù)編碼器5的進一步說明,算術(shù)編碼器5包括四級流水線模塊第一級流水線模塊 5-1、第二級流水線模塊5-2、第三級流水線模塊5-3和第四級流水線模塊5-4,第一級流水線模塊5-1包括延時模塊19、第一比較模塊20、索引Inder模塊21、第一 選擇模塊22、高概率符號MPS模塊23和概率估計Qe表24,所述延時模塊19、第一比較模塊 20、索引Inder模塊21和高概率符號MPS模塊23同時接收位平面編碼器4發(fā)出的編碼信 息的上下文矢量CX和判決信息D,延時模塊19將接收到的編碼信息的上下文矢量CX和判 決信息D進行延時獲得CX_delay數(shù)據(jù)和D_delay數(shù)據(jù),并發(fā)送至第一比較模塊20,第一比 較模塊20將CX_delay數(shù)據(jù)與編碼信息的上下文矢量CX比較,并將比較的結(jié)果發(fā)送至第一 選擇模塊22,第一選擇模塊22根據(jù)所述比較的結(jié)果選擇地址,根據(jù)所述地址從概率估計Qe 表24中查找到對應(yīng)的大概率編碼CodeMPS中下一索引NMPS、小概率編碼CodeLPS中下一索 引NLPS以及概率估計Qe,并將查找到的大概率編碼CodeMPS中下一索引NMPS、小概率編碼 CodeLPS中下一索引NLPS以及概率估計Qe發(fā)送給第二級流水線模塊5_2,高概率符號MPS 模塊23根據(jù)輸入的編碼信息的上下文矢量CX和判決信息D輸出高概率符 號MPS ;
第二級流水線模塊5-2包括概率區(qū)間寄存器A25、第二比較模塊26、前導(dǎo)零檢測模塊 27、第三比較模塊28和第二選擇模塊29,第三比較模塊28將輸入的判決延時信息D_dalay 與高概率符號MPS進行比較,將比較結(jié)果發(fā)送第二選擇模塊29,第二選擇模塊29根據(jù)所述 比較結(jié)果和獲得的大概率編碼CodeMPS中下一索引NMPS、小概率編碼CodeLPS中下一索 引NLPS發(fā)送更新信息給索引Index模塊21,第二比較模塊26將接收到的概率估計Qe和 概率區(qū)間寄存器A25中存儲的概率值進行比較,并將比較結(jié)果發(fā)送至前導(dǎo)零檢測模塊27, 第二比較模塊比較26將歸一化信號renor_Valid輸出給第三級流水線模塊5-3,前導(dǎo)零檢 測模塊27檢測概率區(qū)間寄存器A25前導(dǎo)零的數(shù)目prezer0S_Cnt,并更新概率區(qū)間寄存器 A25,所述前導(dǎo)零的數(shù)目prezer0S_Cnt輸出給第三級流水線模塊5_3,所述前導(dǎo)零的數(shù)目 prezeros_cnt為概率區(qū)間寄存器A25以二進制表示時高位O的個數(shù);
第三級流水線模塊5-3包括移位計數(shù)器CT30、第四比較模塊31、生成碼字寄存器C32 和移位模塊33,第四比較模塊31將移位計數(shù)器CT30輸出的計數(shù)值與接收到的前導(dǎo)零檢測 值prezer0S_Cnt進行比較,并將比較結(jié)果C發(fā)送至移位模塊33,所述移位模塊33將所述比 較結(jié)果C進行移位,當移位計數(shù)器CT30減為O時輸出信號給移位模塊33,移位模塊33在接 收到所述信號時根據(jù)比較結(jié)果C移位響應(yīng)個數(shù)輸出字節(jié)數(shù)據(jù)至生成碼字寄存器C32,生成 碼字寄存器C32根據(jù)輸入的字節(jié)數(shù)據(jù)生成字數(shù)據(jù)至移位模塊33,所述移位模塊33對輸入的 字數(shù)據(jù)進行移位后更新輸出字節(jié)Bl和B2 ;
第四級流水線模塊5-4包括Flush模塊35和移位寄存器34,編碼清理flush模塊35 再一次算術(shù)編碼結(jié)束時輸出flush信號給移位寄存器34,移位寄存器34接收第三級流水線 模塊5-3中移位模塊33發(fā)送的更新輸出字節(jié)Bl和B2,并在接收到flush信號時將編碼結(jié) 果發(fā)送至輸出字節(jié)存儲器RAM6。由于JPEG2000標準中算術(shù)編碼算法需要上下文信息輸入、概率估計、區(qū)間歸一化 及交換和碼字輸出這一系列過程,并涉及復(fù)雜的判斷,不利于硬件邏輯的設(shè)計,使組合邏輯 的延時比較大,本發(fā)明的算術(shù)編碼器5采用四級流水線模塊結(jié)構(gòu),將整個算法分割成四段, 并且在各流水線模塊級中采用寄存器、ROM存儲信息、索引Index更新問題處理、前導(dǎo)零預(yù) 測等一系列優(yōu)化處理,使編碼器的編碼能在時鐘頻率IlOMhz下達到lbit/cycle。算術(shù)編碼器5結(jié)構(gòu)如圖3所示,第一級流水線模塊5-1實現(xiàn)上下文判決信息CX/D 輸入和概率估計Qe表各信息的讀取。首先處理上下文判決信息CX/D輸入,然后以上下文信息CX為地址查找索引Index模塊21和高概率符號MPS模塊23。根據(jù)第一比較模塊20判斷 當前上下文信息CX與前一個上下文信息CX_delay是否相同,前一個上下文信息CX_delay 由延時模塊19生成,第一比較模塊20的結(jié)果作為數(shù)據(jù)第一選擇模塊22的選擇信號選擇查 找概率估計Qe表24的地址,若CX=CX_delay,地址選擇NLPS或者NMPS ;反之,地址選擇索 引Index。根據(jù)選擇得到的地址從概率估計Qe表24中查找到對應(yīng)的大概率編碼CodeMPS 中下一索引NMPS、小概率編碼CodeLPS中下一索引NLPS。第二級流水線模塊5-2實現(xiàn)概率區(qū)間寄存器A25的更新和區(qū)間歸一化判斷。首先 根據(jù)判決延時信息D_dalay與高概率符號MPS輸入第三比較模塊28進行比較,判決是進行 大概率編碼CodeMPS還是小概率編碼CodeLPS,并更新索引Index模塊21。根據(jù)概率估計 Qe第一次更新概率區(qū)間寄存器A25,通過第二比較模塊比較26概率區(qū)間寄存器A25的值 和概率估計Qe,判斷是否需要進行區(qū)間歸一化,將歸一化信號renor_Valid輸出給第三級 流水線模塊5-3。如果需要執(zhí)行區(qū)間歸一化,通過前導(dǎo)零檢測模塊27檢測概率區(qū)間寄存器 A25前導(dǎo)零的數(shù)目,第二次更新概率區(qū)間寄存器A25對其移位相應(yīng)數(shù)目個位,并且將前導(dǎo)零 檢測值prezer0S_Cnt輸出給第三級流水線模塊5_3。第三級流水線模塊5-3實現(xiàn)生成碼字寄存器C32的更新及輸出字節(jié)的計算。當需 要區(qū)間歸一化時,根據(jù)第二級流水線模塊5-2計算得到的前導(dǎo)零檢測值prezerosjnt于移 位計數(shù)器CT30通過第四比較模塊31比較,根據(jù)比較值C移位相應(yīng)的個數(shù),而當移位計數(shù)器 CT30減為0時就要進行一次字節(jié)輸出,輸出字節(jié)由生成碼字寄存器C32通過移位模塊33得 到,而生成碼字寄存器C32移位后更新。第四級流水線模塊5-4實現(xiàn)輸出字節(jié)的輸出及編碼清理flush操作。當需要輸出 兩個字節(jié)時,通過移位寄存器34緩存輸出字節(jié)數(shù)據(jù),兩個字節(jié)數(shù)據(jù)按順序輸出,每個時鐘 周期輸出一個字節(jié)數(shù)據(jù)。當判斷算術(shù)編碼結(jié)束時,進行編碼清理flush模塊35操作,其中 也需要輸出字節(jié),將這些輸出字節(jié)也輸入移位寄存器34緩存輸出。
權(quán)利要求
基于Avalon總線JPEG2000的EBCOT編碼器,其特征在于它包括NIOSII CPU處理器(0)、Avalon總線接口(1)和EBCOT Tier-1編碼器(2),所述EBCOT Tier-1編碼器(2)內(nèi)部固化有最高位平面檢測模塊(40)、編碼控制模塊(3)、多個位平面編碼器(4)、多個算術(shù)編碼器(5)、多個輸出字節(jié)存儲器RAM(6),所述NIOSII CPU處理器(0)通過Avalon總線接口(1)與EBCOT Tier-1編碼器(2)連接,NIOSII CPU處理器(0)通過Avalon總線接口(1)發(fā)送開始信號start至編碼控制模塊(3),編碼控制模塊(3)接收開始信號start后開始編碼,NIOSII CPU處理器(0)通過編碼塊寫信號blkram_wr、編碼塊數(shù)據(jù)信號blkram_data和編碼塊地址信號blkram_address向EBCOT Tier-1編碼器(2)中寫系數(shù)數(shù)據(jù),最高位平面檢測模塊(40)檢測編碼控制模塊(3)的最高位平面,所述最高平面以下有msb個平面,編碼控制模塊(3)調(diào)用msb個位平面編碼器(4)進行并行編碼,每一個編碼控制模塊(3)將其圖像信息經(jīng)小波變換和量化后的數(shù)據(jù)發(fā)送至一個位平面編碼器(4),所述位平面編碼器(4)根據(jù)所述編碼信息生成編碼信息的上下文矢量CX和判決信息D,并將編碼信息的上下文矢量CX和判決信息D發(fā)送至一個算術(shù)編碼器(5),所述算術(shù)編碼器(5)對上下文矢量CX和判決信息D進行編碼,并將經(jīng)過編碼的字節(jié)數(shù)據(jù)存儲在一個輸出字節(jié)存儲器RAM(6)中,NIOSII CPU處理器(0)通過Avalon總線接口(1)從msb個輸出字節(jié)存儲器RAM(6)中讀取地址信號Bram_address和數(shù)據(jù)信號Bram_data,編碼控制模塊(3)通過Avalon總線接口(1)將編碼完成信號ebcot_done發(fā)送中NIOSII CPU處理器(0)。
2.根據(jù)權(quán)利要求1所述的基于Avalon總線JPEG2000的EBCOT編碼器,其特征在于位 平面編碼器(4)包括RAM地址生成模塊(7)、小波系數(shù)隨機存儲器RAM (41)、狀態(tài)位隨機存 儲器RAM(42)、狀態(tài)位預(yù)測模塊(13)、三寄存器生成模塊(14)、位平面編碼控制模塊(15)、 三掃描編碼模塊(43),所述小波系數(shù)隨機存儲器RAM(41)由符號位存儲器(8)和幅值位存 儲器(9)組成,所述狀態(tài)位隨機存儲器RAM(42)由有效性位存儲器(10)、量級細化位存儲器 (11)和訪問位存儲器(12)組成,所述三掃描編碼模塊(43)由有效性傳播掃描模塊(16)、 量級細化掃描模塊(17)和清理掃描模塊(18)組成,編碼控制模塊(3)輸出的圖像信息經(jīng)小波變換和量化后的數(shù)據(jù)通過RAM地址生成模塊 (7)將符號位i寫入符號位存儲器(8),編碼控制模塊(3)輸出的系數(shù)數(shù)據(jù)通過RAM地址生 成模塊(7)將幅值位κ寫入幅值位存儲器(9),狀態(tài)位預(yù)測模塊(13)對有效性位σ、量級 細化位δ和訪問位η預(yù)測,狀態(tài)位預(yù)測模塊(13)將有效性位σ的預(yù)測結(jié)果存入有效性 位存儲器(10),狀態(tài)位預(yù)測模塊(13)將量級細化位δ的預(yù)測結(jié)果存入量級細化位存儲器 (11),狀態(tài)位預(yù)測模塊(13)將訪問位η的預(yù)測結(jié)果存入訪問位存儲器(12),位平面編碼控制模塊(15)分別輸出控制信息給三寄存器生成模塊(14)和三掃描編 碼模塊(43),位平面編碼控制模塊(15)控制三寄存器生成模塊(14)接收符號位I、幅值 位^、有效性位σ、量級細化位δ和訪問位/7,三寄存器生成模塊(14)生成三寄存器數(shù) 據(jù),并將三寄存器數(shù)據(jù)發(fā)送至有效性傳播掃描模塊(16),有效性傳播掃描模塊(16)以三寄 存器為單位對系數(shù)數(shù)據(jù)按從上到下順序進行編碼,并將編碼結(jié)果發(fā)送至量級細化掃描模塊 (17),量級細化掃描模塊(17)對接受的系數(shù)數(shù)據(jù)進行編碼,并將編碼結(jié)果發(fā)送至清理掃描 模塊(18),有效性傳播掃描模塊(16)、量級細化掃描模塊(17)和清理掃描模塊(18)將當 前編碼信息的上下文矢量CX和判決信息D發(fā)送至算術(shù)編碼器(5)。
3.根據(jù)權(quán)利要求1所述的基于Avalon總線JPEG2000的EBCOT編碼器,其特征在于算 術(shù)編碼器(5)包括四級流水線模塊第一級流水線模塊(5-1)、第二級流水線模塊(5-2)、第 三級流水線模塊(5-3)和第四級流水線模塊(5-4),第一級流水線模塊(5-1)包括延時模塊(19)、第一比較模塊(20)、索引Index模塊 (21)、第一選擇模塊(22)、高概率符號MPS模塊(23)和概率估計Qe表(24),所述延時模塊 (19)、第一比較模塊(20)、索引Index模塊(21)和高概率符號MPS模塊(23)同時接收位平 面編碼器(4)發(fā)出的編碼信息的上下文矢量CX和判決信息D,延時模塊(19)將接收到的編 碼信息的上下文矢量CX和判決信息D進行延時獲得CX_delay數(shù)據(jù)和D_delay數(shù)據(jù),并發(fā) 送至第一比較模塊(20),第一比較模塊(20)將CX_delay數(shù)據(jù)與編碼信息的上下文矢量CX 比較,并將比較的結(jié)果發(fā)送至第一選擇模塊(22),第一選擇模塊(22)根據(jù)所述比較的結(jié)果 選擇地址,根據(jù)所述地址從概率估計Qe表(24)中查找到對應(yīng)的大概率編碼CodeMPS中下 一索引NMPS、小概率編碼CodeLPS中下一索引NLPS以及概率估計Qe,并將查找到的大概率 編碼CodeMPS中下一索引NMPS、小概率編碼CodeLPS中下一索引NLPS以及概率估計Qe發(fā) 送給第二級流水線模塊(5-2),高概率符號MPS模塊(23)根據(jù)輸入的編碼信息的上下文矢 量CX和判決信息D輸出高概率符號MPS ;第二級流水線模塊(5-2)包括概率區(qū)間寄存器A(25)、第二比較模塊(26)、前導(dǎo)零檢測 模塊(27)、第三比較模塊(28)和第二選擇模塊(29),第三比較模塊(28)將輸入的判決延 時信息D_dalay與高概率符號MPS進行比較,將比較結(jié)果發(fā)送第二選擇模塊(29),第二選 擇模塊(29)根據(jù)所述比較結(jié)果和獲得的大概率編碼CodeMPS中下一索引NMPS、小概率編 碼CodeLPS中下一索引NLPS發(fā)送更新信息給索引Index模塊(21),第二比較模塊(26)將 接收到的概率估計Qe和概率區(qū)間寄存器A(25)中存儲的概率值進行比較,并將比較結(jié)果 發(fā)送至前導(dǎo)零檢測模塊(27),第二比較模塊比較(26)將歸一化信號renor_Valid輸出給 第三級流水線模塊(5-3),前導(dǎo)零檢測模塊(27)檢測概率區(qū)間寄存器A(25)前導(dǎo)零的數(shù)目 prezer0S_Cnt,并更新概率區(qū)間寄存器A(25),所述前導(dǎo)零的數(shù)目prezeros^nt輸出給第 三級流水線模塊(5-3),所述前導(dǎo)零的數(shù)目prezer0S_Cnt為概率區(qū)間寄存器A(25)以二進 制表示時高位O的個數(shù);第三級流水線模塊(5-3)包括移位計數(shù)器CT(30)、第四比較模塊(31)、生成碼字寄存 器C(32)和移位模塊(33),第四比較模塊(31)將移位計數(shù)器CT(30)輸出的計數(shù)值與接收 到的前導(dǎo)零檢測值prezer0S_Cnt進行比較,并將比較結(jié)果C發(fā)送至移位模塊(33),所述移 位模塊(33)將所述比較結(jié)果C進行移位,當移位計數(shù)器CT (30)減為O時輸出信號給移位 模塊(33),移位模塊(33)在接收到所述信號時根據(jù)比較結(jié)果C移位響應(yīng)個數(shù)輸出字節(jié)數(shù) 據(jù)至生成碼字寄存器C(32),生成碼字寄存器C(32)根據(jù)輸入的字節(jié)數(shù)據(jù)生成字數(shù)據(jù)至移 位模塊(33),所述移位模塊(33)對輸入的字數(shù)據(jù)進行移位后更新輸出字節(jié)Bl和B2 ;第四級流水線模塊(5-4)包括Flush模塊(35)和移位寄存器(34),編碼清理Flush模 塊(35)再一次算術(shù)編碼結(jié)束時輸出flush信號給移位寄存器(34),移位寄存器(34)接收 第三級流水線模塊(5-3)中移位模塊(33)發(fā)送的更新輸出字節(jié)Bl和B2,并在接收到flush 信號時將編碼結(jié)果發(fā)送至輸出字節(jié)存儲器RAM(6)。
全文摘要
基于Avalon總線JPEG2000的EBCOT編碼器,涉及一種JPEG2000的EBCOT編碼器,解決了現(xiàn)有技術(shù)的JPEG2000的EBCOT編碼器存在速度慢、靈活性差、過程復(fù)雜的問題。它包括Avalon總線接口和EBCOTTier-1編碼器,所述Avalon總線接口的時鐘信號、復(fù)位信號、開始信號、編碼完成信號、編碼塊寫信號、編碼塊數(shù)據(jù)信號、編碼塊地址信號、輸出字節(jié)存儲器地址信號和輸出字節(jié)存儲器數(shù)據(jù)信號輸入端與編碼控制模塊相連,編碼控制模塊與msb個位平面編碼器相連,位平面編碼器與算術(shù)編碼器相連,算術(shù)編碼器與輸出字節(jié)存儲器RAM相連,msb為最高位平面檢測模塊檢測編碼控制模塊的最高位平面的數(shù)值。本發(fā)明的編碼器可以更好的應(yīng)用于整個JPEG2000編碼器中。
文檔編號H04N7/26GK101848311SQ20101011073
公開日2010年9月29日 申請日期2010年2月21日 優(yōu)先權(quán)日2010年2月21日
發(fā)明者任廣輝, 王剛毅, 胡小開 申請人:哈爾濱工業(yè)大學