基于Matlab的Turbo碼仿真研究
摘 要:為了使Turbo碼仿真更容易,研究并建立了基于Matlab中Simulink通信模塊的Turbo碼仿真模型。Turbo碼編碼器采用兩個(gè)相同的分量編碼器通過交織器并行級聯(lián)而成。Turbo碼譯碼器采用不同的譯碼算法,這些算法由s函數(shù)調(diào)用m文件實(shí)現(xiàn)。使用所建立的模型進(jìn)行仿真,結(jié)果表明,在信噪比相同的情況下,交織長度越大、迭代次數(shù)越多、譯碼算法越優(yōu),Turbo碼性能越好。設(shè)計(jì)實(shí)際系統(tǒng)時(shí),應(yīng)綜合考慮各因素。
關(guān)鍵詞:Turbo碼;Simulink仿真;交織長度;迭代次數(shù);譯碼算法
0 引 言
Shannon編碼定理指出:如果采用足夠長的隨機(jī)編碼,就能逼近Shannon信道容量。而Turbo碼以其接近Shannon理論極限的譯碼性能,已被采納為3G移動(dòng)通信系統(tǒng)的信道編碼標(biāo)準(zhǔn)之一。Turbo碼巧妙地將兩個(gè)簡單分量碼通過偽隨機(jī)交織器并行級聯(lián)來構(gòu)造具有偽隨機(jī)特性的長碼,并通過在兩個(gè)軟輸入/軟輸出(SISO)譯碼器之間進(jìn)行多次迭代實(shí)現(xiàn)了偽隨機(jī)譯碼。采用迭代譯碼的方法來提高通信系統(tǒng)的譯碼性能是Turbo碼的最大特點(diǎn)。
Turbo碼的編碼器、譯碼器結(jié)構(gòu)繁瑣,是一種非常復(fù)雜的信道編碼方案,這使得對Turho碼的理論分析十分困難,且只能對運(yùn)算復(fù)雜度作宏觀分析,對Turbo碼的具體實(shí)現(xiàn)并沒有一個(gè)清楚的度量。因此,使用計(jì)算機(jī)對Turbo碼進(jìn)行仿真分析是十分必要的。
本文分析了Turbo碼編碼譯碼的原理,考慮到Turbo碼系統(tǒng)編譯碼的數(shù)據(jù)處理量很大,利用生成矩陣對信息序列進(jìn)行編碼、譯碼時(shí)的迭代計(jì)算等等,都涉及了矩陣運(yùn)算,故采用Matlab/Sireulink來進(jìn)行建模仿真,同時(shí)分析了迭代次數(shù)、交織長度及不同譯碼算法對Turbo碼性能的影響。
l Turbo碼的編碼器和譯碼器原理
1.1 Turbo碼編碼器組成
Turbo碼的編碼器的基本結(jié)構(gòu)如圖1所示。
Turbo碼編碼器主要由兩個(gè)遞歸系統(tǒng)卷積編碼器(RSC)、一個(gè)交織器與一個(gè)刪余和復(fù)用單元組成。遞歸系統(tǒng)卷積編碼器是指帶有反饋的系統(tǒng)卷積編碼器,其碼率可設(shè)為R=k/n;交織器用來改變信息序列的排列順序,獲得與原始信息序列內(nèi)容相同,但排列不同的信息序列;刪余和復(fù)用單元的作用是從總體上改善Turbo碼碼率,因此通過刪余和復(fù)用單元,Turbo碼可以獲得不同碼率的碼字。編碼器的碼字通過信道輸出到譯碼器內(nèi)。
1.2 Turbo碼譯碼器原理
Turbo碼譯碼器基本結(jié)構(gòu)如圖2所示。
Turbo碼譯碼器由兩個(gè)軟輸入/軟輸出(SISO)譯碼器DECl和DEC2串行級聯(lián)組成,交織器與編碼器中所使用的交織器相同。譯碼器DECl對分量碼RSCl進(jìn)行最佳譯碼,產(chǎn)生關(guān)于信息序列中每一比特的似然信息,并將其中的“新信息”經(jīng)過交織送給DEC2,譯碼器DEC2將此信息作為先驗(yàn)信息,對分量碼RSC2進(jìn)行最佳澤碼,產(chǎn)生蓉于交織后的信息序列中每一比特的似然比信息,然后將其中的“外信息”經(jīng)過解交織送給DECl,進(jìn)行下一次譯碼。這樣,經(jīng)過多次迭代,DECl或DEC2的外輸出信息趨于穩(wěn)定,似然比漸近值逼近于對整個(gè)碼的最大似然譯碼,然后對此似然比進(jìn)行硬判決,即可得到信息序列的最佳估計(jì)值。
2 仿真模型的建立
仿真模型包括信源、編碼器、信道、譯碼器和信宿五個(gè)部分。
在模型中,可以任意改變的參數(shù)值為:
N:交織器的大小,即Turbo碼的分組長度,也即每個(gè)分組所包含的信息序列的長度。
信道類型選擇:Sireulink模塊中可以選擇設(shè)置高斯白噪聲信道(AWGN)或多徑瑞利衰落信道(ReyleighFading)。
譯碼算法選擇:Log—MAP,Max—Log—MAP和SOVA三種譯碼算法。
SNR:信號與噪聲強(qiáng)度比值。
迭代次數(shù):迭代次數(shù)的不同對譯碼器輸出有著一定的影響。
2.1 Turbo編碼模塊
本模型中Turbo碼編碼器采用兩個(gè)相同的分量編碼器通過交織器并行級聯(lián)而成。分量編碼器是碼率為R=1/2的循環(huán)系統(tǒng)卷積碼。
首先用貝努利發(fā)生器(Bernoulli Binary Genera—tor)產(chǎn)生序列,從參數(shù)面板調(diào)節(jié)幀大小和采樣率。原始序列進(jìn)入第1卷積編碼器(Convolutional Encoder),并經(jīng)過隨機(jī)交織器(Random Interleaver)后進(jìn)入第2卷積編碼器(Convolutional Encoderl)。刪余模塊1,2同時(shí)接在第1卷積編碼器的后面。刪余模塊1(puncturel)的輸出為第1卷積編碼輸出的奇序列,刪余模塊2(puncture2)的輸出為第1卷積編碼輸出的偶序列。第3個(gè)刪余模塊(puncture3)接在第2卷積編碼器的后面,其輸出第2卷積編碼輸出的偶序列。這3路序列經(jīng)過串并變換后合成一路序列,作為Turbo編碼輸出。