卷積碼的 BCJR 譯碼算法 (一)
本文主要講卷積碼的 BCJR 譯碼算法。需要知道卷積碼的基本原理和一些概率知識。我們會推導譯碼算法的公式,并以具體的例子來講解 BCJR 的譯碼過程。
錄制的視頻在:https://www.bilibili.com/video/BV1n24y1i7Dh/
我們知道,卷積碼是一種狀態(tài)機,卷積碼編碼器中寄存器的數據就是狀態(tài),當前狀態(tài)已知的條件下,當前狀態(tài)的輸出,至于當前的輸入有關,而與過去的狀態(tài)和輸入無關,這就是馬爾可夫(Markov)性。
在收到的數據為:
則,為了譯碼第 t 時刻的發(fā)送比特,我們計算這個后驗概率
在 t 時刻,當前狀態(tài)為?
下一個狀態(tài)為 ?
我們把輸入為 0 時的狀態(tài)轉移的集合,記為?
我們把輸入為 1 時的狀態(tài)轉移的集合,記為?
則:
和
所以,關鍵點是計算如下這個概率:
我們做一下推導:
因此,我們需要計算這個聯合概率:
我們把 r 分成三部分,一部分是 t 時刻以前的接收數據,一部分是 t 時刻接收的數據,一部分是 t 時刻之后接收的數據:
則:
我們再來分析公式 (1) 中后半部分
把 (2) 代入 (1) 有:
我們來看一下公式 (3) 的含義:
我們要分析當前狀態(tài)為 p,下一個狀態(tài)為 q ,且接收到數據為 r? 這個聯合概率,那么這個概率由三部分相乘得到:
(1) t 時刻之前接收到的數據為 ,且到達了 t 時刻的狀態(tài) 為 p 的概率:
(2) t 時刻狀態(tài)為 p 的條件下,到達下一個狀態(tài) 為 q 且收到數據為? 的概率
(3) t+1時刻狀態(tài)為 q 的條件下,t 時刻之后的輸出為? 的概率
那么:
我們舉個例子來說明:
我們使用卷積碼:
則結構如下:

也可以畫成下圖,兩者是等價的:

則其狀態(tài)轉移柵格圖為:

假如我們要編碼 10 個比特,從狀態(tài) 00 出發(fā),編碼結束后回到 00 狀態(tài),則所有可能路徑有:

假如我們編碼的比特? x=[1, 1, 0, 0, 1, 0,? 1, 0, 1, 1]
則輸出比特為? V=[11? 11? 01? 01? 10? 01? 11?? 01? 10? 10]
編碼路徑如上圖中紅色所示。
我們假如要計算如下這個概率
注意上面公式中每個?? 其實是接收到的兩個數據,分別對應?
通過信道發(fā)送后得到的數據(這里要稍微注意一下,我們用 BPSK,則 0--> -1,? 1---->1 , 發(fā)送的是 -1 或者 +1).
輸入 為 比特 1, 對應的狀態(tài)轉移有如下幾種情況:
所以:
那么公式 (4) 中任何一個求和都可以按照下面這個例子來展開,我們以? 為例: