《電子技術應用》
您所在的位置:首頁 > 可編程邏輯 > 業界動態 > 基于FPGA的并行可變長解碼器的實現

基于FPGA的并行可變長解碼器的實現

2008-07-31
作者:蔣 勇, 羅玉平

  摘 要: 介紹了一種采用并行方式構建的多" title="的多">的多符號可變長碼解碼器。該解碼器通過增加結構的復雜性和對硬件資源的占用,換取可變長碼解碼的高吞吐量。這種結構突破了可變長碼碼字之間的前向依賴性,可并行偵測出Buffer中的所有可能的碼字。采用FPGA實現了這種結構。
  關鍵詞: 可變長解碼 現場可編程邏輯門陣列 硬件描述語言


  可變長編碼" title="變長編碼">變長編碼(VLC)是一種無損熵編碼,它廣泛應用于多媒體信息處理等諸多領域。在H.261/263、MPEG1/2/3等國際標準中,VLC占有重要地位。VLC的基本思想是對一組出現概率各不相同的信源符號,采用不同長度的碼字表示,對出現概率高的信源符號采用短碼字,對出現概率低的信源符號采用長碼字。Huffman編碼是一種典型的VLC,其編碼碼字的平均碼長非常接近于數據壓縮的理論極限——熵。
  可變長解碼(VLD)是VLC的逆過程,它從一組連續的碼流中提取出可變長碼字,并將之轉換為對應的信源符號。由于在VLC過程中,碼字之間通常不會加入任何分隔標識,這就造成了在解碼過程中識別碼字的困難。因此,在VLD過程中,變長碼字必須逐一識別,只有碼流中居前的碼字被識別之后,才能定位后序碼字的起始位置,這一點在很大程度上限制了VLD運行的效率。
  本文討論一種新型的VLD解碼結構,它通過并行偵測多路" title="多路">多路碼字,將Buffer中的多個可變長碼一次讀出,這將極大地提高VLD的吞吐量和執行效率。然后采用FPGA對這種并行VLD算法的結構進行驗證,最終得出相應結論。
1 算法描述
  由于碼流中的可變長碼之間具有前向依賴性,因此如何確定可變長碼碼字在連續碼流中的起始位置是VLD的關鍵所在。傳統的VLD解碼方案主要分為位串行解碼方案和位并行解碼方案兩種。
  在位串行解碼方案中,碼流逐位送入解碼器,解碼器通過逐位匹配實現可變長碼的解碼。這種過程實質上是一種建造Huffman樹的反過程,從根節點出發,直至葉子節點為止。由于這種方式采用逐位操作方式,而可變長碼的碼長又各不相同,使得碼字識別所需的運行周期也不相同。在解碼長較短的碼字時,其解碼速度較快,而在解碼長較長的碼字時,其解碼速度較慢。顯然,位串行解碼方案效率相對較低,解碼速度因碼字長度不同而不同,無法滿足某些對實時性要求較高的應用場合。
  針對位串行解碼方案的不足,多種位并行解碼方案被提出。位并行解碼方案采用并行方式工作,通過對可變長碼的碼字進行排序(Ordering)、分割(Partitioning)和簇化(Clustering),采用基于邏輯塊的匹配模式或基于樹的匹配模式來實現[1~3]。并行解碼方案大大提高了可變長碼的解碼效率,而且可以確保每個運行周期輸出一個解碼碼字,實現穩定的解碼輸出。在高級的位并行解碼方案中,還可以將解碼過程分解為若干階段,引入流水線操作,進一步提高解碼效率[4]
  在傳統的VLD解碼方案的基礎之上,采用并行操作方式,增加硬件資源和相應的控制邏輯,可實現一個運行周期輸出多個解碼碼字,使可變長碼的解碼效率進一步得到提高。
  由于可變長碼長度不同,在解碼過程中碼字存在前向依賴性。如果采用多路并行操作方式,在所有可能成為可變長碼碼字的起始位置同時進行預測,然后通過后續控制篩選出合法的碼字,就可以對多個可變長碼實現同時解碼。這就是多符號可變長并行解碼方案的基本思想。

  具體說明如下:假設某個信源符號集有K個符號,K個符號所對應的變長碼字用{0,1},k=0,…,K-1表示,這些變長碼的長度為集合L,其中最長的碼長用ln表示,最短的碼長用l1表示;具有相同碼長的碼字最多為dmax個。現采用分頁方式重新組織這些可變長碼,將具有相同碼長的碼字存入一個頁內,那么易知一個頁內最多可能擁有dmax個碼字。為了識別一個頁內的不同碼字,還需要引入頁內偏移量,然后采用線性結構將這些頁面重新組合。
  下面給出一個依據該思想重新組織信源符號的實例:
  假設可變長碼碼表如表1所示。用變長碼的長度表示頁號,用變長碼的最右一位表示頁內偏移量,重新組織符號表,如表2所示。這樣,在解可變長碼時,可以將焦點主要集中在獲取可變長碼長度和頁內偏移量的問題上來,然后再將其轉換成對應的信源符號。

