引言
糾錯碼技術(shù)在數(shù)字通信中具有重要作用,其中卷積碼的編碼方式,由于優(yōu)良的糾錯性能被廣泛應(yīng)用,而Viterbi譯碼方式作為卷積碼的一種最佳概率譯碼方法,對于卷積碼的廣泛應(yīng)用具有重要價值。近年來,FPGA作為一種半定制電路,廣泛應(yīng)用于數(shù)字信號處理系統(tǒng)中,為Viterbi譯碼器的實現(xiàn)提供了有利條件。
評價Viterbi譯碼器性能的指標(biāo)主要是譯碼速度和資源消耗,因此如何減小譯碼時延、提高譯碼速度、降低資源消耗成為近年來研究的熱點。文獻(xiàn)[5-6]通過改進(jìn)文獻(xiàn)[7-8]網(wǎng)格圖的構(gòu)造來降低譯碼時延、提高譯碼速率,文獻(xiàn)[5]采用基二算法,文獻(xiàn)[6]采用基四算法。其中基二算法的資源消耗小,但基二算法的數(shù)據(jù)處理能力比基四算法弱;基四算法處理數(shù)據(jù)能力比基二算法強(qiáng),但基四算法的主頻低,速度難以提升。文獻(xiàn)[9-10]通過改進(jìn)Viterbi的迭代方式提高譯碼速度,但是該方法復(fù)雜度高,資源消耗大。文獻(xiàn)[11]通過改進(jìn)回溯結(jié)構(gòu)來降低譯碼時延、提高譯碼速率,在文獻(xiàn)[6]的基礎(chǔ)上提出了基于滑窗流水的前向回溯基四算法,但該方法添加了冗余滑窗,資源消耗大,不適用于資源有限的場景。
為了使Viterbi譯碼算法可以在XC6SLX16-2CSG-324型FPGA上實現(xiàn),并針對目前大多數(shù)改進(jìn)算法在資源有限條件下難以兼顧時延與資源消耗,本文在基二算法的基礎(chǔ)上提出了一種改進(jìn)算法。該算法在基二算法的基礎(chǔ)上,對Viterbi譯碼器的度量控制和幸存路徑信息存儲模塊分別進(jìn)行了改進(jìn),提高基二算法的數(shù)據(jù)處理能力,在資源有限條件下,能夠有效簡化譯碼器的實現(xiàn)結(jié)構(gòu),進(jìn)而兼顧時延與資源消耗,提高譯碼性能。
1、 改進(jìn)Viterbi算法
1.1 算法原理
Viterbi算法是一種用于解決有限狀態(tài)離散時間馬爾科夫鏈的狀態(tài)估計問題的優(yōu)化算法。圖1所示的基二網(wǎng)格圖顯示了卷積碼的譯碼過程,具體描述可參見文獻(xiàn)[1]。時間節(jié)點t表示第t個信息碼元,Viterbi譯碼器從網(wǎng)格中找出最大似然路徑。
Viterbi譯碼器的工作流程如圖2所示。將接收機(jī)[13]每一時刻從信道接收到的信息序列與編碼網(wǎng)格中所有的信息序列進(jìn)行比較,根據(jù)軟判決原理計算各分支路徑度量值,并與該分支下一時刻進(jìn)入狀態(tài)的度量值進(jìn)行累加,保留進(jìn)入每個狀態(tài)的度量值最小的分支路徑和幸存路徑信息,當(dāng)達(dá)到回溯深度時,選出度量值最小的狀態(tài)作為開始逆向回溯的初始狀態(tài),根據(jù)幸存路徑信息找到回溯的最大似然路徑。
記(n0,k0,m)為卷積碼編碼器,該編碼器共有2k0×m個狀態(tài),Viterbi譯碼器必須具備同樣的2k0×m個狀態(tài)發(fā)生器,且每個狀態(tài)必須有一個存儲路徑度量值的存儲器和一個存儲幸存路徑信息的存儲器,所以Viterbi譯碼器的復(fù)雜度呈2k0×m指數(shù)增長。
1.2 算法改進(jìn)的具體描述
基二Viterbi譯碼器主要由分支度量計算單元(BMU)、加比選單元(ACSU)、路徑度量存儲單元(PMU)、幸存路徑存儲單元(SMU)、回溯單元(TBU)構(gòu)成,系統(tǒng)框圖如圖3[3]所示。
改進(jìn)算法在基二算法的基礎(chǔ)上,主要對ACSU中度量控制結(jié)構(gòu)和SMU的存儲結(jié)構(gòu)進(jìn)行改進(jìn)。記Si為狀態(tài)i,PMi為狀態(tài)Si的路徑度量累加值,τ為回溯深度(τ=L+m,L為信息碼元數(shù)),Sub_bit為幸存路徑信息,算法改進(jìn)的具體描述如下:
2 、理論分析
2.1 離散無記憶信道(DMC)模型
Viterbi譯碼算法的性能可由譯碼器輸出的誤碼率進(jìn)行分析。由于改進(jìn)算法采用軟判決,這里主要針對高斯白噪聲(AWGN)下,BPSK調(diào)制的DMC信道模型根據(jù)不同回溯深度τ,τ=(5~10)m做誤碼率分析。DMC信道模型如圖5[1]所示,q為電平量化序列,左邊表示信道輸入為二進(jìn)制0、1,右邊表示信道輸出為0~(q-1),p(q-1|0)表示輸入為0輸出為q-1的概率[1]。
根據(jù)信道編碼定理,二進(jìn)制對稱信道(BSC)下,對某一給定的(n0,k0,m)卷積碼,采用最大似然譯碼的Viterbi譯碼器產(chǎn)生錯誤事件的概率PE為[1]:
2.2 改進(jìn)算法分析
給定(2,1,4)卷積碼,對于Viterbi的截尾譯碼器,回溯深度τ滿足τ=(5~10)m即可[1],為節(jié)約度量寄存器資源,本文選擇τ=20。然后在τ=20的情況下改變Q值,如圖6所示??梢钥闯鯭<8時判決增益增加比較明顯,當(dāng)Q>8后判決增益增加很慢。因此實際應(yīng)用中一般選用八電平和十六電平量化,譯碼器不會太復(fù)雜,且有2~3 dB軟判決增益[1]。因此選擇τ=20,Q=8能有效保證譯碼器性能。
3、仿真分析
3.1 MATLAB仿真結(jié)果分析
在MATLAB中,對Viterbi譯碼器分別在AWGN信道和平坦瑞利衰落信道中譯碼進(jìn)行建模,給定(2,1,4)卷積碼,當(dāng)τ=20,Q=8時,對傳統(tǒng)和改進(jìn)后的譯碼器分別在AWGN信道和平坦瑞利衰落信道中進(jìn)行仿真。該模型中,輸入信道的信號為二進(jìn)制相移鍵控(Binary Phase Shift Keying,BPSK)調(diào)制信號,信道的輸出量化成八進(jìn)制。誤比特率(Bit Error Rate,BER)統(tǒng)計性能如圖7所示。從BER性能來看,在AWGN信道中本文采用的Viterbi算法與傳統(tǒng)的Viterbi算法相比,增益提高了約0.5 dB;在平坦瑞利衰落信道中本文采用的Viterbi算法與傳統(tǒng)的Viterbi算法性能相比,在低信噪比時增益提高不明顯,在高信噪比時增益提高了約1 dB。
3.2 ISE仿真結(jié)果分析
針對τ=20,Q=8的(2,1,4)譯碼器,本文基于Verilog硬件描述語言對各模塊進(jìn)行了RTL級描述,并用ISE Design Suite 14.7進(jìn)行了功能仿真。
對改進(jìn)前與改進(jìn)后的Viterbi譯碼器進(jìn)行ISE仿真,資源消耗與時延如表1所示。表中可以看出,采用本文提出的度量控制方法和幸存路徑存儲結(jié)構(gòu)的Viterbi譯碼器達(dá)到回溯深度后只需15個CLK延遲便可以譯出第一個碼元,采用傳統(tǒng)的度量控制與RE幸存路徑存儲結(jié)構(gòu)的Viterbi譯碼器需要32個CLK延遲。改進(jìn)后的譯碼器在速度上有了很大的提高,同時資源消耗也有了一定的節(jié)約。
Viterbi譯碼器的測試主要包括功能驗證與譯碼器的糾錯性能兩部分。
首先進(jìn)行功能驗證,所有數(shù)據(jù)都是理想的。因為τ=20,則譯碼器以20個數(shù)據(jù)為一組譯碼,本文的Viterbi譯碼器采用的是截尾譯碼,故利用MATLAB產(chǎn)生16個隨機(jī)序列加上4個0組成一組信息序列為C1:11111101101110110000,經(jīng)過編碼器后的輸出序列為C2:11_10_11_01_10_10_01_11_11_11_00_11_00_10_11_11_11_11_01_11,八電平量化后的序列為C3:111111_111000_111111_000111_111000_111000_000111_111111_111111_111111_000000_111111_000000_111000_111111_111111_111111_111111_000111_111111,將C3序列作為Viterbi譯碼器的輸入,ISE仿真結(jié)果如圖8所示。
圖中Clk為碼元時鐘,code是C3序列,TB_flag為1表示達(dá)到回溯深度,code_in為譯碼輸出結(jié)果:11111101101110110000,與C1序列完全相同,故此譯碼器功能正確。
其次是糾錯性能測試,在理想數(shù)據(jù)中人為加入錯誤的干擾信息。經(jīng)計算,(2,1,4)譯碼器的df=7,故理論上此譯碼器可在5段連續(xù)譯碼中糾正3個隨機(jī)錯誤。經(jīng)測試,在20個連續(xù)碼元段中加入3個隨機(jī)錯誤碼元,即誤比特率為2.5%的情況下,譯碼器可以將錯誤完全糾正。在20個連續(xù)碼元段中加入4個隨機(jī)錯誤碼元,即誤比特率為3.33%時不能將錯誤完全糾正,但若錯誤碼元之間間隔≥5段碼元時也可完全糾正。理論值的糾錯性能是在譯碼深度無限長時計算出來的,而無限長的譯碼深度在硬件上是無法實現(xiàn)的,因此在實際應(yīng)用中的糾錯性能會與理論值有一定的差距,但在實際通信系統(tǒng)中,調(diào)制后通過信道傳輸?shù)腻e誤碼率遠(yuǎn)未達(dá)到10-2這個數(shù)量級[1]。如圖7所示,在AWGN信道中,只要信噪比大于4.5 dB,誤碼率就小于10-2這個數(shù)量級;在平坦瑞利衰落信道中,只要信噪比大于14 dB,誤碼率就小于10-2這個數(shù)量級,而實際通信系統(tǒng)中信道的信噪比遠(yuǎn)遠(yuǎn)大于14 dB,因此本文改進(jìn)的Viterbi譯碼器能夠滿足實際應(yīng)用中的需求。
4 、結(jié)論
本設(shè)計主要針對ACS和SMU單元,簡化譯碼器的結(jié)構(gòu),降低硬件實現(xiàn)的復(fù)雜度,提高運(yùn)算速度。在加比選單元的控制度量部分,為了解決路徑度量數(shù)據(jù)溢出問題,本文提出了預(yù)定義存儲度量值寄存器容量法,減小了運(yùn)算量,提高了譯碼速度。在幸存路徑存儲部分,優(yōu)化了存儲方式, 采用步進(jìn)式存儲方法,降低了譯碼器的功耗。回溯譯碼時,采用奇偶回溯法譯碼方式,根據(jù)幸存狀態(tài)的奇偶性完成輸出,減小了RAM的存儲空間。仿真結(jié)果表明,本文的優(yōu)化設(shè)計能夠大大簡化硬件電路的結(jié)構(gòu),在譯碼器的設(shè)計中具有應(yīng)用價值。
責(zé)任編輯:gt
評論