交織編碼

交織編碼

交織編碼是在實際移動通信環境下改善移動通信信號衰落的一種通信技術。將造成數字信號傳輸的突發性差錯,利用交織編碼技術可離散並糾正這種突發性差錯,改善移動通信的傳輸特性。

目的


交織編碼的目的是把一個較長的突發差錯離散成隨機差錯,再用糾正隨機差錯的編碼(FEC)技術消除隨機差錯。交織深度越大,則離散度越大,抗突發差錯能力也就越強。但交織深度越大,交織編碼處理時間越長,從而造成數據傳輸時延增大,也就是說,交織編碼是以時間為代價的。因此,交織編碼屬於時間隱分集。

編碼器設計


軟體無線電是一種實現無線通信的新的體系結構,是無線通信產業從模擬到數字、從固定到移動這兩次革命后的第三次革命,是從硬體無線通信到軟體無線通信的革命。
在從事使用軟體無線實現GSM基站研究中,在深入研究GSM通信系統通道編碼結構、交織方式的基礎上,利用VHDL硬體描述語言完成GSM基站通道編碼中使用的交織器的具體設計,為進一步研究軟體無線技術在GSM基站系統中應用打下基礎。
1、GSM的話音編碼與通道編碼
在GSM通信系統中,全速率話音編碼演演算法為規則脈衝激勵及長期預測演演算法(RPE-LTP)。模擬話音首先通過一個ADC以8kHz採樣頻率進行採樣,每個採樣點用均勻13b編碼。話音編碼器對每20ms一段的話音進行壓縮編碼,編碼結果為每20 ms產生260 b的數據塊。這260 b的數據根據他們的重要性分成為3類:Ia類、Ib類和Ⅱ類。Ia類共50 b,為非常重要的數據。如果這些數據被修改,恢復的話音將發生很大的錯誤,甚至無法恢復正常的話音,因此這些數據需要嚴格保護。Ib類數據共132 b,是比較重要的數據,需要進行較好的保護。Ⅱ類數據共78 b,為一般重要的數據,發生一些差錯也不會對恢復的話音有太大的影響,通常不對其進行保護。根據數據重要性的不同,決定通道編碼中採用不同的保護方法。
GSM通信系統的通道編碼首先對Ia類數據進行差錯檢測編碼,產生3個循環冗餘校驗(CRC)比特,這些比特的產生使用多項式為G(x)=X3?X?1。3個CRC比特附在Ia類的50b後面,再與Ib類數據組合在一起進行K=5,r=1/2的卷積編碼,卷積編碼器使用的2個多項式為P1(x)=X4?X3?1和P2(x)=X4?X3?X?1,卷積編碼產生的結果是兩個189b的序列,將他們與不需要保護的Ⅱ類數據複合在一起,產生一個完整的經過通道編碼的話音幀,共456b。
2、交織編碼器工作原理
通道編碼中採用交織技術,可打亂碼字比特之間的相關性,將通道中傳輸過程中的成群突發錯誤轉換為隨機錯誤,從而提高整個通信系統的可靠性。交織編碼根據交織方式的不同,可分為線性交織、卷積交織和偽隨機交織。其中線性交織編碼是一種比較常見的形式。所謂線性交織編碼器,是指把糾錯編碼器輸出信號均勻分成m個碼組,每個碼組由n段數據構成,這樣就構成一個n×m的矩陣。這裡把這個矩陣稱為交織矩陣。如圖1所示,數據以a11,a12,…,a1n,a21,a22,…,a2n,…,aij,…,am1,am2,…,amn(i=1,2,…,m;j=1,2,…,n)的順序進入交織矩陣,交織處理后以a11,n21,…,am1,a12,a22,…,am2,…,a1n,a2n,…,amn的順序從交織矩陣中送出,這樣就完成對數據的交織編碼,如圖1所示。還可以按照其他順序從交織矩陣中讀出數據,不管採用哪種方式,其最終目的都是把輸入數據的次序打亂。如果aij只包含1個數據比特,稱為按比特交織;如果aij包含多個數據比特,則稱為按字交織。接收端的交織解碼同交織編碼過程相類似。
一般來說,如果有n個(m,k)碼,排成,n×m矩陣,按列交織后存儲或傳送,讀出或接收時恢復原來的排列,若(m,k)碼能糾t個錯誤,那麼交織后就可糾m個錯誤。對糾正通道傳輸過程中出現的突發錯誤效果明顯。
GSM中使用這種比特交織器。其交織方式為將通道編碼后的每20ms的數據塊m=456b拆分到8組中,每組57b,然後這每組57 b分配到不同的Burst中。
3、交織編碼器的軟體設計
GSM通信系統必須滿足實時性的要求,因此,交織編碼引入的延時應儘可能小。為了同時滿足塊內交織進行(57,8)矩陣轉置變換和延時儘可能小的要求,該交織器利用2片雙口RAM實現,記作RAM_和RAM_B。交織處理時,按地址從0~455將456b輸入數據全部寫入RAM_A,待456b數據全部送入RAM_A后,控制信號使RAM_A由寫狀態轉換到讀狀態,同時,將輸入的待交織數據寫入RAM_B,RAM_B為寫狀態,交織器由RAM_A輸出數據。經過456個時鐘周期后,從RAM_A讀出456b數據的同時,RAM_B寫入一個時隙的456 b數據。此時,改變RAM_A和RAM_B的讀寫狀態,RAM_A開始寫,從RAM_B中讀取數據。如此反覆完成數據的實時連續交織處理。
完成交織處理的核心問題是處理好讀/寫地址之間的關係,該交織器讀/寫地址的變換採用如下演演算法完成:
為減少FPGA運算量,可利用Matlab,C語言等實現讀/寫地址矩陣轉置運算。這裡採用Matlab完成讀/寫地址矩陣轉置運算,具體程序為:x=0:1:455;reshape(x,57,8)。讀/寫地址的變換結果存儲在address_ROM.mif文件中。利用VHDL語言描述該交織編碼器完整代碼如下:
4、模擬分析
利用Altera公司的QuartusⅡ工具軟體,對該交織器模擬分析,得到的時序模擬波形如圖2所示。從讀地址(rd_addr_A)和寫地址(wr_addr_A)以及(data_in)和(intlv_out)可以看出,該交織器完成既定的交織功能,延時相當小,該設計方法正確可行。
5、結語
本文提出基於FPGA實現交織器的方法,給出利用VHDL語言描述該交織器的全部代碼。通過模擬分析驗證該實現方案的正確性和可行性。為進一步研究GSM通信系統基站軟體化打下了良好的基礎。

