專利名稱:一種0冗余編碼時(shí)鐘的位平面編碼器的vlsi實(shí)現(xiàn)方法
技術(shù)領(lǐng)域:
本發(fā)明屬于VLSI設(shè)計(jì)技術(shù)領(lǐng)域。具體涉及到在JPEG2000硬件實(shí)現(xiàn)中,對(duì)部分關(guān)鍵電路采用專用設(shè)計(jì),得到高效的(低狀態(tài)存儲(chǔ)器),且具有0冗余編碼時(shí)鐘的位平面編碼器的VLSI實(shí)現(xiàn)方法。
背景技術(shù):
JPEG2000主要由兩個(gè)部分組成離散小波變換(DWT)和EBCOT。小波變換將圖像從空間域變換為頻率域,變換產(chǎn)生的系數(shù)經(jīng)過量化后被EBCOT進(jìn)行熵編碼。EBCOT中的位平面編碼為算術(shù)編碼器提供上下文(CX)和D(決斷)。但是在上下文生成的過程中,每個(gè)采樣點(diǎn)的上下文是由它領(lǐng)域采樣點(diǎn)的狀態(tài)決定的。每個(gè)采樣點(diǎn)包括五個(gè)狀態(tài)變量v(幅值),s(符號(hào)),δ(有效性),π(編碼完成標(biāo)志),ξ(是否第一次進(jìn)入幅度細(xì)化通道)。如果碼塊大小為64×64時(shí),一共需要20K狀態(tài)變量存儲(chǔ)器,同時(shí)狀態(tài)存儲(chǔ)器的寫入和讀寫,中斷了實(shí)現(xiàn)時(shí)的流水線,大大降低了編碼速度,且增加了控制電路的復(fù)雜性。另外在上下文生成過程中需要對(duì)位平面進(jìn)行多次掃描編碼,在時(shí)間上付出了很大的代價(jià)。這兩個(gè)缺點(diǎn)使JPEG2000編碼器整體效率很低,對(duì)高質(zhì)量圖像難以進(jìn)行實(shí)時(shí)壓縮處理。
發(fā)明內(nèi)容
針對(duì)上述背景技術(shù)中存在的缺陷和不足,本發(fā)明的目的在于,在位平面編碼器的設(shè)計(jì)中,引入3個(gè)專用電路,實(shí)現(xiàn)高效的(無狀態(tài)存儲(chǔ)器),且0冗余編碼時(shí)鐘的VLSI方法。
為達(dá)到上述目的,本發(fā)明采用的技術(shù)解決方案,按以下方式進(jìn)行1)通過“MSB”檢測電路及狀態(tài)變量生成電路所述”MSB”檢測電路及狀態(tài)變量生成電路是每一個(gè)象素,最高的有效位平面我們稱之為msb,假設(shè)A為16整數(shù),如A=0X0A00,則msb(A)=12;假設(shè)當(dāng)前正在編碼的位平面為currentbp,從碼塊中輸出時(shí)的待編碼象素為A,則當(dāng)currentbp<msb(A)時(shí),δ(A)=1,否則δ(A)=0。
2)無冗余時(shí)鐘的列NBC索引判斷和生成電路所述的無冗余時(shí)鐘的列NBC索引判斷和生成電路技術(shù)是位平面編碼在執(zhí)行過程中,每次掃描一列四個(gè)數(shù)據(jù),然而這四個(gè)點(diǎn)并不是都需要編碼的,利用窗口處理函數(shù),找到需要進(jìn)行編碼的點(diǎn),將其信息輸入到NBC索引電路中。該電路輸出當(dāng)前列需要進(jìn)行編碼的點(diǎn)的索引,這樣就跳過了不需要進(jìn)行編碼的象素點(diǎn),節(jié)約了時(shí)鐘周期。當(dāng)需要編碼的點(diǎn)都被編碼完成后,NBC索引電路輸出換列(change column)信號(hào)請(qǐng)求下一列數(shù)據(jù)。
3)RLC,ZC和SC的連續(xù)編碼的控制信號(hào)生成電路所述RLC,ZC和SC的連續(xù)編碼實(shí)現(xiàn)的控制信號(hào)生成電路技術(shù)是在PASS1通道,需要進(jìn)行ZC和SC編碼,在PASS3通道,需要進(jìn)行RLC,ZC,SC編碼,在PASS1通道,需要進(jìn)行ZC和SC編碼;在PASS3通道,需要進(jìn)行RLC、ZC、和SC編碼;在PASS1編碼時(shí),通過無冗余時(shí)鐘的列NBC索引判斷和生成電路,使得在編碼時(shí)的時(shí)鐘消耗僅為1個(gè)判斷時(shí)鐘和編碼時(shí)鐘;在PASS3編碼時(shí),使用RLC,ZC和SC的流水實(shí)現(xiàn)的控制信號(hào)生成電路及列NBC索引判斷和生成電路,使得在編碼時(shí)的時(shí)鐘消耗僅為1個(gè)判斷時(shí)鐘和編碼時(shí)鐘,通過這兩個(gè)電路可以在編碼時(shí)獲得最快的編碼速度,無時(shí)鐘浪費(fèi)。
本發(fā)明針對(duì)位平面編碼器的VLSI實(shí)現(xiàn)中,所必須處理的幾個(gè)關(guān)鍵問題,給出了其專用電路實(shí)現(xiàn)結(jié)構(gòu)。在基于列關(guān)聯(lián)的位平面編碼器的設(shè)計(jì)實(shí)現(xiàn)中,其中MSB檢測電路的運(yùn)用可節(jié)約全部的狀態(tài)存儲(chǔ)器,無冗余時(shí)鐘的列NBC索引判斷和生成電路技術(shù)和RLC,ZC和SC的連續(xù)編碼實(shí)現(xiàn)的控制信號(hào)生成電路技術(shù)保證了編碼時(shí)的無冗余時(shí)鐘設(shè)計(jì)實(shí)現(xiàn)。
圖1是碼塊內(nèi)編碼掃描示意圖;
圖2是通道并行編碼算法示意及窗口示意圖;圖3是象素A的檢0電路圖;圖4是NBC索引生成電路。
圖5是RLC,ZC,SC編碼時(shí)序圖。
圖6給出一個(gè)包含MSB檢測電路,NBC電路和RLC,ZC,SC流水實(shí)現(xiàn)的PASS3編碼實(shí)現(xiàn)圖。
圖7為點(diǎn)X的8領(lǐng)域,其中H0,H1表示水平方向,D表示對(duì)角,V表示垂直方向。
具體實(shí)施例方式
下面結(jié)合附圖和發(fā)明人給出的實(shí)施例對(duì)本發(fā)明進(jìn)一步詳細(xì)說明,但本發(fā)明并不限于這個(gè)實(shí)施例。
首先結(jié)合附圖1對(duì)本文的實(shí)施例算法作簡單說明,位平面編碼的順序是從MSB到LSB,每個(gè)位平面包括三個(gè)編碼通道PASS1有效性傳播通道(Significant Propagation Pass)PASS2幅度細(xì)化通道(Magnitude Refinement PASS)PASS3清除通道(Cleanup Pass)唯一例外的是MSB位平面,只包括PASS3編碼。在JPEG2000默認(rèn)的編碼模式中,其余的位平面在編碼時(shí)順序經(jīng)過PASS1通道,PASS2通道,PASS3通道進(jìn)行編碼。每個(gè)象素點(diǎn)根據(jù)其領(lǐng)域的狀態(tài)判斷進(jìn)入哪一個(gè)通道進(jìn)行編碼。在位平面掃描的過程中,需要對(duì)每個(gè)象素的狀態(tài)變量進(jìn)行刷新δ(有效性),π(是否已經(jīng)被編碼),ε(是否第一次進(jìn)入幅度細(xì)化通道)。
通道并行模式是JPEG2000協(xié)議支持的模式之一,每一列的最后一個(gè)象素在生成上下文時(shí),只需要判斷5鄰域;但是第一個(gè)象素仍然需要判斷8鄰域。采用一種行狀態(tài)存儲(chǔ)器結(jié)構(gòu)來預(yù)存每一列最后一個(gè)點(diǎn)的有效性狀態(tài)。S暫存器和C暫存器,這兩條行狀態(tài)暫存器來分別記錄PASS1和PASS3中每列最后一個(gè)點(diǎn)的有效性狀態(tài)值,每一列的最后一個(gè)象素點(diǎn)編碼完成后,需要對(duì)行暫存器的值進(jìn)行更新。
按照本發(fā)明的關(guān)鍵電路,發(fā)明人給出了一個(gè)典型實(shí)施例。在本實(shí)施例中使用的是JPEG2000標(biāo)準(zhǔn)中的基于列關(guān)聯(lián)的通道并行位平面編碼。在本實(shí)施例中,首先介紹MSB檢測電路及狀態(tài)變量生成電路在JPEG2000協(xié)議中,每個(gè)象素的狀態(tài)變量就是有效性變量δ,是否第一次進(jìn)入幅度細(xì)化通道變量ξ,幅值v,符號(hào)s,編碼完成變量π,在每一次進(jìn)行位平面掃描時(shí),可以很容易的得到v和s變量,編碼完成變量π需要根據(jù)前面通道移位后的數(shù)據(jù)決定,有效性δ和是否第一次進(jìn)入幅度細(xì)化通道變量ξ需要頻繁更新,采用存儲(chǔ)器操作時(shí),數(shù)據(jù)存取和讀取操作使控制程序復(fù)雜,并且浪費(fèi)了時(shí)間周期。MSB電路通過組合邏輯,在一個(gè)時(shí)鐘內(nèi)判斷δ和ξ,不需要更新。其基本原理為每一個(gè)象素,最高的有效位平面為msb,假設(shè)當(dāng)前正在編碼的位平面為currentbp,當(dāng)currentbp<msb時(shí),δ=1,否則δ=0;若該象素的msb<2則ξ=0;否則,若currentbp<msb-2時(shí),ξ=1,其他情況ξ=0。
在設(shè)計(jì)中,假定小波進(jìn)行9/7小波變換時(shí),輸出數(shù)據(jù)經(jīng)過量化后的位深度為16位,其中最高位為符號(hào)位,其它十五位為數(shù)據(jù)位。在圖1中,只給出了shiftbit[3:1]的實(shí)現(xiàn),類似的,可以得到shiftbit
,A表示小波變換后輸出的數(shù)據(jù),通過組合邏輯,得到的shiftbit[3:0]為A的最高位到msb之前零的個(gè)數(shù),所以msb=15-shift[3:0]。進(jìn)而與currentbp比較可以得到A的狀態(tài)變量,這些操作均為組合邏輯,可以在一個(gè)時(shí)鐘周期內(nèi)完成,具體實(shí)現(xiàn)時(shí)可從碼塊中讀出列(stripe)數(shù)據(jù)時(shí)應(yīng)用。達(dá)到了既省去了存儲(chǔ)器同時(shí)節(jié)省了存取狀態(tài)變量所耗費(fèi)的時(shí)鐘。
所述的無冗余時(shí)鐘的列NBC索引判斷和生成電路技術(shù)及RLC,ZC和SC的流水實(shí)現(xiàn)的控制信號(hào)生成電路技術(shù)是因兩者具有相關(guān)性,放在一起論述,在PASS1通道,需要進(jìn)行ZC和SC編碼,在PASS3通道,需要進(jìn)行RLC,ZC,SC編碼,通常是采用狀態(tài)機(jī)實(shí)現(xiàn),在狀態(tài)跳轉(zhuǎn)時(shí),會(huì)產(chǎn)生時(shí)鐘冗余,運(yùn)用本方法,高效實(shí)現(xiàn)了三種編碼方式的流水線操作,沒有產(chǎn)生時(shí)鐘冗余。
在位平面編碼在執(zhí)行過程中,每次掃描一列四個(gè)數(shù)據(jù),然而這四個(gè)點(diǎn)并不是都需要編碼的,根據(jù)窗口處理函數(shù),首先計(jì)算出當(dāng)前待編碼列的4個(gè)象素的領(lǐng)域重要性信息,將其信息輸入到NBC索引電路中,該電路輸出當(dāng)前列需要進(jìn)行編碼的點(diǎn)的索引,這樣就跳過了不需要進(jìn)行編碼的象素點(diǎn),節(jié)約了時(shí)鐘周期。當(dāng)需要編碼的點(diǎn)都被編碼完成后,NBC索引電路輸出換列(change column)信號(hào)請(qǐng)求下一列數(shù)據(jù)。
以P1列為例說明PASS1編碼,對(duì)于P10,先計(jì)算其h,v,d的有效性值,如表一所示,如h,v,d值中任一為1,則表示此點(diǎn)在PASS1中需要編碼,在判斷P11是否在PASS1編碼時(shí),在窗口邏輯的計(jì)算中用δ′10=(h10|v10|d10)&v10代替δ10。NBCflag[3:0]為4位的線變量,用來表示P10,P11,P12,P13四個(gè)點(diǎn)是否在PASS1中編碼,這樣NBCflag
=h10|v10|d10。
Nbccounter表示在PASS1中P1列需要編碼的點(diǎn)數(shù)。
Nbccounter=NBCflag[3]+NBCflag[2]+NBCflag[1]+NBCflag
Pixelcounter表示從0開始計(jì)數(shù),直到其值等于nbccounter時(shí),NBC索引生成電路為多路選擇器組成的組合邏輯,在圖3,標(biāo)有1~7一共七個(gè)節(jié)點(diǎn),分別記為temp1-temp7,其中temp1-temp6分別為6個(gè)二選一的多路選擇器的輸出,分別用se11,sel2,sel3,sel4,sel5,sel6來表示6個(gè)多選的選擇端條件,例如在nbcflag[2]=1時(shí),temp1=2’b10,否則,temp1=2’b11,則這樣結(jié)合圖3,可表示為sel1=nbcflag[2]sel2=nbcflag[1]sel3=nbcflag
sel6=nbcflag[2]&nbcflag[1]&nbcflag
temp3,temp4,temp5,temp7為一個(gè)四選一的多路選擇器的輸出,其中選擇器的選擇端接pixelcounter,當(dāng)pixelcounter=01時(shí),nbcindex=temp5。
這樣在PASS1編碼時(shí),當(dāng)1≤pixelcount er≤nbccounter,應(yīng)該進(jìn)行ZC編碼,同時(shí)根據(jù)nbcindex的值將相應(yīng)的hnbcindex,vnbcindex,dnbcindex的值送到ZC的上下文生成邏輯中,生成各編碼點(diǎn)所屬的ZC上下文。
當(dāng)v[nbcindex]=1時(shí),在ZC編碼之后,還需進(jìn)行SC編碼,這時(shí),pixelcounter的值需保持兩個(gè)時(shí)鐘,分別順序產(chǎn)生一個(gè)時(shí)鐘ZC編碼使能和SC編碼使能,同時(shí)nbcindex保持兩個(gè)時(shí)鐘,將相應(yīng)的h,v,d和S信號(hào)值送到ZC的上下文生成邏輯和SC的上下文生成邏輯,這樣在PASS1的編碼時(shí)所需的時(shí)鐘的數(shù)為僅為窗口邏輯時(shí)鐘(1個(gè))+編碼時(shí)鐘,即利用無冗余時(shí)鐘的列NBC索引判斷和生成電路技術(shù)及RLC,ZC和SC的流水實(shí)現(xiàn)的控制信號(hào)生成電路技術(shù)實(shí)現(xiàn)了PASS1編碼的無容余時(shí)鐘實(shí)現(xiàn)。
對(duì)PASS3編碼,因?yàn)榭赡馨l(fā)生RLC,ZC和SC三種編碼,具體在實(shí)現(xiàn)時(shí)可按以下步驟首先對(duì)輸入的一列數(shù)據(jù)進(jìn)行RLC判斷,如果滿足RLC編碼條件,進(jìn)入RLC通道編碼。
如果V50,V51,V52,V53全為0,則只需一個(gè)編碼時(shí)鐘,如不全為0,如1010,正確編碼應(yīng)為100S010,對(duì)100S為RLC編碼,對(duì)010需要進(jìn)行ZC編碼,所以臨時(shí)變量nbcflagtemp=4’b0111,表示此列中的后三個(gè)數(shù)需要進(jìn)行ZC編碼。在第三個(gè)時(shí)鐘周期,將SC上下文生成邏輯需要數(shù)據(jù)送入,在第四個(gè)時(shí)鐘周期,輸出SC編碼上下文,同時(shí)(設(shè)在此之前,已由coloumn_change信號(hào)將ZC編碼計(jì)數(shù)器pixelcounter清0),將NBCflagtemp的值賦給NBC電路的NBCflag,如在PASS1中描述的一樣,在第五個(gè)時(shí)鐘輸出ZC上下文的輸出,同時(shí)在需要時(shí)產(chǎn)生ZC的輸出,所需時(shí)鐘數(shù)僅為RLC判斷或ZC判斷(1個(gè)時(shí)鐘)+RLC編碼、ZC編碼、SC編碼時(shí)鐘,實(shí)現(xiàn)了PASS3通道編碼的無冗余時(shí)鐘流水實(shí)現(xiàn),圖4所示一個(gè)包含RLC編碼,ZC編碼,SC編碼的時(shí)序圖,圖中只給出實(shí)際中的RLC,ZC或SC的使能信號(hào)(en)。圖6給出一個(gè)包含MSB檢測電路,NBC電路和RLC,ZC,SC流水實(shí)現(xiàn)的PASS3編碼實(shí)現(xiàn)圖,PASS1與PASS3的不同僅在與無RLC編碼。PASS2的編碼比較簡單,故在本設(shè)施例中沒有討論。
下表為窗口邏輯的計(jì)算 表中的字母含義解釋首先v(幅值),s(符號(hào)),δ(有效性),π(編碼完成標(biāo)志),ξ(是否第一次進(jìn)入幅度細(xì)化通道)。P11代表附圖2中的點(diǎn),圖7所示為點(diǎn)X的8領(lǐng)域,其中H0,H1表示水平方向,D表示對(duì)角,V表示垂直方向。
因此h=δP20+δP00,]]>表示點(diǎn)P10表示的水平方向有效性貢獻(xiàn)h可由δP20+δP00,即P00,P20點(diǎn)的有效性之和表示,同理可知V,d的含義,δ表示在P10編碼以后,有效性的更新值。
權(quán)利要求
1.一種0冗余編碼時(shí)鐘的位平面編碼器的VLSI實(shí)現(xiàn)方法,其特征在于,按以下步驟進(jìn)行1)通過“MSB”檢測電路及狀態(tài)變量生成電路通過“MSB”檢測電路及狀態(tài)變量生成電路,在待編碼的象素點(diǎn)從碼塊存儲(chǔ)器中取出的同時(shí),通過“MSB”檢測電路生成其在上下文編碼中所需的狀態(tài)變量,對(duì)于每一個(gè)象素,最高的有效位平面稱為msb,假設(shè)A為16整數(shù),如A=0X0A00,則msb(A)=12;假設(shè)當(dāng)前正在編碼的位平面為currentbp,從碼塊中輸出時(shí)的待編碼象素為A,則當(dāng)currentbp<msb(A)時(shí),δ(A)=1,否則δ(A)=0;2)無冗余時(shí)鐘的列NBC索引判斷和生成電路位平面編碼在執(zhí)行過程中,每次掃描一列四個(gè)數(shù)據(jù),然而這四個(gè)點(diǎn)并不是都需要編碼的,利用窗口處理函數(shù),找到需要進(jìn)行編碼的點(diǎn),將其信息輸入到NBC索引電路中;該電路輸出當(dāng)前列需要進(jìn)行編碼的點(diǎn)的索引,跳過不需要進(jìn)行編碼的象素點(diǎn),以節(jié)約時(shí)鐘周期;當(dāng)需要編碼的點(diǎn)都被編碼完成后,NBC索引電路輸出換列信號(hào)請(qǐng)求下一列數(shù)據(jù);3)RLC、ZC和SC的流水實(shí)現(xiàn)的控制信號(hào)生成電路在PASS1通道,需要進(jìn)行ZC和SC編碼;在PASS3通道,需要進(jìn)行RLC、ZC、和SC編碼;在PASS1編碼時(shí),通過無冗余時(shí)鐘的列NBC索引判斷和生成電路,,使得在編碼時(shí)的時(shí)鐘消耗僅為1個(gè)判斷時(shí)鐘和編碼時(shí)鐘;在PASS3編碼時(shí),使用RLC,ZC和SC的流水實(shí)現(xiàn)的控制信號(hào)生成電路及列NBC索引判斷和生成電路,使得在編碼時(shí)的時(shí)鐘消耗僅為1個(gè)判斷時(shí)鐘和編碼時(shí)鐘,通過這兩個(gè)電路可以在編碼時(shí)獲得最快的編碼速度,無時(shí)鐘浪費(fèi)。
全文摘要
本發(fā)明公開了一種0冗余編碼時(shí)鐘的位平面編碼器的VLSI實(shí)現(xiàn)方法,在JPEG2000位平面編碼器的VLSI設(shè)計(jì)中,提供3個(gè)專用電路,通過“MSB”檢測電路及狀態(tài)變量生成電路,在待編碼的象素點(diǎn)從碼塊存儲(chǔ)器中取出的同時(shí),通過“MSB”檢測電路生成其在上下文編碼中所需的狀態(tài)變量,節(jié)省了狀態(tài)變量存儲(chǔ)器,同時(shí)也節(jié)省了存取狀態(tài)變量存儲(chǔ)器耗費(fèi)的大量時(shí)鐘。在PASS1編碼時(shí),通過無冗余時(shí)鐘的列NBC索引判斷和生成電路,使得在編碼時(shí)的時(shí)鐘消耗僅為1個(gè)判斷時(shí)鐘和編碼時(shí)鐘;在PASS3編碼時(shí),使用RLC,ZC和SC的流水實(shí)現(xiàn)的控制信號(hào)生成電路及列NBC索引判斷和生成電路,使得在編碼時(shí)的時(shí)鐘消耗僅為1個(gè)判斷時(shí)鐘和編碼時(shí)鐘,通過這兩個(gè)電路可以在編碼時(shí)獲得最快的編碼速度,無時(shí)鐘浪費(fèi)。
文檔編號(hào)G06T1/00GK1564200SQ200410026018
公開日2005年1月12日 申請(qǐng)日期2004年4月7日 優(yōu)先權(quán)日2004年4月7日
發(fā)明者梅魁志, 鄭南寧, 劉躍虎, 王勇, 姚霽 申請(qǐng)人:西安交通大學(xué)