基于FPGA的卷積碼編譯碼器
其中“比前路徑長度”中下劃線前的數(shù)字代表該路徑最后停在的狀態(tài),下劃線后的數(shù)字代表是由哪個狀態(tài)轉(zhuǎn)移過來的。如果是“0”則代表由狀態(tài)號較小的狀態(tài)轉(zhuǎn)移過來的那條路徑,反之如果為“1”則代表由狀態(tài)號較大的狀態(tài)轉(zhuǎn)移過來的那條路徑;“選后路徑長度”和“譯碼路徑”的序號表示該路徑最后停在的狀態(tài)號。圖3為維特比譯碼過程的網(wǎng)格圖。本文引用地址:http://2s4d.com/article/190979.htm
2.3.2 定時與控制
由時鐘控制,每個時鐘輸入一位,每兩個時鐘輸出一位,稱為一個譯碼周期。在每個譯碼周期的前一個時鐘周期內(nèi)完成“加”,此時譯碼狀態(tài)為“0”;在后一個時鐘周期內(nèi)完成“比和選”,譯碼狀態(tài)為“1”。
2.3.3 支路量度計算
由于(2,1,3)卷積碼的形式已經(jīng)固定,因此,可以事先把支路量度表做好,如表1所示。譯碼器工作時可根據(jù)輸入通過查表得到“比前路徑長度”的增加值,暫存到addi_j中,而后統(tǒng)一加入“比前路徑長度”chni_j中。
2.3.4 路徑量度和譯碼路徑的更新與存儲
在到達(dá)同一狀態(tài)的兩條路徑中選取路徑長度較小的作為幸存路徑,即在chnk_0和chnk_1中選擇較小的存入rlengthk(k=0~3)。
由于每個狀態(tài)譯碼路徑的最后一位在每一步中是不變的,均是0101”(狀態(tài)0~3),因此更新譯碼路徑時只需將選中的譯碼路徑向高位移一位后存儲即可。即進(jìn)行如下判斷:
1)對于新路徑0的判斷,如果chn0_0=chn0_1則選擇舊路徑0,否則選擇舊路徑2;
2)對于新路徑1的判斷,如果chn1_0=chn1_1則選擇舊路徑0,否則選擇舊路徑2;
3)對于新路徑2的判斷,如果chn2_0=chn2_1則選擇舊路徑1,否則選擇舊路徑3;
4)對于新路徑3的判斷,如果chn3_0=chn3_1則選擇舊路徑1,否則選擇舊路徑3;
其中chn0_0,chn0_1,chn1_0,chn1_l,chn2_0,chn2_1,chn3_0,chn3_1已由上一步得出。
評論