模擬原理


在實際通信系統中常常存在突發性錯誤。突發錯誤一般是一個錯誤序列。糾正突發錯誤的通常採用交織編碼。交織編碼的基本思路是,將i個能糾t個錯的分組碼(n,k)中的碼元比特排列成i行n列的方陣。每個碼元比特記作B(i,n)。交織前如果遇到連續j個比特的突發錯誤(用陰影方塊表示),且j>>t,對其中的連續兩個碼組而言,錯誤數已遠遠大於糾錯能力t,因而無法正確對出錯碼組進行糾錯。交織后,總的比特數不變,傳輸次序由原來的B(1,1),B(1,2),B(1,3)…B(1,n),B(2,1),B(2,2),B(2,3)…B(2,n),……B(i,1),B(i,2),B(i,3)…B(i,n)轉變為B(1,1),B(2,1),B(3,1)…B(i,1),B(1,2),B(2,2),B(3,2)…B(i,2)………B(1,n),B(2,n),B(3,n),…B(i,n)的次序。此時因干擾或衰落引起的突發錯誤圖樣正好落在分組碼的糾錯能力範圍內,可以正確糾錯錯誤。通常把碼組數i稱為交織度,用這種方法構造的碼稱為交織碼。使用交織編碼的好處是提高了抗突發錯誤的能力但不增加新的監督碼元,從而不會降低編碼效率。理論上交織度i越大,抗突發錯誤的能力就越強,但是要求解碼器的暫存區就越大,而且解碼延時也相應加大。因此,實際工程中會根據設計成本和系統的延時要求選取合適的i。
交織編碼的模擬實驗原理在進行交織編碼以前,先將數據用戈雷碼編碼器進行了糾錯編碼,然後再進行23行、23列的交織編碼。在傳輸通道上用了一個周期為1Hz、脈寬為100ms、幅度為2V的方波信號模擬突發錯誤。圖12.28為輸入數據、解碼輸出及被干擾產生突發錯誤的波形覆蓋示意圖。100ms的突發錯誤被完全糾正。由於使用交織編碼所以應該存在2倍的編碼、解碼延時,即2×23×23個採樣。因此要觀察到一個以上完整的反交織周期的數
據信號,系統的採樣點數應該稍微設置長一些。
除此之外,SystemView還提供了另外一個交織編碼器圖符——卷積交織編碼。當使用較短的移位寄存器時,該編碼器比上述實驗中先進行BCH編碼再交織的方法實時性要好,而且參數設置也相對簡單。