?


  對于存儲在Buffer中的等待解碼的數據碼流X,用滑動窗口從中截取前N位,這里的N應當大于或等于可變長碼中最長碼字的碼長,即N≥ln。由于可變長碼最短的碼長為l1,因此在這N位碼流中,最多可包含M=[N/l1]個可變長碼。為了表示方便,這里用Wi(i=0,1,…,M-1)表示這M個可變長碼。
  顯然,對于W0,其起始位置必然為0;如果W0的碼長為L0,那么W1的起始位置則為L0;如果W1的碼長為L1,那么W2的起始位置為L0+L1,依此類推。由于在解碼開始時,L0的取值無法明確,其可能取值范圍是l1≤L0≤Ln,因此每個Wi的可能起始位置分別由一組值組成。
  為了實現并行解碼,采用多個可變長碼檢測單元從所有可能的起始位置同時偵測,一旦W0的碼長L0被偵測出,就可以從所有已解碼的可能的變長碼中找出W1,并確定W1的碼長L1,由此W2的起始位置也就得以確定。依此類推,最多可逐次將Wi(i=0,1,…,M-1)個變長碼解出。
  每個Wi的解碼過程只比Wi-1的解碼過程多一個加法操作的延遲,相對于變長碼的識別,加法操作的延遲非常的小。當然,如果滑動窗口N的取值過大,每個Wi之間的加法操作的延遲將累加,這將降低解碼的整體效率。因此對于滑動窗口N的選擇,需要結合實際應用中可變長碼編碼的特點來權衡。
  設某個待解碼流為B={110110100011000011001111, ...}。這里采用長度N=12的滑動窗口進行碼流提取,由于變長碼的長度從2~8不等,因此每個運行周期至少可以解碼出1個碼字,最多可解碼出6個碼字,這6個變長碼字可能的起始位置分別為W0:{0};W1:{2,3,4,5,6,7,8};W2:{4,5,6,7,8,9,10};W3:{6,7,8,9,10};W4:{8,9,10};W5:{10}。
  綜合起來,可能成為該可變長碼起始位置的集合為{0,2,3,4,5,6,7,8,9,10},因此在應用上共需要10個可變長碼檢測單元并行執行。
2 實現與驗證
  多碼字并行解碼方法實現的關鍵在于解碼過程的并行性,采用硬件方案實現起來并不難。上例中10個可變長碼檢測單元可采用經典的位并行解碼方案實現,因為位并行解碼方案能夠保證不同長度碼字的輸出時間基本相同,為其后的操作帶來便利。在本文中,采用基于查找表" title="查找表">查找表的方式來實現。
  碼字檢測單元所檢測到的可變長碼的碼長及頁內偏移量(這里采用碼字的最右位作為頁內偏移量),在識別過程中可能存在沒有任何有效碼字的情況。為此,增加了一位有效狀態位,作為輸出是否有效的標志。變長碼檢測單元CD的結構框圖如圖1所示。
  由于前一個有效碼字Wi-1的碼長控制著碼字Wi的選取,而對應Wi-1的檢測單元CDi-1輸出了Wi-1的碼長,因此在實現上可以采用將CDi-1的輸出作為有效碼字Wi選取的控制位,它通過控制一個多路選擇器MUX,從所有對應可能是Wi起始位置的CD輸出中選取有效的輸出作為有效碼字Wi。在有效碼字Wi被成功識別后,需要將其碼長即CDi的輸出與CDi-1的輸出相加,作為有效碼字選擇的控制。這些功能通過一個復合的多路復用器" title="多路復用器">多路復用器-加法器MA實現,多路復用器-加法器MA的結構如圖2所示。


  在所有有效碼字的起始位置被識別后,根據對應CD單元的輸出,即碼長信息和頁內偏移量,可以通過查表將對應的碼長數據轉換成相應的信源符號或存儲相應信源符號的地址。這些功能由信號轉換單元SYMBOL完成。
  根據上面的討論,設計出用于上例的多符號并行解碼器,其結構圖如圖3所示。


  為了驗證這種這種結構,采用FPGA器件實現它,選擇的是一片Xilinx xc2s400e-6ft256器件,其規模為145000門。在這里,采用VHDL語言進行RTL級描述,利用XST進行綜合,并在ModelSim5.8中進行仿真。結果驗證正確,其仿真結果如圖4所示。


  實驗表明,系統允許最大時鐘頻率為44.172MHz,占用了197個Slice(4%),74個Slice Flip Flops(<1%),347個四輸入查找表(12%)和1個全局時鐘(25%)。
