Turbo编码
Turbo編碼簡介
Turbo的編碼器由兩個并行的分量編碼器組成。分量編碼器的選擇一般是卷積碼,所謂卷積碼,即輸出為輸入和一段已知序列的卷積。與其對應的分組碼則是將序列分段,每段序列和編碼矩陣相乘得到輸出序列。在Turbo碼中,輸入序列在進入第二個編碼器時須經過一個交織器 ,用于將序列打亂。兩個編碼器的輸出共同作為冗余信息添加到信息序列之后,對抗信道引起的錯誤。
Turbo編碼器原理圖如下所示:
分量編碼器
- Turbo碼的設計的關鍵就是 分量編碼器 和 交織器, 通常使用遞歸系統卷積碼作為分量碼。
根據線性代數知識,通過對碼字生成矩陣 G 進行初等變換,可以得到具有相同秩的標準生成矩陣 G’ 。由于分組碼的最小距離由生成矩陣的最大線性無關組矢量個數(與矩陣的秩相同)決定,因此,在不改變碼字最小漢明距離的前提下通過對生成矩陣進行初等變換,可以得到標準生成矩陣,以此對輸入信息序列編碼,得到的碼字為系統嗎的形式。同樣,對于卷積碼,也可以在不改變碼字最小漢明距離條件下,將其變換為系統碼的形式。
如果將生成矩陣、信息序列和碼字均用多項式形式表示,其中碼字前饋生成多項式為 gf(D) ,反饋生成多項式為 gb(D) (通常將這樣的生成多項式記作 G=[gb(D) gf(D) ] 或者寫成八進制形式,例如(7,5)系統卷積碼的生成多項式為 G=[ 1 1 1 1 0 1] = [ 7 5]),信息序列多項式為 m(D) ,碼多項式為 c(D) ,其中 D 為延時算子。對于碼率為 1/2 的非系統卷積碼而言,系統化的第一步是計算多項式除法 m(D)/gb(D) 的余式 a(D) ,然后利用多項式乘法運算來計算碼字的校驗輸出 y(D)=a(D)gf(D) ,而系統輸出就為 x(D)=m(D) 。由前饋多項式和反饋多項式共同決定的系統卷積碼成為遞歸系統卷積碼(RSC碼)。 - 在 RSC 碼的編碼過程中,首先計算反饋變量:
校驗輸出為由于傳統卷積碼的編碼器由移位寄存器構成且不存在反饋,因此可以等效為一個有限沖激響應(FIR)濾波器,而遞歸系統卷積碼編碼器中存在反饋,可以等效為一個無限沖激響應(IIR)濾波器。 - 示例:如圖所示,生成多項式為(7,5)【G=[1 1 1,1 0 1]】的遞歸系統卷積碼的編碼框圖,其編碼速率為 1/2。由可以看出,遞歸系統卷積碼是一個有限狀態機,因此可以用狀態轉移圖和網格圖來表示。(7,5)遞歸系統卷積碼編碼器所對應的狀態轉移圖如下所示。從圖中可以看出,它與不存在反饋的卷積碼的狀態轉移圖是非常相似的。事實上,唯一區別是從個狀態節點發生狀態轉移的觸發信息比特有所不同。對于傳統的卷積碼而言,使得從這兩個分支接入其他節點的比特是不同的,但是對于遞歸系統卷積碼而言,使得從這兩個分支接入其他節點的比特是不同的。由于卷積碼系統化時沒有改變生成矩陣的秩,因此該系統卷積碼的最小漢明距離與其相應的非系統卷積碼的最小距離是相同的。
- 對于傳統卷積碼,通過在數據幀的末尾嵌入 mc(編碼器的移位寄存器的個數)和 0 比特可迫使編碼網格圖在結束時回到全零狀態。但是對于遞歸系統卷積碼,由于具有無限沖激相應特性,因此僅依靠嵌入 mc 個 0 比特一般無法使其編碼網格圖在編碼結束時回到全零狀態。為此,必須通過選擇信息輸入 mi 來使得余式對應的系數 ai=0(n-mc<= i <=n-1)。這樣,對于遞歸系統卷積碼,輸入信息序列中的最后 mc 個比特必須滿足:
- 一般情況下,Turbo碼的兩個分量編碼器的選擇為兩個相同的系統卷積碼。
交織器
- 交織實際上就是將數據序列中元素的位置濟寧重置得到交織序列的過程。其逆過程就是在交織序列的基礎上將元素恢復到原來的位置順序上,一般稱該過程為解交織過程。例如,設交織器 I 的輸入為:其中,ui = {0, 1},i = 1, 2, … , N。交織映射輸出序列記為:其中,vj = {0, 1},j = 1, 2, … , N。序列 v 與 序列 u 僅僅是元素位置的順序不同。如果把輸入序列和交織輸出序列看成是一對含有 N 個元素的集合,則交織過程就是從集合 u 到集合 v 的一一映射過程,即:若定義集合:則交織過程可以用一一映射索引函數描述為: 其中,i 和 j 分別是原數據序列 u 和 v 中的元素索引。映射函數可以用交織矢量表示,如下所示:
下面介紹幾種常用的交織器。 - 1、分組交織器
分組交織器是最簡單的一類交織器。它的交織映射過程可以描述為:將數據序列按行寫入 m*n 矩陣,然后按列讀出,交織過程如下圖所示:相應的解交織過程就是將交織后的數據序列按列寫入,然后按行讀出。分組交織的映射函數可以表示為:其中,N 為交織長度。分組交織能夠使原序列中相鄰比特經過交織后相距一定的距離,在實際應用中,信息序列長度較短時使用分組交織器可以獲得較好的性能。 - 2、循環移位交織器
循環移位交織器按照如下循環移位映射來實現交織,其交織的映射函數可以表示為:其中,a 為不長,是與交織長度 N 互素的正整數,且 步長 a 的值決定了原序列中相鄰比特在交織后序列中的距離。 - 3、分組螺旋交織器
分組螺旋交織器首先將數據序列按行寫入 m*n 矩陣,其中 m 與 n 互素。在交織時從矩陣的左上角開始向右下方向讀取數據,每向下一行同時右移一位(即行索引遞增的同時列索引也遞增,增量步長為1),同時在行方向和列方向分別對索引取模 m 和 n。
若令 ri 和 ci 分別表示第 i 個比特的行索引和列索引,則分組螺旋交織器的數據讀取順序為:其中,i = 0,1,…,N-1,且初始值 r0 與 c0 均為 0 。另外,還可以從交織矩陣的左下角開始讀取數據,其讀取數據順序為:其中,i = 0,1,…,N-1,且初始值 r0 = N-1 , c0 = 0 。
交織過程示意圖如下所示:注意:在使用分組螺旋交織器時,一定要滿足 m 與 n 互素,即 m 與 n 互為質數。 - 4、偽隨機交織器
偽隨機交織器是指在交織映射隨機生成的交織器。每個長度為 N 的偽隨機交織器共有 N! 種可能的交織形式。偽隨機交織的實現步驟如下(交織長度為 N)。
(1)從集合 S = {1,2,…,N} 中隨機選擇一個整數 i1 ,相應的選取到 i1 的概率為 p(i1) = 1/N,將選擇的 i1 記為 I(1) ,同時將 i1 從集合 S 中刪除,得到新的集合,記為 S1。
(2)在第 k 步,從集合 Sk-1 中隨機選擇一個整數 ik ,其相應的選取概率為 p(ik) = 1/(N-k+1) ,將選擇的 ik 記為 I(k),同時將 ik 從集合 Sk-1 中刪除,得到新的集合,記為 Sk。
(3)當 k = N時,得到 I(N) ,相應的選取概率為 p(iN) = 1,SN為空。
交織過程結束。
總結
- 上一篇: python划分训练集、验证集和测试集
- 下一篇: 【渝粤题库】广东开放大学 质量管理 形成