Convolutional Code 迴旋碼

迴旋碼是一種很特別的編碼方式,特性在於 Encoder 中有數個暫存器 (Register) 會保存上一個 input data bit 的資料,所以先前傳輸過的上一筆 input data bit 會影響下一筆 output data bit,這個編碼系統被廣泛用於我們常用的行動通訊系統-GSM 之中。

迴旋碼的碼率 (Code rate)

R = K / N (K 為輸入的原始資料長度,N 為輸出的碼長度)

迴旋碼的產生方式

迴旋碼的產生方式會隨著 encoder 的設計有所不同 (例如 register 的數量、modulo-2 adder 的連接方式 [有點像 XOR 運算] 等因素),因此要先根據題目給的結構圖本身來寫出組成方式的表示式,以下圖為例:

APR8076

 

由上圖我們可以寫出下列關係式:(暫存器由左而右稱為 P、Q、R)

y1 = x ⊕ P ⊕ Q ⊕ R
y2 = x ⊕ P ⊕ R

而根據迴旋碼的定義,先輸入的 input data bit 會從 X 開始,在下一個 data bit 來到 X 時將自己移到 P,之後是 Q,最後則會到 R,因此可以寫出下列的表格 (假設輸入順序為 10111…):

XPQRy1y2
100011
010011
101001
110111
111010
111101
111101

最後我們可以從上表得知輸出應該會是 11, 11, 01, 11, 10, 01, 01…

Interleaver 交錯器

主要用途

Interleaver 最主要的功能是用來預防大量連續的錯誤一次發生 (僅是讓錯誤分散開來而非更正錯誤!),在不需要額外頻寬與冗餘資料的情況下達成此一目的,但會使得延遲增加。

Turbo Code 渦輪碼

Turbo Code 其實是基於上面提過的迴旋碼而來,例如:運用兩組遞迴系統性迴旋碼邊碼器,第一組直接編碼,第二組則先搭配交錯器使用後再編碼。