一種哈夫曼解碼方法及裝置的制造方法
【技術領域】
[0001] 本發(fā)明涉及編解碼技術領域,具體涉及一種哈夫曼解碼方法及裝置。
【背景技術】
[0002] 范式哈夫曼huffman算法碼表分為兩部分,第一部分存儲了 1-16碼長的碼字數(shù) 量,第二部分存儲正確碼字的分布式哈希表(DistributedHashTable,DHT),解碼過程利 用這兩個部分得到完整的哈夫曼huffman樹表,從而完成范式huffman解碼。
[0003] 范式huffman編碼中長度為h的碼字的前j位數(shù)值大于長度為L的碼字的數(shù)值, 其中i>j,根據(jù)這個特性很容易能夠構造出范式huffman編碼的解碼算法,即逐位讀入碼 流,根據(jù)讀入碼流的大小判斷是否屬于當前碼段,是則獲得編碼長度,否則繼續(xù)讀入下一位 碼字進行比較。由此可以看出由于這種不定長編碼方法,必須逐位讀入碼流,判斷有效碼流 長度后,再進行查表解碼,效率低下。
[0004] 由此可見,現(xiàn)有技術中的哈夫曼解碼方案都是采用逐位判斷得到有效碼長后再進 行解碼,導致解碼效率低下。
【發(fā)明內容】
[0005] 本發(fā)明實施例提供一種哈夫曼解碼方法,可以結合現(xiàn)場可編程邏輯門陣列FPGA 來實現(xiàn)并行碼長獲取,從而提高了范式huffman解碼效率。本發(fā)明實施例還提供了相應的 裝直。
[0006] 本發(fā)明第一方面提供一種哈夫曼解碼的方法,包括:
[0007] 接收待解碼碼字;
[0008] 將所述待解碼碼字分別與每個碼長對應的碼字最小值進行比較;
[0009] 當所述待解碼碼字小于所述每個碼長中任意一個碼長對應的碼字最小值時,確定 所述待解碼碼字的有效碼長;
[0010] 根據(jù)所述有效碼長,從碼長與解碼碼字的對應關系中查找所述有效碼長對應的解 碼碼字,實現(xiàn)解碼。
[0011] 本發(fā)明第二方面提供一種哈夫曼解碼的裝置,
[0012] 接收單元,用于接收待解碼碼字;
[0013] 比較單元,用于將所述接收單元接收的所述待解碼碼字分別與每個碼長對應的碼 字最小值進行比較;
[0014] 確定單元,用于當所述比較單元比較出所述待解碼碼字小于所述每個碼長中任意 一個碼長對應的碼字最小值時,確定所述待解碼碼字的有效碼長;
[0015] 解碼單元,用于根據(jù)所述確定單元確定的所述有效碼長,從碼長與解碼碼字的對 應關系中查找所述有效碼長對應的解碼碼字,實現(xiàn)解碼。
[0016] 本發(fā)明實施例采用接收待解碼碼字;將所述待解碼碼字分別與每個碼長對應的碼 字最小值進行比較;當所述待解碼碼字小于所述每個碼長中任意一個碼長對應的碼字最小 值時,確定所述待解碼碼字的有效碼長;根據(jù)所述有效碼長,從碼長與解碼碼字的對應關 系中查找所述有效碼長對應的解碼碼字,實現(xiàn)解碼。與現(xiàn)有技術中哈夫曼解碼都是采用逐 位判斷得到有效碼長后再進行解碼,導致解碼效率低下相比,本發(fā)明實施例提供的哈夫曼 解碼的方法,可以結合現(xiàn)場可編程邏輯門陣列FPGA來實現(xiàn)并行碼長獲取,從而提高了范式 huffman解碼效率。
【附圖說明】
[0017] 為了更清楚地說明本發(fā)明實施例中的技術方案,下面將對實施例描述中所需要使 用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些實施例,對于 本領域技術人員來講,在不付出創(chuàng)造性勞動的前提下,還可以根據(jù)這些附圖獲得其他的附 圖。
[0018] 圖1是哈夫曼解碼的方法的一實施例示意圖;
[0019] 圖2是哈夫曼解碼的方法的另一實施例示意圖;
[0020] 圖3是哈夫曼解碼的方法的另一實施例示意圖;
[0021] 圖4是哈夫曼解碼的裝置的一實施例示意圖;
[0022] 圖5是哈夫曼解碼的裝置的另一實施例示意圖。
【具體實施方式】
[0023] 本發(fā)明實施例提供一種哈夫曼解碼方法,可以結合現(xiàn)場可編程邏輯門陣列FPGA 來實現(xiàn)并行碼長獲取,從而提高了范式huffman解碼效率。本發(fā)明實施例還提供了相應的 裝置。以下分別進行詳細說明。
[0024] 下面將結合本發(fā)明實施例中的附圖,對本發(fā)明實施例中的技術方案進行清楚、完 整地描述,顯然,所描述的實施例僅僅是本發(fā)明一部分實施例,而不是全部的實施例。基于 本發(fā)明中的實施例,本領域技術人員在沒有作出創(chuàng)造性勞動前提下所獲得的所有其他實施 例,都屬于本發(fā)明保護的范圍。
[0025] 參閱圖1,本發(fā)明實施例提供的哈夫曼解碼的方法的一實施例包括:
[0026] 101、接收待解碼碼字。
[0027] 待解碼碼字是二進制的碼流,本發(fā)明實施例中待解碼碼字可以為16bit碼流。
[0028] 102、將所述待解碼碼字分別與每個碼長對應的碼字最小值進行比較。
[0029] 本發(fā)明實施例中,在范式huffman編碼中,對于任意兩個huffman碼字Wpw2, 其碼長分別為h、12,如果h〈i2,那么有其中 表示W(wǎng)l的二進制序列后跟lmax_lll的整數(shù)值,I({w2,0[lmax-12]})表 示w2的二進制序列后跟1 _-12個0的整數(shù)值。
[0030] 利用范式huffman算法的這一特性,對每個長度為len的huffman碼段的第一個 碼字first[len]進行擴展,將其固定成lmax位長的first_min[len],len的長度有16位, 分別為0-15,每個len都對應有一個碼字最小值first_min[len],可以用表1來展示len 與first_min[len]的對應關系,如表1所示:
[0031] 表 1:len與first_min[len]的對應關系表
[0032]
[0033]
[0034] 待解碼碼字在比較時,可以分別與first_min[0-first_min[15]進行比較,這樣 并行比較就可以提高比較的效率,從而提高解碼的效率。
[0035] 103、當所述待解碼碼字小于所述每個碼長中任意一個碼長對應的碼字最小值時, 確定所述待解碼碼字的有效碼長。
[0036] 本發(fā)明實施例中的小于所述每個碼長中任意一個碼長對應的碼字最小值,是指位 于該最小值與下一個碼長對應的碼字最小值之間,例如:待解碼碼字小于first_min[3], 則是指該待解碼碼字處于first_min[3]和first_min[2]之間,則待解碼碼字的有效碼長 為 3-1 = 2。
[0037] 104、根據(jù)所述有效碼長,從碼長與解碼碼字的對應關系中查找所述有效碼長對應 的解碼碼字,實現(xiàn)解碼。
[0038] 在解碼端,可以存儲有兩張表,一張是碼長表,一張是解碼碼字表,每個碼長都會 有對應的解碼碼字,一旦碼長確定,就可以找到相應的解碼碼字實現(xiàn)解碼。
[0039] 本發(fā)明實施例采用接收待解碼碼字;將所述待解碼碼字分別與每個碼長對應的碼 字最小值進行比較;當所述待解碼碼字小于所述每個碼長中任意一個碼長對應的碼字最小 值時,確定所述待解碼碼字的有效碼長;根據(jù)所述有效碼長,從碼長與解碼碼字的對應關 系中查找所述有效碼長對應的解碼碼字,實現(xiàn)解碼。與現(xiàn)有技術中哈夫曼解碼都是采用逐 位判斷得到有效碼長后再進行解碼,導致解碼效率低下相比,本發(fā)明實施例提供的哈夫曼 解碼的方法,可以結合現(xiàn)場可編程邏輯門陣列FPGA來實現(xiàn)并行碼長獲取,從而提高了范式 huffman解碼效率。
[0040] 可選地,在上述圖1對應的實施例的基礎上,本發(fā)明實施例提供的哈夫曼解碼的 方法的第一個可選實施例中,所述將所述待解碼碼字分別與每個碼長對應的碼字最小值進 行比較,可以包括:
[0041] 通過現(xiàn)場可編程邏輯門陣列FPGA的并行比較器將所述待解碼碼字分別與每個碼 長對應的碼字最小值進行比較。
[0042] 本發(fā)明實施例中,因FPGA是一種可編程的門陣列硬件邏輯,里面有大量可并行執(zhí) 行的比較器,但是本身的主頻較低(一般只有200MHz-300MHz左右),非常適合用于單位任 務粒度較輕的并行計算處理中,本發(fā)明實施例提供的式huffman解碼方案的并行比較方式 可以完全發(fā)揮出FPGA的硬件特點,大大提高哈夫曼解碼的實時性。
[0043] 當然,本發(fā)明實施例提供的方案不限于通過FPGA執(zhí)行并行計算,還可以是通過中 央處理器CPU執(zhí)行。
[0044] 可選地,在上述圖1對應的實施例或第一個可選實施例的基礎上,本發(fā)明實施例 提供的哈夫曼解碼的方法的第二個可選實施例中,所述將所述待解碼碼字分別與每個碼長 對應的碼字最小值進行比較,可以包括:
[00