文獻(xiàn)標(biāo)識(shí)碼: A
DOI:10.16157/j.issn.0258-7998.191229
中文引用格式: 吳雪玲,江虹. 基于FPGA的結(jié)構(gòu)改進(jìn)型(2,1,4)維特比譯碼器[J].電子技術(shù)應(yīng)用,2020,46(2):43-47.
英文引用格式: Wu Xueling,Jiang Hong. FPGA-based structurally improved(2,1,4) Viterbi decoder[J]. Application of Electronic Technique,2020,46(2):43-47.
0 引言
糾錯(cuò)碼技術(shù)在數(shù)字通信中具有重要作用,其中卷積碼的編碼方式,由于優(yōu)良的糾錯(cuò)性能被廣泛應(yīng)用,而Viterbi譯碼方式作為卷積碼的一種最佳概率譯碼方法,對(duì)于卷積碼的廣泛應(yīng)用具有重要價(jià)值[1-2]。近年來(lái),FPGA作為一種半定制電路,廣泛應(yīng)用于數(shù)字信號(hào)處理系統(tǒng)中,為Viterbi譯碼器的實(shí)現(xiàn)提供了有利條件[3]。
評(píng)價(jià)Viterbi譯碼器性能的指標(biāo)主要是譯碼速度和資源消耗,因此如何減小譯碼時(shí)延、提高譯碼速度、降低資源消耗成為近年來(lái)研究的熱點(diǎn)[4]。文獻(xiàn)[5-6]通過(guò)改進(jìn)文獻(xiàn)[7-8]網(wǎng)格圖的構(gòu)造來(lái)降低譯碼時(shí)延、提高譯碼速率,文獻(xiàn)[5]采用基二算法,文獻(xiàn)[6]采用基四算法。其中基二算法的資源消耗小,但基二算法的數(shù)據(jù)處理能力比基四算法弱;基四算法處理數(shù)據(jù)能力比基二算法強(qiáng),但基四算法的主頻低,速度難以提升。文獻(xiàn)[9-10]通過(guò)改進(jìn)Viterbi的迭代方式提高譯碼速度,但是該方法復(fù)雜度高,資源消耗大。文獻(xiàn)[11]通過(guò)改進(jìn)回溯結(jié)構(gòu)來(lái)降低譯碼時(shí)延、提高譯碼速率,在文獻(xiàn)[6]的基礎(chǔ)上提出了基于滑窗流水的前向回溯基四算法,但該方法添加了冗余滑窗,資源消耗大,不適用于資源有限的場(chǎng)景。
為了使Viterbi譯碼算法可以在XC6SLX16-2CSG-324型FPGA上實(shí)現(xiàn),并針對(duì)目前大多數(shù)改進(jìn)算法在資源有限條件下難以兼顧時(shí)延與資源消耗,本文在基二算法的基礎(chǔ)上提出了一種改進(jìn)算法。該算法在基二算法的基礎(chǔ)上,對(duì)Viterbi譯碼器的度量控制和幸存路徑信息存儲(chǔ)模塊分別進(jìn)行了改進(jìn),提高基二算法的數(shù)據(jù)處理能力,在資源有限條件下,能夠有效簡(jiǎn)化譯碼器的實(shí)現(xiàn)結(jié)構(gòu),進(jìn)而兼顧時(shí)延與資源消耗,提高譯碼性能。
1 改進(jìn)Viterbi算法
1.1 算法原理
Viterbi算法是一種用于解決有限狀態(tài)離散時(shí)間馬爾科夫鏈的狀態(tài)估計(jì)問(wèn)題的優(yōu)化算法[12]。圖1[1]所示的基二網(wǎng)格圖顯示了卷積碼的譯碼過(guò)程,具體描述可參見(jiàn)文獻(xiàn)[1]。時(shí)間節(jié)點(diǎn)t表示第t個(gè)信息碼元,Viterbi譯碼器從網(wǎng)格中找出最大似然路徑。
Viterbi譯碼器的工作流程如圖2[3]所示。將接收機(jī)[13]每一時(shí)刻從信道接收到的信息序列與編碼網(wǎng)格中所有的信息序列進(jìn)行比較,根據(jù)軟判決原理計(jì)算各分支路徑度量值,并與該分支下一時(shí)刻進(jìn)入狀態(tài)的度量值進(jìn)行累加,保留進(jìn)入每個(gè)狀態(tài)的度量值最小的分支路徑和幸存路徑信息,當(dāng)達(dá)到回溯深度時(shí),選出度量值最小的狀態(tài)作為開(kāi)始逆向回溯的初始狀態(tài),根據(jù)幸存路徑信息找到回溯的最大似然路徑。
記(n0,k0,m)為卷積碼編碼器,該編碼器共有2k0×m個(gè)狀態(tài),Viterbi譯碼器必須具備同樣的2k0×m個(gè)狀態(tài)發(fā)生器,且每個(gè)狀態(tài)必須有一個(gè)存儲(chǔ)路徑度量值的存儲(chǔ)器和一個(gè)存儲(chǔ)幸存路徑信息的存儲(chǔ)器,所以Viterbi譯碼器的復(fù)雜度呈2k0×m指數(shù)增長(zhǎng)[1]。
1.2 算法改進(jìn)的具體描述
基二Viterbi譯碼器主要由分支度量計(jì)算單元(BMU)、加比選單元(ACSU)、路徑度量存儲(chǔ)單元(PMU)、幸存路徑存儲(chǔ)單元(SMU)、回溯單元(TBU)構(gòu)成,系統(tǒng)框圖如圖3[3]所示。
改進(jìn)算法在基二算法的基礎(chǔ)上,主要對(duì)ACSU中度量控制結(jié)構(gòu)和SMU的存儲(chǔ)結(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 離散無(wú)記憶信道(DMC)模型
Viterbi譯碼算法的性能可由譯碼器輸出的誤碼率進(jìn)行分析。由于改進(jìn)算法采用軟判決,這里主要針對(duì)高斯白噪聲(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)制對(duì)稱信道(BSC)下,對(duì)某一給定的(n0,k0,m)卷積碼,采用最大似然譯碼的Viterbi譯碼器產(chǎn)生錯(cuò)誤事件的概率PE為[1]:
2.2 改進(jìn)算法分析
給定(2,1,4)卷積碼,對(duì)于Viterbi的截尾譯碼器,回溯深度τ滿足τ=(5~10)m即可[1],為節(jié)約度量寄存器資源,本文選擇τ=20。然后在τ=20的情況下改變Q值,如圖6所示??梢钥闯鯭<8時(shí)判決增益增加比較明顯,當(dāng)Q>8后判決增益增加很慢。因此實(shí)際應(yīng)用中一般選用八電平和十六電平量化,譯碼器不會(huì)太復(fù)雜,且有2~3 dB軟判決增益[1]。因此選擇τ=20,Q=8能有效保證譯碼器性能。
3 仿真分析
3.1 MATLAB仿真結(jié)果分析
在MATLAB中,對(duì)Viterbi譯碼器分別在AWGN信道和平坦瑞利衰落信道中譯碼進(jìn)行建模,給定(2,1,4)卷積碼,當(dāng)τ=20,Q=8時(shí),對(duì)傳統(tǒng)和改進(jìn)后的譯碼器分別在AWGN信道和平坦瑞利衰落信道中進(jìn)行仿真。該模型中,輸入信道的信號(hào)為二進(jìn)制相移鍵控(Binary Phase Shift Keying,BPSK)調(diào)制信號(hào),信道的輸出量化成八進(jìn)制。誤比特率(Bit Error Rate,BER)統(tǒng)計(jì)性能如圖7所示。從BER性能來(lái)看,在AWGN信道中本文采用的Viterbi算法與傳統(tǒng)的Viterbi算法相比,增益提高了約0.5 dB;在平坦瑞利衰落信道中本文采用的Viterbi算法與傳統(tǒng)的Viterbi算法性能相比,在低信噪比時(shí)增益提高不明顯,在高信噪比時(shí)增益提高了約1 dB。
3.2 ISE仿真結(jié)果分析
針對(duì)τ=20,Q=8的(2,1,4)譯碼器,本文基于Verilog硬件描述語(yǔ)言對(duì)各模塊進(jìn)行了RTL級(jí)描述,并用ISE Design Suite 14.7進(jìn)行了功能仿真。
對(duì)改進(jìn)前與改進(jìn)后的Viterbi譯碼器進(jìn)行ISE仿真,資源消耗與時(shí)延如表1所示。表中可以看出,采用本文提出的度量控制方法和幸存路徑存儲(chǔ)結(jié)構(gòu)的Viterbi譯碼器達(dá)到回溯深度后只需15個(gè)CLK延遲便可以譯出第一個(gè)碼元,采用傳統(tǒng)的度量控制與RE幸存路徑存儲(chǔ)結(jié)構(gòu)的Viterbi譯碼器需要32個(gè)CLK延遲。改進(jìn)后的譯碼器在速度上有了很大的提高,同時(shí)資源消耗也有了一定的節(jié)約。
Viterbi譯碼器的測(cè)試主要包括功能驗(yàn)證與譯碼器的糾錯(cuò)性能兩部分。
首先進(jìn)行功能驗(yàn)證,所有數(shù)據(jù)都是理想的。因?yàn)棣?20,則譯碼器以20個(gè)數(shù)據(jù)為一組譯碼,本文的Viterbi譯碼器采用的是截尾譯碼,故利用MATLAB產(chǎn)生16個(gè)隨機(jī)序列加上4個(gè)0組成一組信息序列為C1:11111101101110110000,經(jīng)過(guò)編碼器后的輸出序列為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為碼元時(shí)鐘,code是C3序列,TB_flag為1表示達(dá)到回溯深度,code_in為譯碼輸出結(jié)果:11111101101110110000,與C1序列完全相同,故此譯碼器功能正確。
其次是糾錯(cuò)性能測(cè)試,在理想數(shù)據(jù)中人為加入錯(cuò)誤的干擾信息。經(jīng)計(jì)算,(2,1,4)譯碼器的df=7,故理論上此譯碼器可在5段連續(xù)譯碼中糾正3個(gè)隨機(jī)錯(cuò)誤。經(jīng)測(cè)試,在20個(gè)連續(xù)碼元段中加入3個(gè)隨機(jī)錯(cuò)誤碼元,即誤比特率為2.5%的情況下,譯碼器可以將錯(cuò)誤完全糾正。在20個(gè)連續(xù)碼元段中加入4個(gè)隨機(jī)錯(cuò)誤碼元,即誤比特率為3.33%時(shí)不能將錯(cuò)誤完全糾正,但若錯(cuò)誤碼元之間間隔≥5段碼元時(shí)也可完全糾正。理論值的糾錯(cuò)性能是在譯碼深度無(wú)限長(zhǎng)時(shí)計(jì)算出來(lái)的,而無(wú)限長(zhǎng)的譯碼深度在硬件上是無(wú)法實(shí)現(xiàn)的,因此在實(shí)際應(yīng)用中的糾錯(cuò)性能會(huì)與理論值有一定的差距,但在實(shí)際通信系統(tǒng)中,調(diào)制后通過(guò)信道傳輸?shù)腻e(cuò)誤碼率遠(yuǎn)未達(dá)到10-2這個(gè)數(shù)量級(jí)[1]。如圖7所示,在AWGN信道中,只要信噪比大于4.5 dB,誤碼率就小于10-2這個(gè)數(shù)量級(jí);在平坦瑞利衰落信道中,只要信噪比大于14 dB,誤碼率就小于10-2這個(gè)數(shù)量級(jí),而實(shí)際通信系統(tǒng)中信道的信噪比遠(yuǎn)遠(yuǎn)大于14 dB,因此本文改進(jìn)的Viterbi譯碼器能夠滿足實(shí)際應(yīng)用中的需求[1]。
4 結(jié)論
本設(shè)計(jì)主要針對(duì)ACS和SMU單元,簡(jiǎn)化譯碼器的結(jié)構(gòu),降低硬件實(shí)現(xiàn)的復(fù)雜度,提高運(yùn)算速度。在加比選單元的控制度量部分,為了解決路徑度量數(shù)據(jù)溢出問(wèn)題,本文提出了預(yù)定義存儲(chǔ)度量值寄存器容量法,減小了運(yùn)算量,提高了譯碼速度。在幸存路徑存儲(chǔ)部分,優(yōu)化了存儲(chǔ)方式, 采用步進(jìn)式存儲(chǔ)方法,降低了譯碼器的功耗?;厮葑g碼時(shí),采用奇偶回溯法譯碼方式,根據(jù)幸存狀態(tài)的奇偶性完成輸出,減小了RAM的存儲(chǔ)空間。仿真結(jié)果表明,本文的優(yōu)化設(shè)計(jì)能夠大大簡(jiǎn)化硬件電路的結(jié)構(gòu),在譯碼器的設(shè)計(jì)中具有應(yīng)用價(jià)值。
參考文獻(xiàn)
[1] 王新梅,肖國(guó)鎮(zhèn).糾錯(cuò)碼—原理與方法(修訂版)[M].西安:西安電子科技大學(xué)出版社,2001.
[2] GAO Z,ZHU J,HAN R,et al.Design and implementation of configuration memory SEU-Tolerant Viterbi decoders in SRAM-based FPGAs[J].IEEE Transactions on Nanotechnology,2019,18:691-699.
[3] 張慎.卷積碼編碼器及Viterbi譯碼器的設(shè)計(jì)[D].成都:電子科技大學(xué),2008.
[4] 平磊.面向5G通信的咬尾卷積碼和Turbo碼技術(shù)研究[D].西安:西安電子科技大學(xué),2017.
[5] MAMARDE R,KHOJE S.Viterbi decoder using Zynq-7000 AP-SoC[C].2018 Second International Conference on Intelligent Computing and Control Systems(ICICCS).IEEE,2018:941-944.
[6] EL-GOHARY A,SAAD M,MAHMOUD O,et al.Low utilization FPGA implementation of OFDM transceiver based on IEEE 802.11 n standard[C].2019 8th International Conference on Modern Circuits and Systems Technologies(MOCAST).IEEE,2019:1-4.
[7] ZHOU L,TANG M,LIU D,et al.A flexible viterbi decoder for software defined radio[J].Journal of Theoretical and Applied Information Technology,2013,47(2):702-706.
[8] SANTHI M,LAKSHMINARAYANAN G,SUNDARAM R,et al.Synchronous pipelined two-stage radix-4 200Mbps MB-OFDM UWB Viterbi decoder on FPGA[C].2009 International SoC Design Conference(ISOCC).IEEE,2009:468-471.
[9] 朱明哲,肖瑞,蘇小凡,等.混合噪聲下基于Viterbi同步壓縮S變換的FM信號(hào)分析[J].電子與信息學(xué)報(bào),2018,40(12):2913-2918.
[10] YOSHIKAWA H.Error performance analysis of the K-best viterbi decoding algorithm[C].2018 International Symposium on Information Theory and Its Applications(ISITA).IEEE,2018:257-260.
[11] AHMED S,SIDDIQUE F,WAQAS M,et al.Viterbi algorithm performance analysis for different constraint length[C].2019 16th International Bhurban Conference on Applied Sciences and Technology(IBCAST).IEEE,2019:930-932.
[12] 楊敏.高速率低延時(shí)Viterbi譯碼器的設(shè)計(jì)與實(shí)現(xiàn)[J].電子技術(shù)應(yīng)用,2018,44(9):56-58,62.
[13] 辛淵博,侯宏.基于FPGA的數(shù)字信道化接收機(jī)的研究及實(shí)現(xiàn)[J].電子技術(shù)應(yīng)用,2009,35(5):163-165,170.
[14] 仇佩亮,陳惠芳,謝磊.數(shù)字通信基礎(chǔ)[M].北京:電子工業(yè)出版社,2007.
作者信息:
吳雪玲,江 虹
(西南科技大學(xué) 信息工程學(xué)院,四川 綿陽(yáng)621000)