郭 勇,陳艷玲
(南京北方電子信息科技集團有限公司產(chǎn)品研發(fā)中心,南京 211153)
Viterbi譯碼[1-2]是針對卷積碼的糾錯性能最好的譯碼算法,由于對產(chǎn)品設(shè)計的時效性和可靠性的要求,眾多實際的產(chǎn)品采用IP核設(shè)計。Altera公司的Viterbi-IP核使用廣泛,傳統(tǒng)的對Viterbi糾錯性能的驗證僅限于對Matlab中Viterbi譯碼函數(shù)進行BER計算,對Viterbi-IP核糾錯性能的驗證目前的文獻介紹不多,文獻[3]僅介紹該核的使用方法,文獻[4]僅介紹了一幀數(shù)據(jù)的糾錯性能驗證,且錯誤形式單一。本文介紹一種基于對文件進行輸入輸出操作的方法。該方法仿真處理的數(shù)據(jù)量大,能盡可能真實地驗證該IP核實際的糾錯性能,同時通過在Matlab中修改誤碼形式,能快速地仿真不同錯誤形式下的糾錯性能。本文對使用該IP核得到的BER曲線與采用Matlab的Viterbi譯碼函數(shù)Vitdec()得到的理論上的BER曲線進行比較,以驗證該IP核的糾錯性能。
在IP核生成界面上選擇Viterbi核,輸出文件設(shè)為Viterbi1.v。以下是對于Viterbi-IP核的設(shè)置,采用parallel結(jié)構(gòu),連續(xù)譯碼;編碼多項式為(171,133);采用硬判決,因此 Sofebits設(shè)為 1;時鐘頻率設(shè)為50MHz,因此時鐘周期為20 ns;回溯深度為42。遵照產(chǎn)品幀結(jié)構(gòu)的要求,IP核每個塊包含的比特數(shù)為84個,設(shè)該IP核的SNR=10dB。生成的Viterbi-IP核如圖1所示[5]。
由Viterbi-IP核的使用手冊可知,需要設(shè)計一個輸入模塊,產(chǎn)生握手信號,才能把編碼數(shù)據(jù)輸入到Viterbi譯碼器中,因此設(shè)計了shuruct這個模塊。整個電路框圖如圖2所示。
圖1 生成的Viterbi-IP核模塊Fig.1 The module of Viterbi-IP core
圖2 Viterbi譯碼模塊圖Fig.2 Module diagram of decoding by Viterbi algorithm
當sink-rdy信號為高(有效)時,在下一個時鐘,sink-val信號有效,在 sink-val信號有效時,din[1..0]信號輸入到Viterbi譯碼器中,輸入的仿真波形如圖3所示。
圖3 輸入信號仿真波形圖Fig.3 Simulated waveform of input signal
由圖4可知,當source-val信號為高(有效)時,輸出譯碼的數(shù)據(jù)[6]。
圖4 譯碼輸出信號仿真波形圖Fig.4 Simulatedwaveform of output decoding signal
對譯碼器糾錯性能的測試,本文采用的方法是先用Matlab產(chǎn)生編碼后有錯碼的數(shù)據(jù),然后把數(shù)據(jù)寫入到Bianma.txt文檔中,同時把輸入編碼器的數(shù)據(jù)也寫入到 YuanBianma.txt文檔中保存起來。用VerilogHDL語言編寫仿真測試文件在ModelSim中仿真,同時讀入Bianma.txt中的數(shù)據(jù),仿真后產(chǎn)生的譯碼數(shù)據(jù)一方面通過波形顯示出來,一方面寫入到y(tǒng)ima-out.txt文件中。最后把yima-out.txt中的數(shù)據(jù)導(dǎo)入到Matlab中,計算誤比特率。該文實驗的編碼數(shù)據(jù)為420000個,誤碼形式是以84個比特為一組,編碼后每84個比特隨機錯4位、5位、6位、7位、8位。
在ModelSim中編寫仿真測試文件Viterbi-yima.vt,并加入以下語句,把Bianma.txt中的數(shù)據(jù)讀入到仿真波形中去。
圖5和圖6是大容量數(shù)據(jù)的仿真輸入和輸出波形圖。
圖5 導(dǎo)入編碼數(shù)據(jù)后的仿真輸入波形圖Fig.5 Simulated waveform of imported coding data
圖6 譯碼輸出仿真波形圖Fig.6 Simulated output waveform of decoding data
然后,把保存的未編碼數(shù)據(jù)的YuanBianma.txt文檔和經(jīng)過Viterbi-IP譯碼以后的yima-out.txt文檔中的數(shù)據(jù)導(dǎo)入到Matlab中,計算誤比特率。錯誤形式如前所述。仿真的誤比特率曲線如圖7所示。圖8是不同信噪比條件下IP核糾錯性能與理論算法的糾錯性能的比較。
圖7 不同隨機錯誤形式的BER曲線圖Fig.7 BER curve under different random error styles
圖8 不同信噪比條件下的BER曲線圖Fig.8 BER curve under different SNR conditions
由圖7和圖8可知,實際的Viterbi-IP核能達到理論上的Viterbi譯碼的糾錯能力。另外,也驗證了本文介紹的對IP核仿真驗證方法的正確性。
針對目前廣泛使用的Altera公司的Viterbi-IP核,本文提出了一種基于文件輸入輸出操作方法來仿真驗證該IP核在不同錯誤形式和不同信噪比條件下的糾錯性能。分析實驗得到的仿真結(jié)果和Matlab仿真得到的結(jié)果,可得該Viterbi-IP核實際的糾錯能力能達到理論上的Viterbi譯碼的糾錯性能。該方法可適用于任何大容量編譯碼數(shù)據(jù)的糾錯性能驗證,并且通過在Matlab中加載不同錯誤形式的文件,能很方便地驗證不同錯誤形式下的糾錯性能。該方法也可以用于信號處理、頻譜分析等領(lǐng)域,有較好的實際應(yīng)用價值。
[1] 林舒,Costello D J.差錯控制編碼[M].王育民,王新梅,譯.北京:人民郵電出版社,1986.LinShu,Costello D J.Error-Control Coding[M].Translated by WANG Yu-min,WANG Xin-mei.Beijing:People′s Posts&Telecom Press,1986.(in Chinese)
[2] 西瑞克斯(北京)通信設(shè)備有限公司.無線通信的Matlab和FPGA實現(xiàn)[M].北京:人民郵電出版社,2009:46-52.Cylix Communication Technology Co.,Ltd.Beijing.The Accomplishment of Wireless Communications based of Matlab and FPGA[M].Beijing:People′s Posts&Telecom Press,2009:46-52.(in Chinese)
[3] 管立新.基于IP Core的Viterbi高速譯碼器測試[J].電子質(zhì)量,2006,30(9):21-23.GUAN Li-xin.The Test of the high rate Viterbi-Decoding[J].The Electron Quality,2006,30(9):21-23.(in Chinese)
[4] 馬金嶺,劉桂敏,梁凱.基于IP核的Viterbi譯碼器實現(xiàn)[J].信息化研究,2010,36(2):24-27.MA Jin-ling,LIU Gui-min,LIANG Kai.The Accomplishment of Viterbi-decoding based of IP Core[J].The Research of Informationization,2010,36(2):24-27.(in Chinese)
[5] 張傳達,李小文.卷積碼編碼及其Viterbi譯碼的實現(xiàn)[J].無線電工程,2006,36(7):45-48.ZHANG Chuan-da,LI Xiao-wen.The Accomplishment of Convolutional encoder and Viterbi Decoder[J].The Wireless Engineering,2006,36(7):45-48.(in Chinese)
[6] 井小沛,武斌,張青春.基于FPGA.的卷積碼的編/譯碼器設(shè)計[J].電子測量技術(shù),2008,31(2):116-118.JING Xiao-pei,WU Bin,Zhang Qing-Chun.The Design of Encoder and Decoder based of FPGA[J].The Technology of Electron Testing,2008,31(2):116-118.(in Chinese)