定義
交織編碼是在實際移動通信環境下改善移動通信信號衰落的一種通信技術。將造成數位訊號傳輸的突發性差錯,利用交織編碼技術可離散並糾正這種突發性差錯,改善移動通信的傳輸特性。
目的
交織編碼的目的是把一個較長的突發差錯離散成隨機差錯,再用糾正隨機差錯的編碼(FEC)技術消除隨機差錯。交織深度越大,則離散度越大,抗突發差錯能力也就越強。但交織深度越大,交織編碼處理時間越長,從而造成數據傳輸時延增大,也就是說,交織編碼是以時間為代價的。因此,交織編碼屬於時間隱分集。在實際移動通信環境下的衰落,將造成數位訊號傳輸的突發性差錯。利用交織編碼技術可離散並糾正這種突發性差錯,改善移動通信的傳輸特性。
編碼分類
在無線通信中,常用的編碼有線性分組碼、卷積碼。線性碼有漢明(Hamming)碼、格雷碼、CRC碼、BCH碼、以及RS(Reed-Solomon)碼等。
此外,無線通信中還常用網路編碼調製(TCM)編碼技術,它是將編碼和調製過程結合起來,可以在不損失頻譜效率的同時獲得重要的編碼增益。網路編碼調製把有冗餘的多進制調製和有限狀態編碼器相結合,即利用擴展符號集提供冗餘度來得到編碼符號和調製信號間的映射關係,並使得信號子集內的最小空間距離(最小Euclidean距離)最大。在接收機處,信號通過軟判決最大似然序列解碼器解碼。不用擴展頻寬,也不用降低信息傳輸速率,只要用網路編碼調製就可以獲得6dB的增益。
誤碼
在衛星移動通信中,多徑衰落對信號的影響最終表現為誤碼性能的惡化。對於隨機誤碼,可以通過格狀編碼或其他編碼措施,以犧牲頻帶資源換取信道的誤碼性能,從而提高通信質量,但由於深度的快衰落與遮蔽的因素,在衛星移動通信中存在著嚴重的突發性誤碼,此時僅採用格狀編碼技術是不合適的,因為它不能得到應有的編碼增益,針對這種情況,必須採用分集技術,如可採用有時間分集效果的交織編碼。交織深度的選擇要考慮衰落相關時間的大小,解碼器的緩衝容量和去交織器的處理時延等因素。
交織器
因為卷積交織器比分組交織器的時延要小一半,且易於同步,更適合於同格狀編碼器連用,因此將卷積交織與格狀編碼相結合的PSK和DPSK調製編碼方式,具有很好的抗快衰落與遮蔽的效果。
交織可以在不附加任何開銷的情況下,使數字通信系統獲得時間分集。語音編碼器在其編碼序列中產生幾個很重要的源比特,而交織器的作用就=是將這些源比特分散到不同的時間段中,以便出現深度衰落或突發乾擾後,來自源比特中某一塊的最重要的碼位不會被同時擾亂。源比特被分開後,還可以利用差錯控制編碼(信道編碼)來減弱信道干擾對源比特的影響。
交織器有兩種結構類型,分組結構和卷積結構。分組結構是把待編碼的m×n個數據位放入一個m行n列的矩陣中,即每次對m×n個數據位進行交織。通常,每行由n個數據位組成一個字,而交織器的深度,即行數為m,其結構如圖1所示。由圖可知,數據位被按列填入,而在傳送時卻按行讀出,這樣就產生了對原始數據位以m個比特為周期進行分隔的效果。在接收機一端的解交織操作則與此相反。
圖1 交織編碼
卷積結構的交織器,在多數情況下可以代替分組的交織器。而且卷積結構在用於卷積碼時,可以取得很理想的效果。
由於交織器在收到了m×n位後進行解交織後才能進行解碼,因此,所有的交織器都帶有一個固定的時延。
編碼器的設計
軟體無線電是一種實現無線通信的新的體系結構,是無線通信產業從模擬到數字、從固定到移動這兩次革命後的第三次革命,是從硬體無線通信到軟體無線通信的革命。
在從事使用軟體無線實現GSM基站研究中,在深入研究GSM通信系統信道編碼結構、交織方式的基礎上,利用VHDL硬體描述語言完成GSM基站信道編碼中使用的交織器的具體設計,為進一步研究軟體無線技術在GSM基站系統中套用打下基礎。
6.1GSM的話音編碼與信道編碼
在GSM通信系統中,全速率話音編碼算法為規則脈衝激勵及長期預測算法(RPE-LTP)。模擬話音首先通過一個ADC以8kHz採樣頻率進行採樣,每個採樣點用均勻13b編碼。話音編碼器對每20ms一段的話音進行壓縮編碼,編碼結果為每20ms產生260b的數據塊。這260b的數據根據他們的重要性分成為3類:Ia類、Ib類和Ⅱ類。Ia類共50b,為非常重要的數據。如果這些數據被修改,恢復的話音將發生很大的錯誤,甚至無法恢復正常的話音,因此這些數據需要嚴格保護。Ib類數據共132b,是比較重要的數據,需要進行較好的保護。Ⅱ類數據共78b,為一般重要的數據,發生一些差錯也不會對恢復的話音有太大的影響,通常不對其進行保護。根據數據重要性的不同,決定信道編碼中採用不同的保護方法。
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。
6.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的順序從交織矩陣中送出,這樣就完成對數據的交織編碼。還可以按照其他順序從交織矩陣中讀出數據,不管採用哪種方式,其最終目的都是把輸入數據的次序打亂。如果aij只包含1個數據比特,稱為按比特交織;如果aij包含多個數據比特,則稱為按字交織。接收端的交織解碼同交織編碼過程相類似。
一般來說,如果有n個(m,k)碼,排成,n×m矩陣,按列交織後存儲或傳送,讀出或接收時恢復原來的排列,若(m,k)碼能糾t個錯誤,那么交織後就可糾m個錯誤。對糾正信道傳輸過程中出現的突發錯誤效果明顯。
GSM中使用這種比特交織器。其交織方式為將信道編碼後的每20ms的數據塊m=456b拆分到8組中,每組57b,然後這每組57b分配到不同的Burst中。
6.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寫入一個時隙的456b數據。此時,改變RAM_A和RAM_B的讀寫狀態,RAM_A開始寫,從RAM_B中讀取數據。如此反覆完成數據的實時連續交織處理。
完成交織處理的核心問題是處理好讀/寫地址之間的關係,該交織器讀/寫地址的變換採用如下算法完成:
為減少FPGA運算量,可利用Matlab,C語言等實現讀/寫地址矩陣轉置運算。這裡採用Matlab完成讀/寫地址矩陣轉置運算,具體程式為:x=0:1:455;reshape(x,57,8)。讀/寫地址的變換結果存儲在address_ROM.mif檔案中。利用VHDL語言描述該交織編碼器完整代碼如下:
6.4仿真分析
利用Altera公司的QuartusⅡ工具軟體,對該交織器仿真分析。從讀地址(rd_addr_A)和寫地址(wr_addr_A)以及(data_in)和(intlv_out)可以看出,該交織器完成既定的交織功能,延時相當小,該設計方法正確可行。
6.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的方波信號模擬突發錯誤。100ms的突發錯誤被完全糾正。由於使用交織編碼所以應該存在2倍的編碼、解碼延時,即2×23×23個採樣。因此要觀察到一個以上完整的反交織周期的數
據信號,系統的採樣點數應該稍微設定長一些。
除此之外,SystemView還提供了另外一個交織編碼器圖符——卷積交織編碼。當使用較短的移位暫存器時,該編碼器比上述實驗中先進行BCH編碼再交織的方法實時性要好,而且參數設定也相對簡單。