本發(fā)明屬于通信技術(shù)領(lǐng)域,尤其涉及一種維特比譯碼方法,可用于對(duì)無線通信中的數(shù)據(jù)處理。
背景技術(shù):
卷積碼廣泛運(yùn)用于通信領(lǐng)域,采用信道編碼能夠提高信道的通信質(zhì)量,是一種很好的糾錯(cuò)編碼方法。在802.11無線通信協(xié)議中,有低密度奇偶校驗(yàn)編碼ldpc和二進(jìn)制卷積編碼bcc兩種編碼方式,其中,二進(jìn)制卷積編碼是一種必選的編碼方式。在卷積碼的編碼過程中,對(duì)輸入信息比特進(jìn)行分組編碼,將n組長度為k的信息比特編成n個(gè)比特,編碼完以后的n個(gè)比特不僅與當(dāng)前的k個(gè)信息有關(guān),還與前面的n-1組信息有關(guān)。因此,在卷積碼譯碼的時(shí)候,不僅要從當(dāng)前時(shí)刻收到的分組中獲取譯碼信息,還要從前后關(guān)聯(lián)的分組中提取相關(guān)信息。卷積碼充分利用了信息之間的相關(guān)性,使得卷積碼具有相當(dāng)好的性能增益。
維特比譯碼算法是卷積碼譯碼方法中運(yùn)用最為廣泛的算法,是一種最大似然算法,即在卷積碼編碼器所對(duì)應(yīng)的網(wǎng)格圖中的所有可能路徑集合中尋找一條具有最大路徑度量值的路徑作為譯碼結(jié)果。在卷積碼約束度較小的時(shí)候,維特比譯碼算法具有設(shè)計(jì)結(jié)構(gòu)簡(jiǎn)單,計(jì)算速度快,效率高等優(yōu)點(diǎn)。
在802.11無線通信協(xié)議中,采用(2,1,7)二進(jìn)制卷積編碼,卷積碼的生成矢量用八進(jìn)制數(shù)表示為(133,171),因此,該卷積編碼器的編碼效率為1/2。為了提高編碼的碼率,對(duì)利用1/2碼率的編碼器編碼完的序列進(jìn)行刪余,不同的刪余模式可以將其碼率提高到2/3,3/4,5/6。在接收端進(jìn)行譯碼的時(shí)候,若編碼碼率高于1/2,則首先根據(jù)編碼碼率所對(duì)應(yīng)的刪余模式,在接收序列中按照刪余模式指定的刪余位置添加“0”以補(bǔ)齊被刪除的數(shù)據(jù),再對(duì)序列進(jìn)行維特比譯碼。
傳統(tǒng)的維特比譯碼算法是將接收到的信號(hào)序列和所有可能的信號(hào)序列作比較,選擇其中漢明距離最小的序列作為輸出的譯碼序列。在發(fā)送端,編碼完的序列需要經(jīng)過交織,調(diào)制等操作,再進(jìn)入信道,經(jīng)過信道傳輸之后,在接收端進(jìn)行解調(diào),解交織的操作,再對(duì)其進(jìn)行解碼,如果采用硬解調(diào)方法,則解調(diào)輸出為“0”,“1”的序列,由于信道傳輸過程中有噪聲存在,因此可能會(huì)發(fā)生誤碼情況。此時(shí),需要通過卷積碼譯碼方法來糾錯(cuò),當(dāng)編碼碼率為1/2時(shí),不需要進(jìn)行補(bǔ)刪余數(shù)據(jù)的操作,維特比譯碼算法能夠較好地糾錯(cuò),在輸入誤碼率較低的情況下,編碼增益能夠良好的體現(xiàn)。但是,當(dāng)編碼碼率高于1/2時(shí),就需要通過在刪余位置添加“0”的方法補(bǔ)齊被刪余的數(shù)據(jù),此時(shí),補(bǔ)上的“0”就會(huì)被譯碼系統(tǒng)誤認(rèn)為信息位,原來的信息位可能是“1”也被“0”補(bǔ)上,則視為引入大量的誤碼,就會(huì)導(dǎo)致由于輸入誤碼率過高而無法正確譯碼。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明的目的在于提供一種刪余卷積碼的維特比譯碼方法,以有效改善刪余而引入的大量誤碼導(dǎo)致無法正確譯碼的影響,提高譯碼正確率。
本發(fā)明是通過對(duì)現(xiàn)有的二進(jìn)制卷積譯碼維特比算法進(jìn)行改進(jìn)實(shí)現(xiàn)的,即在經(jīng)過刪余以后的0,1序列中,引入調(diào)整因子成為不為0,1的數(shù),再在刪余位置插入零,得到插入數(shù)據(jù)以后的序列;運(yùn)用加乘的方法計(jì)算當(dāng)前度量值進(jìn)而可避免插入的零對(duì)比較的度量值產(chǎn)生影響,并進(jìn)行維特比譯碼算法的后續(xù)步驟。其具體實(shí)現(xiàn)如下:
(1)設(shè)置計(jì)算所需的參數(shù),包括編碼碼率r,調(diào)整因子θ;
(2)輸入待譯碼序列a,將其序列中的各項(xiàng)減去調(diào)整因子θ得到第一新的序列a’;
(3)在第一新的序列a’中根據(jù)編碼碼率r對(duì)應(yīng)的刪余模式中所指定的刪余位置,插入“0”,得到第二新的序列a”;
(4)根據(jù)(2,1,7)卷積碼編碼器結(jié)構(gòu),畫出對(duì)應(yīng)的網(wǎng)格圖;
(5)將第二新的序列a”中的各項(xiàng)以每?jī)蓚€(gè)數(shù)為一組分別與網(wǎng)格圖對(duì)應(yīng)級(jí)數(shù)對(duì)應(yīng)狀態(tài)的兩組0,1信號(hào)值進(jìn)行乘積后再相加,得到當(dāng)前分支度量值;
(6)設(shè)置累計(jì)度量值初始值為0,計(jì)算網(wǎng)格圖中每一級(jí)的當(dāng)前狀態(tài)的分支度量值,并與前一級(jí)狀態(tài)得到的累計(jì)度量值進(jìn)行累加,得到當(dāng)前的累計(jì)路徑度量值;在當(dāng)前狀態(tài)下比較到達(dá)同一節(jié)點(diǎn)的兩條路徑的累計(jì)度量值,選擇累計(jì)度量值較大的一條路徑,舍棄另一條路徑;
(7)設(shè)置計(jì)算累計(jì)度量值的終止條件為輸入待譯碼序列a的各項(xiàng)均完成度量值計(jì)算且編碼器中的移位寄存器回到全零的狀態(tài),并判斷是否滿足終止條件:若不滿足,則返回步驟(5),否則,選取到達(dá)該終止?fàn)顟B(tài)時(shí)對(duì)應(yīng)的路徑為最終的最優(yōu)路徑,執(zhí)行步驟(8);
(8)對(duì)步驟(7)得到的最優(yōu)路徑進(jìn)行回溯,得到最終的譯碼輸出序列a”’。
本發(fā)明與現(xiàn)有的技術(shù)相比具有以下優(yōu)點(diǎn):
1、本發(fā)明由于采用對(duì)待譯碼數(shù)據(jù)引入調(diào)整因子的方法,將序列改成非零序列處理,消除了在譯碼前插入的零數(shù)據(jù)對(duì)譯碼結(jié)果的影響,有效提高了譯碼的效率和性能;
2、本發(fā)明由于采用在譯碼端對(duì)數(shù)據(jù)進(jìn)行非零處理而不需要在調(diào)制解調(diào)端對(duì)數(shù)據(jù)進(jìn)行軟解調(diào)的處理,因此有效提高了編解碼的獨(dú)立性,不依賴于在解調(diào)過程中應(yīng)用軟解調(diào)方式才能較好的避免打孔對(duì)譯碼準(zhǔn)確性的影響,從而可使該編解碼的算法應(yīng)用更廣泛;
3、本發(fā)明由于在引入調(diào)整因子以后,通過將序列與網(wǎng)格圖對(duì)應(yīng)級(jí)數(shù)對(duì)應(yīng)狀態(tài)的兩組0,1信號(hào)值進(jìn)行乘積后再相加來計(jì)算當(dāng)前度量值,降低了計(jì)算度量值的運(yùn)算復(fù)雜性。
附圖說明
圖1是本發(fā)明的實(shí)現(xiàn)流程圖;
圖2是ieee802.11協(xié)議中卷積碼編碼器的結(jié)構(gòu)圖;
圖3是ieee802.11協(xié)議中編碼碼率為2/3時(shí)的刪余模式示意圖;
圖4是ieee802.11協(xié)議中編碼碼率為3/4時(shí)的刪余模式示意圖;
圖5是ieee802.11協(xié)議中編碼碼率為5/6時(shí)的刪余模式示意圖;
圖6是用本發(fā)明對(duì)編碼碼率為1/2時(shí)的刪余卷積碼譯碼性能仿真實(shí)驗(yàn)結(jié)果圖;
圖7是用本發(fā)明對(duì)編碼碼率為2/3時(shí)的刪余卷積碼譯碼性能仿真實(shí)驗(yàn)結(jié)果圖;
圖8是用本發(fā)明對(duì)編碼碼率為3/4時(shí)的刪余卷積碼譯碼性能仿真實(shí)驗(yàn)結(jié)果圖;
圖9是用本發(fā)明對(duì)編碼碼率為5/6時(shí)的刪余卷積碼譯碼性能仿真實(shí)驗(yàn)結(jié)果圖。
具體實(shí)施方式
以下結(jié)合附圖對(duì)本發(fā)明的實(shí)施例及其效果作進(jìn)一步的說明:
參照?qǐng)D1,本發(fā)明的具體實(shí)現(xiàn)步驟如下:
步驟1、設(shè)置計(jì)算所需的參數(shù)。
所述的參數(shù)包括:編碼碼率r,調(diào)整因子θ。其中:
編碼碼率r可選擇1/2、2/3、3/4和5/6這四種中的任意一種,編碼碼率r所對(duì)應(yīng)的刪余模式參照?qǐng)D3、4、5所示。
調(diào)整因子θ為待譯碼序列a中各項(xiàng)的值的改變量,其取值范圍為0<θ<1,經(jīng)過計(jì)算及實(shí)驗(yàn)驗(yàn)證可得,調(diào)整因子θ選0.5可取得最佳的譯碼性能。
步驟2、輸入待譯碼序列a。
將輸入待譯碼序列a中的各項(xiàng)減去調(diào)整因子θ得到第一新的序列a’,新的第一序列a’中的各項(xiàng)均不為零。
步驟3、插入零數(shù)據(jù)。
在第一新的序列a’中根據(jù)編碼碼率r對(duì)應(yīng)的刪余模式中所指定的刪余位置,插入“0”,得到第二新的序列a”。
步驟4、畫網(wǎng)格圖。
參照?qǐng)D2,根據(jù)其編碼器結(jié)構(gòu)畫出對(duì)應(yīng)的網(wǎng)格圖,網(wǎng)格圖中的每一個(gè)狀態(tài)都有兩個(gè)輸入與兩個(gè)輸出,不同狀態(tài)之間的連線代表狀態(tài)轉(zhuǎn)移,輸入序列的編碼過程在網(wǎng)格圖中對(duì)應(yīng)一條確定的狀態(tài)轉(zhuǎn)移路徑。
步驟5、計(jì)算分支度量值。
計(jì)算分支度量的現(xiàn)有方法主要以接收序列為基礎(chǔ),逐個(gè)計(jì)算接收序列與網(wǎng)格圖路徑的距離,本實(shí)例方法如下:
將第二新的序列a”中的各項(xiàng)以每?jī)蓚€(gè)數(shù)為一組分別與網(wǎng)格圖對(duì)應(yīng)級(jí)數(shù)對(duì)應(yīng)狀態(tài)的兩組0,1信號(hào)值進(jìn)行乘積后再相加,得到當(dāng)前分支度量值。
步驟6、計(jì)算累計(jì)度量值。
設(shè)置累計(jì)度量值初始值等于0;按照步驟5,計(jì)算網(wǎng)格圖中每一級(jí)的當(dāng)前分支度量值,并與前一級(jí)的累計(jì)度量值進(jìn)行累加得到當(dāng)前的累計(jì)度量值。
步驟7、設(shè)置終止條件并選取最優(yōu)路徑。
7a)將輸入待譯碼序列a的各項(xiàng)均完成分支度量值計(jì)算,且編碼器中的移位寄存器回到全零的狀態(tài),設(shè)置計(jì)算度量值的終止條件;
7b)根據(jù)編碼網(wǎng)格圖中的前6級(jí)連續(xù)支路構(gòu)成的路徑各不相交的特性,從第7級(jí)開始,在第n>=7級(jí)時(shí),計(jì)算當(dāng)前的累計(jì)路徑度量值,并在第n級(jí)的同一個(gè)節(jié)點(diǎn)的兩條路徑中選擇累計(jì)路徑度量值較大的路徑作為幸存路徑,并舍棄另一條路徑;
7c)在編碼網(wǎng)格圖的最后6級(jí),僅延伸其狀態(tài)對(duì)應(yīng)于全零輸入的支路,使得卷積碼編碼器狀態(tài)回到全零的狀態(tài),即終止?fàn)顟B(tài),此時(shí)剛好剩下一條幸存路徑,該路徑即為譯碼最優(yōu)的路徑。
步驟8、回溯譯碼最優(yōu)路徑。
在步驟7中得到了最佳譯碼路徑之后,根據(jù)該路徑經(jīng)過網(wǎng)格圖中的節(jié)點(diǎn)所對(duì)應(yīng)的狀態(tài)的變化,輸出該路徑中每一個(gè)節(jié)點(diǎn)的狀態(tài)值,即得到最終的譯碼輸出序列a”’。
本發(fā)明的效果可通過以下仿真進(jìn)一步說明:
1.仿真條件及仿真內(nèi)容:
本實(shí)例在intel(r)core(tm)i3-2310mcpu@2.33ghzwindows10系統(tǒng)下,matlab2015版運(yùn)行平臺(tái)上,完成本發(fā)明提及的刪余卷積碼譯碼方法試驗(yàn)。
2.仿真實(shí)驗(yàn)內(nèi)容與結(jié)果
本發(fā)明在編碼碼率分別為1/2、2/3、3/4和5/6時(shí),對(duì)刪余卷積碼譯碼方法仿真
仿真1,設(shè)置編碼碼率為1/2,調(diào)整因子θ為0.5,用本發(fā)明方法對(duì)輸入待序列進(jìn)行譯碼得到的仿真結(jié)果如圖6所示;
從圖6可以看出,在編碼碼率為1/2時(shí),當(dāng)輸入誤碼率低于0.05時(shí),輸入誤碼可全部糾正,因此,本發(fā)明提出的譯碼方法對(duì)1/2碼率下的譯碼改善效果較好。
仿真2,設(shè)置編碼碼率為2/3,調(diào)整因子θ為0.5,用本發(fā)明方法對(duì)輸入待序列進(jìn)行譯碼得到的仿真結(jié)果如圖7所示;
從圖7可以看出,在編碼碼率為2/3時(shí),當(dāng)輸入誤碼率低于0.03時(shí),輸入誤碼可全部糾正,因此,本發(fā)明提出的譯碼方法對(duì)2/3碼率下的譯碼改善效果較好。
仿真3,設(shè)置編碼碼率為3/4,調(diào)整因子θ為0.5,用本發(fā)明方法對(duì)輸入待序列進(jìn)行譯碼得到的仿真結(jié)果如圖8所示;
從圖8可以看出,在編碼碼率為3/4時(shí),當(dāng)輸入誤碼率低于0.006時(shí),輸入誤碼可全部糾正,因此,本發(fā)明提出的譯碼方法對(duì)3/4碼率下的譯碼改善效果較好。
仿真4,設(shè)置編碼碼率為5/6,調(diào)整因子θ為0.5,用本發(fā)明方法對(duì)輸入待序列進(jìn)行譯碼得到的仿真結(jié)果如圖9所示;
從圖9可以看出,在編碼碼率為5/6時(shí),當(dāng)輸入誤碼率低于2*10-3時(shí),輸入誤碼可全部糾正,因此,本發(fā)明提出的譯碼方法對(duì)5/6碼率下的譯碼改善效果較好。
由以上的仿真實(shí)驗(yàn)可以說明,本發(fā)明中提出的對(duì)待譯碼序列引入調(diào)整因子進(jìn)行非零處理能有效改善刪余而引入的大量誤碼導(dǎo)致無法正確譯碼的影響,提高譯碼正確率。
針對(duì)傳統(tǒng)的在調(diào)制解調(diào)過程中運(yùn)用軟解調(diào)方式避免刪余對(duì)譯碼帶來的影響的方法,本發(fā)明存在一定的優(yōu)勢(shì),一方面克服了編碼過程中刪余引起的譯碼效率低,容錯(cuò)率不高的困難,另一方面本發(fā)明所提出的譯碼方法不依賴于信道中的軟解調(diào)方法,使該編解碼的算法應(yīng)用更廣泛。
綜上所述,本發(fā)明所提出的對(duì)傳統(tǒng)的譯碼算法的改進(jìn)經(jīng)實(shí)驗(yàn)證明譯碼效果良好,糾錯(cuò)性能較高,實(shí)現(xiàn)簡(jiǎn)單,計(jì)算量小,適用范圍廣。