專利名稱:可變長(zhǎng)編碼方法及其裝置的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種可變長(zhǎng)的編碼方法以及裝置。尤其涉及一種以霍夫曼編碼樹(shù)為基礎(chǔ)將定長(zhǎng)碼字轉(zhuǎn)換成可變長(zhǎng)碼字的方法以及實(shí)現(xiàn)該方法的裝置。通常,可變長(zhǎng)編碼方法是常用于不丟失地壓縮數(shù)據(jù)的一種編碼技術(shù)??勺冮L(zhǎng)編碼將數(shù)據(jù)源所產(chǎn)生并用定長(zhǎng)碼字表示的所有存在可能的數(shù)據(jù)按照數(shù)據(jù)存在的概率轉(zhuǎn)換成可變長(zhǎng)的碼字,從而使數(shù)據(jù)的平均碼長(zhǎng)得到縮減。即是,通過(guò)為所有可能存在的碼字賦予一可變長(zhǎng)的碼字,可變長(zhǎng)碼字的平均碼長(zhǎng)短于原始數(shù)據(jù)的碼長(zhǎng),所以,數(shù)據(jù)的壓縮就得到完成。
霍夫曼編碼方法通常用于為已知統(tǒng)計(jì)數(shù)據(jù)構(gòu)造一最小冗余的可變長(zhǎng)編碼?;舴蚵幋a方法把已知其統(tǒng)計(jì)值的數(shù)據(jù)根據(jù)其統(tǒng)計(jì)值應(yīng)用于霍夫曼編碼樹(shù),因此,根據(jù)霍夫曼編碼方法的可變長(zhǎng)編碼為自由前綴可變長(zhǎng)編碼。
實(shí)現(xiàn)可變長(zhǎng)編碼的裝置的一個(gè)實(shí)例在1972年七月由Josef Raviv等提出的美國(guó)專利第3,675,212號(hào)中公布。Josef Raviv等提出的可變長(zhǎng)編碼裝置包括一個(gè)三態(tài)關(guān)聯(lián)存儲(chǔ)器,該三態(tài)關(guān)聯(lián)存儲(chǔ)器被用作完成定長(zhǎng)編碼與可變長(zhǎng)編碼之間轉(zhuǎn)換的一個(gè)編碼-譯碼的媒介。該三態(tài)關(guān)聯(lián)存儲(chǔ)器存儲(chǔ)及定長(zhǎng)編碼與可變長(zhǎng)編碼關(guān)聯(lián)的可變長(zhǎng)碼字的長(zhǎng)度。
此外,本發(fā)明的發(fā)明人和受讓人以申請(qǐng)?zhí)?8/655,838申請(qǐng)了一譯碼裝置,日期為1996年5月31日,該申請(qǐng)現(xiàn)已公開(kāi)。
本發(fā)明的一個(gè)目的是提供一種可以將定長(zhǎng)碼字轉(zhuǎn)換為可變長(zhǎng)碼字而不必存儲(chǔ)可變長(zhǎng)碼字的碼長(zhǎng)信息的方法。
本發(fā)明的另一個(gè)目的是提供一種可以將定長(zhǎng)碼字轉(zhuǎn)換為可變長(zhǎng)碼字而不必存儲(chǔ)可變長(zhǎng)碼字的碼長(zhǎng)信息的裝置。
為了實(shí)現(xiàn)以上目的,根據(jù)本發(fā)明的一個(gè)方面將符號(hào)轉(zhuǎn)換成可變長(zhǎng)碼字的一個(gè)方法包括以下各步a)通過(guò)向代碼簿存儲(chǔ)器輸入一個(gè)符號(hào)來(lái)從代碼簿存儲(chǔ)器中產(chǎn)生一存儲(chǔ)碼字,其中可變長(zhǎng)碼字就根據(jù)這些符號(hào)在代碼簿存儲(chǔ)器中存儲(chǔ);b)以被選碼字在霍夫曼編碼樹(shù)中由每一被選碼字定義的層次和每一層終結(jié)節(jié)點(diǎn)的數(shù)目為基礎(chǔ)檢查包括在存儲(chǔ)碼字中的可變長(zhǎng)碼字的長(zhǎng)度,其中,被選碼字通過(guò)在存儲(chǔ)碼字的各位中K次選擇m位來(lái)產(chǎn)生,其中m=1、2、3、4、…、K,K表示可變長(zhǎng)碼字的最大長(zhǎng)度;c)根據(jù)可變長(zhǎng)碼字的長(zhǎng)度從存儲(chǔ)碼字中訪問(wèn)該可變長(zhǎng)碼字。
根據(jù)本發(fā)明的另一個(gè)方面,將符號(hào)編成可變長(zhǎng)碼字的一個(gè)方法包括以下各步a)通過(guò)向存儲(chǔ)可變長(zhǎng)碼字的代碼簿存儲(chǔ)器輸入一符號(hào)來(lái)從代碼簿存儲(chǔ)器中產(chǎn)生一存儲(chǔ)碼字;b)從存儲(chǔ)碼字的各位中選擇m位來(lái)產(chǎn)生被選碼字,其中m=1、2、3、4、…、K,K表示該可變長(zhǎng)碼字的最大長(zhǎng)度;c)根據(jù)每一被選碼字和每一層中的終結(jié)節(jié)點(diǎn)的數(shù)目,以霍夫曼編碼樹(shù)中定義的每層為基礎(chǔ)決定每一被選碼字是否包括可變長(zhǎng)碼字中的各位;d)根據(jù)步驟c)的結(jié)果從存儲(chǔ)碼字中訪問(wèn)此可變長(zhǎng)的碼字。步驟c)還可以包括以下各步c-1)以霍夫曼編碼樹(shù)為基礎(chǔ)檢測(cè)每一被選碼字的層數(shù);c-2)檢測(cè)各層中終結(jié)節(jié)點(diǎn)的數(shù)目;c-3)執(zhí)行函數(shù)LD(X)m:LD(X)mBW(X)mNW(X)mBW(X)m=Σi=1m2m-i•bi]]>NW(X)m=Σj=0m=12m-j•Lj]]>其中bi為存儲(chǔ)碼字中被選擇了m位的被選碼字中第i位的值,Lj為霍夫曼編碼樹(shù)中第j層中終結(jié)節(jié)點(diǎn)的數(shù)目;c-4)檢測(cè)每一LD(X)m是否為負(fù)值。
根據(jù)本發(fā)明的其它方面,將符號(hào)轉(zhuǎn)換為可變長(zhǎng)碼字的裝置包括a)根據(jù)符號(hào)存儲(chǔ)具有最長(zhǎng)長(zhǎng)度的可變長(zhǎng)碼字的可變長(zhǎng)碼字代碼簿存儲(chǔ)器裝置;b)根據(jù)所選碼字、每一被選碼字定義的霍夫曼編碼樹(shù)的層次、每一層中終結(jié)節(jié)點(diǎn)的數(shù)目來(lái)檢測(cè)包括在存儲(chǔ)碼字中可變長(zhǎng)碼字的長(zhǎng)度的可變長(zhǎng)檢測(cè)裝置,其中被選碼字通過(guò)在存儲(chǔ)碼字中K次選擇m位來(lái)產(chǎn)生,m=1、2、3、4、…、K,K為該可變長(zhǎng)碼字的最大長(zhǎng)度;c)根據(jù)可變長(zhǎng)碼字的長(zhǎng)度來(lái)從存儲(chǔ)碼字中讀取可變長(zhǎng)碼字的封裝(packing)裝置。
根據(jù)本發(fā)明,其方法和裝置使得將符號(hào)轉(zhuǎn)換成可變長(zhǎng)碼字的長(zhǎng)度而不必在存儲(chǔ)器中存儲(chǔ)可變長(zhǎng)碼字的長(zhǎng)度信息成為可能,因此,不再需要用來(lái)存儲(chǔ)可變長(zhǎng)碼字的長(zhǎng)度信息的存儲(chǔ)器。
參看下面結(jié)合附圖對(duì)最佳實(shí)施例的詳細(xì)描述,可以更清楚地理解本發(fā)明上述的和其它的目的、特征和優(yōu)點(diǎn)。其中
圖1為根據(jù)本發(fā)明的一個(gè)實(shí)施例表示一可變長(zhǎng)編碼裝置的電路圖;圖2為表示本發(fā)明圖1中描述的邊界檢測(cè)部件500的一個(gè)實(shí)例的電路圖;圖3為表示本發(fā)明圖2中描述的計(jì)算部件530的一個(gè)實(shí)例的電路圖;圖4為表示本發(fā)明圖1中描述的碼長(zhǎng)檢測(cè)部件600的一個(gè)實(shí)例的電路圖;圖5為表示本分明中封裝部件400的一個(gè)實(shí)例的電路圖;圖6為示出圖1中描述的可變長(zhǎng)編碼裝置的流程圖;圖7為示出圖1中描述的封裝部件400的視圖;圖8為表示規(guī)范霍夫曼編碼樹(shù)的結(jié)構(gòu)的視圖。
下面將參照附圖對(duì)本發(fā)明的最佳實(shí)施例進(jìn)行舉例說(shuō)明。
本發(fā)明的可變長(zhǎng)編碼方法及其裝置基于一規(guī)范霍夫曼編碼樹(shù)。一具有n個(gè)符號(hào)的霍夫曼編碼樹(shù)包括(2n-1)個(gè)節(jié)點(diǎn)。即是,這(2n-1)個(gè)節(jié)點(diǎn)包括n個(gè)具有符號(hào)的終結(jié)節(jié)點(diǎn)和(n-1)個(gè)沒(méi)有符號(hào)的連接節(jié)點(diǎn)。規(guī)范霍夫曼編碼樹(shù)具有一個(gè)結(jié)構(gòu),即所有終結(jié)節(jié)點(diǎn)位于每一層所有連接節(jié)點(diǎn)的左邊。眾所周知,所有的霍夫曼編碼樹(shù)可以轉(zhuǎn)換成規(guī)范霍夫曼編碼樹(shù)而不必增加平均碼長(zhǎng)度。
圖8表示了對(duì)應(yīng)于[a、b、c、d、e、f、g、h]的規(guī)范霍夫曼編碼樹(shù)的一個(gè)結(jié)構(gòu)。8個(gè)符號(hào)位于所有連接節(jié)點(diǎn)的左邊。每一個(gè)符號(hào)有一個(gè)從根到終結(jié)節(jié)點(diǎn)的編碼位串,該位串即是它的碼字。例如,符號(hào)[c]有一個(gè)三位碼字[101]而符號(hào)[f]有一個(gè)五位碼字[11110]。即每一個(gè)符號(hào)有一個(gè)根據(jù)其發(fā)生概率在霍夫曼編碼樹(shù)中定義的可變長(zhǎng)碼字。
圖1為表示本發(fā)明一個(gè)實(shí)施例的一個(gè)可變長(zhǎng)編碼裝置的電路圖。對(duì)照?qǐng)D1,一個(gè)可變長(zhǎng)編碼裝置包括一個(gè)緩沖部件100、一個(gè)代碼簿存儲(chǔ)器200、一個(gè)可變長(zhǎng)檢測(cè)部件300以及一個(gè)封裝部件400。
緩沖部件100臨時(shí)地存儲(chǔ)從外部串行或并行輸入的符號(hào),并響應(yīng)控制信號(hào)(圖1中未示出)向代碼簿存儲(chǔ)器200輸出符號(hào)。
代碼簿存儲(chǔ)器200根據(jù)符號(hào)或符號(hào)對(duì)應(yīng)的地址存儲(chǔ)具有最大長(zhǎng)度的可變長(zhǎng)碼字的可變長(zhǎng)碼字。所以,當(dāng)長(zhǎng)度小于其最大長(zhǎng)度的可變長(zhǎng)碼字VLW(X)所指定的符號(hào)[X]通過(guò)緩沖部件100輸入到代碼簿存儲(chǔ)器200時(shí),代碼簿存儲(chǔ)器200產(chǎn)生一包括可變長(zhǎng)碼字VLW(X)及其填充位的存儲(chǔ)碼字M(X),并將該存儲(chǔ)碼字M(X)分別提供給可變長(zhǎng)檢測(cè)部件300和封裝部件400。
例如,當(dāng)可變長(zhǎng)碼字的最大長(zhǎng)度為K位(K為1或更大整數(shù))而符號(hào)[X]輸入到代碼簿存儲(chǔ)器200中時(shí),代碼簿存儲(chǔ)器200產(chǎn)生K位的字符串存儲(chǔ)碼字M(X),并將該存儲(chǔ)碼字M(X)分別輸出到可變長(zhǎng)檢測(cè)部件300和封裝部件400。
可變長(zhǎng)檢測(cè)部件300檢測(cè)在代碼簿存儲(chǔ)器200根據(jù)圖8所示規(guī)范霍夫曼編碼樹(shù)所提供的存儲(chǔ)碼字M(X)中可變長(zhǎng)碼字VLW(X)的長(zhǎng)度。
可變長(zhǎng)檢測(cè)部件300首先檢測(cè)霍夫曼編碼樹(shù)各層中終結(jié)節(jié)點(diǎn)的數(shù)目,以檢測(cè)可變長(zhǎng)碼字VLW(X)的長(zhǎng)度。然后可變長(zhǎng)檢測(cè)部件300根據(jù)每一層的終結(jié)節(jié)點(diǎn)的數(shù)目和存儲(chǔ)碼字M(X)進(jìn)行計(jì)算,如下文所示,從而產(chǎn)生對(duì)應(yīng)于可變長(zhǎng)碼字VLW(X)長(zhǎng)度的一個(gè)長(zhǎng)度值LEG(X)。可變長(zhǎng)檢測(cè)部件300又將此長(zhǎng)度值LEG(X)提供給封裝部件400。
可變長(zhǎng)檢測(cè)部件300還可以包括如圖1所示的一個(gè)邊界檢測(cè)部件500和一個(gè)碼長(zhǎng)檢測(cè)部件600來(lái)產(chǎn)生長(zhǎng)度值LEG(X)。
邊界檢測(cè)部件500在存儲(chǔ)碼字M(X)各位中依次選擇1位到K位,用以分別產(chǎn)生K個(gè)被選碼字BW(X)m=1、BW(X)m=2、…、BW(X)m=K。而且,邊界檢測(cè)部件500檢測(cè)對(duì)應(yīng)每一被選碼字BW(X)m=1、2、…、K的層次中的終結(jié)節(jié)點(diǎn)的數(shù)目。然后邊界檢測(cè)部件500比較被選碼字BW(X)m=1、BW(X)m=2、…、BW(X)m=K和各自層中的終結(jié)節(jié)點(diǎn)的數(shù)目,以檢測(cè)存儲(chǔ)碼字M(X)中可變長(zhǎng)碼字VLW(X)與填充位的邊界,并產(chǎn)生一邊界值MSB(X)m作為邊界檢測(cè)的結(jié)果。
碼長(zhǎng)檢測(cè)部件600根據(jù)邊界檢測(cè)部件500提供的邊界值MSB(X)m產(chǎn)生可變長(zhǎng)碼字VLW(X)的長(zhǎng)度值LEG(X),并將該長(zhǎng)度值LEG(X)提供給封裝部件400。
圖2表示了本發(fā)明中圖1所描述的邊界檢測(cè)部件500的一個(gè)實(shí)例的電路圖。
參照?qǐng)D2,為了產(chǎn)生邊界值MSB(X)m,邊界檢測(cè)部件500包括一個(gè)編碼選擇部件510、一個(gè)層次檢測(cè)部件520、一個(gè)530以及一個(gè)邊界值產(chǎn)生部件540。
編碼選擇部件510從代碼簿存儲(chǔ)器提供的存儲(chǔ)碼字M(X)的各位中選擇1位到K位來(lái)依次產(chǎn)生被選碼字BW(X)1、BW(X)2、…、BW(X)K,并將被選碼字BW(X)1、BW(X)2、…、BW(X)K分別提供給層次檢測(cè)部件520和計(jì)算部件530。
當(dāng)一個(gè)被選碼字BW(X)m從編碼選擇部件510輸入到層次檢測(cè)部件520時(shí),層次檢測(cè)部件520在霍夫曼編碼樹(shù)中檢測(cè)被選碼字BW(X)m的第m層,這是由被選碼字在霍夫曼編碼樹(shù)中的位置所定義的,并檢測(cè)從根到第m層的終結(jié)節(jié)點(diǎn)的總數(shù)。然后,層次檢測(cè)部件520產(chǎn)生一個(gè)對(duì)應(yīng)于第m層和從根到第m層的終結(jié)節(jié)點(diǎn)的總數(shù)的層次碼字NW(X)。為了產(chǎn)生層次碼字NW(X),層次檢測(cè)部件520根據(jù)層次為每一層的終結(jié)節(jié)點(diǎn)的數(shù)字賦予一個(gè)權(quán)值,并將每一層的終結(jié)節(jié)點(diǎn)的加權(quán)數(shù)字全部相加起來(lái)。
所以,對(duì)應(yīng)于被選碼字BW(X)所定義的第m層的加權(quán)數(shù)字的總和WS(X)m為如下形式WS(X)m=Σi=0m=12m-j•Lj10]]>其中j指霍夫曼編碼樹(shù)中的一層,Lj為第j層的終結(jié)節(jié)點(diǎn)的一個(gè)數(shù)字。
層次檢測(cè)部件520將總和WS(X)m轉(zhuǎn)換成二進(jìn)制數(shù)字來(lái)產(chǎn)生層次碼字NW(X)m并將層次碼字NW(X)m提供給計(jì)算部件530。
計(jì)算部件530從被選碼字BW(X)1、BW(X)2、…、BW(X)K中減去層次碼字NW(X)1、NW(X)2、...、NW(X)K來(lái)產(chǎn)生減法結(jié)果值LD(X)1、LD(X)2、…、LD(X)K,每個(gè)值用來(lái)指示被選碼字BW(X)m=1、2、…、K是否僅由可變長(zhǎng)碼字VLW(X)組成。
圖3為表示本發(fā)明圖2中描述的計(jì)算部件530的一個(gè)實(shí)例的電路圖。
參照?qǐng)D3,可變長(zhǎng)碼字的最大長(zhǎng)度為K位,計(jì)算部件530還包括K個(gè)減法器531到537。
計(jì)算部件530的第m個(gè)減法器將第m層的層次碼字NW(X)m減去m位的被選碼字BW(X)m來(lái)產(chǎn)生一個(gè)減法結(jié)果值LD(X)m作為減法結(jié)果的值LD(X)m=1、2、…、K之一。然后計(jì)算部件530將該減法結(jié)果值LD(X)m=1、2、…、K提供給邊界值產(chǎn)生部件540。
邊界值產(chǎn)生值部件540從減法結(jié)果值LD(X)m=1、2、…、K中檢測(cè)最高有效位MSB(X)m=1、2、…、K,并將檢測(cè)到的最高有效位MSB(X)=1、2、…、K作為指示存儲(chǔ)碼字M(X)中可變長(zhǎng)碼字VLW(X)和填充位的邊界的邊界值MSB(X)m輸出到碼長(zhǎng)檢測(cè)部件600。
再次參照?qǐng)D1,碼長(zhǎng)檢測(cè)部件600根據(jù)指示存儲(chǔ)碼字M(X)中可變長(zhǎng)碼字VLW(X)和填充位的邊界的邊界值MSB(X)m產(chǎn)生長(zhǎng)度值LEG(X)。
圖4為表示根據(jù)本發(fā)明的圖1中所描述的碼長(zhǎng)檢測(cè)部件600的一個(gè)實(shí)例的電路圖。
參照?qǐng)D4,碼長(zhǎng)檢測(cè)部件600包括K個(gè)“異-或”門來(lái)產(chǎn)生長(zhǎng)度值LEG(X)。
第一個(gè)“異或”門將MSB(X)1與0取“異或”,當(dāng)n為整數(shù)2到K時(shí),第n個(gè)“異或”門將MSB(X)n-1與MSB(X)n取“異或”。而且,K個(gè)“異-或”門的每一個(gè)所產(chǎn)生的邏輯值被作為包括在存儲(chǔ)碼字M(X)中的可變長(zhǎng)碼字VLW(X)的長(zhǎng)度值LEG(X)輸出到封裝部件400。
在圖1中,封裝部件400根據(jù)長(zhǎng)度值LEG(X)有選擇地輸出存儲(chǔ)碼字M(X),所以封裝部件400只輸出該可變長(zhǎng)碼字VLW(X)而不輸出其填充位。
圖5為表示本發(fā)明中封裝部件400的一個(gè)實(shí)例的電路圖。
參照?qǐng)D5,封裝部件400包括一個(gè)輸入部件410、一個(gè)累加部件420和輸出部件430。
輸入部件410包括一個(gè)一級(jí)桶式移位器(first barrel shifter)411和一個(gè)一級(jí)鎖存器(first latch)412。
一級(jí)桶式移位器411在從一級(jí)鎖存器412和代碼簿存儲(chǔ)器200輸入的2K位的字符串上移動(dòng),根據(jù)長(zhǎng)度值LEG(X)產(chǎn)生一個(gè)K位一級(jí)窗口位串B1,并將此K位一級(jí)窗口位串B1并行輸出到一級(jí)鎖存器412。
一級(jí)鎖存器412存儲(chǔ)此K位一級(jí)窗口位串B1并將與一級(jí)窗口位串B1有相同位值的一級(jí)鎖存位串W1分別輸出到一級(jí)桶式移位器411和輸出部件430。因此,如前面所示的,K位的一級(jí)鎖存位串W1和K位的存儲(chǔ)碼字M(X)被并行輸入到一級(jí)桶式移位器411。
累加部件420包括一個(gè)加法器421、一個(gè)二級(jí)鎖存器422、一個(gè)減法器423和一個(gè)三級(jí)鎖存器424。
加法器421將可變長(zhǎng)碼字VLW(X)的長(zhǎng)度值LEG(X)與二級(jí)鎖存器422的鎖存值L1進(jìn)行模K加法,并將相加的結(jié)果提供給二級(jí)鎖存器422。此外,如果相加的值大于K時(shí),加法器421將產(chǎn)生一個(gè)進(jìn)位信號(hào)。該進(jìn)位信號(hào)將輸出到外面以告之可變長(zhǎng)碼字VLW(X)的各位只存儲(chǔ)在輸出部件430的四級(jí)鎖存器432中,正如下面所要討論的一樣。
二級(jí)鎖存器422存儲(chǔ)加法器傳來(lái)的相加的值,并將其分別輸出到減法器423和加法器421。
減法器423將K與相加所得的值相減,從而產(chǎn)生一個(gè)相減值S0。并且,減法器423將相減所得的差S0提供給三級(jí)鎖存器424。
然后,三級(jí)鎖存器424將相減所得差S0作為控制信號(hào)輸出到輸出部件430。
輸出部件430包括一個(gè)二級(jí)桶式移位器431和一個(gè)四級(jí)鎖存器432。
二級(jí)桶式移位器431在來(lái)自輸入部件410中一級(jí)鎖存器412的2K位的字符串和存儲(chǔ)碼字M(X)的位串上移動(dòng),響應(yīng)控制信號(hào)產(chǎn)生一個(gè)K位的二級(jí)窗口位串。
一個(gè)四級(jí)鎖存器最好具431為二級(jí)窗口位串B2提供該二級(jí)窗口位串B2的輸入順序。四級(jí)鎖存器431有與可變長(zhǎng)碼字的最大長(zhǎng)度K相同大小的存儲(chǔ)空間。
本發(fā)明的可變長(zhǎng)編碼方法及其裝置的操作將在下面詳細(xì)敘述。
當(dāng)數(shù)據(jù)源中所有可能存在的符號(hào)為[a、b、c、d、e、f、g、h]且每一符號(hào)經(jīng)常發(fā)生的次數(shù)依次為1510、1310、1210、1110、510、210、110、110,如圖8所示,根據(jù)它們經(jīng)常發(fā)生的次數(shù),將每一可變長(zhǎng)碼字VLW(X)分配給8個(gè)符號(hào)。表1表示根據(jù)規(guī)范霍夫曼編碼樹(shù)分配給8個(gè)符號(hào)的可變長(zhǎng)碼字的碼值。1位的可變長(zhǎng)碼字分配給最常發(fā)生的符號(hào)[a],6位的可變長(zhǎng)碼字分配給最少發(fā)生的符號(hào)[g和h]。
表1
如下面表2所表示的,根據(jù)作為其地址的符號(hào)可變長(zhǎng)碼字VLW(X)被存儲(chǔ)到代碼簿存儲(chǔ)器200。當(dāng)可變長(zhǎng)碼字VLW(X)存儲(chǔ)到代碼簿存儲(chǔ)器200時(shí),可變長(zhǎng)碼字VLW(X)的MSB和LSB分別在最初和最后存儲(chǔ)到存儲(chǔ)器的一個(gè)存儲(chǔ)單元。
因此,由于可變長(zhǎng)碼字被提供了可變長(zhǎng)碼字中最長(zhǎng)的長(zhǎng)度即6位,當(dāng)一個(gè)符號(hào)x輸入時(shí),代碼簿存儲(chǔ)器200輸出6位的存儲(chǔ)碼字M(X)。
表2
x填充位(或不用)圖6為表示圖1中描述的可變長(zhǎng)編碼裝置的流程圖參照?qǐng)D6,在第一步中,當(dāng)符號(hào)[x]從緩沖部件100輸入到代碼簿存儲(chǔ)器200時(shí),如表2所示,代碼簿存儲(chǔ)器200產(chǎn)生與符號(hào)[c]相一致地具有位串[101xxx]的存儲(chǔ)碼字M(c)。然后,代碼簿存儲(chǔ)器200將存儲(chǔ)碼字M(c)分別提供給可變長(zhǎng)檢測(cè)部件300和封裝部件400(ST1和ST2)。
如圖2所示,輸入到可變長(zhǎng)檢測(cè)部件300的存儲(chǔ)碼字M(c)被輸入到邊界檢測(cè)部件500的編碼選擇部件510。當(dāng)存儲(chǔ)碼字M(c)輸入到編碼選擇部件510時(shí),如表3所示,編碼選擇部件510從存儲(chǔ)碼字M(c)中依次選擇1位到6位來(lái)產(chǎn)生被選碼字BW(c)m=1、2、…、6。然后,編碼選擇部件510將每一被選碼字BW(c)m=1、2、…、6分別提供給層次檢測(cè)部件510和計(jì)算部件520(ST3)。
表3
當(dāng)由通過(guò)從存儲(chǔ)碼字M(c)選擇m位所產(chǎn)生的被選碼字BW(c)m輸入到層次檢測(cè)部件520時(shí),如圖8所示,層次檢測(cè)部件520以霍夫曼編碼樹(shù)為基礎(chǔ)檢測(cè)從第一層到第m層的終結(jié)節(jié)點(diǎn)的數(shù)目,并如上面所示,產(chǎn)生每一層的層次碼字NM(c)m(ST4)。
例如,當(dāng)m=3時(shí),如表3所示,編碼選擇部件510產(chǎn)生被選碼字BW(c)3=[101]。然后,層次檢測(cè)部件520為每一層賦予一權(quán)值,并將這些終結(jié)節(jié)點(diǎn)的權(quán)值相加起來(lái),用以產(chǎn)生相加的和WS(c)3如下WS(c)3=Σi=0223-j•Lj=8]]>其中j指定規(guī)范霍夫曼編碼樹(shù)中的一層,Lj指出第j層中終結(jié)節(jié)點(diǎn)的數(shù)目。
然后,層次檢測(cè)部件將和WS(c)3轉(zhuǎn)換成二進(jìn)制數(shù)以產(chǎn)生層次碼字NW(c)3=
。關(guān)于所有被選碼字BW(c)m(m=1、2、…、6)的層次碼字NW(c)m(m=1、2、…、6)如下面表4所示。表4
當(dāng)層次碼字NW(c)m(m=1、2、…、6)和被選碼字BW(c)m(m=1、2、…、6)分別輸入到計(jì)算部件530時(shí),如圖3所示,分別輸入到計(jì)算部件530的層次碼字NW(c)m(m=1、2、…、6)和被選碼字BW(c)m(m=1、2、…、6)被分別依次輸入到計(jì)算部件530的第一到第六減法器531至536。
第一到第六減法器531至536中的每一個(gè)執(zhí)行相同的函數(shù)LD(c)m如下LD(c)m=BW(c)m-NW(c)m因此,如下面表5所示,計(jì)算部件530產(chǎn)生第一到第六減法器531至536的結(jié)果LD(c)m=1、2、…、6作為關(guān)于符號(hào)c的操作結(jié)果值LD(X=c)m=1、2、…、6。
表5
第一到第六減法器531至536的結(jié)果LD(c)m=1、2、…、6被提供給邊界值產(chǎn)生部件540(ST5)。
在對(duì)步5的詳細(xì)說(shuō)明中,根據(jù)下面說(shuō)明的函數(shù)LD(c)m,第一到第六減法器531至536產(chǎn)生第一到第六的減法結(jié)果LD(c)m=1、2、…、6,LD(c)m說(shuō)明如下LD(c)1=Σi=1121-i•bi-Σj=0021-j•Lj=110]]>LD(c)2=Σi=1222-i•bi-Σj=0122-j•Lj=010]]>LD(c)3=Σi=1323-i•bi-Σj=0223-j•Lj=110]]>LD(c)5=Σi=1525-i•bi-Σj=0425-j•Lj=710]]>LD(c)4=Σi=1424-i•bi-Σj=0324-j•Lj=-310]]>LD(c)6=Σi=1626-i•bi-Σj=0526-j•Lj=-1510]]>其中bi表示被選碼字的第i位的值,Lj表示第j層中終結(jié)節(jié)點(diǎn)的數(shù)目。
在第六步中,邊界值產(chǎn)生部件540從減法結(jié)果LD(c)m=1、2、…、6的每一位串中檢測(cè)MSB(c)m=1、2、…、6位的值,并將MSB(c)m=1、2、…、6位的值作為邊界值MSB(c)m=1、2、…、6輸出到碼長(zhǎng)檢測(cè)部件600(ST6)。
在第七步中,如圖4所示,輸入到碼長(zhǎng)檢測(cè)部件600的MSB(c)m=1、2、…、6=
的每一位被并行輸出到第一到第六“異-或”門,所以碼長(zhǎng)檢測(cè)部件600產(chǎn)生一位串
作為指定符號(hào)[c]的可變長(zhǎng)碼字的長(zhǎng)度的長(zhǎng)度值LEG(c)。而且,此位串
被提供給封裝部件400(ST7)。
在第八步中,當(dāng)長(zhǎng)度值LEG(c)被提供給封裝部件400時(shí),封裝部件400檢測(cè)存儲(chǔ)碼字M(c)中的可變長(zhǎng)碼字VLW(c)以響應(yīng)長(zhǎng)度值LEG(c),并僅輸出可變長(zhǎng)碼字VLW(c)作為符號(hào)[c]的編碼(ST8)。
下面將參照?qǐng)D5和圖7對(duì)本發(fā)明中封裝部件400的操作進(jìn)行詳細(xì)描述。
圖7為表示當(dāng)符號(hào)[a、b、c、d、e、f、g、a、b]依次輸入到緩沖部件100時(shí),封裝部件每一部分的輸出的視圖。
參照?qǐng)D7,在時(shí)間t=1時(shí),由于存儲(chǔ)碼字M(X)未從代碼簿存儲(chǔ)器200輸入到封裝部件400,作為對(duì)長(zhǎng)度值LEG(c)的響應(yīng),封裝部件400的一級(jí)桶式移位器411將一位串[X、X、X、X、X、X]作為一級(jí)窗口位串B(t=1)1提供到一級(jí)鎖存器412。
因此,二級(jí)鎖存器422分別向減法器423及加法器421輸出L1=0,所以三級(jí)鎖存器424將L2=6作為控制信號(hào)輸出到二級(jí)桶式移位器431。接著,如圖7所示,二級(jí)桶式移位器431輸出B(t=1)2=[x、x、x、x、x、x]作為包括從LSB到2K位的第六位的二級(jí)窗口位串B(t=1)。
在t=2時(shí),當(dāng)符號(hào)[a]輸入到代碼簿存儲(chǔ)器200,且符號(hào)[a]的存儲(chǔ)碼字M(a)已經(jīng)從代碼簿存儲(chǔ)器200中產(chǎn)生時(shí),存儲(chǔ)碼字M(a)=[a1、x、x、x、x、x]被分別輸入到輸入部件410的一級(jí)桶式移位器411和輸出部件430的二級(jí)桶式移位器431。同時(shí),如上面所描述的,符號(hào)[a]對(duì)應(yīng)的長(zhǎng)度值LEG(a)=1從可變長(zhǎng)檢測(cè)部件300產(chǎn)生,且該長(zhǎng)度值LEG(a)=1被分別提供給一級(jí)桶式移位器411和加法器421。
當(dāng)從可變長(zhǎng)檢測(cè)部件300產(chǎn)生的長(zhǎng)度值LEG(a)=1和代碼簿存儲(chǔ)器200中產(chǎn)生的存儲(chǔ)碼字M(a)已分別輸入到一級(jí)桶式移位器411時(shí),一級(jí)桶式移位器411在來(lái)自一級(jí)鎖存器412的一級(jí)鎖存位串[x、x、x、x、x、x]和存儲(chǔ)碼字M(a)的位串M(a)=[a1、x、x、x、x、x]上移動(dòng)以響應(yīng)長(zhǎng)度值LEG(a)=1,所以,如圖7所示,一級(jí)桶式移位器411產(chǎn)生一級(jí)窗口位串W1=[x、x、x、x、x、a1],并將此一級(jí)窗口位串W1=[x、x、x、x、x、a1]輸出到一級(jí)鎖存器412。一級(jí)鎖存器412將此一級(jí)窗口位串W1=[x、x、x、x、x、a1]作為一級(jí)鎖存位串L1分別輸出到一級(jí)桶式移位器411和二級(jí)桶式移位器431。
然而,此時(shí)由于累加部件420中的三級(jí)鎖存器424所提供的控制信號(hào)L2=0已輸入到二級(jí)桶式移位器431,二級(jí)桶式移位器431向四級(jí)鎖存器432輸出一位串[a1、x、x、x、x、x]。
在t=3時(shí),符號(hào)[b]的存儲(chǔ)碼字M(b)=[b1、b2、b3、x、x、x]和長(zhǎng)度值LEG(b)=3被輸入到一級(jí)桶式移位器411。一級(jí)桶式移位器411在由存儲(chǔ)碼字M(b)=[b1、b2、b3、x、x、x]和一級(jí)鎖存位串W1=[x、x、x、x、x、a1]所組成的位串[x、x、x、x、x、a1、b1、b2、b3、x、x、x]上移動(dòng),并從該位串的MSB后面三位開(kāi)始讀取6位,用以將所讀取的這6位[x、x、a1、b1、b2、b3]作為一級(jí)窗口位串B(t=3)1輸出到一級(jí)鎖存器412。然后,一級(jí)鎖存器412將一級(jí)窗口位串B(t=3)1=[x、x、a1、b1、b2、b3]作為一級(jí)鎖存位串W1分別輸出到一級(jí)桶式移位器411和二級(jí)桶式移位器431。另一方面,加法器421將LEG(b)=3與來(lái)自二級(jí)鎖存器422的L1=1相加,并將和[4]輸出到二級(jí)鎖存器422。同時(shí),二級(jí)鎖存器422將上次的和L1=1輸出到減法器423,存儲(chǔ)當(dāng)前的和L1=4來(lái)代替上次的和L1=1。
減法器423將值[6]減去上次的和L1=1,并將差S0=5提供給三級(jí)鎖存器424。然后三級(jí)鎖存器424存儲(chǔ)差S0=5并將差S0=5作為控制信號(hào)L2=5輸出到二級(jí)桶式移位器431。
二級(jí)桶式移位器431在由存儲(chǔ)碼字M(b)=[b1、b2、b3、x、x、x]和一級(jí)鎖存位串W1=[x、x、x、x、x、a1]所組成的位串[x、x、x、x、x、a1、b1、b2、b3、x、x、x]上移動(dòng)以響應(yīng)三級(jí)鎖存器424提供的控制信號(hào)L2=5,并從該位串的MSB后面5位開(kāi)始讀取6位[a1、b1、b2、b3、x、x]。然后,二級(jí)桶式移位器431將所讀取的這6位作為二級(jí)窗口位串B(t=3)2=[a1、b1、b2、b3、x、x]輸出到四級(jí)鎖存器432。
四級(jí)鎖存器432存儲(chǔ)二級(jí)窗口位串B(t=3)2=[a1、b1、b2、b3、x、x]。
當(dāng)t=4時(shí),符號(hào)[c]的存儲(chǔ)碼字M(c)=[c1、c2、c3、x、x、x]和長(zhǎng)度值LEG(c)=3輸入到一級(jí)桶式移位器411。響應(yīng)長(zhǎng)度值LEG(c)=3一級(jí)桶式移位器411在由存儲(chǔ)碼字M(c)=[c1、c2、c3、x、x、x]和一級(jí)鎖存位串W1=[x、x、a1、b1、b2、b3]所組成的位串[x、x、a1、b1、b2、b3、c1、c2、c3、x、x、x]上移動(dòng),并從該位串的MSB后面三位開(kāi)始讀取6位,用以將所得6位[b1、b2、b3、c1、c2、c3]作為一級(jí)窗口位串B(t=4)1輸出到一級(jí)鎖存器412。然后,一級(jí)鎖存器412將一級(jí)窗口位串B(t=4)1=[b1、b2、b3、c1、c2、c3]作為一級(jí)鎖存位串W1分別輸出到一級(jí)桶式移位器411和二級(jí)桶式移位器431。
另一方面,加法器421將LEG(c)=3與來(lái)自二級(jí)鎖存器422的L1=4相加來(lái)產(chǎn)生一個(gè)和[7]。但由于加法器421執(zhí)行模6加法,所以加法器421輸出和為[1]、進(jìn)位信號(hào)為C=1。接著,加法器421將和[1]提供給二級(jí)鎖存器422,并向外輸出進(jìn)位信號(hào)。
二級(jí)鎖存器422同時(shí)將上次的和L1=4輸出到減法器423,如圖7所示,并用和L1=1來(lái)代替上次的和L1=4。
減法器423從[6]中減去上次的和L1=4,并將差S0=2提供給三級(jí)鎖存器424。然后,三級(jí)鎖存器424存儲(chǔ)差值S0=2并將差值S0=2作為控制信號(hào)L2=2輸出到二級(jí)桶式移位器431。
然后,響應(yīng)三級(jí)鎖存器424提供的控制信號(hào)L2=2二級(jí)桶式移位器431在由存儲(chǔ)碼字M(b)=[c1、c2、c3、x、x、x]和一級(jí)鎖存位串W1=[x、x、a1、b1、b2、b3]組成的位串[x、x、a1、b1、b2、b3、c1、c2、c3、x、x、x]上移動(dòng),并從該位串的MSB后面2位開(kāi)始讀取6位[a1、b1、b2、b3、c1、c2]。接著,二級(jí)桶式移位器431將所讀取的6位位串作為二級(jí)窗口位串B(t=4)2=[a1、b1、b2、b3、c1、c2]輸出到四級(jí)鎖存器432。
此時(shí),四級(jí)鎖存器432的所有6位存儲(chǔ)空間已經(jīng)被可變長(zhǎng)碼字所占用。因此,通過(guò)讀取四級(jí)鎖存器432輸出的各位以響應(yīng)進(jìn)位信號(hào)C=1的出現(xiàn),我們可以得到除填充位外的可變長(zhǎng)碼字。
如上面所示出的過(guò)程,封裝部件根據(jù)輸入的符號(hào)不斷地輸出可變長(zhǎng)的碼字。
因此,本發(fā)明可以將符號(hào)轉(zhuǎn)換為可變長(zhǎng)的碼字而不必在存儲(chǔ)器中存儲(chǔ)數(shù)據(jù)的長(zhǎng)度。
盡管上面已經(jīng)結(jié)合最佳實(shí)施例描述了本發(fā)明,但熟練的技術(shù)人員應(yīng)當(dāng)理解,本發(fā)明還可以進(jìn)行修改,但所有修改仍應(yīng)屬于后附權(quán)利要求書所規(guī)定的本發(fā)明的范圍和精神實(shí)質(zhì)內(nèi)。
權(quán)利要求
1.一種通過(guò)使用一編碼裝置將符號(hào)轉(zhuǎn)換為可變長(zhǎng)碼字的方法,該編碼裝置包括一用來(lái)根據(jù)符號(hào)存儲(chǔ)具有最大長(zhǎng)度的可變長(zhǎng)碼字的可變長(zhǎng)碼字的代碼簿存儲(chǔ)器,該方法包括以下各步a)通過(guò)向代碼簿存儲(chǔ)器輸入一符號(hào)來(lái)從代碼簿存儲(chǔ)器產(chǎn)生一存儲(chǔ)碼字;b)以被選碼字、在霍夫曼編碼樹(shù)中由每一被選碼字定義的層次和每一層終結(jié)節(jié)點(diǎn)的數(shù)目為基礎(chǔ)檢查包括在存儲(chǔ)碼字中的可變長(zhǎng)碼字的長(zhǎng)度,其中,被選碼字通過(guò)在存儲(chǔ)碼字的各位中選擇m位K次來(lái)產(chǎn)生,其中m=1、2、3、4、…、K,K表示可變長(zhǎng)碼字的最大長(zhǎng)度;c)根據(jù)可變長(zhǎng)碼字的長(zhǎng)度從存儲(chǔ)碼字中訪問(wèn)可變長(zhǎng)碼字;
2.如權(quán)利要求1所示的方法,其中所述步驟b)包括以下各步b-1)以被選碼字和每層終結(jié)節(jié)點(diǎn)數(shù)目為基礎(chǔ),檢測(cè)存儲(chǔ)碼字中可變長(zhǎng)碼字與填充位的邊界以產(chǎn)生一個(gè)邊界值;b-2)以步驟b-1)產(chǎn)生的的邊界值為基礎(chǔ),檢測(cè)包括在存儲(chǔ)碼字中的可變長(zhǎng)碼字的長(zhǎng)度。
3.如權(quán)利要求2所述的方法,其中所述步驟b-1)包括以下各步b-1-1)檢測(cè)每一被選碼字對(duì)應(yīng)的層數(shù);b-1-2)檢測(cè)每一層對(duì)應(yīng)的終結(jié)節(jié)點(diǎn)數(shù);b-1-3)按層為終結(jié)節(jié)點(diǎn)的數(shù)目賦一權(quán)值,由此為每一層產(chǎn)生一個(gè)權(quán)值數(shù)字;b-1-4)將從霍夫曼編碼樹(shù)的根到每一層的權(quán)值數(shù)字相加,用以產(chǎn)生對(duì)應(yīng)每一層的和;b-1-5)將和轉(zhuǎn)換成二進(jìn)制數(shù),由此產(chǎn)生對(duì)應(yīng)每一個(gè)和的層次碼字;b-1-6)將對(duì)應(yīng)每一層次碼字的被選碼字減去層次碼字,由此得到相減差值;b-1-7)從相減差值中檢測(cè)最高有效位以將最高有效位作為邊界值輸出。
4.如權(quán)利要求3所述的方法,其中所述可變長(zhǎng)碼字的長(zhǎng)度用一長(zhǎng)度值表示,該長(zhǎng)度值由兩個(gè)最高有效位相“異-或”而產(chǎn)生。
5.一種使用一編碼裝置將符號(hào)轉(zhuǎn)換成可變長(zhǎng)碼字的方法,該編碼裝置包括一個(gè)根據(jù)符號(hào)存儲(chǔ)具有最大長(zhǎng)度的可變長(zhǎng)碼字的可變長(zhǎng)碼字的代碼簿存儲(chǔ)器,該方法包括以下各步a)通過(guò)向代碼簿存儲(chǔ)器輸入一符號(hào)來(lái)從代碼簿存儲(chǔ)器產(chǎn)生一存儲(chǔ)碼字;b)在存儲(chǔ)碼字中選擇m位以產(chǎn)生被選碼字,其中m=1、2、3、4、…、K,K表示可變長(zhǎng)碼字的最大長(zhǎng)度;c)根據(jù)每一被選碼字和每一層中終結(jié)節(jié)點(diǎn)的數(shù)目,以霍夫曼編碼樹(shù)的每一層為基礎(chǔ),檢測(cè)每一個(gè)被選碼字是否包含可變長(zhǎng)碼字的各位;d)根據(jù)步驟c)中的結(jié)果從存儲(chǔ)碼字中訪問(wèn)可變長(zhǎng)碼字。
6.如權(quán)利要求5所述的方法,其中所述步驟c)包括以下各步c-1)以霍夫曼編碼樹(shù)為基礎(chǔ)檢測(cè)每一被選碼字的層次;c-2)檢測(cè)每一層中終結(jié)節(jié)點(diǎn)的數(shù)目;c-3)執(zhí)行函數(shù)LD(X)m:LD(X)m=BW(X)m-NW(X)mBW(X)m=Σi=1m2m-i•bi]]>NW(X)m=Σi=0m=12m-j•Lj]]>其中bi為從存儲(chǔ)碼字中選取m位所得到的被選碼字中第i位的值,Lj為在霍夫曼編碼樹(shù)第j層中終結(jié)節(jié)點(diǎn)的總數(shù);c-4)檢測(cè)每一個(gè)LD(X)m是否為負(fù)數(shù)。
7.如權(quán)利要求6所述的方法,其中所述步驟d)訪問(wèn)具有非負(fù)值的被選碼字中最長(zhǎng)的被選碼字,將其作為可變長(zhǎng)碼字。
8.一種將用定長(zhǎng)碼字表示的符號(hào)轉(zhuǎn)換成可變長(zhǎng)碼字的裝置,該裝置包括a)根據(jù)符號(hào)存儲(chǔ)具有最大長(zhǎng)度的可變長(zhǎng)碼字的可變長(zhǎng)碼字的代碼簿存儲(chǔ)器;b)以被選碼字、霍夫曼編碼樹(shù)中由各被選碼字定義的各層和每一層中終結(jié)節(jié)點(diǎn)的數(shù)目為基礎(chǔ),檢測(cè)包括在存儲(chǔ)碼字中的可變長(zhǎng)碼字長(zhǎng)度的可變長(zhǎng)檢測(cè)裝置,其中,被選碼字通過(guò)在存儲(chǔ)碼字的各位中K次選擇m位來(lái)產(chǎn)生,其中m=1、2、3、4、…、K,K表示可變長(zhǎng)碼字的最大長(zhǎng)度;c)根據(jù)可變長(zhǎng)碼字的長(zhǎng)度來(lái)從存儲(chǔ)碼字中訪問(wèn)可變長(zhǎng)碼字的壓縮裝置。
9.如權(quán)利要求8所述的裝置,其中所述可變長(zhǎng)檢測(cè)裝置包括以被選碼字和每一層中終結(jié)節(jié)點(diǎn)的數(shù)目為基礎(chǔ),檢測(cè)在存儲(chǔ)碼字中可變長(zhǎng)碼字與填充位之間邊界以產(chǎn)生一個(gè)邊界值的邊界檢測(cè)裝置;以邊界值為基礎(chǔ),檢測(cè)包括在存儲(chǔ)碼字中的可變長(zhǎng)碼字的長(zhǎng)度的碼長(zhǎng)檢測(cè)裝置。
10.如權(quán)利要求9所述的裝置,其中所述邊界檢測(cè)裝置包括檢測(cè)對(duì)應(yīng)于每一被選碼字的層數(shù)的裝置;檢測(cè)每一層中終結(jié)節(jié)點(diǎn)數(shù)目的裝置;按層為終結(jié)節(jié)點(diǎn)的數(shù)目給定一個(gè)權(quán)值,用來(lái)為每層產(chǎn)生一個(gè)權(quán)值的裝置;將從霍夫曼編碼樹(shù)的根到每一層的權(quán)值相加,產(chǎn)生對(duì)應(yīng)每一層的和的裝置;將和轉(zhuǎn)換成二進(jìn)制數(shù),產(chǎn)生對(duì)應(yīng)每一個(gè)和的層次碼字的裝置;將對(duì)應(yīng)于每一層次碼字的被選碼字減去層次碼字,產(chǎn)生相減的差的裝置;從相減的差中檢測(cè)最高有效位以將最高有效位作為邊界值輸出的裝置。
11.如權(quán)利要求10所述的裝置,其中所述長(zhǎng)度值由兩個(gè)最高有效位相“異-或”產(chǎn)生。
12.如權(quán)利要求8所述的裝置,其中所述壓縮裝置包括一個(gè)響應(yīng)可變長(zhǎng)碼字的長(zhǎng)度從位串中選擇各位來(lái)產(chǎn)生一個(gè)一級(jí)窗口位串的輸入部件,其中,此位串包括存儲(chǔ)碼字和一級(jí)窗口位串;一個(gè)響應(yīng)一控制信號(hào)在一級(jí)窗口位串和存儲(chǔ)碼字的位串中檢測(cè)可變長(zhǎng)碼字的各位,并將檢測(cè)到的各位輸出到輸出部件;以及一個(gè)將檢測(cè)到的各位的數(shù)字累加,用以產(chǎn)生控制信號(hào)的累加部件。
13.如權(quán)利要求12所述的裝置,其中所述輸入部件包括一個(gè)一級(jí)鎖存器,用來(lái)將一級(jí)窗口位串輸出到輸出部件和一級(jí)桶式移位器;以及在位串上移動(dòng)以響應(yīng)可變長(zhǎng)碼字的長(zhǎng)度,來(lái)產(chǎn)生一級(jí)窗口位串的一級(jí)桶式移位器。
14.如權(quán)利要求12所述的裝置,其中所述輸出部件包括一個(gè)二級(jí)桶式移位器,響應(yīng)控制信號(hào)在一級(jí)窗口位串和存儲(chǔ)碼字的位串上移動(dòng)以檢測(cè)可變長(zhǎng)碼字的各位;以及一個(gè)存儲(chǔ)來(lái)自二級(jí)桶式移位器的可變長(zhǎng)碼字的各位的二級(jí)鎖存器。
15.如權(quán)利要求12所述的裝置,其中所述累加器包括一個(gè)用來(lái)存儲(chǔ)來(lái)自加法器的和的三級(jí)鎖存器;將可變長(zhǎng)碼字的長(zhǎng)度值與三級(jí)鎖存器中的和進(jìn)行模K加法的加法器,當(dāng)和為K時(shí)加法器產(chǎn)生一個(gè)進(jìn)位信號(hào);以及一個(gè)將K減去相加的和的減法器,用來(lái)產(chǎn)生控制信號(hào)。
16.一種將符號(hào)轉(zhuǎn)換成可變長(zhǎng)碼字的裝置,該裝置包括a)通過(guò)輸入一個(gè)符號(hào)到代碼簿存儲(chǔ)器從代碼簿存儲(chǔ)器產(chǎn)生一個(gè)存儲(chǔ)碼字的裝置;b)為了產(chǎn)生被選碼字,從存儲(chǔ)碼字中選擇m位的裝置,其中m=1、2、3、4、…、K,K表示可變長(zhǎng)碼字的最大長(zhǎng)度;c)以霍夫曼編碼樹(shù)定義的層為基礎(chǔ),根據(jù)每一個(gè)被選碼字和每層的終結(jié)節(jié)點(diǎn)數(shù)目來(lái)決定每一個(gè)被選碼字是否包含可變長(zhǎng)碼字的各位;以及d)根據(jù)決定的結(jié)果從存儲(chǔ)碼字中訪問(wèn)可變長(zhǎng)碼字的裝置。
17.如權(quán)利要求16所述的裝置,其中所述決定裝置包括c-1)以霍夫曼編碼樹(shù)為基礎(chǔ),檢測(cè)每一被選碼字的層次的裝置;c-2)檢測(cè)每一層中終結(jié)節(jié)點(diǎn)的數(shù)目的裝置;以及c-3)執(zhí)行函數(shù)LD(X)m的裝置LD(X)m=BW(X)m-NW(X)mBW(X)m=Σi=1m2m-i•bi]]>NW(X)m=Σi=0m=12m-j•Lj]]>其中bi為從存儲(chǔ)碼字中選取m位所得到的被選碼字中第i位的值,Lj為在霍夫曼編碼樹(shù)第j層中終結(jié)節(jié)點(diǎn)的總數(shù);以及c-4)檢測(cè)每一個(gè)LD(X)m是否為負(fù)數(shù)的裝置。
18.如權(quán)利要求16所述的裝置,其中所述的訪問(wèn)裝置訪問(wèn)具有最長(zhǎng)的長(zhǎng)度而且具有非負(fù)值的被選碼字作為可變長(zhǎng)碼字。
19.如權(quán)利要求16所述的裝置,其中所述的訪問(wèn)裝置包括一個(gè)響應(yīng)可變長(zhǎng)碼字的長(zhǎng)度從位串中選擇各位來(lái)產(chǎn)生一個(gè)一級(jí)窗口位串的輸入部件,其中,此位串包括存儲(chǔ)碼字和一級(jí)窗口位串;一個(gè)響應(yīng)一控制信號(hào)在一級(jí)窗口位串和存儲(chǔ)碼字的位串中檢測(cè)可變長(zhǎng)碼字的各位以,并將檢測(cè)到的各位輸出到輸出部件;以及一個(gè)將檢測(cè)到的各位的數(shù)字累加以產(chǎn)生控制信號(hào)的累加部件。
20.如權(quán)利要求19所述的裝置,其中所述輸入部件包括一個(gè)一級(jí)鎖存器,用來(lái)將一級(jí)窗口位串輸出到輸出部件和一級(jí)桶式移位器;以及響應(yīng)可變長(zhǎng)碼字的長(zhǎng)度在位串上移動(dòng)以產(chǎn)生一級(jí)窗口位串的一級(jí)桶式移位器。
21.如權(quán)利要求19所述的裝置,其中所述輸出部件包括一個(gè)二級(jí)桶式移位器,響應(yīng)控制信號(hào)在一級(jí)窗口位串和存儲(chǔ)碼字的位串上移動(dòng)以檢測(cè)可變長(zhǎng)碼字的各位;以及一個(gè)存儲(chǔ)來(lái)自二級(jí)桶式移位器的可變長(zhǎng)碼字的各位的二級(jí)鎖存器。
22.如權(quán)利要求19所述的裝置,其中所述累加器包括一個(gè)用來(lái)存儲(chǔ)來(lái)自加法器的和的三級(jí)鎖存器;將可變長(zhǎng)碼字的長(zhǎng)度值與三級(jí)鎖存器中的和進(jìn)行模K加法的加法器,當(dāng)和為K時(shí)加法器產(chǎn)生一個(gè)進(jìn)位信號(hào);以及一個(gè)將K減去相加的和的減法器,用來(lái)產(chǎn)生控制信號(hào)。
全文摘要
公開(kāi)了一種將符號(hào)轉(zhuǎn)換成可變長(zhǎng)碼字的方法。包括以下各步:a)輸入一個(gè)信號(hào)到可變長(zhǎng)碼字所在的代碼簿存儲(chǔ)器,從代碼簿存儲(chǔ)器產(chǎn)生一個(gè)存儲(chǔ)碼字;b)以被選碼字、霍夫曼編碼樹(shù)中由各被選碼字定義的各層和每一層中終結(jié)節(jié)點(diǎn)的數(shù)目為基礎(chǔ),檢測(cè)包括在存儲(chǔ)碼字中的可變長(zhǎng)碼字長(zhǎng)度c)根據(jù)可變長(zhǎng)碼字的長(zhǎng)度來(lái)從存儲(chǔ)碼字中讀取可變長(zhǎng)碼字。因此,該方法使將符號(hào)轉(zhuǎn)換成可變長(zhǎng)碼字而不需在存儲(chǔ)器中存儲(chǔ)長(zhǎng)度數(shù)據(jù)成為可能。
文檔編號(hào)H03M7/40GK1219803SQ9712543
公開(kāi)日1999年6月16日 申請(qǐng)日期1997年12月8日 優(yōu)先權(quán)日1997年12月8日
發(fā)明者南承鉉 申請(qǐng)人:大宇電子株式會(huì)社