專利名稱::譯碼變長碼的方法和設(shè)備的制作方法
技術(shù)領(lǐng)域:
:本發(fā)明涉及譯碼變長碼的方法和設(shè)備,特別涉及利用霍夫曼碼樹高速譯碼諸如數(shù)字圖像信號這樣的變長碼字的方法和設(shè)備。一般來說,數(shù)字圖像信號具有許多優(yōu)點。例如,數(shù)字圖像信號在圖像質(zhì)量方面優(yōu)于模擬圖像信號。因此,數(shù)字圖像信號漸漸地被更加經(jīng)常地使用,這是近來的趨向。另一方面,因為數(shù)字化的圖像信息具有大量的信息容量,所以為了有效地傳送圖像信息,必需對其進行壓縮和精減。因此,利用了圖像特性的有效的圖像壓縮方法可被認為是圖像通信的主要領(lǐng)域。在壓縮圖像數(shù)據(jù)的方法中,已知混合編碼方法是組合了概率編碼以及空間和時間壓縮的最有效的方法。大多數(shù)混合編碼方法利用差分脈碼調(diào)制(DPCM)、離散余弦變換(DCT)、DCT系數(shù)的量化以及變長編碼(VLC)。變長編碼是經(jīng)常用于無損失數(shù)據(jù)壓縮的編碼技術(shù)。根據(jù)這一技術(shù),固定長度數(shù)據(jù)按照數(shù)據(jù)的統(tǒng)計資料被變換為可變長度碼字。一般來說,這樣選擇碼字的長度使較短的碼字用來表示較經(jīng)常出現(xiàn)的數(shù)據(jù)和較長的碼字用來表示不那么經(jīng)常出現(xiàn)的數(shù)據(jù)。通過恰當?shù)貙⒆冮L碼字分配給所有可能源碼字的庫,變長碼的平均字長度比原始數(shù)據(jù)的平均字長度短,因此,實現(xiàn)了數(shù)據(jù)壓縮。霍夫曼代碼設(shè)計是通常用來對于已知的數(shù)據(jù)統(tǒng)計資料構(gòu)成最小冗余變長碼的方法。一般來說,可以通過利用輸入數(shù)據(jù)來尋址查閱表的查閱表查閱操作來實現(xiàn)編碼操作。碼字和字長作為表的內(nèi)容被存儲并以恒定的數(shù)據(jù)速率經(jīng)緩沖器被順序地輸出至數(shù)據(jù)信道。但是,在接收端的譯碼操作較復雜。由于可變長度特性,在每一碼字能夠被譯碼成源符號之前不得不根據(jù)接收位串對每一碼字進行分段。因此,可變長度譯碼器的設(shè)計總是難于可變長度編碼器的設(shè)計。有若干種譯碼一連串變長碼字的方法。最經(jīng)常使用的一種稱為樹搜索算法。變長碼總是可以用將碼字作為樹頁(也稱為終端節(jié)點)的樹來表示。譯碼從碼樹的根開始,在接收位串的引導下沿著每一節(jié)點處的兩條分支之一進行。一旦到達了終端節(jié)點,就檢測到碼字的結(jié)束并將其與剩余的位串分割開來。這種譯碼器包括相應于樹的邏輯電路和通過碼樹的控制電路。由于對每一譯碼符號需要沿碼樹逐位進行搜索,所以這一方法會是很慢的,尤其對長的碼字更是如此。在一般的應用中,一個輸入符號用若干位來表示。接收位移入譯碼器的速度是譯碼數(shù)據(jù)平均速度的若干倍。因此,基于樹搜索的譯碼器必需以是輸出數(shù)據(jù)速率若干倍的速度進行操作。這種高速需求對于高清晰度電視(HDTV)信號的數(shù)字傳輸尤其重要。在這種HDTV系統(tǒng)中,總?cè)铀俾?組合了亮度和色度信號)很可能是100MHz。如果采用變長編碼,最大長度的碼字常為16位。逐位譯碼器于是將需要以是該取樣速率16倍的速度、即以1.6千兆位/秒的速度進行移位來檢測處于該取樣速率的碼字。這樣高的速度用目前的IC技術(shù)來實現(xiàn)是非常困難的。還提出了各種設(shè)備來譯碼一連串變長碼字。變長譯碼設(shè)備被分成順序譯碼和并行譯碼。首先,順序譯碼是按照在位串前端的順序開始譯碼位串的方法,并且被分成正常速度輸入結(jié)構(gòu)、正常速度輸出結(jié)構(gòu)和可變輸入/輸出結(jié)構(gòu)。順序譯碼的設(shè)計很容易,但由于它具有每次一位地對輸入位串進行處理的正常速度輸入結(jié)構(gòu),所以它有速度慢的問題。BellCore的M.T.Sun提出的正常速度輸出結(jié)構(gòu)的變長譯碼設(shè)備是在將輸入位串壓縮成與最長碼字長度一般長之后將其輸入到只讀存儲器/可編程邏輯陣列(ROM/PLA)表中的設(shè)備,該變長譯碼設(shè)備在碼字的譯碼期間搜索存儲在該表中的碼字、將搜索到的碼字長度移位到桶形移位器(barrelshifter)、以及搜索下一個碼字(授權(quán)給BellCore的美國專利5173695和5245338號)。即由于正常速度輸出結(jié)構(gòu)的變長譯碼設(shè)備在一周期內(nèi)譯碼一個碼字,所以它的譯碼速度比正常速度輸入結(jié)構(gòu)的變長譯碼設(shè)備的譯碼速度快。此后,普通譯碼器的操作可更容易地被理解。假定從數(shù)據(jù)信道107輸入到緩沖器106的數(shù)據(jù)流由圖3所示的位流a1-a8b1-b6C1-C15d1-d15e1-e12f1-f10g1-g9h1-h16......組成,a1-a8表示在第一變長碼字中的8個位,b1-b6表示在第二變長碼字中的6個位,等等。在第一時鐘信號之前,鎖存器131被初始化,所以“讀”輸出是“1”。鎖存器121也被初始化,所以第一桶形移位器109具有“16”的初始移位。由于從鎖存器121輸入“16”給加法器130和還從鎖存器131輸入16模16(等于“0”)給加法器130,所以加法器130的輸出、即第二桶形移位器127的移位是“16”,“進位”為“1”。由于“讀”為“1”,所以由16位a1-a8b1-b6c1c2組成的第一數(shù)據(jù)段通過導線105輸入給接口部分102。此時,全部鎖存器、桶形移位器109和127的輸出以及PLA116的輸出都是噪聲值,在圖2中用“X”來表示。在第一時鐘周期信號時,先前“進位”“1”變成“讀”“1”,這就從緩沖器106中檢索下一數(shù)據(jù)段至導線105。但是,在這一時鐘信號時,先前“進位”“1”使緩沖器106的先前輸出被讀入鎖存器126。鎖存器121仍初始化在“16”,所以第一桶形移位器109的移位的仍然是“16”,加法器130仍為“16”,“讀”為“1”,“進位”為“1”。由于第二桶形移位器127的移位為“16”和第17-第32位是來自鎖存器126的a1-a8b1-b6C1C2,所以該序列出現(xiàn)在第二桶形移位器127的輸出端。鎖存器100、111和125含有噪聲,正如第一桶形移位器109的輸出和PLA116的譯碼字和碼字長度輸出也包含噪聲一樣。在第二時鐘信號時,第二桶形移位器127的先前輸出被鎖存入鎖存器111。由于“讀”仍為“1”并且先前進位是“1”,所以從緩沖器106檢索下一數(shù)據(jù)段(第三),在鎖存器126中的數(shù)據(jù)段(第一)被鎖存入鎖存器125,第二數(shù)據(jù)段被鎖存入鎖存器126。鎖存器121仍被初始化,所以第一桶形移位器109的移位是“16”。這就保持了加法器130的輸出為“16”、“進位”和“讀”為“1”。由于第二桶形移位器127的先前輸出包括了第一數(shù)據(jù)段,所以在第二時鐘信號時,該段出現(xiàn)在鎖存器111中和在第一桶形移位器109的第17-第32輸入位置上。在第一桶形移位器109移位輸入端處的“16”于是通過導線112將該第一段傳送至桶形移位器的輸出端。在第二桶形移位器127移位輸入端處的“16”將在鎖存器126中的第二數(shù)據(jù)段C3-C5d1-d13傳送至第二桶形移位器127的輸出端。PLA116中的碼字表將在第一段中的最先8個位識別為碼字“A”。譯碼字表119在導線103上輸出這一定長譯碼字A。碼字長度表118在導線120上輸出該字的長度“8”。在第三時鐘信號時,該第一數(shù)據(jù)段被鎖存入鎖存器110,并因此被鎖存入第一桶形移位器109的第一16輸入端。以前的譯碼長度“8”被鎖存入鎖存器121,它即是第一桶形移位器109的移位。第一桶形移位器109的輸出移位到第9-第24個輸入位,即序列b1-b6C1-C5d1-d5。第二時鐘信號時的“進位”“1”在該第三時鐘信號時變成“讀”“1”,于是從緩沖器106檢索下一數(shù)據(jù)段。一旦第三時鐘信號出現(xiàn),這一先前“進位”“1”就將以前的段從緩沖器106傳送至鎖存器126,并從鎖存器126傳送至鎖存器125。在鎖存器121輸出端處的“8”被加法器130與鎖存器131以前的模16輸出(等于“0”)相加,形成新的等于“8”的輸出。第二桶形移位器127的移位現(xiàn)在是“8”,“進位”為“0”。第二桶形移位器127的輸出現(xiàn)在從其第9個輸入(d6)開始。這一序列于是與在第一桶形移位器109輸出端處的序列連上,連在一起的該序列將形成在下一時鐘信號時第一桶形移位器109的輸入。在該第三時鐘周期內(nèi),碼字B在碼字表117的前6位輸入中被識別,定長譯碼字B在導線103上被輸出,碼字長度“6”由碼字長度表118進行輸出。由于先前“進位”為“0”,所以在第四時鐘信號時不從緩沖器106中檢索下一數(shù)據(jù)段,鎖存器125和126的內(nèi)容保持與先前時鐘周期下的內(nèi)容相同。第一桶形移位器109的先前輸出以位b1開始被送入鎖存器110,第二桶形移位器127的先前輸出以位b6開始被送入鎖存器111?,F(xiàn)在在鎖存器121輸出端的“6”將第一桶形移位器109的輸出移位至第7-第22位,以位C1開始,以位d11結(jié)束。該同一“6”被加法器130與先前的“8”相加,產(chǎn)生第二桶形移位器127為“14”的移位。第二桶形移位器127的輸出于是以第15個位輸入即d12開始,它是跟在第一桶形移位器109的最后位之后的下一個位。由于累加的碼字長度仍然小于“16”,所以“進位”輸出仍是“0”。碼字C由譯碼字表119輸出,其碼字長度“5”由碼字長度表118輸出。在第五時鐘信號時,桶形移位器112的先前輸出被鎖存入鎖存器110,以位C1-C5開始,第二桶形移位器127的先前輸出被鎖存入鎖存器111。第一桶形移位器109的輸出窗口根據(jù)先前碼字長度移位5個位,因此以位d1開始。鎖存器121中的“5”與鎖存器131中先前的“14”相加,在加法器130的輸出端得到“19”,這就將第二桶形移位器127移位至第20-第35位,產(chǎn)生了“進位”“1”。碼字D由譯碼字表119輸出,其長度“15”由碼字長度表118輸出。在第六時鐘信號時,由于先前“進位”為“1”,所以“讀”為“1”并從緩沖器106中檢索下一數(shù)據(jù)段,作為先前段的第二桶形移位器127的輸入被移入鎖存器126和鎖存器125。按照與上述方式相同的方式,第一桶形移位器109的輸出被移位至以下一個要被譯碼的字的第一個位e1開始。在模16先前累加的碼字長度“15”來產(chǎn)生累加的碼字長度“18”時,碼字E被譯碼并產(chǎn)生一“進位”。但是,上述普通變長譯碼設(shè)備必需使用ROM/PLA表來搜索碼字。因此,當編碼碼字改變時,普通變長譯碼設(shè)備就有也許需要用戶改變ROM或改變PLA的設(shè)計的問題。因此,本發(fā)明的第一個目的是提供利用霍夫曼碼樹高速譯碼變長碼的方法,當譯碼碼字改變時,不改變存儲基于霍夫曼碼樹的碼字的存儲器或存儲器的設(shè)計。本發(fā)明的第二個目的是提供利用霍夫曼碼樹高速譯碼變長碼的設(shè)備,當譯碼碼字改變時,不改變存儲基于霍夫曼碼樹的碼字的存儲器或存儲器的設(shè)計。為了實現(xiàn)本發(fā)明的上述第一個目的,提供了譯碼變長碼的方法,該方法包括以下步驟a)接收具有多個基于霍夫曼碼樹結(jié)構(gòu)的變長碼字的用于譯碼的編碼位串,按照多至最長的碼字長度對接收的用于譯碼的編碼位串進行壓縮,輸出被壓縮的用于譯碼的編碼位串;b)計算被壓縮編碼位串的節(jié)點位置值來進行步驟a)輸出的最長碼字長度的譯碼,以便檢測來自被壓縮編碼位串的碼字的邊界線來進行多至最長碼字長度的譯碼;c)根據(jù)步驟b)計算的節(jié)點位置值檢測變長碼字的碼長度;d)計算從級“0”至在相應于符合步驟c)的檢測碼長的碼字的節(jié)點所位于的級之前的級的總終端節(jié)點數(shù);e)將步驟b)中所計算的節(jié)點位置值中的相應于在步驟c)中檢測的碼長的節(jié)點位置值與在步驟d)中計算的總終端節(jié)點數(shù)相加,輸出該相加值;f)讀出具有作為根據(jù)譯碼碼字的節(jié)點位置從正則霍夫曼碼樹的根起順序地存儲譯碼碼字的存儲器的地址的步驟e)的相加值的待譯碼碼字;g)判斷是否還有輸入的待譯碼位串,如果沒有輸入的待譯碼位串,就結(jié)束程序,如果有輸入的待譯碼位串,就返回到步驟a)。在步驟b)最好用公式PTk=Σi=1k2k-iγi-Σi=0k-12k-iLi]]>來計算節(jié)點位置值,其中的PTk表示與在霍夫曼樹的級k中的從1至k的二進制輸入位γ1,γ2,γ3....γk一致的節(jié)點位置,γi是每一位串γ1,γ2,γ3......的位值,Li是級“i”上的總終端節(jié)點數(shù)。最好通過從在步驟c)計算的節(jié)點位置值中的最先具有負值的節(jié)點位置值中減去“1”來計算碼長來得到編碼碼字的長度。另外,其中在步驟d)中利用來計算檢測的碼字長度相應的節(jié)點所位于的級之前的級的總終端節(jié)點數(shù)Sk,Sk表示從級“0”至級“k”前一級的總終端節(jié)點數(shù),Li表示級“i”的終端節(jié)點數(shù)。為了實現(xiàn)本發(fā)明的上述第二個目的,提供了譯碼變長碼的設(shè)備,該設(shè)備包括壓縮部分,接收在其中根據(jù)霍夫曼碼樹結(jié)構(gòu)包含許多變長碼字的用于譯碼的譯碼位串以便按照最長的碼字長度壓縮所接收的用于譯碼的編碼位串,并且移出譯碼碼字以便按照最長碼字長度對在用于譯碼的編碼位串中的除譯碼碼字外的后續(xù)編碼位串進行壓縮;邊界線取樣部分,從壓縮部分接收最長碼字長度的被壓縮的用于譯碼的編碼位串來對碼字的邊界線進行取樣,以便并行地計算具有最長碼字長度的所接收的用于譯碼的編碼位串的節(jié)點位置值和輸出所計算的節(jié)點位置值,還輸出所計算的節(jié)點位置值的最高有效位;至少一個寄存器,存儲從級“0”至在相應具有霍夫曼樹結(jié)構(gòu)的碼字譯碼的級之前的級的總終端節(jié)點數(shù);碼長檢測部分,根據(jù)由邊界線取樣部分得出的所計算的節(jié)點位置值的最高有效位檢測來自邊界線取樣部分的譯碼位串中的用于譯碼的變長碼字的長度,并且產(chǎn)生選擇相應于被檢測的變長碼字長度的節(jié)點位置值的第一選擇信號和產(chǎn)生為了選擇及使能至少一個寄存器中的寄存器來存儲從級“0”至在相應于被檢測的變長碼字長度的節(jié)點所位于的級之前的級的總終端節(jié)點數(shù)的第二選擇信號;多路復用器,順序輸出由碼長檢測部分的第一選擇信號選擇的邊界線取樣部分的相應節(jié)點位置值;鎖存器,鎖存寄存器中的從級“0”至相應級之前的級的總終端節(jié)點數(shù)中的總終端節(jié)點數(shù)以及多路復用器的相應的節(jié)點位置值;加法器,將相應節(jié)點位置值與總終端節(jié)點數(shù)相加,輸出相加值;以及存儲器,按照編碼碼字的節(jié)點位置存儲從正則碼樹的根起的譯碼碼字,并且利用加法器的相加值作為地址輸出相應的譯碼碼字。壓縮部分最好包括從接收譯碼位串中移出譯碼碼字的桶形移位器。碼長檢測部分最好包括多個異或門,它們對邊界線取樣部分的節(jié)點位置值的最高有效位在邏輯上進行異或組合,以便使能至少一個寄存器中的一個寄存器。鎖存器包括鎖存在寄存器中的多個總終端節(jié)點數(shù)中的總終端節(jié)點數(shù)的第一鎖存器和鎖存來自多路復用器的相應節(jié)點位置值的第二鎖存器。存儲器是只讀存儲器、隨機存取存儲器和可編程邏輯陣列中的任一種。并且,霍夫曼碼樹包括具有符號的終端節(jié)點和沒有符號的連接節(jié)點,具有使其終端節(jié)點位于一級中的全部連接節(jié)點左側(cè)的正則霍夫曼碼樹??梢圆辉龃笃骄a長地將霍夫曼碼樹變換為正則霍夫曼碼樹。在本發(fā)明的變長碼譯碼方法和設(shè)備中,由于變長編碼碼字按照與正則霍夫曼碼樹結(jié)構(gòu)的級一致的節(jié)點順序存儲在查閱存儲器中,并且利用預定的計算操作來檢測編碼碼字的節(jié)點順序,所以在譯碼變長編碼碼字時該節(jié)點順序被作為譯碼碼字的地址。因此,當霍夫曼碼樹被中央系統(tǒng)的操作改變時,可以不改變硬件而按照只在存儲器和鎖存器中存儲變量的方式來實現(xiàn)變長碼的譯碼。還有,由于在本發(fā)明中可以利用并行計算來根據(jù)時鐘對編碼碼字進行處理,不考慮譯碼碼字的長度,所以能夠以比以位為單位進行譯碼的普通變長碼譯碼設(shè)備和方法高的速度譯碼編碼碼字。通過參看附圖描述本發(fā)明的最佳實施例將更加清楚其上述目的和優(yōu)點。圖1是普通變長譯碼器的方框圖;圖2是說明圖1的譯碼器在幾個時鐘周期內(nèi)的譯碼操作實例的圖示;圖3是表示用于圖2實例的輸入位流的圖示;圖4是說明可在本發(fā)明中使用的正則霍夫曼碼樹的結(jié)構(gòu)的示意圖;圖5是說明本發(fā)明一實施例的變長碼譯碼設(shè)備的配置的方框圖;圖6是表示圖5所示的碼長檢測部分的實例的電路圖;圖7是說明本發(fā)明一實施例的變長譯碼方法的流程圖。以下將參看附圖詳細描述本發(fā)明一實施例的譯碼變長碼的方法和設(shè)備的物理結(jié)構(gòu)、電路配置和操作方法。圖4示意性地說明正則霍夫曼碼樹的結(jié)構(gòu)。有n個符號的霍夫曼碼樹由(2n-1)個節(jié)點組成。即(2n-1)個節(jié)點包括有符號的n個終端節(jié)點和沒有符號的(n-1)個連接節(jié)點。正則霍夫曼碼樹的結(jié)構(gòu)是全部終端節(jié)點都位于一級上全部連接節(jié)點的左側(cè)??梢圆辉龃笃骄a長地將所有霍夫曼碼樹變換為正則霍夫曼碼樹。在圖4中,示出了[a,b,c,d,e,f,g,h]的正則霍夫曼碼樹的結(jié)構(gòu)。8個符號都位于所有連接節(jié)點的左側(cè)。每一符號具有從根到其終端節(jié)點的作為碼字的編碼位串。例如,符號C具有3個位的碼字101,符號f具有5個位的碼字11110。即每一符號具有與其出現(xiàn)概率一致的霍夫曼碼樹的變長碼字。圖4中所示的[xy]的意義如下?!皒”表示相應碼字的符號值?!皔”表示該符號存儲在存儲器中的相應地址。表1表示每一符號的存儲器地址。表1霍夫曼二進制樹的存儲器映象存儲器地址符號數(shù)據(jù)0a1b2c3d4e5f6g7h例如,[C2]表示包括3個位的變長碼字“101”的符號“C”,符號“C”意味著它被存儲在存儲器的地址“2”中。最長的碼字長度在圖4中是6個位,相應于符號“g”和“h”。圖5表示本發(fā)明一實施例的變長碼譯碼設(shè)備的配置。參看圖5,本發(fā)明一實施例的變長碼譯碼設(shè)備包括壓縮部分51、邊界線取樣部分52、寄存器53、碼長檢測部分54、多路復用器55、鎖存器56、加法器57和存儲器58。壓縮部分51接收在其中根據(jù)霍夫曼碼樹結(jié)構(gòu)包含了許多變長碼字的待譯碼編碼位串,壓縮部分51按照最長的碼字長度壓縮接收的待譯碼編碼位串,利用其內(nèi)的桶形移位器511移出譯碼碼字,以便按照最長的碼字長度對除在待譯碼編碼位串內(nèi)的譯碼碼字外的連續(xù)編碼位串進行壓縮。邊界線取樣部分52從壓縮部分51接收最長碼字長度的被壓縮待譯碼編碼位串來取樣碼字的邊界線,利用后面將說明的公式(1)計算PTk來將所計算的PTk輸出給多路復用器55,輸出計算的PTk的MSB給碼長檢測部分53以便判斷所計算的PTk是正還是負。計算PTk的方法如下。PTk=Σi=lk2k-iγi-Σi=0k-12k-iLi(1)]]>其中的PTk表示與在霍夫曼樹的k級中的從1至k的二進制輸入位γ1,γ2,γ3......γk一致的節(jié)點位置,(每一級的頂部是節(jié)點位置“0”,每當級向下遞降時節(jié)點位置增加“1”),γi是每一位串(γ1,γ2,γ3......)的位值,Li是級“i”的總終端節(jié)點數(shù)。即當最長的碼字長度是“M”時,邊界線取樣部分52并行地計算1≤i≤M的所有PTi。一碼字的全部PTk為正值,該正值表示節(jié)點位置。但是,在一碼字邊界線以外的所有PTi都具有負值。因此,從所有PTi中首先具有負值的PTi的“i”中減去“1”的數(shù)值就成為編碼碼字的長度。在寄存器53中,包括S1,S2,S3......SN的Si分別被存儲在第一寄存器531、第二寄存器532、第三寄存器533......第M寄存器53M中。寄存器53根據(jù)碼長檢測部分54的輸出信號的電平將存儲在第一寄存器531、第二寄存器532、第三寄存器533......第M寄存器53M中的一個寄存器中的Si輸出給鎖存器56的第一鎖存器561。碼長檢測部分54根據(jù)由邊界線取樣部分52得出的所計算的節(jié)點位置值PTk的MSB從邊界線取樣部分52的譯碼位串中檢測用于譯碼的變長碼字長度,產(chǎn)生選擇相應于被檢測的變長碼字長度的節(jié)點位置值的第一選擇信號和產(chǎn)生選擇及使能至少一個寄存器53中的寄存器來存儲從級“0”至在相應于被檢測的變長碼字長度的節(jié)點所位于的級之前的級的總終端節(jié)點數(shù)的第二選擇信號。Sk是利用后面將描述的公式(2)所得到的計算值,它表示從級“0”至級“i”之前的級的總終端節(jié)點數(shù)。Sk=Σi=0k-1Li(2)]]>圖6表示圖5所示碼長檢測部分的電路圖。碼長檢測部分54包括多個異或門61、62、63......和6M,它們對邊界線取樣部分52提供的PTk的MSB進行邏輯上的異或組合,以便使能寄存器53中的一個寄存器。多路復用器55順序地輸出根據(jù)第一選擇信號選擇的邊界線取樣部分52的節(jié)點位置值PTk,以便輸出碼長檢測部分54的Sk給鎖存器56的第二鎖存器562。鎖存器56包括第一和第二鎖存器561和562。鎖存器56鎖存(暫存)來自寄存器53的一個S1和來自多路復用器55的一個PTi。加法器57利用后面將描述的公式(3)將一個PTi與鎖存器56的一個Si相加,輸出相加值A(chǔ)ij給存儲器58。Aij=Si+PTi(3)這里的Aij是一終端節(jié)點的碼字位于正則霍夫曼碼樹中的“i”級的“j”位置的存儲器地址。換句話說,加法器57將在其中存儲了相應于在相應于搜索邊界線的碼字的節(jié)點的級中的搜索邊界線的碼字的節(jié)點位置值Si的第二鎖存值與在其中存儲了從級0至在相應于搜索邊界線的碼字的節(jié)點所位于的級之前的級的總終端節(jié)點數(shù)的第一鎖存值相加。在存儲器58中,譯碼碼字按照編碼碼字的節(jié)點位置從正則碼樹的根起被存儲,利用加法器57的Aij作為地址輸出相應譯碼碼字,具有ROM、RAM或可編程邏輯陣列(PLA)。以下面通過對作為二進制編碼位串“101100001110......”的待譯碼碼字進行譯碼來說明變長碼譯碼設(shè)備和變長碼譯碼方法的操作。該二進制位串“101100001110......”代表符號串“cbaae......”。圖7是說明本發(fā)明一實施例的變長碼譯碼方法的流程圖。本發(fā)明的譯碼方法將說明如下。在查閱表存儲器中,根據(jù)相應于編碼碼字的正則碼樹的終端節(jié)點從根至最低級地順序存儲待譯碼碼字。壓縮部分51計算指出在存儲器58中存儲待譯碼碼字的位置的地址值。在步驟S71,壓縮部分51接收待譯碼編碼位串“101100001110......”,按照多至最長的碼字長度(M)6只壓縮接收的待譯碼編碼位串中的接收位串“101100”,然后輸出壓縮位串“101100”給邊界線取樣部分52。然后在步驟S72,邊界線取樣部分52并行地從壓縮部分51接收最長碼字長度的壓縮待譯碼編碼位串來取樣碼字的邊界線和利用公式(1)計算節(jié)點位置值PTk。在該實施例中,由于如圖4所示最長的碼字長度是6個位,所以邊界線取樣部分52利用γ1γ2γ3γ4γ5γ6計算所有1≤i≤6范圍的PTi。通過利用公式(1)將“1”代入“K”如下地計算PT1。PT1=Σi=112l-iγi-Σi=002l-iLi=20·γ1-21·L0]]>在此期間,由于γi是二進制代碼“1”和代表在每一級中的終端節(jié)點數(shù)的L0和L1分別是十進制代碼“0”和“1”,所以PT1值可如下地得到。PT1=20.1-21.0=1PT4按照相同的方式通過將“4”代入“K”來如下地進行計算,因為γ1γ2γ3γ4是二進碼代碼“1011”,并且代表每一級中的終端節(jié)點數(shù)的L0,L1,L2和L3分別是“0”,“1”,“0”和“3”,PT4=Σi=l424-iγi-Σi=0424-iLi]]>=(23.γi+22.γ2+21.γ3+20.γ4)-(24.L0+23.L1+22.L2+21.L3)=-3當十進制代碼“-3”被變換為2的補碼時,十進制代碼“-3”用6個位表示成為“1011101”。因為最左的位MSB是“1”,所以能夠指出PT4是負值。可以按照與上述方式相同的方式計算PT2,PT3,PT5和PT4的各個值。結(jié)果如以下的表2所示。表2<tablesid="table1"num="001"><tablewidth="721">PTkPTk正負號十進制二進制(MSB→LSB)PT11000001正PT20000000正PT31000001正PT4-3111101負PT5-8111000負PT6-18101110負</table></tables>此時,邊界線取樣部分52輸出所計算的PT1,PT2,PT3,PT4,PT5和PT6給多路復用器55以便使用譯碼碼字的地址。邊界線取樣部分52還輸出PT1,PT2,PT3,PT4,PT5和PT6的計算值的MSB0,0,0,1,1和1給碼長檢測部分54,以便判斷PT1,PT2,PT3,PT4,PT5和PT6的計算值是正還是負。即在本發(fā)明中,由于節(jié)點數(shù)已被存儲在寄存器53的第一、第二、第三、第四、第五、第六......第M寄存器531、532、533、534、535、536......53M中,所以碼長檢測部分54從邊界線取樣部分52接收PT1,PT2,PT3,PT4,PT5和PT6的計算值的MSB0,0,0,1,1,和1來控制相應的寄存器。即碼長檢測部分54通過第一異或門61的第一輸入端接收MSB0,0,0,1,1和1的第一位“0”,通過第一異或門61的第二輸入端和第二異或門62的第一輸入端接收第二位“0”,通過第二異或門62的第二輸入端和第三異或門63的第一輸入端接收第三位“0”,通過第三異或門63的第二輸入端和第四異或門64的第一輸入端接收第四位“1”,通過第四異或門64的第二輸入端和第五異或門65的第一輸入端接收第五位“1”,通過第五異或門65的第二輸入端和第六異或門66的第一輸入端接收第六位“1”,通過第六異或門66的第一輸入端接收第六位“1”和通過第六異或門66的第二輸入端接收“1”以便只使能第三異或門63成為“1”。因此,為“1”的S3從如上所述已被使能的第三異或門63輸出給第一鎖存器561。如表2所示,因為PT1,PT2和PT3的MSB都是“0”,所以它們都具有正號。PT1,PT2和PT3的十進制代碼“1”、“0”和“1”分別指出在相應級上的節(jié)點位置。因為PT4,PT5和PT6的MSB都是“1”,所以它們都具有負號。因此,碼長檢測部分54可以通過搜索產(chǎn)生“1”的位置,即在邊界取樣部分52的PTk中最先的負值來計算當前譯碼碼字的最后位所在的碼樹結(jié)構(gòu)的級。即根據(jù)輸入的位串計算第一碼字長度。在本發(fā)明的實施例中,在步驟S73中通過從“i”、即最先產(chǎn)生負值的“4”中減去“1”(i-1=4-1)獲得了位于第三級中最先指出譯碼碼字長度的碼字長度“3”(即“101100001110......”的“101”)。然后在步驟S74中利用公式(2)計算在從級“0”至在相應于碼字長度“3”的譯碼碼字“101”的碼樹結(jié)構(gòu)中的節(jié)點所位于的級之前的級的總節(jié)點數(shù)S3。S3=Σi=03-1Li=L0+L1+L2=0+1+0=1]]>碼長檢測部分54然后根據(jù)所計算的碼字長度“3”產(chǎn)生第二選擇信號,用于從邊界線取樣部分52選擇所計算的PT3、即在用于譯碼的被檢測碼字的碼樹結(jié)構(gòu)的節(jié)點所在的級上的節(jié)點位置,并輸出所產(chǎn)生的第二選擇信號給多路復用器55。然后多路復用器55選擇PT3值來輸出給第二鎖存器562。然后,在步驟S75,加法器57將第二鎖存器562的PT3與第一鎖存器561的S3相加,輸出相加值A(chǔ)33給存儲器58。相加值A(chǔ)33是其中存儲了相應于搜索代碼邊界線的編碼碼字的譯碼碼字的存儲器58的地址。因此,在步驟S76,存儲器58從加法器57接收地址A33=2以便輸出相應于該地址“2”的譯碼碼字“C”,所以碼字被譯碼。然后,壓縮部分51從碼長檢測部分54接收譯碼碼字“101”的碼長“3”,它按照多至最長的碼字長度(M)6壓縮后續(xù)位中除譯碼位串“101”外的輸入位(100001110......)(100001),將壓縮位串“100001”輸出給邊界線取樣部分52,以同樣的方式譯碼壓縮位串“100001”,因此能夠?qū)θ枯斎胛淮?00001110......進行譯碼。壓縮部分51然后在步驟S77中判斷是否還有待譯碼位串。作為步驟S77判斷的結(jié)果,如果沒有待譯碼位串并且譯碼已完成,壓縮部分51就結(jié)束譯碼。但是,當有待譯碼位串時,壓縮部分51就返回到步驟S71,以同樣的方式重復在步驟S71之后的操作。換句話說,首先計算譯碼碼字長度,利用公式(3)計算存儲了該碼字的存儲器地址。即通過將在霍夫曼碼樹中的相應碼字的PTi與其Si相加來獲得該存儲器地址。在該實施例中,碼長是3位。因此存儲器地址可以根據(jù)PT3+S3來得到。由于PT3如表2所示是“1”而S3作為從根至級“2”的總終端節(jié)點數(shù)是“1”,所以存儲器地址是“2”。因此,在最后的步驟中,系統(tǒng)通過讀出相應于存儲器地址“2”的數(shù)據(jù)得到了最后的譯碼符號。即用戶能夠知道在存儲器地址“2”中存儲的譯碼符號是“C”。換句話說,通過計算操作得到了在編碼位串中的三個有效位γ1γ2γ3(=“101”)相應于符號“C”的碼字??梢酝ㄟ^將剩余的編碼位串移位多至譯碼碼字的碼長來利用與上述方式相同的方式對其進行譯碼。即因為γ1γ2γ3被譯碼,所以桶形移位器從譯碼位串中移出被譯碼的γ1γ2γ3并接收后續(xù)值γ3γ4γ5γ6γ7γ8γ9γ10γ11..........(“100001110......”)來按照同樣的方式譯碼這些被接收的后續(xù)值γ3γ4γ5γ6γ7γ8γ9γ10γ11.........。因此,就得到了相應于位串101100001110......的信息符號串“cbaae......”。如上所述,根據(jù)本發(fā)明,由于變長編碼碼字按照與正則霍夫曼碼樹結(jié)構(gòu)的級一致的節(jié)點順序存儲在查閱存儲器中,并且利用預定的計算操作來檢測編碼碼字的節(jié)點順序,所以在譯碼變長編碼碼字時節(jié)點順序被用作譯碼碼字的地址。因此,當霍夫曼碼樹被中央系統(tǒng)的操作改變時,可以不改變硬件而按照只在存儲器和鎖存器中存儲變量的方式來實現(xiàn)變長碼的譯碼。還有,由于在本發(fā)明中可以利用并行計算來根據(jù)時鐘對編碼碼字進行處理而不考慮譯碼碼字的長度,所以能夠以比以位為單位進行譯碼的普通變長碼譯碼設(shè)備和方法高的速度譯碼編碼碼字。因此,本發(fā)明可被用于能夠補償運動的逆壓縮圖像,例如MPEG1、MPEG2和H261,還可被用于靜止圖像的多重壓縮,例如JPEG,以及所有能進行熵編碼的應用。在不違背本發(fā)明的精神或主要特點的情況下,可以按照其它具體的方式來實施本發(fā)明。因此應當從所描述的各個角度來看待目前的實施例,本發(fā)明的范圍由所附的權(quán)利要求而不是由以上描述來指出,在權(quán)利要求的等同物的意義和范圍之內(nèi)的所有改動因此都將被權(quán)利要求所包容。權(quán)利要求1.一種譯碼變長碼的方法,所述方法包括以下步驟a)接收具有多個基于霍夫曼碼樹結(jié)構(gòu)的變長碼字的用于譯碼的編碼位串,按照多至最長的碼字長度對接收的用于譯碼的編碼位串進行壓縮,輸出被壓縮的用于譯碼的編碼位串;b)計算被壓縮編碼位串的節(jié)點位置值來進行步驟a)輸出的最長碼字長度的譯碼,以便檢測來自被壓縮編碼位串的碼字的邊界線來進行多至最長碼字長度的譯碼;c)根據(jù)步驟b)計算的節(jié)點位置值檢測變長碼字的碼長;d)計算從級“0”至在相應于符合步驟c)的檢測碼長的碼字的節(jié)點所位于的級之前的級的總終端節(jié)點數(shù);e)將步驟b)中所計算的節(jié)點位置值中的相應于在步驟c)中檢測的碼長的節(jié)點位置值與在步驟d)中計算的總終端節(jié)點數(shù)相加,輸出該相加值;f)讀出具有作為根據(jù)譯碼碼字的節(jié)點位置從正則霍夫曼碼樹的根起順序地存儲了譯碼碼字的存儲器的地址的步驟e)的相加值的待譯碼碼字;以及g)判斷是否還有輸入的待譯碼位串,如果沒有輸入的待譯碼位串,就結(jié)束程序,如果有輸入的待譯碼位串,就返回到步驟a)。2.如權(quán)利要求1所述的譯碼變長碼的方法,其中的節(jié)點位置值在步驟b)中利用公式PTk=Σi=1k2k-iγi-Σi=0k-l2k-iLi]]>來計算,其中PTk示與在霍夫曼樹的級“k”中的從“1”至“k”的二進制輸入位γ1,γ2,γ3…γk一致的節(jié)點位置,γi是每一位串γ1,γ2,γ3…的位值,Li是級“i”的總終端節(jié)點數(shù)。3.如權(quán)利要求1所述的譯碼變長碼的方法,其中碼長通過從在步驟c)計算的節(jié)點位置值中的最先具有負值的節(jié)點位置值中減去“1”來進行計算,以便得到編碼碼字的長度。4.如權(quán)利要求1所述的譯碼變長碼的方法,其中的在相應于檢測的碼字長度的節(jié)點所位于的級之前的級的總終端節(jié)點數(shù)Sk在步驟d)中利用公式來進行計算,Sk表示從級“0”至級“k”前一級的總終端節(jié)點數(shù),Li表示級“i”的終端節(jié)點數(shù)。5.一種譯碼變長碼的設(shè)備,所述設(shè)備包括壓縮部分,接收在其中根據(jù)霍夫曼碼樹結(jié)構(gòu)包含許多變長碼字的用于譯碼的譯碼位串以便按照最長的碼字長度壓縮所接收的用于譯碼的編碼位串,和移出譯碼碼字以便按照最長碼字長度對在用于譯碼的編碼位串中的除譯碼碼字外的后續(xù)編碼位串進行壓縮;邊界線取樣部分,從壓縮部分接收最長碼字長度的被壓縮的用于譯碼的編碼位串來對碼字的邊界線進行取樣,以便并行地計算具有最長碼字長度的所接收的用于譯碼的編碼位串的節(jié)點位置值和輸出所計算的節(jié)點位置值,并且輸出所計算的節(jié)點位置值的最高有效位;至少一個寄存器,存儲從級“0”至在相應的具有霍夫曼樹結(jié)構(gòu)的碼字譯碼的級之前的級的總終端節(jié)點數(shù);碼長檢測部分,根據(jù)由邊界線取樣部分得出的所計算的節(jié)點位置值的最高有效位檢測來自所述邊界線取樣部分的譯碼位串中的用于譯碼的變長碼字的長度,并產(chǎn)生選擇相應于被檢測的變長碼字長度的節(jié)點位置值的第一選擇信號和產(chǎn)生選擇及使能至少一個寄存器中的寄存器來存儲從級“0”至在相應于被檢測的變長碼字長度的節(jié)點所位于的級之前的級的總終端節(jié)點數(shù)的第二選擇信號;多路復用器,順序輸出由所述碼長檢測部分的第一選擇信號選擇的所述邊界線取樣部分的相應節(jié)點位置值;鎖存器,鎖存所述寄存器中的從級“0”至相應級之前的級的多個總終端節(jié)點數(shù)中的一個總終端節(jié)點數(shù)以及所述多路復用器的相應的節(jié)點位置值;加法器,將相應節(jié)點位置值與總終端節(jié)點數(shù)相加,輸出相加值;以及存儲器,按照編碼碼字的節(jié)點位置存儲從正則碼樹的根起的譯碼碼字,并且利用加法器的相加值作為地址輸出相應的譯碼碼字。6.如權(quán)利要求5所述的譯碼變長碼的設(shè)備,其中所述壓縮部分包括從接收的譯碼位串中移出譯碼碼字的桶形移位器。7.如權(quán)利要求5所述的譯碼變長碼的設(shè)備,其中所述碼長檢測部分包括多個異或門,它們對邊界線取樣部分的節(jié)點位置值的最高有效位在邏輯上進行異或組合,以便使能所述至少一個寄存器中的一個寄存器。8.如權(quán)利要求5所述的譯碼變長碼的設(shè)備,其中所述鎖存器包括鎖存所述寄存器的多個總終端節(jié)點數(shù)中的總終端節(jié)點數(shù)的第一鎖存器和鎖存所述多路復用器的相應節(jié)點位置值的第二鎖存器。9.如權(quán)利要求5所述的譯碼變長碼的設(shè)備,其中所述存儲器是只讀存儲器、隨機存取存儲器和可編程邏輯陣列中的任一種。10.如權(quán)利要求5所述的譯碼變長碼的設(shè)備,其中霍夫曼碼樹包括具有符號的終端節(jié)點和沒有符號的連接節(jié)點,具有使其終端節(jié)點位于級中的全部連接節(jié)點左側(cè)的正則霍夫曼碼樹。11.如權(quán)利要求5所述的譯碼變長碼的設(shè)備,其中霍夫曼碼樹可不增大平均碼長地被變換為正則霍夫曼碼樹。全文摘要一種利用霍夫曼碼樹高速譯碼變長碼字的方法和設(shè)備,其特征是利用霍夫曼碼樹結(jié)構(gòu)的級的節(jié)點順序來存儲變長編碼碼字并利用預定計算操作來檢測編碼碼字的節(jié)點順序;譯碼時該節(jié)點順序為譯碼碼字的地址;當中央系統(tǒng)操作改變霍夫曼碼樹時,只在存儲器和鎖存器中存儲變量而不改變硬件來實現(xiàn)變長碼譯碼;利用并行計算和時鐘處理編碼碼字而不考慮譯碼碼字長度。其譯碼速度高于以位為單位的普通變長編碼譯碼設(shè)備和方法的譯碼速度。文檔編號G06T9/00GK1168030SQ9611040公開日1997年12月17日申請日期1996年6月7日優(yōu)先權(quán)日1996年6月7日發(fā)明者南承鉉申請人:大宇電子株式會社