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