自適應(yīng)算術(shù)編碼的FPGA
發(fā)布時(shí)間:2007/8/20 0:00:00 訪問次數(shù):890
算術(shù)編碼是一種無失真的編碼方法,能有效地壓縮信源冗余度,屬于熵編碼的一種。算術(shù)編碼的一個(gè)重要特點(diǎn)就是可以按分?jǐn)?shù)比特逼近信源熵,突破了Haffman 編碼每個(gè)符號(hào)只不過能按整數(shù)個(gè)比特逼近信源熵的限制。對(duì)信源進(jìn)行算術(shù)編碼,往往需要兩個(gè)過程,第一個(gè)過程是建立信源概率表,第二個(gè)過程是對(duì)信源發(fā)出的符號(hào)序列進(jìn)行掃描編碼。而自適應(yīng)算術(shù)編碼在對(duì)符號(hào)序列進(jìn)行掃描的過程中,可一次完成上述兩個(gè)過程,即根據(jù)恰當(dāng)?shù)母怕使烙?jì)模型和當(dāng)前符號(hào)序列中各符號(hào)出現(xiàn)的頻率,自適應(yīng)地調(diào)整各符號(hào)的概率估計(jì)值,同時(shí)完成編碼。盡管從編碼效率上看不如已知概率表的情況,但正是由于自適應(yīng)算術(shù)編碼具有實(shí)時(shí)性好、靈活性高、適應(yīng)性強(qiáng)等特點(diǎn),在圖像壓縮、視頻圖像編碼等領(lǐng)域都得到了廣泛的應(yīng)用。
現(xiàn)場(chǎng)可編程門陣列(FPGA)是一種新興的可編程邏輯器件,具有更高的密度、更快的工作速度和更大的編程靈活性,被廣泛應(yīng)用于各種電子類產(chǎn)品中。而硬件描述語言(HDL)是一種快速的電路設(shè)計(jì)工具,其功能涵蓋了電路描述、電路合成、電路仿真等的三大電路設(shè)計(jì)工作。VHDL 是HDL 的一種,因其簡(jiǎn)單易懂而被廣泛使用。本文采用VHDL 編程實(shí)現(xiàn)了自適應(yīng)算術(shù)編碼,為算術(shù)編碼器的硬件實(shí)現(xiàn)提供了借鑒。
1 算術(shù)編碼的基本原則
實(shí)現(xiàn)算術(shù)編碼首先需要知道信源發(fā)出每個(gè)符號(hào)的概率大小,然后再掃描符號(hào)序列,依次分割相應(yīng)的區(qū)間,最終得到符號(hào)序列所對(duì)應(yīng)的碼字。整個(gè)編碼需要兩個(gè)過程,即概率模型建立過程和掃描編碼過程。
算術(shù)編碼的基本原理是:根據(jù)信源可能發(fā)現(xiàn)的不同符號(hào)序列的概率,把[0,1]區(qū)間劃分為互不重疊的子區(qū)間,子區(qū)間的寬度恰好是各符號(hào)序列的概率。這樣信源發(fā)出的不同符號(hào)序列將與各子區(qū)間一一對(duì)應(yīng),因此每個(gè)子區(qū)間內(nèi)的任意一個(gè)實(shí)數(shù)都可以用來表示對(duì)應(yīng)的符號(hào)序列,這個(gè)數(shù)就是該符號(hào)序列所對(duì)應(yīng)的碼字。顯然,一串符號(hào)序列發(fā)生的概率越大,對(duì)應(yīng)的子區(qū)間就越寬,要表達(dá)它所用的比特?cái)?shù)就減少,因而相應(yīng)的碼字就越短。
圖1 給出一個(gè)實(shí)現(xiàn)算術(shù)編碼的示例。要編碼的是一個(gè)來自四符號(hào)信源{A,B,C,D}的由五個(gè)符號(hào)組成的符號(hào)序列:ABBCD。假設(shè)已知各信源符號(hào)的概率分別為:P(A)=0.2,P(B)=0.4,P(C)=0.2,P(D)=0.2。編碼時(shí),首先根據(jù)各個(gè)信源符號(hào)的概率將區(qū)間[0,1]。分成四個(gè)子區(qū)間。符號(hào)A 對(duì)應(yīng)[0,0.2],符號(hào)B 對(duì)應(yīng)[0.2,0.6],符號(hào)C 對(duì)應(yīng)[0.6,0.8],符號(hào)D 對(duì)應(yīng)[0.8,1.0]。符號(hào)序列中第一個(gè)符號(hào)是A,其對(duì)應(yīng)的區(qū)間為[0,0.2],接下來將這個(gè)區(qū)間擴(kuò)展為整個(gè)高度,再根據(jù)各個(gè)信源符號(hào)的概率將這個(gè)間擴(kuò)展為整個(gè)高度,再根據(jù)各個(gè)信源符號(hào)的概率將這個(gè)新區(qū)間分成四段;第二個(gè)符號(hào)是B,它對(duì)應(yīng)新的子區(qū)間的第二個(gè)子區(qū)間,即對(duì)應(yīng)區(qū)間[0.04,0.12];再將該區(qū)間擴(kuò)展為整個(gè)高度,再根據(jù)這個(gè)過程直接最后一個(gè)符號(hào)得到一個(gè)區(qū)間[0.08032,0.0816],這樣該區(qū)間內(nèi)的任何一個(gè)實(shí)數(shù)就可以表示整個(gè)符號(hào)序列,如0.081。
2 自適應(yīng)算術(shù)編碼的基本原理
自適應(yīng)算術(shù)編碼在一次掃描中可完成兩個(gè)過程,即概率模型建立過來和掃描編碼過程。自適應(yīng)算術(shù)編碼在掃描符號(hào)序列前并不知道各符號(hào)的統(tǒng)計(jì)概率,這時(shí)假定每個(gè)符號(hào)的概率相等,并平均分配區(qū)間[0,1]。然后在掃描符號(hào)序列的過程中不斷調(diào)整各個(gè)符號(hào)的概率。同樣假定要編碼的是一個(gè)來自四符號(hào)信源{A,B,C,D}的五個(gè)符號(hào)組成的符號(hào)序列:ABBCD。編碼開始前首先將區(qū)間[0,1]等分為四個(gè)子區(qū)間,分別對(duì)應(yīng)A,B,C,D 四個(gè)符號(hào)。掃描符號(hào)序列,第一個(gè)符號(hào)是A,對(duì)應(yīng)區(qū)間為[0,0.25],然后改變各個(gè)符號(hào)的統(tǒng)計(jì)概率,符號(hào)A 的概率為2/5,符號(hào)B 的概率為1/5,符號(hào)C 的概率為1/5,符號(hào)D 的概率為1/5,再將區(qū)間[0,0.25]等分為五份,A 占兩份,其余各占一份。接下來對(duì)第二個(gè)符號(hào)B 進(jìn)行編碼,對(duì)應(yīng)的區(qū)間為[0.1,0.15],再重復(fù)前面的概率調(diào)整和區(qū)間劃分過程。具體的概率調(diào)整見表1。
表1 自適應(yīng)算術(shù)編碼的概率調(diào)整概率
隨著符號(hào)序列中符號(hào)個(gè)數(shù)的不斷增多,自由適應(yīng)算術(shù)編碼估計(jì)得到的各符號(hào)的概率將趨于各符號(hào)的真實(shí)概率。
3 自適應(yīng)算術(shù)編碼的FPGA 實(shí)現(xiàn)
3.1 總體設(shè)計(jì)
在利用FPGA 實(shí)現(xiàn)自適應(yīng)算術(shù)編碼的過程中,首先遇到的問題就是將浮點(diǎn)運(yùn)算轉(zhuǎn)化為定點(diǎn)運(yùn)算,即將[0,1]區(qū)間的一個(gè)小數(shù)映射為一個(gè)便于硬件實(shí)現(xiàn)的定點(diǎn)數(shù)。考慮到硬件實(shí)現(xiàn)的簡(jiǎn)便性,本文中將[0,1]之間的浮點(diǎn)數(shù)與[0,256]之間的定點(diǎn)數(shù)對(duì)應(yīng)。相應(yīng)的對(duì)應(yīng)關(guān)系如表2 所示。
表2 浮點(diǎn)與定點(diǎn)之間的關(guān)系浮點(diǎn)
編碼器在實(shí)現(xiàn)編碼的整個(gè)過程中按照耦合弱、聚合強(qiáng)的原則分為四個(gè)模塊:修改碼表、計(jì)算確定區(qū)間、并行編碼、串行輸出。四個(gè)模塊相對(duì)獨(dú)立,通過輸入、輸出信號(hào)使其構(gòu)成一個(gè)整體。系統(tǒng)的頂層結(jié)構(gòu)如圖2 所示。
3.2 碼表的設(shè)計(jì)及修改
自適應(yīng)算術(shù)編碼器可以在許
算術(shù)編碼是一種無失真的編碼方法,能有效地壓縮信源冗余度,屬于熵編碼的一種。算術(shù)編碼的一個(gè)重要特點(diǎn)就是可以按分?jǐn)?shù)比特逼近信源熵,突破了Haffman 編碼每個(gè)符號(hào)只不過能按整數(shù)個(gè)比特逼近信源熵的限制。對(duì)信源進(jìn)行算術(shù)編碼,往往需要兩個(gè)過程,第一個(gè)過程是建立信源概率表,第二個(gè)過程是對(duì)信源發(fā)出的符號(hào)序列進(jìn)行掃描編碼。而自適應(yīng)算術(shù)編碼在對(duì)符號(hào)序列進(jìn)行掃描的過程中,可一次完成上述兩個(gè)過程,即根據(jù)恰當(dāng)?shù)母怕使烙?jì)模型和當(dāng)前符號(hào)序列中各符號(hào)出現(xiàn)的頻率,自適應(yīng)地調(diào)整各符號(hào)的概率估計(jì)值,同時(shí)完成編碼。盡管從編碼效率上看不如已知概率表的情況,但正是由于自適應(yīng)算術(shù)編碼具有實(shí)時(shí)性好、靈活性高、適應(yīng)性強(qiáng)等特點(diǎn),在圖像壓縮、視頻圖像編碼等領(lǐng)域都得到了廣泛的應(yīng)用。
現(xiàn)場(chǎng)可編程門陣列(FPGA)是一種新興的可編程邏輯器件,具有更高的密度、更快的工作速度和更大的編程靈活性,被廣泛應(yīng)用于各種電子類產(chǎn)品中。而硬件描述語言(HDL)是一種快速的電路設(shè)計(jì)工具,其功能涵蓋了電路描述、電路合成、電路仿真等的三大電路設(shè)計(jì)工作。VHDL 是HDL 的一種,因其簡(jiǎn)單易懂而被廣泛使用。本文采用VHDL 編程實(shí)現(xiàn)了自適應(yīng)算術(shù)編碼,為算術(shù)編碼器的硬件實(shí)現(xiàn)提供了借鑒。
1 算術(shù)編碼的基本原則
實(shí)現(xiàn)算術(shù)編碼首先需要知道信源發(fā)出每個(gè)符號(hào)的概率大小,然后再掃描符號(hào)序列,依次分割相應(yīng)的區(qū)間,最終得到符號(hào)序列所對(duì)應(yīng)的碼字。整個(gè)編碼需要兩個(gè)過程,即概率模型建立過程和掃描編碼過程。
算術(shù)編碼的基本原理是:根據(jù)信源可能發(fā)現(xiàn)的不同符號(hào)序列的概率,把[0,1]區(qū)間劃分為互不重疊的子區(qū)間,子區(qū)間的寬度恰好是各符號(hào)序列的概率。這樣信源發(fā)出的不同符號(hào)序列將與各子區(qū)間一一對(duì)應(yīng),因此每個(gè)子區(qū)間內(nèi)的任意一個(gè)實(shí)數(shù)都可以用來表示對(duì)應(yīng)的符號(hào)序列,這個(gè)數(shù)就是該符號(hào)序列所對(duì)應(yīng)的碼字。顯然,一串符號(hào)序列發(fā)生的概率越大,對(duì)應(yīng)的子區(qū)間就越寬,要表達(dá)它所用的比特?cái)?shù)就減少,因而相應(yīng)的碼字就越短。
圖1 給出一個(gè)實(shí)現(xiàn)算術(shù)編碼的示例。要編碼的是一個(gè)來自四符號(hào)信源{A,B,C,D}的由五個(gè)符號(hào)組成的符號(hào)序列:ABBCD。假設(shè)已知各信源符號(hào)的概率分別為:P(A)=0.2,P(B)=0.4,P(C)=0.2,P(D)=0.2。編碼時(shí),首先根據(jù)各個(gè)信源符號(hào)的概率將區(qū)間[0,1]。分成四個(gè)子區(qū)間。符號(hào)A 對(duì)應(yīng)[0,0.2],符號(hào)B 對(duì)應(yīng)[0.2,0.6],符號(hào)C 對(duì)應(yīng)[0.6,0.8],符號(hào)D 對(duì)應(yīng)[0.8,1.0]。符號(hào)序列中第一個(gè)符號(hào)是A,其對(duì)應(yīng)的區(qū)間為[0,0.2],接下來將這個(gè)區(qū)間擴(kuò)展為整個(gè)高度,再根據(jù)各個(gè)信源符號(hào)的概率將這個(gè)間擴(kuò)展為整個(gè)高度,再根據(jù)各個(gè)信源符號(hào)的概率將這個(gè)新區(qū)間分成四段;第二個(gè)符號(hào)是B,它對(duì)應(yīng)新的子區(qū)間的第二個(gè)子區(qū)間,即對(duì)應(yīng)區(qū)間[0.04,0.12];再將該區(qū)間擴(kuò)展為整個(gè)高度,再根據(jù)這個(gè)過程直接最后一個(gè)符號(hào)得到一個(gè)區(qū)間[0.08032,0.0816],這樣該區(qū)間內(nèi)的任何一個(gè)實(shí)數(shù)就可以表示整個(gè)符號(hào)序列,如0.081。
2 自適應(yīng)算術(shù)編碼的基本原理
自適應(yīng)算術(shù)編碼在一次掃描中可完成兩個(gè)過程,即概率模型建立過來和掃描編碼過程。自適應(yīng)算術(shù)編碼在掃描符號(hào)序列前并不知道各符號(hào)的統(tǒng)計(jì)概率,這時(shí)假定每個(gè)符號(hào)的概率相等,并平均分配區(qū)間[0,1]。然后在掃描符號(hào)序列的過程中不斷調(diào)整各個(gè)符號(hào)的概率。同樣假定要編碼的是一個(gè)來自四符號(hào)信源{A,B,C,D}的五個(gè)符號(hào)組成的符號(hào)序列:ABBCD。編碼開始前首先將區(qū)間[0,1]等分為四個(gè)子區(qū)間,分別對(duì)應(yīng)A,B,C,D 四個(gè)符號(hào)。掃描符號(hào)序列,第一個(gè)符號(hào)是A,對(duì)應(yīng)區(qū)間為[0,0.25],然后改變各個(gè)符號(hào)的統(tǒng)計(jì)概率,符號(hào)A 的概率為2/5,符號(hào)B 的概率為1/5,符號(hào)C 的概率為1/5,符號(hào)D 的概率為1/5,再將區(qū)間[0,0.25]等分為五份,A 占兩份,其余各占一份。接下來對(duì)第二個(gè)符號(hào)B 進(jìn)行編碼,對(duì)應(yīng)的區(qū)間為[0.1,0.15],再重復(fù)前面的概率調(diào)整和區(qū)間劃分過程。具體的概率調(diào)整見表1。
表1 自適應(yīng)算術(shù)編碼的概率調(diào)整概率
隨著符號(hào)序列中符號(hào)個(gè)數(shù)的不斷增多,自由適應(yīng)算術(shù)編碼估計(jì)得到的各符號(hào)的概率將趨于各符號(hào)的真實(shí)概率。
3 自適應(yīng)算術(shù)編碼的FPGA 實(shí)現(xiàn)
3.1 總體設(shè)計(jì)
在利用FPGA 實(shí)現(xiàn)自適應(yīng)算術(shù)編碼的過程中,首先遇到的問題就是將浮點(diǎn)運(yùn)算轉(zhuǎn)化為定點(diǎn)運(yùn)算,即將[0,1]區(qū)間的一個(gè)小數(shù)映射為一個(gè)便于硬件實(shí)現(xiàn)的定點(diǎn)數(shù)?紤]到硬件實(shí)現(xiàn)的簡(jiǎn)便性,本文中將[0,1]之間的浮點(diǎn)數(shù)與[0,256]之間的定點(diǎn)數(shù)對(duì)應(yīng)。相應(yīng)的對(duì)應(yīng)關(guān)系如表2 所示。
表2 浮點(diǎn)與定點(diǎn)之間的關(guān)系浮點(diǎn)
編碼器在實(shí)現(xiàn)編碼的整個(gè)過程中按照耦合弱、聚合強(qiáng)的原則分為四個(gè)模塊:修改碼表、計(jì)算確定區(qū)間、并行編碼、串行輸出。四個(gè)模塊相對(duì)獨(dú)立,通過輸入、輸出信號(hào)使其構(gòu)成一個(gè)整體。系統(tǒng)的頂層結(jié)構(gòu)如圖2 所示。
3.2 碼表的設(shè)計(jì)及修改
自適應(yīng)算術(shù)編碼器可以在許
熱門點(diǎn)擊
- 12位A/D轉(zhuǎn)換器ADS7804與51單片機(jī)
- 關(guān)注教室擴(kuò)聲設(shè)備及音效問題
- Altera PCI Express IP內(nèi)
- 10位串行模數(shù)轉(zhuǎn)換芯片AD7810的原理及應(yīng)
- 串行口應(yīng)用編程實(shí)例
- 高速12位模數(shù)轉(zhuǎn)換器AD7892及其在圖像采
- 自適應(yīng)算術(shù)編碼的FPGA
- 高精度AD采集芯片ADS7809
- Atmel可再編程抗輻射FPGA芯片內(nèi)置SE
- 12位并行輸出AD轉(zhuǎn)換器AD7492
推薦技術(shù)資料
- 電動(dòng)吸錫烙鐵
- 用12V/2A的電源為電磁閥和泵供電,F(xiàn)QPF9N50... [詳細(xì)]
- CV/CC InnoSwitch3-AQ 開
- URF1DxxM-60WR3系
- 1-6W URA24xxN-x
- 閉環(huán)磁通門信號(hào)調(diào)節(jié)芯片NSDRV401
- SK-RiSC-SOM-H27X-V1.1應(yīng)
- RISC技術(shù)8位微控制器參數(shù)設(shè)
- 多媒體協(xié)處理器SM501在嵌入式系統(tǒng)中的應(yīng)用
- 基于IEEE802.11b的EPA溫度變送器
- QUICCEngine新引擎推動(dòng)IP網(wǎng)絡(luò)革新
- SoC面世八年后的產(chǎn)業(yè)機(jī)遇
- MPC8xx系列處理器的嵌入式系統(tǒng)電源設(shè)計(jì)
- dsPIC及其在交流變頻調(diào)速中的應(yīng)用研究