1. (217)卷積編碼的matlab實現
1955 年Elias 發明了卷積碼。它吵亮也是將k 個信息元編成n 個碼元,但k 和n 通常很小,特別適合以串列形式進行傳輸,時延小。與分組碼不同,卷積碼編碼後的n 個碼元不僅與當前段的k 個信息元有關,還與前面的N ?1段信息有關,各碼字間不再是相互獨立的,碼字中互相關聯的碼元個數為n ? N 。同樣,在解碼過程中不僅從此時刻收到的碼元中提取解碼信息,而且還利用以後若干時刻收到的碼字提供有關信息櫻鋒。卷積碼的糾錯性能隨k 的增加而增大,而差錯率隨N 的增加而指數下降。由於卷積碼的編碼過程充分利用了碼字間的相關性,因此在碼率和復雜性相同的條件下,卷積碼的性能優於分組碼。但卷積碼沒有分組碼那樣嚴密的數學結構和數學分析手段,脊碰晌目前大多是通過計算機進行好碼的搜索。
2. 卷積碼的解碼方法
若信道干擾序列為,其中。接收序列為
其中和。這里「+」為模 2 運算(q=p元碼按模p運算)。解碼就是根據編碼規則和信道干擾的統計特性,對信息序列u(x)作出估值的方法。常用的有三類解碼方法,即代數解碼、維特比解碼和序貫解碼。
⒈代數
代數解碼是將卷積碼的一個編碼約束長度的碼段看作是[n0(m+1),k0(m+1)]線性分組碼,每次根據(m+1)分支長接收數字,對相應的最早的那個分支上的信息數字進行估計,然後向前推進一個分支。上例中信息序列 =(10111),相應的碼序列 c=(11100001100111)。若接收 序列R=(10100001110111),先根據R的前三個分支(101000)和碼樹中前三個分支長的所有可能的 8條路徑(000000…)、(000011…)、(001110…)、(001101…)、(111011…)、(111000…)、(110101…)和(110110…)進行比較,可知(111001)與接收序列(101000)的距離最小,於是判定第 0分支的信息數字為 0。然後以R的第 1~3分支數字(100001)按同樣方法判決,依此類推下去,最後得到信息序列的估值為=(10111),遂實現了糾錯。這種解碼法,解碼時採用的接收數字長度或解碼約束長度為(m+1)n0,所以只能糾正不多於(dmin-1)/2個錯誤(n長上的)。實用中多採用反饋擇多邏輯解碼法實現。
⒉維特比
維特比解碼過程
維特比解碼是根據接收序列在碼的格圖上找出一條與接收序列距離(或其他量度)為最小的一種演算法。它和運籌學中求最短路徑的演算法相類似。若接收序列為R=(10100101100111),解碼器從某個狀態,例如從狀態ɑ出發,每次向右延伸一個分支(對於l<L,從每個節點出發都有 2=2種可能的延伸,其中L是信息序列段數,對l≥L,只有一種可能),並與接收數字相應分支進行比較,計算它們之間的距離,然後將計算所得距離加到被延伸路徑的累積距離值中。對到達每個狀態的各條路徑(有2=2條)的距離累積值進行比較,保留距離值最小的一條路徑,稱為倖存路徑(當有兩條以上取最小值時,可任取其中之一),解碼過程如圖。圖中標出到達各級節點的倖存路徑的距離累積值。對給定 R的估值序列為=(10111)。這種演算法所保留的路徑與接收序列之間的似然概率為最大,所以又稱為最大似然解碼。這種解碼的解碼 約束長度常為編碼約束長度的數倍,因而可以糾正不多於(df/2)個錯誤。
維特比解碼器的復雜性隨m呈指數增大。實用中m不大於10。它在衛星和深空通信中有廣泛的應用。在解決碼間串擾和數據壓縮中也可應用。
⒊ 序貫解碼
序貫解碼是根據接收序列和編碼規則,在整個碼樹中搜索(既可以前進,也可以後退)出一條與接收序列距離(或其他量度)最小的一種演算法。由於它的解碼器的復雜性隨m值增大而線性增長,在實用中可以選用較大的m值(如20~40)以保證更高的可靠性。許多深空和海事通信系統都採用序貫解碼。
3. 卷積碼的編碼原理
卷積碼編碼器
以二元碼為例,編碼器如圖。輸入信息序列為u=(u0,u1,…),其多項式表示為u(x)=u0+u1x+…+ulxl+…。編碼器的連接可用多項式表示為g(1,1)(x)=1+x+x2和g(1,2)(x)=1+x2,稱為碼 的子生成多項式。它們的系數矢量g(1,1)=(111)和g(1,2)=(101)稱作碼的子生成元。以子生成多項式為陣元構成的多項式矩陣G(x)=[g(1,1)(x),g(1,2)(x)],稱為碼的生成多項式矩陣。
4. 咬尾卷積碼的原理
1、咬尾卷積碼的原理是尾卷積碼保證格形起始和終止於某個相同的狀態.它具有不要求傳輸任何額外比特的優點。Viterbi解碼器受格形狀態概率和分支度量的約束。傳輸的數據通常由一串0比特結尾,以強制編碼器回到0狀態,這樣澤碼器能從已知的狀態開始解碼,但是信道必須傳輸額外的符號。
咬尾卷積碼的約束長度為7,編碼率為1/3。卷積碼的編碼器配置如圖l所示。編碼器的移位寄存器的初始值應當沒置為輸入流的最後6位信息比特,這樣移位寄存器的初始和最終狀態保持一致。若用S0,S1,S2,...,S5表示編碼器的6個移位寄存器,則移位寄存器的初始值應當設置為:Si=Ck(k一1一i),編碼輸出流d[0],d[1],d[2]分別對應於第l、第2和第3個比特 。
2、咬尾技術具有以下優點:
●不影響編碼率,總的傳輸比特為N/R;
●不影響卷積碼的錯誤校驗屬性。
這項技術也有以下缺點:
●澤碼延遲增加了,因為必須確定正確的起始
狀態和回溯的初始狀態;
●接收器復雜度略微增加。
5. 什麼是卷積編碼
卷積碼是將k個信息比特編成n個比特,但k和n通常很小,特別適合以串列形式進行傳輸,時延小。
卷積碼定義:
若以(n,k,m)來描述卷積碼,其中k為每次輸入到卷積編碼器的bit數,n為每個k元組碼字對應的卷積碼輸出n元組碼字,m為編碼存儲度,也就是卷積編碼器的k元組的級數,稱m+1= K為編碼約束度m稱為約束長度。卷積碼將k元組輸入碼元編成n元組輸出碼元,但k和n通常很小,特別適合以串列形式進
卷積碼的編碼器
行 傳輸,時延小。與分組碼不同,卷積碼編碼生成的n元組元不僅與當前輸入的k元組有關,還與前面m-1個輸入的k元組有關,編碼過程中互相關聯的碼元個數為n*m。卷積碼的糾錯性能隨m的增加而增大,而差錯率隨N的增加而指數下降。在編碼器復雜性相同的情況下,卷積碼的性能優於分組碼。
編碼原理:
卷積碼編碼器
以二元碼為例,編碼器如圖。輸入信息序列為u=(u0,u1,…),其多項式表示為u(x)=u0+u1x+…+ulxl+…。編碼器的連接可用多項式表示為g(1,1)(x)=1+x+x2和g(1,2)(x)=1+x2,稱為碼 的子生成多項式。它們的系數矢量g(1,1)=(111)和g(1,2)=(101)稱作碼的子生成元。以子生成多項式為陣元構成的多項式矩陣G(x)=[g(1,1)(x),g(1,2)(x)],稱為碼的生成多項式矩陣。
6. 基於圖結構應用《編碼,解碼器》的設計與實現 這個畢業設計應該從什麼思路下手啊~~計算機專高手請指點
兄弟你這個論文有點難度了。不是隨便拉拉就行了。得找專業書籍慢慢找和高人指導了。
我查到點不指導有沒有用。
Turbo卷積碼(TCC)是3G無線系統中所採用的前向錯誤校正(FEC)機制的整體部分。然而,Turbo解碼器所帶來的計算負擔非常重,並不太適合採用傳統DSP或RISC處理器實現。由於現場可編程邏輯陣列(FPGA)內在的並行結構,FPGA為解決3G基站收發器中所需要的符號速率FEC和其它計算密集的任務提供了一個高性能信號處理平台基礎。
Turbo 編碼
級聯碼方案(Concatenated coding schemes)是為了通過結合兩個或更多相對簡單的分量或構造模塊碼來獲得較高的編碼增益。Turbo碼認為是對級聯碼結構的一種改進,其中採用迭代演算法對相關的碼序列進行解碼。Turbo碼是通過將兩個或更多分量碼應用到同一數據序列的不同交織版本上構成的。對於任何傳統單分量編碼,解碼器的最後一級生成的都是硬判決解碼數據位。為了使象Turbo碼這樣的級聯碼方案工作得更好,解碼演算法不應被限制為只能在解碼器間傳遞硬判決。為最好地利用每個解碼器獲得的信息,解碼演算法必須可以實現軟判決交換,而不是採用硬判決。對於採用兩個分量碼的系統,解碼的概念是指將來自一個解碼器的軟判決輸入到另一個解碼器的輸入,並將此過程重復幾次以獲得更好的判決,如圖1所示 。
3GPP Turbo 編碼器
圖2為3GPP編碼器。
輸入數據流輸入到RSC1,它為每個輸入比特生成一個對等比特(Parity Bit)。輸入數據還經過交織後由RSC2處理生成第二個對等比特流。
3GPP標準定義,輸入塊的長度在40至5114 位之間。編碼器生成一個速率為1/3的包括原始輸入位和兩個對等位的系統碼。通過打孔方法可以獲得1/2編碼速度的編碼。遞歸系統編碼器的實現比較直接,然而交織器則不那麼簡單,要比標準的卷積或塊交織器復雜。
一旦將輸入數據塊長度K 提供給編碼器以後,編碼器將計算交織矩陣行數R和列數 C,並創建相應的交織數據結構。R 和 C 是數據塊長度K的函數。在輸入符號被載入到交織矩陣以後,那麼將根據一定的順序進行行間交換和列間交換。交換模式是根據塊長度K選擇的(即依賴於K)。行和列交換完成後,通過逐列讀出交織矩陣數據就可以得到最終的交織序列。在數據讀出時需要進行刪減操作,以保證在輸出中只有正確的輸入符號,請注意,交織陣列包含的數據位通常比K個原始輸入符號要多 ,因為R C>K。然後,新的序列經過RSC2編碼生成第二個對等位流。
實現交織器的一種方法是在存儲器中存儲完整的交換序列。即,一旦K 給定,即調用一個初始化常式(運行在處理器上的軟體常式或利用FPGA中的功能單元)生成相應的交換序列,然後將這一信息存儲在存儲器中。然而,這一方法需要大量的存儲器。利用Virtex -E FPGA 技術提供的 4096位每塊的片上存儲器,將需要[5114 13/4096]=17個存儲器塊。
在我們的方法中,採用一個預處理引擎生成一個序列值(存儲),這一序列值被存儲起來,交織器地址發生器將使用這些序列值。這一硬體單元採用幾個小型數據結構(素數表)來計算所需要的序列。這一準備過程需要的時鍾周期數與信息塊的長度成比例。例如,對於K=40的塊需要280時鍾周期,而對於最大塊長度K=5114,則需要 5290個時鍾周期。該過程只需要在塊長度變化時進行。地址發生器利用這些更為緊湊的數據結構來實時生成交織地址。
3GPP Turbo 解碼器
解碼器包括兩個MAP(最大後驗概率)解碼器和幾個交織器。Turbo演算法的優良的性能源於可以在兩個MAP解碼器間共享可靠性信息(extrinsic data,外數據,或稱先驗數據)。
在我們的設計中,MAP解碼器採用的是Bahl, Cocke, Jelinek 和 Rajiv (BCJR) 演算法。BCJR演算法計算每個符號的最大後驗對數似然率,並且是一種真正的軟判決演算法。考慮到數據是以塊的形式傳輸的,因此可以在時間維中前向或反向搜索一個符號序列。對於任一序列,其出現概率都是單獨符號出現概率的乘積。由於問題是線性的,因此序列概述可以利用概率的對數和來代替。
為了與一般文獻中的習慣一致,我們將解碼迭代的前向和反向狀態概率分別利用 和 來表示。通常,BCJR演算法要求在接收到整個信息後才開始解碼。對於實時應用,這一限制可能太嚴格了。例如,3GPP Turbo解碼器將需要大量存儲器存儲一個5114符號信息塊的完全狀態結構(state trellis)。對於單片FPGA設計來說,這需要的存儲資源太多了。與維特比(Vitebi)演算法類似,我們可以先從全零向量 O和數據{yk}(k 從 n 到 n-L) 開始反向迭代。L次反向迭代可獲得非常好的 n-L近似值。只要L選擇合適,最終的狀態標志(state metric)就是正確的。可以利用這一性質在信息結束前就開始進行有效的位解碼。
L 被稱為收斂長度。其典型值大約是解碼器約束長度的數倍(通常為5至10倍),並隨著信噪比的降低而增加。
通常,Turbo解碼演算法將計算所有的 (對整塊信息),將這些數值存儲起來,然後在反向迭代中與反向狀態概率一起用來計算新的外信息(extrinsic information,或稱先驗信息)。我們的設計中採用了窗口化方法。
解碼過程以一個前向迭代開始,計算包含L 個接收符號的塊i的 值。同時,對未來(i+1)塊進行一個反向迭代(標號 )。對塊i+1的反向迭代結束時,就獲得了開始對塊i 進行反向迭代所需要的正確的 初始向量。 與此同時對數似然函數(Lall)也在進行。 每一 和 處理過程都需要8個max* 操作 - 每個針對狀態結構(tellis)中的8個結點之一。最終的對數似然計算需要14個並行max* 運算符。為了提供可接受的解碼速率,在設計中採用了38個max* 功能單元。
從 C描述到FPGA設計
FPGA Turbo 編碼解碼器設計是利用基於C的設計和驗證方法進行的,如圖3所示。
演算法開發階段採用具有定點C類型的Art Library 來對定點計算的位真(bit-true)效應進行准確建模。在這一階段考察了幾種可能演算法的定點性能。一旦選定正確的量化演算法,就可利用A|rtDesignerPro創建一個專用DSP架構。A|rtDesignerPro的一個最強大的功能之一是可以插入和利用專用的數據通道核心(稱為專用單元,ASU)。利用這些ASU加速器核心可以使我們處理Turbo解碼器演算法內在的計算復雜性。
A|rtDesignerPro可自動完成寄存器分配、調度和控制器生成。在Turbo編碼解碼器設計中, A|rtDesignerr的自動循環合並可獲得最佳的;任務調度,MAP解碼步驟的內部循環都只有一個周期長。
A|rtDesignerPro生成的最終結果是可綜合的寄存器級(RT-level) VHDL或Verilog 描述。基於C的工具流支持FPGA專用功能。例如,可利用BlockRAM自動構造RAM,而寄存器文件也可利用分布式存儲器而不是觸發器來實現 。
最後,邏輯綜合和Xilinx實施工具套件將RTL HDL 轉換為 FPGA 配置位流。
FPGA Turbo 編碼解碼器實現
A|rtDesigner創建的Turbo編碼器和解碼器核心硬體結構包含許多專用ASU加速器。其中最重要的一個加速器完成max* 操作。max* 運算符根據下式計算兩個冪值a 和 b:
max* (a,b)=ln(expc(a)+expc(b))。
如 圖4所示, max* 運算是通過選擇(a,b)最大值,並應用一個存儲在查找表(LUT)中的校正因子近似進行的。這一近似演算法非常適合利用Xilinx FPGA 實現,其中LUT是其最終基本構造單元。
結果
Turbo解碼演算法硬體字長的選擇極大地影響總體性能。利用C-to-FPGA設計流程,這一定點分析是完全在C環境中完成的。結果示於圖 5。
上圖顯示出了我們的浮點Turbo解碼器演算法和對應的定點演算法之間的性能差別。模擬是在5114塊長度、5次解碼迭代和AWGN信道模型情況下進行的。結果清晰明顯出性能的損失是非常小的。
我們的Turbo解碼器的定點性能做為解碼器迭代次數的函數 ,對於1.5 dB SNR,位錯率為10-6。
解碼器功能的實現非常具有挑戰性,我們同時針對Virtex-E和 Virtex-II 器件進行了適配。Virtex-II 器件實施是採用運行在1.85 speedfile資料庫上的Xilinx 4.1i 實施工具集完成的。利用XC2V1000BG575-5 FPGA實現的最終設計,達到了66 MHz 的時鍾性能,消耗了3,060個邏輯片 和 16個塊RAM。對於從40至 5114符號長度的塊,採用5次解碼迭代循環的情況下,解碼器達到了2 至6.5 百萬符號每秒(Msym/s)的吞吐量。編碼器佔用了903個邏輯片、3個塊RAM並支持83 MHz時鍾頻率。對於從40至5114位的塊長度,速率可達到9 至20 Msym/s。
能用上就好了,用不上別怪我。對不起哈~祝福你~
7. 有誰知道自適應預測柵格編碼量化語音編碼演算法的編碼具體在哪些方面有重要應用,以及其局限性
一種自適應預測柵格編碼量化語音編碼演算法 李太傑, 胡光銳 摘要:提出了一種新的基於自適應預測柵格編碼量化演算法的話音壓縮模型.論述了在均方誤差意義上最優量化器的設計原理,並在兆稿研究柵格編碼量化演算法的基礎上,探討了模型的編、解碼器的工作原理,其中著重研究了擴展的量化器的集合劃分和卷積碼柵格廳冊圖的支路標注問題.根據計算機模擬結果,論證了模型的有效性和可行性. 關鍵詞:語音編碼;方差估計;線性預測;柵格編碼量化 中圖分類號:TN 911 文獻標識碼:A 隨著通信技術和數字信號處理技術的發展,語音壓縮技術越來越受到重視.目前,中、低速率的語音編碼普遍採用混合編碼,其中波形編碼起著關鍵作用.然而普通的波形編碼演算法在編碼率低於16 kb/s時,性能急劇下降,如何改善波形編碼在中速率時的性能,正日益被人們所關注.因此,本文在柵格編碼量化演算法[1]的基礎上,提出族伏孝了一種自適應預測柵格編碼量化(APTCQ)演算法模型,它基於集合劃分方法[2],使用一個具有擴展的量化電平的結構性碼書,以獲得較低的編碼率. 1 APTCQ演算法模型 1.1 訓練部分 訓練過程如圖1所示.由於語音信號樣本間存在著相關性,為了減小量化器的動態范圍,首先採用線性預測(LP)技術去除樣本間的相關性.對得到的殘差序列,利用自適應方差估計[3]進行歸一化以進一步縮小信號樣本幅度的動態范圍,最後對歸一化殘差序列進行訓練,得到在均方誤差意義上最優的量化器——Lloyd-Max量化器. 圖1 訓練過程 Fig.1 Training process LP部分傳遞函數為 (1) 式中,αi(i=1,…,p)為預測系數.濾波器輸出序列e(n)可近似看作服從拉普拉斯分布的白雜訊.方差估計的表達式為 (2) 這是一種一碼字有記憶方差估計,一般來說,它具有偏估計.式(2)右邊第一項表示前一樣本方差估計對當前方差估計的貢獻,第二項表示前一信號樣本對當前信號樣本方差估計的貢獻.方差估計隨輸入樣本值的改變而迅速改變,從而可以跟蹤輸入信號的快速變化.因此,這是一種瞬時自適應. 由於殘差信號近似呈拉普拉斯分布,樣本幅度值又大部分集中於零值附近,為了加快訓練過程的收斂,可以設置一門限幅度.當信號樣本幅度大於此門限幅度時,令其等於門限幅度.另外,信號幅度近似呈對稱分布,可以只對正(或負)量階進行訓練.訓練過程參見文獻[4]. 1.2 編碼部分 在TCM中,為了在每個碼元間隔內傳輸2m個符號中的一個,傳統的2m個點的信號星座將被加倍(達到2m+1個),並被分成2+1個子集.其中正整數≤m.用編碼率為/(+1)的卷積碼對輸入的 bit進行擴展,用來確定當前碼元間隔內的信道符號取自哪個子集,剩下的(m-)bit用來在所選子集中從2m-個信道符號中選出一個.假設信道存在加性高斯白雜訊干擾,用Viterbi解碼尋找和發送序列不同和概率最小的符號序列.對應於信源編碼,給定一種卷積碼,可以將信源序列看作一個帶噪序列,用Viterbi演算法尋找與其最接近的序列.因此,從編碼調制公式得到的所有可允許的信道序列集合與其對應的Viterbi演算法編碼器,可用作信源空間和相應的信源編碼器. 在本模型中,編碼率為2 bit/樣本,即m=2.採用(2,1)卷積碼,即=1.相應的量化器量階總數為8,並被分為4個子集D0、D1、D2、D3.為了使量化誤差最小,子集內元素間的距離應為最大.因此,子集劃分圖如圖2所示,在坐標軸上自左至右量階值逐漸變大. 圖2 子集劃分 Fig.2 Set partition 這樣,APTCQ編碼器的編碼演算法如下.設待編碼的數據序列為X={x1,x2,…,xn},編碼過程處於第i步,稱終止於第k個結點(時刻i-1)的路徑為倖存路徑k.設ki-j(k=1,…,N;j=1,2,…)是k上xi-j的近似值(編碼值),其中N是柵格狀態數.令ki|i-1表示當前數據的預測值,給定ki|i-j(j=1,2,…).令dki=(xi-ki|i-1)/i為k上的歸一化預測殘差,其中,(ki)2=α(ki-1)2+β(ki-1)2.最後,令ρi-1(X,k)為k上的失真.在所有Ungerboeck幅度調制柵格中,有兩條標注著子集名字的支路進入和離開每個結點.這里標注離開結點k且進入結點l的支路上的子集為Dkl,對這樣的每個子集,做一次標量量化,以確定最靠近dki的元素,稱之為kl.除了這個通過標量量化選擇的元素外,子集中其他的元素被丟棄.然後,下面的每個結點都有兩條支路進入.當下一個結點是l時,這兩條支路被標注為k1l和k2l,其中k1和k2是這兩條支路出發的結點.最後有 ρi(X,l)=mink∈{k1,k2}[ρi-1(X,k)+(dki-kl)2] (3) li=k′i|i-1+k′lki (4) 式中k′是使ρi(X,l)取得最小值的那個k值.這個循環過程直到數據序列的終點. 在編碼過程中,有兩種形式的輸出序列:第一種是比特序列,用來確定到達每個結點的路徑(或子集);第二種是符號序列,用來確定在每個結點所選子集中的某個元素,這兩個序列被送到接收端用於解碼.這種形式的編碼提高了系統的抗雜訊性能.卷積碼的狀態轉移示於圖3. 圖3 狀態轉移 Fig.3 State transition 1.3 解碼部分 解碼部分的框圖如圖4所示.解碼部分的工作原理是:首先用卷積碼對比特序列進行擴展,用於確定量化器符號空間中相應的子集,符號序列在所確定的子集中選取合適的元素.然後,將所確定的元素乘以其方差估計後送入標准DPCM解碼器,得到重建語音序列.DPCM解碼器的轉移函數為V(z)= pi=1αiz-i.其中αi(i=1,2,…,p)為訓練過程的預測系數. 圖4 解碼框圖 Fig.4 Decoder diagram 2 實驗結果 本文在微機上模擬了上述APTCQ編、解碼演算法.所用的數字語音序列是通過TMS320C25數字處理系統得到的.抽樣率為8 kHz,每個語音樣本用12 bit線性表示.所採用的卷積碼的狀態轉移如圖3所示.自適應參數α=0.85,β=0.25.採用三階預測器的預測系數為α1=-1.74,α2=1.22,α3=0.30.在Viterbi演算法中數據序列長度為64,卷積碼初始狀態為(0,0).當採用PTCQ演算法時,平均分段信噪比為10.41 dB,而採用APTCQ演算法時為14.91 dB.非正式試聽表明其主觀質量有明顯的提高. 3結論 本文在對PTCQ演算法進行研究的基礎上,對其進行了改進,得到如下結論: (1) 自適應方差估計的引進不僅提高了整體的處理效果,而且大大提高了小信號的質量. (2) 模擬實驗表明,在同等速率的情況下,APTCQ演算法比PTCQ演算法重建語音質量更好. (3) 由於在編碼過程中採用了TCQ技術,系統抗干擾能力比對應的DPCM系統要好. 作者簡介:李太傑(1974~),男,博士生. 作者單位:李太傑, 胡光銳 (上海交通大學 電子工程系,上海 200030)
記得採納啊
8. 卷積碼的過程
下面就讓我們來看看網格圖是如何描述卷積編碼過程的:仍以(2,1,2)為例,假橘拿定輸入序列為1011010100,起始狀態(零時刻)為狀態a(零狀態)。第一個有效時鍾沿來臨後,編碼器接收到輸入信息「1」,根據圖所示網格圖知該時刻(即時刻1)狀態為b,並輸出其對應的編碼結果「11」,同樣在下一簡迅個時刻(時刻2)接收到輸入信息「0」,狀態變為c並輸出「10」,接下來的輸入數據依次類推……,由此我們可以圓咐搭用網格圖作出該例子的卷積編碼過程,如圖5所示,其中兩個狀態連線之間的信息為輸出結果。
9. 卷積碼的表示方法
描述卷積碼編碼器過程的方法有很多,如矩陣法、多項式、碼樹和網格圖等,這里我們主要介紹和卷積碼編碼器結構密切相關的多項式法,以及與卷積碼解碼密切相關的網格圖法。
結構圖多項式法就是由卷積碼的生成多項式直接得出其編碼器的結構圖。如前面例子中的(2,1,2)卷積碼的生成多項式矩陣為:G(D)=[1 ,1 ]
其中,D是延遲運算元,生成多項式的第一項為1 D ,表示輸出編碼的第一個碼元等於輸入碼元x(n)與前兩個時刻輸入的碼元x(n-1)、x(n-2)的模2和,同理第二項類似。 將編碼器寄存器中的內容組合(x(n-1)、x(n-2))定義為編碼器狀態。如仍以前面所舉的例子(2,1,2)為例,則該編碼器的狀態有四種:00,10,01和11,下面分別用a,b,c,d來代替。編碼器在每一個時鍾沿打入一個輸入信息x(n),因此圖示寄存器組合內容就變為(x(n),x(n-1))即狀態發生了轉移,並同時輸出G0(n)、G1(n)。由此我們可以將圖所示編碼過程用右圖所示的狀態圖表示。
編碼器
由圖所示,隨著信息序列不斷輸入,編碼器就不斷從一個狀態轉移到另一個狀態並同時輸出相應的碼序列,所以圖3所示狀態圖可以簡單直觀的描述編碼器的編碼過程。因此通過狀態圖 很容易給出輸入信息序列的編碼結果,假定輸入序列為110100,首先從零狀態開始即圖示a狀態,由於輸入信息為「1」,所以下一狀態為b並輸出「11」,繼續輸入信息「1」,由圖知下一狀態為d、輸出「01」……其它輸入信息依次類推,按照狀態轉移路徑a->b->d->c->b->c->a輸出其對應的編碼結果「110101001011」。
網格圖
狀態圖可以完整的描述編碼器的工作過程,但是其只能顯示狀態轉移的過程而不能顯示狀態轉移發生的時刻,由此引出用來表示卷積碼的另一種常用方法——網格圖。網格圖就是時 間與對應狀態的轉移圖(如圖),在網格圖中每一個點表示該時刻的狀態,狀態之間的連線表示狀態轉移。通過觀察網格圖可以發現在網格圖中輸入信息x(n)並沒有標出,但如觀察到轉移後的狀態表示(x(n),x(n-1))就可以發現輸入信息已經隱含在轉移後的狀態中。在圖中還可以發現兩個網格圖不同主要集中在轉移後狀態位置不同。重新排序結構(即所謂蝶型結構)是為了優化運算而設計的,因為其中蝶型與蝶型之間是相互獨立的。
10. 卷積碼的原理
DMT和卷積編碼調制在DSL中的應用
鍾曉建 潘貴敦 馬親民 梁小宇
�
(華中師范大學物理系武漢430079)
【摘要】討論了離散多音頻調制和網格編碼相結合的調制方式在DSL中的應用,離散多音頻調制DMT〔1〕是一種多載波調制技術,將傳輸數據根據各子帶信噪比按位分配到子帶上,使每個子帶碼元寬度大於多徑延遲。如果把調制和糾錯編碼結合起來,則可使誤碼率大大降低,是一種帶寬利用率較高的調制方式。
�關鍵詞:ADSL離散多音頻網格編碼〔2〕歐氏距離〔3〕離散傅立葉變換/逆變換
1引 言
� 隨著Internet技術的不斷發展,人們對傳輸數據的速度、質量要求越來越高,在當前為了有效地利用現有的資源——電話線,提出了DSL〔1〕(數字用戶線)的概念,使用話音頻率以上的頻帶(4 k~1.1 MHz)來調制高速數字信號,按照Δf=4.3125 kHz分割成一個個的子帶,由於Δf剛好是音頻的寬度,故命名為離散多音頻,DMT調制是基於離散傅立葉變換對並行數據進行調制解調的。隨著超大規模集成電路(VL SI)和數字信號處理(DSP)技術的不斷進步,用FFT實現實時DMT調制已付諸使用。但以往的調制解調系統,糾錯編碼與調制是各自獨立設計並實現的,解碼和解調也是如此,這樣解調器在接收信號是對信號作獨立硬判決,硬判決結果再送給解碼器解碼,這種硬判決會導致接收端信息的不可恢復的丟失,解決這個問題的方法是在接收端採用軟判決解碼。DSL技術中就是將DMT和網格編碼綜合設計,在白雜訊環境下比傳統技術的誤碼性能有了很大的提高。這種最佳的編碼調制系統是按照編碼序列的歐氏距離為設計的量度,這就要求將編碼器和調制器當作一個統一的整體進行綜合設計,使得編碼器和調制器級聯後產生的編碼信號序列具有最大的歐氏自由距離。從信號空間的角度看,這種最佳編碼調制的設計實際上是一種對信號空間的最佳分割。經過實驗分析,DMT和卷積編碼結合後的編碼增益比傳統編碼的編碼增益增加了8 dB。�
2xDSL接入設備體系結構
� 在ADSL的應用當中,其硬體體系結構大致是由線路介面、接收濾波、線路驅動、模擬前端以及DMT收發器這幾個模塊組成。其中DMT收發器在發端對數據進行復用、循環冗餘校驗、前向糾錯、子帶排序、卷積編碼、星座映射以及IFFT變換,送到模擬前端變換成模擬信號發送出去,而在收端是將模擬信號經過FFT變換、解映射、維特比解碼等一系列反變換,提交給上層。根據T1.413〔4〕標准,採用韋氏16狀態4維網格碼作為內碼,採用Reed�Solomon編碼作為前向糾錯碼,另外由於網格編碼對成塊的雜訊抵抗能力較差,因此在進行網格編碼之前將數據進行交織使雜訊分散。ADSL的DMT收發器框圖大致如圖1所示。
3DMT與卷積編碼調制原理
� 在ADSL的發送端,將數據分配到不同的子帶上,這種分配可以根據各個子帶的信噪比來確定分配的bit數。而ADSL系統為各個子帶建立並維持了一個比特數和增益大小的表,是在ATU-R一端計算出來並返回給局端。為保證後一子帶所帶的位數不小於前一子帶的位數,先對子帶進行排序,即子帶按信噪比大小從小到大進行排序。為了使編碼獲得的碼字有較大的歐氏自由距離,採用了四維TCM網格編碼,這樣位抽取是基於一對子帶的,因為一個子帶在空間上是二維的,一對相互正交的子帶在空間上則是四維的 ,相應的在解碼的時候也是一對一對的作維特比解碼。歐氏自由距離是在四維空間上計算出來的,這樣四維的陪集可以由兩個二維的陪集的聯合構成,即這樣四維TCM網格碼的歐氏自由距離可以由兩個二維星座圖的距離的平方和算出, 在解碼系統中,最可能發生錯誤的情況是在具有最小的平方歐氏距離的兩個序列�{an}和{bn}�之間,(前者是發送序列,後者是解碼序列),這一最小平方歐氏距離常又稱為平方自由距離,記做:
��編碼的目的是為了使這個平方自由距離最大。
�網格編碼調制的通過一種特殊的信號映射可變成卷積碼的形式。這種映射的原理是將調制信號集分
割成子集,是的子集內的信號間具有更大的空間距離,用編碼效率為k/(k 1)的卷積碼選擇子集,用其餘位選擇子集中的點。在DSL數字用戶環路中用16狀態的4維網格編碼的編碼器結構如圖2所示。
其中的卷積編碼部分如圖3所示。
圖2中每兩個子帶抽取的位數z′=x y-1(x為第一個子帶所帶的位數,y為第二個子帶所帶的位數)。{uz′-1,uz′-2,…u1}為原碼,輸出的是經過卷積以及異或以後的編碼,為兩個二進制碼字,即{vz-y�,vz′-y-1,…v1,v0}和{wy-1,wy-2,…w1,w0},這兩個二進制碼字將映射成兩個星座點。編碼演算法使星座點的兩個最低位決定星座點的二維陪集{v1,v0}和{w1,w0}實際上是這個上標的二進製表示。對於一幀中最後兩個碼字,為了使卷積編碼狀態{s3,s2,s1,s0}回到零狀態。讓編碼前的碼字的{u1,u2}={0,0},則最後兩對子帶抽取的位數z′=x y-3。
�
這樣編碼得出的信號有兩個基本特徵:
� (1)星座圖中所用的信號點數大於未編碼同種調制所需的點數(擴大了一倍),這些附加的信號點為糾錯編碼提供冗餘度。
�(2)採用卷積碼在相繼的信號點之間引入某種依賴性,因而只有某些信號點序列才是允許出現的,這些允許的信號序列可以模型化為網路結構。可用網格圖來表述。
� 在接收端對接收序列進行維特比解碼〔4〕,即最大似然解碼,可以用網格圖求最相似的路徑來描述這種演算法,它依賴於有限狀態的馬爾可夫系統的描述,包括狀態變遷以及狀態變遷的輸出碼字。在四維TCM�編碼的基礎上,解碼時要對一對一對的數據進行解碼,計算碼距時也是以四維空間的歐氏距離為標准,取最相似的一條路徑。對於長度為L m的網格路徑(L為信息序列的長度,m表示後綴為m個0向量)接收序列為所有的網格路徑在零時刻發散於同一個初始狀態、收斂於第j時刻(j=L m)的同一個最後一狀態。在理想狀況下,對於一個存儲量無限度的通道,可以將所有可能的路徑都記錄下來,然後選擇其中對數似然函數值最大的作為解碼結果。
對數似然函數是將接收序列判定為某條路徑的序列的條件概率的對數
��這里的對數似然函數取最大值,實際上是接收的碼序列與估計路徑的碼之間的距離取最小值,是基於歐氏空間距離來計算的。在這里維特比解碼演算法的核心是回退的觀點,採用動態規劃法存儲數據,如果對每條可能的路徑進行存儲的話,隨著解碼深度的增加,存儲量將成4的指數增長,這在現實條件下是不可能的。因為每個節點都有四個分支(二輸入十六狀態的網格圖),因此我們對於j時刻到達的某一狀態
δi(i=1,2…,S-1),進行加—比—選操作,即將所有可能前一時刻的狀態的最大似然函數∧j-1(δp)與當前接收的序列和前一狀態到當前狀態的估計碼的似然度相加,選擇其中最大的作為j時刻i狀
態的最大似然函數值,並在倖存序列j(δi)在原來的基礎上加上這條最優的路徑u〔δp→δi〕。這樣給出的演算法可以表述為:
� 變數/存儲:
� S—狀態數(DSL為16);
� T—每一狀態的分支數(4);
� j—時刻編號,即第j時刻
�對於用卷積編碼完畢的序列可以直接送到數字信號處理器中作IDFT〔5〕變換成串列數據了。每個子帶i的二進制碼字可以映射成星座圖上的復數點(Zi=ai jbi),為了使輸出信號為實信號,頻域上的子帶i的復數值(i≥N′,N′=N/2)為
��Zi=conj�(ZN-i),(i≥N′,N′=N/2)
即取共軛復數,這樣經過離散傅立葉逆變換,得到時域信號:
��此信號經過並/串變換,再通過A/D變換,變成模擬信號送到線路上進行傳輸。
4模擬結果
� 我們在應用Itex公司的ADSL解決方案中,用該公司提供的局端模擬工具IADT對ADSL鏈路性能進
行模擬,得到ADSL每個子帶(從0~255)的信噪比,再根據這個預測值來確定每個子帶的位數和增益值。
從而建立一個與子帶一一對應的表,其線路預測的信噪比曲線如圖4所示。
我們可以看到,測得的線路上行速率為544
kbps,網路速率(去掉ADSL鏈路開銷)為448 kbps,下行鏈路速率為8 160 kbps,網路速率為7 616 kbps。
5總 結
� 本文描述了在帶寬受限的信道採用DMT和卷積編碼相結合的技術,將調制與糾錯編碼結為一體,高效利用了現有的帶寬。隨著ADSL技術的逐漸成熟,該編碼技術也正在應用於其它領域,如無線通信,針對其信道的衰減特性可以獲得較高的帶寬利用率。在具體硬體實現上,由於超大規模集成電路的發展,硬體已不再是信號處理的瓶頸了,如以上分析的維特比解碼,其對硬體的需求是隨著N的增大而迅速增加,需要上十萬的門電路實現,現已有單片的維特比解碼器,或是在特殊的應用中集成在一塊數字晶元中,同時完成RS編碼、交織、FFT變換等等。
�參考文獻
�
1Asymmetrical Digital Subscriber Lines(ADSL)�ITU-T�Recommendation G.992,Geneva,June,1999
2曹志剛,錢亞生.現代通信原理.北京:清華大學出版社
3Stephen G Wilson.digital Molation and Coding,○C1996 byPrentice�Hall,Inc
4ANSI T1.413�1998,COMMITTEE T1—Telecommunications Working Group T1E1.4 T1E1.4/98�007R5,1998
5John G Proakis.Digital Communications,Third edition,McGraw�Hill 1998