經過十多年來的研究與精進,渦輪碼(Turbo Code)已成為無線通訊中相當關鍵的技術,且被廣泛地使用,目前主要分為LTE Turbo Code及WiMAX Convolution Turbo Code兩大技術,本文將介紹LTE、WiMAX如何應用此技術,並比較兩者在性能上的差異。
渦輪碼由Berrou、Glavieux、Thitimajshima在西元1993年國際電機電子工程師學會(IEEE)國際通訊會議上提出。在較大區段長度下,Turbo Code已被證明可接近Shannon極限。雖然,一開始因複雜度較高,導致難以實現,但經過10多年的研究,Turbo Code目前已成為通訊的重要技術,被廣泛地使用,第三代合作夥伴計畫(3GPP)長程演進計畫(Long Term Evolution, LTE)便採用此項技術。
另外,Berrou在1996年提出雙二進制Turbo Code,此技術也被全球微波存取互通介面(WiMAX)(IEEE 802.16e)所採用。
LTE採用傳統Turbo Code
LTE採用較傳統的Turbo Code技術,在全部傳送位元(Bit)前先加上迴圈冗餘校驗(Cycle Redundancy Check, CRC),用來檢測解出的碼字是否正確,LTE有限定一些可用的碼塊長度,而此區塊長度又關係著交錯器(Interleaver)和子交錯器(Subblock Interleaver)的設計。
若傳送位元大於碼塊長度則須切割,而不同的是,LTE在切割後又加上了24位元的CRC。多了一層CRC的好處是,在解碼疊代(Iteration)時可判斷碼字是否正確,若正確可提前跳出疊代,減少運算,但缺點就是每個區塊都要多傳24個CRC位元。
圖1為Turbo Code的編碼器,一般來說,編碼的性能是由編碼器來決定,至於解碼器只是盡可能將編完的碼字還原,但其效能有碼門檻(Threshold)。Turbo Code的優異性能來自於其編碼結構。
|
圖1 LTE Turbo Code編碼模型 |
Turbo Code的編碼器是一個平行串接式碼(Parallel Concatenated Convolutional Code, PCCC),它由兩個RSC編碼器(Recursive Systematic Convolutional)和一個交錯器所組成的,通常兩個RSC編碼器是採用相同的架構。在LTE中,RSC編碼器的規格由三個暫存器(K=3)及二進位加法器所組成,而編碼器的輸出為一個系統位元Xk及兩個查核位元Zk及Z'k。因為有交錯器的關係,讓兩個RSC編碼器輸出的相關性非常低,增進發生叢錯誤(Burst Error)時的更正能力。而編碼輸出的資料可以利用打孔(Puncture)來改變不同的碼率。
在碼框內的資料編碼完成後,須要將RSC編碼器的K個暫存器資料清為0,以方便下一筆資料的傳送,這個動作稱為格子圖解碼收斂法(Trellis Termination),由於使用的是RSC編碼器,而RSC編碼器擁有遞迴的結構,無法傳送K個0將暫存器清空。
此時,只要將圖1中的切換器(Switch)向下關上,經過三個位元的週期,即可將K個暫存器的資料清為0。此時會得到4×K個位元輸出,在這些位元會依規則打亂後接在Xk、Zk及Z'k後,最終將Xk、Zk及Z'k分別進入子交錯器打亂,再合併傳送出去。
在訊號傳輸時有可發生叢錯誤,造成一連串的錯誤,此刻在接收端,解碼將難以回復為正確的碼字。為避免此情形,須使用交錯器將資料打亂,將叢錯誤的位元分散在不同的位置,在接收端將有更大的機率將錯誤的碼字回復成正確的資料。
傳統的交錯器分為許多種,例如區塊交錯器(Block Interleaver)、隨機交錯器(Random Interleaver)或S隨機交錯器(S-random Interleaver)等。在LTE研究階段曾提出各種不同的交錯器,在經過討論後,決定使用的交錯器為QPP(Quadratic Permutation Polynomial)交錯器。QPP交錯器的輸入的位元為C0,C1,...,Ck-1,輸出的位元則是C'0,C'1,...,C'k-1,其中K為碼塊大小。一般而言,K越大,越能提供更好的錯誤率。QPP交錯器輸入輸出的位元關係表示如公式1:
.............................公式1
其中的算法如公式2:
................................公式2
公式2中的f1,f22須要使用K的值來查表取得。
與Turbo Code的編碼比較起來,Turbo Code的解碼就複雜多了,而解碼器主要的工作就是盡可能將編好的碼字還原,一般的Turbo Code解碼架構如圖2所示,包含兩個交錯器、一個解交錯器(De-interleaver)和兩個軟輸入軟輸出(Soft-Input Soft-output, SISO)Decoder,每個SISO Decoder的輸入有三個,包括接收端系統位元Lcyk(0)、接收端檢驗位元Lcyk(1)或Lcyk(2)、事前機率L(uk),其中Lc為通道可靠度。
|
圖2 LTE Turbo Code解碼模型 |
Turbo Code的解碼(圖2)最重要的觀念是使用不斷的疊代來增加軟資訊的可靠度,疊代的次數越大,成功解碼的機率越高,但當疊代次數到達一定程度時,疊代的效能將降低,再繼續疊代效益不高,會浪費運算,所以疊代次數的多少相當重要。在LTE中也可以在解碼途中使用CRC判斷碼字是否已經正確,如果已經正確也可以提前停止疊代,以減少運算量。
將(yk(0),yk(1),yk(2))當作傳送端(Xk,Zk,Z'k)經過通道後在時間k的接收。而以LLR(Log-likelihood Ratio)的值來判斷原來的資料,LLR是一種軟資訊,是一種可靠度的觀念,若LLR值大於零,則判斷位元為1,且LLR值越大,則位元是1的機率越高;反之LLR小於零,則判斷位元為0,值越負,則位元是0的機率越高,而事後LLR的定義如公式3:
.............................公式3
|
圖3 SISO解碼器 |
SISO(圖3)的輸出為事後機率和外在訊息(Extrinsic Values),這兩個訊息的關係式如公式4:
.............................公式4
將輸出的訊息傳至下一級SISO解碼器,要扣掉後面兩項的原因是因為下一解碼器也有這兩個訊息,若不減掉,會造成這兩個訊息被重複計算。而在最終判斷解碼位元輸出的時候,則使用。
SISO解碼器的演算法,主要分為Viterbi Algorithm及MAP(Maximum A Posteriori) Algorithm兩種。本文介紹MAP解碼演算法,由於MAP方法中有指數計算,在硬體上實現相當複雜及困難,利用Jocobian演算法近似指數複雜的計算,在Log-MAP演算法中定義如公式5所示:
.............................公式5
其中
由公式5看出,複雜的指數運算可用max函數和fc函數來運算,其中fc函數的值可以查表得到,如此一來將大幅降低運算複雜度。此外,將公式5運用在轉換路徑的計算上,得到轉換路徑後將能輕易地得到前項路徑值及後項路徑值。而在Max-Log-MAP演算法中,更進一步的將式省略成公式6:
...........................公式6
Log-MAP在效能上有較好的表現,但Max-Log-MAP有較低的複雜度。
WiMAX使用CTC編碼
在WiMAX中的Turbo Code則採用CTC(Convolution Turbo Code)編碼技術(圖4),而且是一種雙二進制Turbo Code,它的輸入位元由A、B交替進入到編碼器,其結構與一般LTE Turbo Code不同。
|
圖4 WiMAX Convolution Turbo Code編碼模型 |
另外,CTC碼使用CRSC(Circular Recursive Systematic Convolutional)編碼器,與一般Turbo Code不同,它毋須多傳送位元將暫存器清空,但為了讓初始狀態和終止狀態相同,CTC碼做了預編碼的動作,在預編碼後,暫存器的狀態利用循環狀態表(表1)更新,更新狀態後再重新編碼,並得到最終的Y1、W1、Y2、W2。
至於交錯器的部分,CTC根據WiMAX、DVB等不同的技術有不同的定義,本文則根據WiMAX的標準來使用交錯器和子交錯器,因為CTC是雙二進制的,它的交錯器設計也會一次將兩個碼塊打亂。CTC的交錯器步驟如下:
首先,將偶數的兩個輸入交換()。
接著,求出P(j),並利用P(j)將資料位元打亂()。
由於CTC編碼器與一般Turbo Code編碼器有所不同,在解碼器(圖5)的部分也必須做相應的改變,解碼器的輸出LLR為如公式7所示,一般的Turbo Code為單位元輸入,LLR為1的機率除以0的機率,但在CTC中為雙位元輸入,可能的輸入有00、01、10、11,在計算LLR時,分別以01、10、11除以00的機率,算出三個L(uk),最後判斷解碼碼字時也有差異,i 表示暫存器狀態。
...........................公式7
|
圖5 WiMAX Convolution Turbo Code解碼模型 |
另外,LTE的Turbo Code使用格子圖解碼收斂法,暫存器的狀態永遠從0開始,而WiMAX的Convolution Turbo Code則使用預編碼的方法,暫存器的狀態未必從0開始,可使用預解碼(Pre-decoder)來預估解碼起始狀態,另外因有初始狀態和終止狀態相同的特性,後來也有學者提出了Feedback的方法,本文使用Feedback的解碼方法,也因為這點差異,讓兩者在解碼的一些初始設定上有些不同。
WiMAX CTC/LTE Turbo Code模擬比較
圖6使用AWGN當成通道模型,比較了WiMAX CTC和LTE Turbo Code的位元錯誤率(Bit Error Rate, BER),使用的碼塊大小為240位元、疊代次數為8次、使用QPSK調變與0.33的碼率,模擬的輸入位元根據802.16e定義為公式8:
...........................公式8
|
圖6 LTE Turbo Code VS WiMAX CTC(AWGN)比較 |
在同樣使用MAX log-MAP的條件下,在BER為10-6時,WiMAX比LTE的SNR Gain好約為0.5dB。
圖7則使用Rayleigh fading,定義為公式9:
...........................公式9
|
圖7 LTE Turbo Code VS WiMAX CTC(Rayleigh Channel)比較 |
其中P為能量,h為平均值0、變異數1的高斯隨機變數,n為雜訊。而其他編碼條件跟環境與圖6相同,可看出BER為10-6時,WiMAX比LTE的SNR Gain好約為0.75dB。
由圖6和圖7的模擬結果,可看出WiMAX CTC在同樣條件下,錯誤率都優於LTE Turbo Code,且CTC也無須使用格子圖解碼收斂法,編碼效益優於LTE Turbo Code,且由於是二進制輸入,交錯器的深度也僅LTE Turbo Code的一半,這些都可看出WiMAX CTC的優異性能。
表現出色CTC被看好
Turbo Code擁有接近Shannon極限的能力,因此被廣泛的應用於通訊系統中,WiMAX使用的CTC碼則為二進制的Turbo Code,從模擬結果顯示能比LTE Turbo Code擁有更好的性能,在BER為10-6時,WiMAX比LTE的SNR Gain好約為0.50.75dB。另外CTC採用CRSC編碼提升編碼效益,經過Puncture的影響也小於一般Turbo Code,雖然CTC的複雜度高,但隨著科技的進步,硬體也提升了,CTC也越來越被重視,除了WiMAX,LTE-A也開始新增CTC的編碼技術,相信未來會有更多的通訊技術使用CTC。學者們也不斷地研究如何再改進Turbo Code,像是如何設計交錯器、盡量減少疊代次數、降低解碼複雜度、減少解碼延遲和三進制的Turbo Code等等。
(本文作者任職於資策會智通所)