Turbo編碼巧妙地將兩個簡單分量碼通過偽隨機交織器並行級聯來構造具有偽隨機特性的長碼,並通過在兩個軟入/軟出(SISO)解碼器之間進行多次迭代實現了偽隨機解碼。他的效能遠遠超過了其他的編碼方式,得到了廣泛的關注和發展。
Turbo編碼原理
編碼方面主要包括對並行級聯編碼與串列級聯編碼的分析,以及對混合級聯方式的研究。
Turbo編碼器的結構
典型的Turbo碼編碼器結構框圖如圖1所示:由兩個反饋的編碼器(稱為成員編碼器)通過一個交織器I並行串連而成。如果必要,由成員編碼器輸出的序列經過刪餘陣,從而可以產生一系列不同碼率的碼。例如,對於產生矩陣為g=[g1,g2]的(2,1,2)卷積碼通過編碼後,如果進行刪餘,則得到碼率為1/2的編碼輸出序列;如果不進行刪餘,得到的碼率為1/3。一般情況下,Turbo碼成員編碼器是RSC編碼器。原因在於遞迴編碼器可以改善碼的位元誤碼率效能。
turbo編碼
3GPP LTE協議中使用的Turbo碼為1/3碼率的並行級聯碼,它的編碼器由兩個相同的碼率為1/2的RSC編碼器及交織器組成,如圖2所示。
由於與非遞迴卷積碼相比,遞迴卷積碼產生的碼字重量更大,所以這裡採用了兩個相同的系統遞迴卷積碼(RSC)。資訊序列分成相同的兩路,第一路經過RSC編碼器1,輸出系統碼及校正碼。另一路先通過交織器進行交織,使資訊序列在1幀內重新排列順序,然後經過RSC編碼器2得到系統碼和對應的校正碼,由於該系統碼和實際上都是原資訊序列,只是排列順序不同,在接收端完全可以通過對進行交織得到,因此在傳輸過程中可以省去,而只保留對應的校正位。
由於RSC編碼器不能如非遞迴編碼器一樣通過輸入連“0”序列來使編碼器複位(網格終止),因此通過設計如圖8所示的A、B間的開關來控制編碼器終止(AB串連時,發現相同的反饋進行異或送進儲存空間時資料為0),當一幀結束時,開關由A打到B,則經過m時刻後,編碼器複位,可以對下一幀資料進行編碼。這裡m=2。只有RSC編碼器1(外編碼器)進行了網路終止,RSC編碼器2保持開放。
舉例說明turbo碼工作原理
假設輸入序列為: U = (1 0 1 0 1 1 0 1)
第一個子碼的校正序列為 v1 = (1 1 0 0 0 1 1 1)
假設交織後的第二個子碼的輸入序列為:U’ = (1 1 0 1 1 0 0 1)
第二個子碼的校正序列為: v2 = (1 0 0 1 1 0 1 1)
Turbo碼的輸出序列為:V = (111,010,100,001,101,110,011,111)
Turbo編碼中的交織器
協議中交織器輸入輸出bit之間的關係:
其中f1和f2的取值與K值有關,關係見協議TS36.212中的Table5.1.3-3。
Turbo 解碼
解碼方面主要包括迭代解碼、解碼演算法(最大後驗機率演算法MAP、修正的MAP演算法Max-Log-MAP、軟輸出Viterbi 演算法SOVA等)的研究。
標準turbo解碼器結構
Turbo碼的迭代解碼方案,與其並行級聯編碼方案相配合,無論從編碼結構還是解碼思路上都將Turbo碼看作一個整體的長隨機碼,因此明顯提高了解碼效能。
迭代解碼通過將外碼解碼器的輸出資訊反饋回內解碼器,從而使得兩個相互獨立的解碼器充分利用彼此的資訊,也因此才將各個子碼連成一個真正意義下的長碼。
Turbo解碼演算法
標準MAP演算法
是對bahl軟輸出演算法做一定修正後,通過除以先驗分布來消除正反饋的演算法。對於約束長度為M 1的卷積碼,其運算量為每位元6x3^M次乘法和5x2^M次加法。由於乘法運算量大,限制了解碼的規模和速度。
Log-MAP演算法
實際上就是對標準MAP演算法中的似然全部用對數似然度來表示,這樣,乘法運算變成了加法運算。總的運算量成為6x2^M次加法,5x2^M次求最大運算和5x2^M次查表。
Max-Log-MAP演算法
是在上述對數域的演算法中,將似然值加法表示式中的對數分量忽略,是似然加法完全變成求最大值運算,這樣除了省去大部分的加法運算外,最大的好處是省去了對信噪比的估計,使得演算法更穩健。