專利名稱:Mq算術(shù)編碼器的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及數(shù)字圖像及視頻處理領(lǐng)域,涉及算術(shù)編碼器結(jié)構(gòu),可用于超大規(guī)模集成電路VLSI設(shè)計(jì)。
背景技術(shù):
隨著科技的發(fā)展,CCD相機(jī)的分辨率越來越高,采樣速度越來越快,由此帶來了海量的數(shù)據(jù)量,給信息的存儲和傳輸造成了很大的困難,成為阻礙人們獲取和使用有效信息的瓶頸之一。高效的圖像視頻編碼技術(shù)無疑是解決這個(gè)問題的一個(gè)有效途徑。在圖像壓縮方面,國際上出現(xiàn)了 JPEG、JPEG_LS、JPEG2000等圖像編碼標(biāo)準(zhǔn),其中JPEG2000是最新的圖像壓縮標(biāo)準(zhǔn),可以得到高保真的圖像質(zhì)量,也具有很好的魯棒性,能夠支持感興趣區(qū)域編碼以及嵌入式編碼,成為當(dāng)今人們研究的一個(gè)熱點(diǎn)之一;在視頻編碼方面,出現(xiàn)了 MPEG-x和
H.26x兩大系列為主的視頻編碼標(biāo)準(zhǔn),這些標(biāo)準(zhǔn)都能夠在保持主觀質(zhì)量的條件下,對視頻信息進(jìn)行高效的壓縮,從而極大的降低存儲空間和帶寬要求。不管是圖像編碼還是視頻編碼,熵編碼技術(shù)都是一個(gè)重要組成部分。它可以有效的去除壓縮比特流中的統(tǒng)計(jì)冗余,進(jìn)一步提高視頻的壓縮效率。傳統(tǒng)的熵編碼技術(shù)模塊主要是基于霍夫曼(Huffman)理論,存在以下不足:1)碼字只能用整數(shù)位比特表示;2)編碼所使用的概率模型是固定的,而實(shí)際碼流的概率統(tǒng)計(jì)特性并非固定不變的。算術(shù)編碼器可以很好的解決這個(gè)問題,它突破了 Huffman只能按整數(shù)比特逼近信源熵的限制,而且可以根據(jù)上下文信息對概率模型不斷的更新,從而得到了比變長碼更好的編碼效果。據(jù)統(tǒng)計(jì),基于上下文的算術(shù)編碼比通用變長碼的編碼效率提高10% _20%,但計(jì)算復(fù)雜度要增加20% -30%。 近年來,自適應(yīng)二進(jìn)制算術(shù)編碼有了新的發(fā)展,其改進(jìn)主要集中在“自適應(yīng)概率估計(jì)模型”和“定長區(qū)間歸一化”的優(yōu)化以及算法復(fù)雜度的降低等方面,MQ算術(shù)編碼器是JPEG2000標(biāo)準(zhǔn)所采用的另一種改進(jìn)的Q編碼器,也被JPIG2標(biāo)準(zhǔn)所采用。MQ算術(shù)編碼器采用了無乘法的近似和位緩沖的策略,增加了條件交換和概率估計(jì)狀態(tài)機(jī)中的貝葉斯學(xué)習(xí)過程,效率上得到了進(jìn)一步提升。MQ算術(shù)編碼器是JPEG2000中所使用的一種自適應(yīng)算術(shù)編碼器,各種文獻(xiàn)中都直接稱“MQ算術(shù)編碼器”C.J.Lian 等人在文章“Analysis and Architecture Design of Block CodingEngine for EBCOT in JPEG2000,,IEEE Trans on Circuits and Systems for VideoTechnology, 2003, pp.219-230,提出了一種流水線結(jié)構(gòu)來實(shí)現(xiàn)算術(shù)編碼,但歸一化過程可能需要花費(fèi)幾個(gè)時(shí)鐘周期,導(dǎo)致流水線的延時(shí)。楊海東等人在2006年華中科技大學(xué)碩士論文“MQ算術(shù)編碼器的IP軟核設(shè)計(jì)”一文中設(shè)計(jì)了一種流水線的MQ算術(shù)編碼器,但歸一化過程以及碼流輸出過程結(jié)構(gòu)不夠合理,造成關(guān)鍵路徑太長,編碼速度不高。
發(fā)明內(nèi)容
本發(fā)明的目的在于克服上述背景技術(shù)中存在的缺陷和不足,提供一種高性能MQ算術(shù)編碼器,通過合理的結(jié)構(gòu)劃分和流水線技術(shù)提高編碼速度。本發(fā)明的高性能MQ算術(shù)編碼器,至少包括:概率查找及更新模塊,輸入待編碼的二進(jìn)制數(shù)據(jù)、待編碼數(shù)據(jù)上下文信息、輸入數(shù)據(jù)有效標(biāo)志信號以及寄存器更新模塊反饋的編碼狀態(tài)區(qū)間寄存器的值,用于輸出待編碼數(shù)據(jù)的概率估計(jì)值、待編碼數(shù)據(jù)與高概率符號相同標(biāo)志、以及輸出有效標(biāo)志信號;寄存器更新模塊,與概率查找及更新模塊相連接,接收概率查找及更新模塊輸出的待編碼數(shù)據(jù)的概率估計(jì)值、待編碼數(shù)據(jù)與高概率符號相同標(biāo)志、以及有效標(biāo)志信號和編碼結(jié)束信號,對寄存器更新模塊中的編碼狀態(tài)下限寄存器和編碼狀態(tài)區(qū)間寄存器進(jìn)行更新,用于得到待編碼數(shù)據(jù)的碼流、碼流長度以及有效標(biāo)志信號,同時(shí)將編碼狀態(tài)區(qū)間寄存器的值反饋到概率查找及更新模塊;碼流拼合與輸出模塊與寄存器更新模塊相連接,接收寄存器更新模塊輸出的待編碼數(shù)據(jù)的碼流、碼流長度以及有效標(biāo)志信號,使用碼流拼合與輸出模塊中的首字節(jié)進(jìn)位緩沖寄存器對輸入的碼流進(jìn)行拼合,用于輸出碼流及輸出碼流有效標(biāo)志信號。本發(fā)明用以解決現(xiàn)有二進(jìn)制算術(shù)編碼器編碼速度不高和結(jié)構(gòu)復(fù)雜的問題。寄存器更新模塊使用首I探測的方式一次完成編碼狀態(tài)區(qū)間寄存器的歸一化,同時(shí)輸出碼流以其長度;碼流拼合與輸出模塊采用了一種“首字節(jié)進(jìn)位緩沖寄存器”實(shí)現(xiàn)了碼流的“位填充”。本發(fā)明結(jié)構(gòu)劃分清晰,資源使用少,編碼速度快,可廣泛應(yīng)用于JPEG2000圖像編碼及其它實(shí)時(shí)編碼場合。本發(fā)明與現(xiàn)有技術(shù)相比,具有以下優(yōu)點(diǎn):第一、本發(fā)明通過采用兩級流水線操作,可以穩(wěn)定實(shí)現(xiàn)一個(gè)時(shí)鐘周期編碼一個(gè)比特?cái)?shù)據(jù),編碼得到的碼流按單個(gè)字節(jié)輸出。第二、本發(fā)明概率查找及更新模塊采用概率預(yù)測和查找表兩種方式,得到輸入待編碼數(shù)據(jù)上下文數(shù)據(jù)的索引值和高概率符號信息,減少了環(huán)路路徑長度,減少了等待時(shí)間,有效的提升了編碼的速度。第三、本發(fā)明采用了長度為16位的編碼狀態(tài)區(qū)間寄存器,長度為20位的編碼狀態(tài)下限寄存器,并且由首I探測器得到編碼狀態(tài)區(qū)間寄存器需要移位的位數(shù),一次完成歸一化過程,消除了流水線的等待。第四、本發(fā)明采用首字節(jié)進(jìn)位緩沖寄存器實(shí)現(xiàn)了碼流的拼合,位填充和輸出,最多涉及到25位的加法操作,使得碼流輸出模塊變得既簡單又易于硬件實(shí)現(xiàn)。
圖1是本發(fā)明的MQ算術(shù)編碼器總的結(jié)構(gòu)框圖;圖2是本發(fā)明的概率查找及更新模塊的結(jié)構(gòu)框圖;圖3是本發(fā)明的概率查找及更新模塊的更新邏輯實(shí)現(xiàn)流程;圖4是本發(fā)明的寄存器更新模塊的結(jié)構(gòu)框圖;圖5是本發(fā)明的寄存器更新模塊中的首I探測器內(nèi)部結(jié)構(gòu)示意圖;圖6是本發(fā)明的碼流拼合與輸出模塊的結(jié)構(gòu)框圖;圖7是本發(fā)明碼流拼合與輸出模塊中首字節(jié)進(jìn)位緩沖寄存器示意
圖8是本發(fā)明碼流拼合與輸出模塊中的碼流輸出單元流程圖。
具體實(shí)施例方式以下結(jié)合附圖和具體實(shí)例對本發(fā)明的各個(gè)功能模塊以其工作流程作詳細(xì)介紹。請參閱圖1,本發(fā)明的MQ算術(shù)編碼器包括:概率查找及更新模塊、寄存器更新模塊和碼流拼合與輸出模塊。時(shí)鐘信號和復(fù)位信號作用于圖1中的所有模塊,且在圖2、圖4、圖6中均未標(biāo)記出來。概率查找及更新模塊,輸入待編碼的二進(jìn)制數(shù)據(jù)D、待編碼數(shù)據(jù)上下文信息CX、輸入數(shù)據(jù)有效標(biāo)志信號V_D以及寄存器更新模塊反饋的編碼狀態(tài)區(qū)間寄存器的值A(chǔ),輸出待編碼數(shù)據(jù)的概率估計(jì)值Qe、待編碼數(shù)據(jù)與高概率符號相同標(biāo)志smb、以及有效標(biāo)志信號V_Q;寄存器更新模塊,與概率查找及更新模塊相連接,接收概率查找及更新模塊輸出的待編碼數(shù)據(jù)的概率估計(jì)值Qe、待編碼數(shù)據(jù)與高概率符號相同標(biāo)志smb、以及有效標(biāo)志信號V_Q和編碼結(jié)束信號Flush,對寄存器更新模塊中的編碼狀態(tài)下限寄存器和編碼狀態(tài)區(qū)間寄存器進(jìn)行更新,輸出待編碼數(shù)據(jù)的碼流B_c、碼流長度B_1以及有效標(biāo)志信號V_B,同時(shí)將編碼狀態(tài)區(qū)間寄存器的值A(chǔ)反饋到概率查找及更新模塊;碼流拼合與輸出模塊與寄存器更新模塊相連接,接收寄存器更新模塊輸出的待編碼數(shù)據(jù)的碼流B_c、碼流長度B_1以及有效標(biāo)志信號V_B,使用碼流拼合與輸出模塊中的首字節(jié)進(jìn)位緩沖寄存器對輸入的碼流進(jìn)行拼合,用于輸出碼流C及輸出碼流有效標(biāo)志信號V_C;本發(fā)明的MQ算術(shù)編碼器還包括:在所述寄存器更新模塊和碼流拼合與輸出模塊之間插入寄存器組,形成兩級流水線結(jié)構(gòu)。進(jìn)一步地,概率查找及更新模塊中含有的第一查找表單元的寬度至少為7位、深度19的寄存器組,第一查找表中 的數(shù)值隨著編碼進(jìn)行不斷更新;進(jìn)一步地,概率查找及更新模塊中含有的第二查找表單元的寬度至少為28位、深度47的只讀存取器;進(jìn)一步地,概率查找及更新模塊采用預(yù)測加查找表的方式得到待編碼數(shù)據(jù)上下文信息的索引值和高概率符號,減少了環(huán)路路徑長度,提高了編碼速度?!案吒怕史枴笔且粋€(gè)通用詞組。進(jìn)一步地,寄存器更新模塊中的編碼狀態(tài)區(qū)間寄存器長度為16位,編碼狀態(tài)下限寄存器長度為20位;進(jìn)一步地,使用首I探測器來求得編碼狀態(tài)區(qū)間寄存器需要左移的位數(shù),一次移位完成編碼狀態(tài)區(qū)間寄存器的歸一化和編碼狀態(tài)下限寄存器的更新;同時(shí),使用模板生成單元產(chǎn)生一個(gè)模板,與編碼狀態(tài)下限寄存器的值相與,得到待編碼數(shù)據(jù)的碼流,同時(shí)輸出碼流長度;碼流長度在數(shù)值上等于首I探測器得到移位數(shù)。進(jìn)一步地,碼流拼合與輸出模塊中的首字節(jié)進(jìn)位緩沖寄存器由32位的碼流寄存器和一位進(jìn)位寄存器組成;32位的碼流寄存器由彈出區(qū),拼合區(qū)和緩沖區(qū)組成;彈出區(qū)用來實(shí)現(xiàn)碼流的“位填充”操作,拼合區(qū)用來完成當(dāng)時(shí)輸入的碼流和已有碼流的拼合,緩沖區(qū)用來緩沖當(dāng)前輸入的碼流超過拼合區(qū)的部分;使用了一個(gè)寬度為20位、深度可設(shè)定的先入先出緩沖器,對輸入的碼流進(jìn)行緩沖,保證MQ算術(shù)編碼器每次只輸出單字節(jié)的碼流。
下面結(jié)合附圖對本發(fā)明的各個(gè)模塊進(jìn)行詳細(xì)闡述。圖2給出了本發(fā)明MQ算術(shù)編碼的概率查找及更新模塊的結(jié)構(gòu)(輸入數(shù)據(jù)有效標(biāo)志信號V_D和輸出數(shù)據(jù)有效標(biāo)志信號V_Q未在圖中標(biāo)出),包括:預(yù)測更新邏輯單元、第一查找表單元、第二查找表單元、延時(shí)單元、第一同或單元、第二同或單元、第一選擇器和第二選擇器組成,其中:延時(shí)單元,接收當(dāng)前輸入的待編碼數(shù)據(jù)上下文CX,輸出當(dāng)前輸入待編碼數(shù)據(jù)的前一時(shí)鐘的上下文cxq。第一同或單元與延時(shí)單元連接,接收當(dāng)前輸入的待編碼數(shù)據(jù)上下文CX和延時(shí)單元輸出的待編碼數(shù)據(jù)的前一時(shí)鐘數(shù)據(jù)上下文CXq,用于生成并輸出控制信號kz ;第一查找表單元分別連接第一同或單元和預(yù)測更新邏輯單元,接收待編碼數(shù)據(jù)上下文CX、控制信號kz、下一索引值N_1、下一高概率符號N_M。如果控制信號kz為高電平,用下一索引值N_I和下一高概率符號N_M更新第一查找表;如果控制信號kz為低電平,根據(jù)輸入的待編碼數(shù)據(jù)上下文CX,由查找表得到并輸出索引值I和高概率符號M。由MQ算術(shù)編碼的標(biāo)準(zhǔn)規(guī)定,輸入待編碼數(shù)據(jù)上下文共有19種,得到的索引值的范圍為O到46,高概率符號為O或者I。由于第一查找表的內(nèi)容需要隨著編碼的進(jìn)行不斷的更新,所以,第一查找表至少需要由寬度為7位,深度為19的寄存器組成。第一選擇器分別連接第一同或單元,第一查找表單元和預(yù)測更新邏輯單元,接收第一同或單元輸出的控制信號kz,第一查找表輸出的索引值I和預(yù)測更新單元輸出的下一索引值N_I。如果控制信號kz為高電平,將預(yù)測更新單元輸出的下一索引值1輸出并作為索引值Index ;如 果控制信號kz為低電平,將第一查找表輸出的索引值I輸出并作為索引值Index。第二選擇器分別連接第一同或單元,第一查找表單元和預(yù)測更新邏輯單元,接收第一同或單兀輸出的控制信號kz,第一查找表輸出的高概率符號M和預(yù)測更新單兀輸出的下一高概率符號N_M。如果控制信號kz為高電平,將預(yù)測更新單元輸出的下一高概率符號N_M輸出作為高概率符號MPS ;如果控制信號kz為低電平,將第一查找表輸出的高概率符號M輸出作為高概率符號MPS。第二同或單元與第二選擇器連接,接收待編碼數(shù)據(jù)D和第二選擇器輸出的高概率符號MPS,用于輸出待編碼數(shù)據(jù)與高概率符號相同標(biāo)志smb。第二查找表單元與第一選擇器連接,接收第一選擇器輸出的索引值Index,得到相應(yīng)的概率估計(jì)Qe、執(zhí)行高概率符號歸一化的下一個(gè)索引值NMPS、執(zhí)行低概率符號歸一化時(shí)的下一個(gè)索引值NLPS以及第一查找表單元的高概率符號信息是否需要更新的信息switch.,第二查找表單元的內(nèi)容由MQ算術(shù)編碼的標(biāo)準(zhǔn)給出,在整個(gè)編碼過程中是固定不變的。本發(fā)明使用寬度28位,深度為47的只讀存取器來實(shí)現(xiàn)的。預(yù)測更新邏輯單元分別連接第二查找表單元、第一選擇器、第二選擇器、第二同或單元,接收反饋信號A、高概率符號相同標(biāo)志smb、第一選擇器輸出的索引值Index、第二選擇器輸出的高概率符號MPS、概率估計(jì)Qe、執(zhí)行高概率符號歸一化的下一個(gè)索引值NMPS、執(zhí)行低概率符號歸一化時(shí)的下一個(gè)索引值NLPS以及第一查找表的高概率符號信息是否需要更新的信息switch,用于生成并輸出下一索引值N_I和下一高概率符號N_M,用來更新第一查找表單元。預(yù)測更新邏輯單元的實(shí)現(xiàn)過程見圖3所示的流程圖,如果高概率符號相同標(biāo)志smb為1,將第二查找表單元輸出的執(zhí)行低概率符號歸一化時(shí)的下一個(gè)索引值NLPS賦給下一索引值11 ;并判斷第二查找表單元輸出的高概率符號信息是否需要更新的信息switch是否為1,若為I,將第二選擇器輸出的高概率符號MPS取反。如果高概率符號相同標(biāo)志smb為O,判斷反饋信號A與概率估計(jì)Qe做差后的數(shù)值是否小于0x8000:若小于0x8000,將第二查找表輸出的執(zhí)行高概率符號歸一化的下一個(gè)索引值NMPS作為預(yù)測更新邏輯單元輸出的下一索引值N_I ;若不小于0x8000,將第一選擇器輸出的索引值Index作為預(yù)測更新邏輯單元輸出的下一索引值N_I。圖4給出了本發(fā)明MQ算術(shù)編碼的寄存器更新模塊的結(jié)構(gòu)框圖,包括第一移位單元、第一比較器、第一加法器、第二加法器、第三同或單元、第三選擇器、第四選擇器、第五選擇器、第六選擇器、編碼狀態(tài)下限寄存器、編碼狀態(tài)區(qū)間寄存器、歸一化單元、首I探測器、模板生成單元以及與單元。第一移位單元接收概率查找及更新模塊輸出的概率估計(jì)值Qe,將其左移I位,并得到的移位結(jié)果;第一比較器,接收移位結(jié)果和歸一化單元輸出的歸一化結(jié)果A,如果歸一化結(jié)果A大于移位結(jié)果,第一比較器輸出高電平,如果歸一化結(jié)果A小于移位結(jié)果,則第一比較器輸出低電平;第三同或單元,接收輸入的待編碼數(shù)據(jù)與高概率符號相同標(biāo)志smb和第一比較器的輸出高電平或高電平并將兩者進(jìn)行同或,得到并輸出控制信號;第一加法器,接收歸一化單元輸出的歸一化結(jié)果C和概率查找及更新模塊輸出的概率估計(jì)值Qe,并將兩者相加后的結(jié)果;第三選擇器,接收相加后的結(jié)果、歸一化結(jié)果C和控制信號,如果控制信號為高電平,則第三選擇器輸出歸一化結(jié)果C ;如果控制信號為低電平,則第三選擇器輸出相加后的結(jié)果;第二加法器,接收歸一化結(jié)果A和概率估計(jì)值Qe,并將兩者相減后獲得相減后的結(jié)果;第四選擇器,接收相減后的結(jié)果、歸一化結(jié)果A和控制信號,如果控制信號為高電平,則第三選擇器輸出歸一化結(jié)果A ;如果控制信號為低電平,則第四選擇器輸出相減后的結(jié)果;編碼狀態(tài)下限寄存器與第三選擇器連接,用相加后的結(jié)果對編碼狀態(tài)下限寄存器進(jìn)行更新,編碼狀態(tài)下限寄存器輸出數(shù)值Cl ;編碼狀態(tài)區(qū)間寄存器與第四選擇器連接,用相減后的結(jié)果對編碼狀態(tài)區(qū)間寄存器進(jìn)行更新,編碼狀態(tài)區(qū)間寄存器輸出數(shù)值A(chǔ)l ;編碼狀態(tài)區(qū)間寄存器位寬為16,其初始值為0x8000,如果編碼狀態(tài)區(qū)間寄存器的數(shù)值小于0x8000,就需要對編碼狀態(tài)區(qū)間寄存器進(jìn)行歸一化;編碼狀態(tài)下限寄存器位寬為20,初始值為0,表示沒有碼流生成。16位的編碼狀態(tài)下限寄存器和20位編碼狀態(tài)區(qū)間寄存器,保留了 MQ算術(shù)編碼標(biāo)準(zhǔn)中必要位數(shù),減少了加法器的位數(shù),提高了編碼速度。首I探測器與編碼狀態(tài)區(qū)間寄存器連接,接收編碼狀態(tài)區(qū)間寄存器的數(shù)值A(chǔ)l,檢測得到數(shù)值A(chǔ)l中第一個(gè)‘1’, 距離最高位的距離,輸出需要將第一個(gè)‘I’左移到最高位所需要的位數(shù)。圖5顯示了首I探測器的內(nèi)容核心結(jié)構(gòu),將數(shù)值A(chǔ)l的16位分成四部分:Al [15:12]、Al [11:8]、Al [7:4]和Al [3:0],同時(shí)輸入到第一或單元、第二或單元、第三或單元和第四或單元中,用第一或單元、第二或單元、第三或單元和第四或單元得到的結(jié)果控制優(yōu)先選擇器,獲得包含‘I’的最高的一組數(shù)據(jù),然后由長度產(chǎn)生邏輯產(chǎn)生所需要移位的移位數(shù)。歸一化單元,接收接收編碼狀態(tài)區(qū)間寄存器的數(shù)值Cl、編碼狀態(tài)區(qū)間寄存器的數(shù)值A(chǔ)l以及首I探測器得到的移位數(shù),對編碼狀態(tài)區(qū)間寄存器中的數(shù)值A(chǔ)l和編碼狀態(tài)下限寄存器中的數(shù)值Cl左移首I探測器輸出的移位數(shù),輸出歸一化的數(shù)值A(chǔ)和更新后的數(shù)值C,輸入到第一加法器、第二加法器和第三選擇器、第四選擇器中,此外,歸一化的結(jié)果A還反饋到概率查找及更新模塊中。模板生成單元,接收編碼狀態(tài)區(qū)間寄存器的數(shù)值A(chǔ)l,用于產(chǎn)生并輸出一個(gè)20位的模板。這個(gè)模板與編碼狀態(tài)區(qū)間寄存器的數(shù)值Cl進(jìn)行與操作后,可以使得要移出的數(shù)據(jù)非零,其他比特位都為零。模板生成單元輸出的模板與編碼狀態(tài)區(qū)間寄存器的數(shù)值Cl進(jìn)行與操作的結(jié)果和編碼狀態(tài)區(qū)間寄存器的數(shù)值Cl同時(shí)輸入到第六選擇器中;首I探測器產(chǎn)生的移位數(shù)和常數(shù)8輸入到第五選擇器中。
編碼結(jié)束信號Flush控制第五選擇器和第六選擇器,分別得到碼流長度B_1和碼流 B_c。圖6給出了本發(fā)明的MQ算術(shù)編碼器的碼流拼合與輸出模塊的結(jié)構(gòu)框圖,包括一個(gè)先入先出緩存器、第一延時(shí)單元、第二延時(shí)單元、第三延時(shí)單元、或非單元、第三加法器、第四加法器、第五加法器、第二比較器、第三比較器、第七選擇器、第八選擇器、第九選擇器、首字節(jié)進(jìn)位緩沖寄存器、右移單元和碼流輸出單元。碼流拼合與輸出模塊將接收到16位的碼流信號和4位的碼流長度信號合并成一個(gè)20位的信息輸入到先入先出緩沖器中,它們的有效信息V_B充當(dāng)先入先出緩沖器的寫有效信號。當(dāng)先入先出緩沖器的讀有效信號有效時(shí),數(shù)據(jù)從先入先出緩沖器中讀出,分解成16位的碼流信號和4位的碼流長度信號;其中4位的碼流長度信號輸入到第八選擇器中,16位的碼流信號輸入到第七選擇器中。或非單元接收先入先出緩沖器的空標(biāo)志信號和第二比較器輸出第二比較結(jié)果,對先入先出緩沖器的空標(biāo)志信號和第二比較器輸出的第二比較結(jié)果進(jìn)行或非操作后,作為先入先出緩沖器的讀有效信號,同時(shí)讀有效信號也輸入到第三延時(shí)單元中,第三延時(shí)單元輸出第三延時(shí)信號作為第七選擇器和第八選擇器輸出的選擇控制信號。第七選擇器和第八選擇器分別得到并輸出16位的碼流數(shù)據(jù)和4位的碼流長度數(shù)據(jù)。第三加法器,接收第八選擇器輸出的4位的碼流長度數(shù)據(jù)和第四加法器的輸出結(jié)果,并對第八選擇器輸出的4位的碼流長度數(shù)據(jù)和第四加法器的輸出結(jié)果進(jìn)行加法操作。第二比較器,接收第三加法器輸出的第三加結(jié)果和常數(shù)24并對兩者進(jìn)行比較,如果第三加結(jié)果大于等于24,則第二比較器輸出高電平;如果第三加結(jié)果小于24,則第二比較器輸出低電平。第三比較器,接收第二延時(shí)數(shù)據(jù)和常數(shù)16,如果第二延時(shí)數(shù)據(jù)大于等于16,則第三比較器輸出高電平;如果第二延時(shí)數(shù)據(jù)小于16,則第三比較器輸出低電平,并將得到并輸出高電平或低電平的結(jié)果作為控制信號,控制碼流輸出單元和第九選擇器。其中,第二延時(shí)單元接收第三加法器輸出的第三加結(jié)果,并將其延時(shí)一個(gè)時(shí)鐘后輸出。
第九選擇器根據(jù)第三比較器輸出的控制信號,如果輸入的控制信號為高電平,則第九選擇器輸出常數(shù)8 ;如果輸入的控制信號為低電平,則第九選擇器輸出常數(shù)O。第九選擇器的輸出常數(shù)輸入到第四加法器中,和第二延時(shí)單元輸出的第二延時(shí)數(shù)據(jù)相減后,輸入到第三加法器中。右移單元接收第一延時(shí)單元輸出的第一延時(shí)單元輸出的碼流長度數(shù)據(jù)rl和第七選擇器的輸出16位的碼流數(shù)據(jù),對接收到的第七選擇器輸出16位的碼流數(shù)據(jù)右移第一延時(shí)單元輸出的碼流長度數(shù)據(jù)rl位,使得第七選擇器輸出16位的碼流數(shù)據(jù)的第一位與首字節(jié)進(jìn)位緩沖寄存器中已有碼流的最后一位相重疊,移位后得到的數(shù)據(jù)輸入到第五加法器中;第五加法器接收右移單元輸出的右移結(jié)果和碼流輸出單元輸出的25位的數(shù)據(jù)cbl2 ;第五加法器完成25位加法后,和首字節(jié)進(jìn)位緩沖寄存器的彈出區(qū)b0拼合后,存放到首字節(jié)進(jìn)位緩沖寄存器中。請參照圖7,首字節(jié)進(jìn)位緩沖寄存器分為32位的碼流寄存器和一位進(jìn)位寄存器,其中32位的碼流寄存器由彈出區(qū),拼合區(qū)和緩沖區(qū)組成,進(jìn)位寄存器用c來表示;彈出區(qū)用來實(shí)現(xiàn)碼流的“位填充”操作,拼合區(qū)用來完成當(dāng)時(shí)輸入的碼流和已有碼流的拼合,緩沖區(qū)用來緩沖當(dāng)前輸入的碼流超過拼合區(qū)的部分。碼流輸出單元接收首字節(jié)進(jìn)位緩沖寄存器的數(shù)據(jù)以及第三比較器的輸出信號cl6,輸出8位的碼流數(shù)據(jù)C及其有效信號V_C,并且將首字節(jié)進(jìn)位緩沖寄存器的進(jìn)位寄存器、拼合區(qū)以及緩沖區(qū)的值拼合成一個(gè)25位的數(shù)據(jù)cbl2輸入到第五加法器中。碼流輸出時(shí),需要對彈出區(qū)的數(shù)·據(jù)與OxFF以及OxFE進(jìn)行比較,完成了輸出碼流的“位填充”操作,具體實(shí)現(xiàn)過程詳見圖8所示是本發(fā)明碼流拼合與輸出模塊中的碼流輸出單元的流程圖,如果第三比較器的輸出信號cl6為高電平,則對首字節(jié)進(jìn)位緩沖寄存器的b0區(qū)數(shù)據(jù)進(jìn)行判斷,如果b0區(qū)的數(shù)據(jù)數(shù)值為OxFF,則輸出碼流C為OxFF,輸出有效信號V_C為高電平,同時(shí)32位首字節(jié)進(jìn)位緩沖寄存器左移7位,并將32位首字節(jié)進(jìn)位緩沖寄存器的最高位置為進(jìn)位寄存器c的值,然后將進(jìn)位寄存器c的值清O ;若b0區(qū)的數(shù)據(jù)數(shù)值為OxFE且進(jìn)位寄存器c的值為1,則將輸出碼流C為OxFF,輸出有效信號V_C為高電平,同時(shí)將32位首字節(jié)進(jìn)位緩沖寄存器左移7位,且最高位置為0,然后將進(jìn)位寄存器c的值清O ;若b0區(qū)的數(shù)據(jù)數(shù)值不能滿足上述兩個(gè)條件,則將b0區(qū)的數(shù)據(jù)與進(jìn)位寄存器c的數(shù)值相加后,作為碼流的輸出C,輸出有效信號V_C位高電平,同時(shí)將32位首字節(jié)進(jìn)位緩沖寄存器左移8位,然后將進(jìn)位寄存器c的值清O。如果第三比較器的輸出信號cl6為低電平,則不輸出,輸出有效標(biāo)志V_C為低電平。為了驗(yàn)證本發(fā)明的有效性,本發(fā)明的MQ算術(shù)編碼器在型號為XC5VFX70T的現(xiàn)場可編程門陣列(FPGA)編程實(shí)現(xiàn),綜合得到的最高頻率為215.692MHz,使用了 247個(gè)寄存器單兀(Slice Registers)、445 個(gè)查找表單兀(Slice LUTs)以及 I 個(gè) Block RAM/FIFO 資源,所耗資源不足該型號FPGA總資源的1%。本發(fā)明采用二級流水線結(jié)構(gòu),利用了硬件的并行性來提升編碼速度;并采用了預(yù)測單元、首I探測器、首字節(jié)進(jìn)位緩沖寄存器,使得MQ算術(shù)編碼器結(jié)構(gòu)更加合理,編碼速度得到了提升。所以,本發(fā)明可以廣泛使用于JPEG2000壓縮芯片中,滿足各種基于JPEG2000的圖像壓縮場合;亦可以用于視頻編碼芯片中,滿足高清視頻實(shí)時(shí)編碼的要求;同時(shí)也可以用于一些對數(shù)據(jù)進(jìn)行無損壓縮的場合。以上所述僅為本發(fā)明的較佳實(shí)施實(shí)例而已,并不用與限制本發(fā)明。凡在本發(fā)明的精神和原則之內(nèi),所作的任何修改、等同替換、功能模塊的合并或展開以及改進(jìn)等,均應(yīng)包含在本發(fā)明的包含范圍之內(nèi)·。
權(quán)利要求
1.一種MQ算術(shù)編碼器,其特征在于,至少包括: 概率查找及更新模塊,輸入待編碼的二進(jìn)制數(shù)據(jù)、待編碼數(shù)據(jù)上下文信息、輸入數(shù)據(jù)有效標(biāo)志信號以及寄存器更新模塊反饋的編碼狀態(tài)區(qū)間寄存器的值,用于輸出待編碼數(shù)據(jù)的概率估計(jì)值、待編碼數(shù)據(jù)與高概率符號相同標(biāo)志、以及輸出有效標(biāo)志信號; 寄存器更新模塊,與概率查找及更新模塊相連接,接收概率查找及更新模塊輸出的待編碼數(shù)據(jù)的概率估計(jì)值、待編碼數(shù)據(jù)與高概率符號相同標(biāo)志、以及有效標(biāo)志信號和編碼結(jié)束信號,對寄存器更新模塊中的編碼狀態(tài)下限寄存器和編碼狀態(tài)區(qū)間寄存器進(jìn)行更新,用于輸出待編碼數(shù)據(jù)的碼流、碼流長度以及有效標(biāo)志信號,同時(shí)將編碼狀態(tài)區(qū)間寄存器的數(shù)值反饋到概率查找及更新模塊; 碼流拼合與輸出模塊與寄存器更新模塊相連接,接收寄存器更新模塊輸出的待編碼數(shù)據(jù)的碼流、碼流長度以及有效標(biāo)志信號,使用碼流拼合與輸出模塊中的首字節(jié)進(jìn)位緩沖寄存器對輸入的碼流進(jìn)行拼合,用于輸出碼流及輸出碼流有效標(biāo)志信號。
2.如權(quán)利要求1所述的MQ算術(shù)編碼器,其特征在于,還包括:在所述寄存器更新模塊和碼流拼合與輸出模塊之間插入寄存器組,形成兩級流水線結(jié)構(gòu)。
3.如權(quán)利要求1所述的MQ算術(shù)編碼器,其特征在于,所述概率查找及更新模塊中含有的第一查找表單元是寬度至少為7位、深度19的寄存器組,第一查找表中的數(shù)值隨著編碼進(jìn)行不斷更新。
4.如權(quán)利要求1所述的MQ算術(shù)編碼器,其特征在于,所述概率查找及更新模塊中含有的第二查找表單元是寬度至少為28位、深度47的只讀存取器。
5.如權(quán)利要求1所述的MQ算術(shù)編碼器,其特征在于,概率查找及更新模塊采用預(yù)測加查找表的方式得到待編碼數(shù)據(jù)上下文信息的索引值和高概率符號。
6.如權(quán)利要求1所述的MQ算術(shù)編碼器,其特征在于,寄存器更新模塊中的編碼狀態(tài)區(qū)間寄存器長度為16位和編碼狀態(tài)下限寄存器長度為20位。
7.如權(quán)利要求6所述的MQ算術(shù)編碼器,其特征在于,還包括:使用首I探測器來求得編碼狀態(tài)區(qū)間寄存器需要左移的位數(shù),一次移位完成編碼狀態(tài)區(qū)間寄存器的歸一化和編碼狀態(tài)下限寄存器的更新;同時(shí),使用模板生成單元產(chǎn)生一個(gè)模板,與編碼狀態(tài)下限寄存器的值相與,得到待編碼數(shù)據(jù)的碼流,同時(shí)輸出碼流長度;碼流長度在數(shù)值上等于首I探測器得到移位數(shù)。
8.如權(quán)利要求1所述的MQ算術(shù)編碼器,其特征在于,碼流拼合與輸出模塊中含有一首字節(jié)進(jìn)位緩沖寄存器,首字節(jié)進(jìn)位緩沖寄存器由32位的碼流寄存器和一位進(jìn)位寄存器組成;32位的碼流寄存器由彈出區(qū),拼合區(qū)和緩沖區(qū)組成;彈出區(qū)用來實(shí)現(xiàn)碼流的“位填充”操作,拼合區(qū)用來完成當(dāng)時(shí)輸入的碼流和已有碼流的拼合,緩沖區(qū)用來緩沖當(dāng)前輸入的碼流超過拼合區(qū)的部分。
9.如權(quán)利要求1所述的MQ算術(shù)編碼器,其特征在于,碼流拼合與輸出模塊含有一先入先出緩沖器,使用了一個(gè)寬度為20位、深度能設(shè)定的先入先出緩沖器,對輸入的碼流進(jìn)行緩沖,保證MQ算術(shù)編碼器每次只輸出單字節(jié)的碼流。
全文摘要
本發(fā)明公開了一種MQ算術(shù)編碼器,概率查找及更新模塊,用于輸出待編碼數(shù)據(jù)的概率估計(jì)值、待編碼數(shù)據(jù)與高概率符號相同標(biāo)志、以及輸出有效標(biāo)志信號;寄存器更新模塊,與概率查找及更新模塊相連接,用于得到待編碼數(shù)據(jù)的碼流、碼流長度以及有效標(biāo)志信號,同時(shí)將編碼狀態(tài)區(qū)間寄存器的值反饋到概率查找及更新模塊;碼流拼合與輸出模塊與寄存器更新模塊相連接,接收寄存器更新模塊輸出的待編碼數(shù)據(jù)的碼流、碼流長度以及有效標(biāo)志信號,使用碼流拼合與輸出模塊中的首字節(jié)進(jìn)位緩沖寄存器對輸入的碼流進(jìn)行拼合,用于輸出碼流及輸出碼流有效標(biāo)志信號。本發(fā)明減少了環(huán)路路徑長度,減少了等待時(shí)間,有效的提升了編碼的速度。
文檔編號H04N7/26GK103248896SQ20131017910
公開日2013年8月14日 申請日期2013年5月15日 優(yōu)先權(quán)日2013年5月15日
發(fā)明者孫健, 任國強(qiáng), 徐永剛, 吳威, 吳欽章 申請人:中國科學(xué)院光電技術(shù)研究所