參考文獻
1 Hashemian R. Design and Hardware Implementation of a Memory Efficient Huffman Decoding. IEEE Consumer Elec., 1994;40(3):345~352
2 S M Lei and M T Sun.An Entropy Coding System for Digital HDTV Applications. IEEE Trans. Circuits Syst.Video Technol., 1991;(3):147~155
3 S B Choi and M H Lee.High speed pattern matching for a fast Huffman decoder. IEEE Trans. Consurmer Electron,1995; 41(2):97~103
4 M K Rudberd and L Wanhammar. New Approaches to High Speed Huffman Decoding. IEEE Int.Symp. Circuits Syst., 1996;2(5):149~152
5 Nikara, Vassiliadis, Takala, Sima, Liuha. Parallel Multiple-Symbol Variable-Length Decoding.Computer Design: VLSI in Computers and Processors, 2002:126~131
6 黎 文,李蜀雄,朱維樂.采用多級查找表的定/變長解碼引擎. 信號處理,2002;6(12)
7 Spartan-IIE Data Sheet. Xilinx, 2003

本站內容除特別聲明的原創文章之外,轉載內容只為傳遞更多信息,并不代表本網站贊同其觀點。轉載的所有的文章、圖片、音/視頻文件等資料的版權歸版權所有權人所有。本站采用的非本站原創文章及圖片等內容無法一一聯系確認版權者。如涉及作品內容、版權和其它問題,請及時通過電子郵件或電話通知我們,以便迅速采取適當措施,避免給雙方造成不必要的經濟損失。聯系電話:010-82306118;郵箱:aet@chinaaet.com。
亚洲一区二区欧美_亚洲丝袜一区_99re亚洲国产精品_日韩亚洲一区二区
亚洲激情成人| 亚洲一区二区精品在线观看| 日韩一区二区免费看| 亚洲福利久久| 在线看欧美日韩| 在线免费观看欧美| 今天的高清视频免费播放成人| 国产免费观看久久| 国产精品私人影院| 国产精品午夜视频| 国产精品毛片a∨一区二区三区|国| 欧美日韩精品系列| 欧美日韩福利在线观看| 欧美日韩第一区| 欧美日韩精品二区第二页| 欧美日韩精品免费看| 欧美日韩情趣电影| 欧美日韩免费观看一区二区三区 | 亚洲韩日在线| 91久久精品日日躁夜夜躁欧美| 亚洲人成7777| 99视频+国产日韩欧美| 一区二区三区四区国产| 亚洲作爱视频| 亚洲图片激情小说| 亚洲欧美文学| 久久国产主播| 亚洲人在线视频| 99视频精品全部免费在线| 亚洲婷婷在线| 欧美影院在线| 久久影音先锋| 欧美精品一区二区三区在线看午夜| 欧美日韩高清在线播放| 欧美日韩中文另类| 国产伦精品一区二区三| 国产亚洲精品v| 亚洲成色777777女色窝| 亚洲麻豆av| 亚洲女性喷水在线观看一区| 欧美一区二区三区喷汁尤物| 亚洲国产成人久久| 99精品国产99久久久久久福利| 亚洲一区视频在线观看视频| 欧美在线免费一级片| 玖玖精品视频| 欧美日韩直播| 国产一区二区成人久久免费影院| 在线观看91精品国产麻豆| 日韩亚洲欧美成人| 亚洲欧美在线高清| 亚洲精品久久久久久下一站 | 欧美四级剧情无删版影片| 国产精品亚洲欧美| 伊伊综合在线| 亚洲视频在线二区| 亚洲第一伊人| 亚洲一区二区三区四区视频| 久久香蕉国产线看观看av| 欧美日韩999| 国产亚洲激情在线| 日韩视频在线一区二区三区| 欧美一区二区三区四区在线观看| 日韩亚洲欧美综合| 久久精品视频99| 欧美日韩高清不卡| 韩日视频一区| 国产精品99久久99久久久二8| 亚洲国产精品v| 亚洲综合99| 欧美成人午夜激情| 国产欧美一区二区精品性色 | 99精品国产在热久久| 亚洲成人在线视频网站| 亚洲午夜伦理| 欧美福利在线观看| 国产亚洲aⅴaaaaaa毛片| 日韩视频在线免费| 91久久精品国产91久久性色| 欧美一区二区在线| 欧美午夜精品一区二区三区| 亚洲高清精品中出| 欧美影院在线播放| 午夜免费电影一区在线观看 | 国产精品成人免费| 亚洲国产精品欧美一二99| 小处雏高清一区二区三区| 亚洲调教视频在线观看| 噜噜噜躁狠狠躁狠狠精品视频| 国产精品入口麻豆原神| 亚洲美洲欧洲综合国产一区| 亚洲激情视频网| 久久精品伊人| 国产精品久久波多野结衣| 亚洲另类自拍| 亚洲免费观看视频| 久久综合国产精品| 国产在线视频欧美| 亚洲欧美国产日韩天堂区| 亚洲一区欧美激情| 欧美日韩精品在线播放| 亚洲国产1区| 亚洲精品国产精品久久清纯直播| 久久人人97超碰国产公开结果| 国产欧美精品一区| 亚洲欧美不卡| 欧美尤物一区| 国产欧美日韩免费| 亚洲欧美日韩精品久久亚洲区| 亚洲图片在线| 欧美日韩三级| 日韩一级不卡| 亚洲视频axxx| 欧美午夜片在线观看| 日韩视频在线一区二区| 夜夜狂射影院欧美极品| 欧美日韩不卡一区| 亚洲剧情一区二区| 在线视频欧美日韩| 欧美性一区二区| 亚洲午夜国产一区99re久久| 亚洲欧美一区二区原创| 国产精品视频久久| 午夜精品久久久久久久白皮肤| 性视频1819p久久| 国产区精品视频| 欧美一区免费| 久久裸体视频| 在线播放不卡| 99国产精品久久久久老师| 欧美日韩另类一区| 亚洲天堂成人在线观看| 午夜一级久久| 国产一区二区中文| 亚洲国产精品一区在线观看不卡| 美国三级日本三级久久99| 亚洲国产精品v| 在线一区视频| 国产精品日韩一区| 欧美亚洲网站| 久久婷婷国产麻豆91天堂| 亚洲电影免费观看高清完整版在线| 91久久久久久| 欧美色图麻豆| 亚洲欧美一区二区原创| 久久免费99精品久久久久久| 亚洲国产成人在线播放| 亚洲视屏一区| 国产日本亚洲高清| 亚洲激情网站| 欧美日韩亚洲一区二区三区四区| 亚洲视频在线观看一区| 久久精品视频在线播放| 在线高清一区| 亚洲午夜激情网页| 国产一区自拍视频| 一本大道久久精品懂色aⅴ| 国产精品稀缺呦系列在线| 亚洲国产成人91精品| 欧美日韩国产成人高清视频| 亚洲一区二区免费看| 久久在线视频在线| 亚洲美女视频网| 久久xxxx精品视频| 亚洲国产精品免费| 欧美亚洲综合网| 91久久极品少妇xxxxⅹ软件| 亚洲欧美精品伊人久久| 今天的高清视频免费播放成人 | 欧美肥婆在线| 亚洲欧美日韩精品久久久| 欧美成人午夜77777| 亚洲午夜一区二区| 免费观看久久久4p| 亚洲午夜伦理| 欧美成人国产| 亚洲综合丁香| 欧美激情在线| 久久av二区| 国产精品福利在线观看| 亚洲激情在线视频| 国产精品美女主播| 91久久精品国产91性色tv| 国产精品久久久久久久久久免费| 久久精品一区二区三区不卡牛牛| 国产精品v日韩精品| 最新中文字幕一区二区三区| 国产精品一区二区三区成人| 日韩小视频在线观看| 国产一区二区三区在线播放免费观看 | 夜夜爽www精品| 精品成人一区二区| 先锋影音国产一区| 亚洲开发第一视频在线播放| 蜜臀a∨国产成人精品| 欧美一级片久久久久久久| 国产精品国产精品国产专区不蜜| 91久久精品国产91久久性色| 国产亚洲精品久久久久动| 亚洲一区精品在线|