matlab做信号完整性,关于Matlab的Turbo码仿真研究
EDA365歡迎您登錄!
您需要 登錄 才可以下載或查看,沒有帳號?注冊
x
摘 要:為了使Turbo碼仿真更容易,研究并建立了基于Matlab中Simulink通信模塊的Turbo碼仿真模型。Turbo碼編碼器采用兩個相同的分量編碼器通過交織器并行級聯(lián)而成。Turbo碼譯碼器采用不同的譯碼算法,這些算法由s函數(shù)調(diào)用m文件實現(xiàn)。使用所建立的模型進行仿真,結(jié)果表明,在信噪比相同的情況下,交織長度越大、迭代次數(shù)越多、譯碼算法越優(yōu),Turbo碼性能越好。設(shè)計實際系統(tǒng)時,應(yīng)綜合考慮各因素。
; E6 Q$ P, F( j( y. h關(guān)鍵詞:Turbo碼;Simulink仿真;交織長度;迭代次數(shù);譯碼算法
: L- b: H8 C, [. {* T, c0 引 言
! Y* D4 T3 l9 T8 IShannon編碼定理指出:如果采用足夠長的隨機編碼,就能逼近Shannon信道容量。而Turbo碼以其接近Shannon理論極限的譯碼性能,已被采納為3G移動通信系統(tǒng)的信道編碼標(biāo)準(zhǔn)之一。Turbo碼巧妙地將兩個簡單分量碼通過偽隨機交織器并行級聯(lián)來構(gòu)造具有偽隨機特性的長碼,并通過在兩個軟輸入/軟輸出(SISO)譯碼器之間進行多次迭代實現(xiàn)了偽隨機譯碼。采用迭代譯碼的方法來提高通信系統(tǒng)的譯碼性能是Turbo碼的最大特點。$ A2 ~3 S& E6 ]: ~3 l( E$ i0 I/ B, u
Turbo碼的編碼器、譯碼器結(jié)構(gòu)繁瑣,是一種非常復(fù)雜的信道編碼方案,這使得對Turho碼的理論分析十分困難,且只能對運算復(fù)雜度作宏觀分析,對Turbo碼的具體實現(xiàn)并沒有一個清楚的度量。因此,使用計算機對Turbo碼進行仿真分析是十分必要的。
- {??w" E6 y4 G' j) c' O* J- m+ X$ S$ k2 O本文分析了Turbo碼編碼譯碼的原理,考慮到Turbo碼系統(tǒng)編譯碼的數(shù)據(jù)處理量很大,利用生成矩陣對信息序列進行編碼、譯碼時的迭代計算等等,都涉及了矩陣運算,故采用Matlab/Sireulink來進行建模仿真,同時分析了迭代次數(shù)、交織長度及不同譯碼算法對Turbo碼性能的影響。
4 {1 U) k' ^, A% q2 V, p
l Turbo碼的編碼器和譯碼器原理; j+ ]* ~+ b* F
1.1 Turbo碼編碼器組成" G7 \4 T; H/ T6 |. a; Y
Turbo碼的編碼器的基本結(jié)構(gòu)如圖1所示。
21.jpg (17.16 KB, 下載次數(shù): 1)
2021-3-15 11:01 上傳
Turbo碼編碼器主要由兩個遞歸系統(tǒng)卷積編碼器(RSC)、一個交織器與一個刪余和復(fù)用單元組成。遞歸系統(tǒng)卷積編碼器是指帶有反饋的系統(tǒng)卷積編碼器,其碼率可設(shè)為R=k/n;交織器用來改變信息序列的排列順序,獲得與原始信息序列內(nèi)容相同,但排列不同的信息序列;刪余和復(fù)用單元的作用是從總體上改善Turbo碼碼率,因此通過刪余和復(fù)用單元,Turbo碼可以獲得不同碼率的碼字。編碼器的碼字通過信道輸出到譯碼器內(nèi)。
/ t) Z" f3 y* f- @( D* X# Q1.2 Turbo碼譯碼器原理4 h6 G* M' E3 J/ `! y) A' y
Turbo碼譯碼器基本結(jié)構(gòu)如圖2所示。
22.jpg (32.63 KB, 下載次數(shù): 1)
2021-3-15 11:01 上傳
Turbo碼譯碼器由兩個軟輸入/軟輸出(SISO)譯碼器DECl和DEC2串行級聯(lián)組成,交織器與編碼器中所使用的交織器相同。譯碼器DECl對分量碼RSCl進行最佳譯碼,產(chǎn)生關(guān)于信息序列中每一比特的似然信息,并將其中的“新信息”經(jīng)過交織送給DEC2,譯碼器DEC2將此信息作為先驗信息,對分量碼RSC2進行最佳澤碼,產(chǎn)生蓉于交織后的信息序列中每一比特的似然比信息,然后將其中的“外信息”經(jīng)過解交織送給DECl,進行下一次譯碼。這樣,經(jīng)過多次迭代,DECl或DEC2的外輸出信息趨于穩(wěn)定,似然比漸近值逼近于對整個碼的最大似然譯碼,然后對此似然比進行硬判決,即可得到信息序列的最佳估計值。
% h( M* S( ]" s: R5 r% I. v2 仿真模型的建立$ z% r, T+ r4 H" E- l9 L% v
仿真模型包括信源、編碼器、信道、譯碼器和信宿五個部分。
( E$ M/ M; ~7 \3 m1 _2 L在模型中,可以任意改變的參數(shù)值為:7 C6 _$ I* x- \/ e) R% J
N:交織器的大小,即Turbo碼的分組長度,也即每個分組所包含的信息序列的長度。
! Y2 }5 N$ l0 J$ V2 u6 ?: p信道類型選擇:Sireulink模塊中可以選擇設(shè)置高斯白噪聲信道(AWGN)或多徑瑞利衰落信道(ReyleighFading)。
2 f: _: k7 R' q??F譯碼算法選擇:Log—MAP,Max—Log—MAP和SOVA三種譯碼算法。
8 R$ w, {. m/ o) {; C9 BSNR:信號與噪聲強度比值。. Y2 O) Q" T# w) S
迭代次數(shù):迭代次數(shù)的不同對譯碼器輸出有著一定的影響。
: e3 o3 }3 ^" d2.1 Turbo編碼模塊
+ e1 Q3 ^8 i- W' |! t本模型中Turbo碼編碼器采用兩個相同的分量編碼器通過交織器并行級聯(lián)而成。分量編碼器是碼率為R=1/2的循環(huán)系統(tǒng)卷積碼。0 `; T, f4 n6 i4 E' R1 }
首先用貝努利發(fā)生器(Bernoulli Binary Genera—tor)產(chǎn)生序列,從參數(shù)面板調(diào)節(jié)幀大小和采樣率。原始序列進入第1卷積編碼器(Convolutional Encoder),并經(jīng)過隨機交織器(Random Interleaver)后進入第2卷積編碼器(Convolutional Encoderl)。刪余模塊1,2同時接在第1卷積編碼器的后面。刪余模塊1(puncturel)的輸出為第1卷積編碼輸出的奇序列,刪余模塊2(puncture2)的輸出為第1卷積編碼輸出的偶序列。第3個刪余模塊(puncture3)接在第2卷積編碼器的后面,其輸出第2卷積編碼輸出的偶序列。這3路序列經(jīng)過串并變換后合成一路序列,作為Turbo編碼輸出。
7 q! A??e8 Q9 a0 q2.2 信道模塊( M" y" k( C8 W1 }
信道模塊包含有調(diào)制模塊、信道及噪聲模型、解調(diào)模塊。調(diào)制方式可以采用四相相移鍵控(QPSK)。噪聲模型可以選擇設(shè)置為高斯白噪聲信道(AWGN)或多徑瑞利衰落信道(Reyleigh Fading)。: Y0 \6 H, ^5 I+ }- {- O4 p
2.3 Turbo譯碼模塊/ n9 b$ X+ v2 }. S# P. Z, [
Turbo碼的編碼部分由兩個子編碼器組成,因此在其譯碼部分也就相應(yīng)有兩個子譯碼器。該模塊可以調(diào)用Log—MAP譯碼子程序、Max—Log—MAP算法譯碼子程序、SOVA算法子程序供譯碼模塊調(diào)用。這些算法通過仿真模塊中的S函數(shù)實現(xiàn)。
1 V( J# u# F: k0 [3 仿真結(jié)果分析
5 x6 B# d7 t8 a0 |. h/ ?3.1 交織器大小對Turbo碼性能的影響
$ a; R: z- R5 s0 _* h: l仿真過程中,選取譯碼算法為Max—Log—MAP,分別設(shè)置交織長度為150,600,1 200。三種交織長度的誤碼率如圖3所示。
23.jpg (30.24 KB, 下載次數(shù): 1)
2021-3-15 11:01 上傳
從圖3中很明顯看出,當(dāng)信噪比SNR比較小時,不同的交織長度下譯碼性能的區(qū)別并不是很明顯,由此可見,信噪比對譯碼的影響是很大的。當(dāng)信噪比大于1 dB時,交織長度越大,譯碼器的性能就越優(yōu)越,Turbo碼的糾錯性能也就越好。這是因為交織器產(chǎn)生的交織增益使得Turbo碼的性能隨幀長呈指數(shù)增長。同時,交織長度的增大使幀長變長,迭代譯碼的復(fù)雜程度也隨之增加。一系列問題如編碼時延、傳輸時延、譯碼時延等就明顯。在實際系統(tǒng)中,需要綜合考慮選定最佳交織長度。4 V2 M" _& P, v; A" ]( I
3.2 迭代次數(shù)對Turbo碼性能的影響
) f2 F" g* t' H0 D0 T7 Y. i迭代譯碼結(jié)構(gòu)是Turbo碼具有良好譯碼性能的一個重要原因。在交織長度為600、采用Max—Log—MAP譯碼算法的情況下,分別迭代1次、2次、4次進行比較。譯碼器性能如圖4所示。
24.jpg (25.85 KB, 下載次數(shù): 1)
2021-3-15 11:01 上傳
可以看出,迭代次數(shù)越多,誤碼率越低,譯碼性能優(yōu)越。同時,進一步可以發(fā)現(xiàn)迭代次數(shù)存在一個飽和值,一般5~10次即飽和,當(dāng)達到飽和時,即使次數(shù)增加,譯碼的性能也不會明顯改進,反而是迭代次數(shù)的增加會造成不必要的計算負擔(dān),所以在實際系統(tǒng)中要考慮飽和點來設(shè)計迭代次數(shù)。
' L3 e; f9 R6 q; c$ M/ J) b4 v% ]8 ^3.3 不同譯碼算法比較
, B( j. j9 l* o. L圖5是不同算法譯碼性能的比較,其中交織長度設(shè)定為600,迭代次數(shù)為3次。比較來說,Log—MAP算法的譯碼效果最好,Max—Log—MAP算法譯碼效果比較差,但是具有較快的運算速度。SOVA算法效果不錯,是較優(yōu)方案。因此,在信噪比比較低的情況下,為了戛獲得較好的糾錯效果,最好基于Log—MAP算法進行修正。
25.jpg (27.9 KB, 下載次數(shù): 0)
2021-3-15 11:01 上傳
4 結(jié) 語5 C5 J2 h$ A, T6 {% M1 _
提出一種基于Simulink模塊和S函數(shù)共同構(gòu)建的Turbo碼仿真模型。在編碼器中,分量碼采用循環(huán)系統(tǒng)卷積碼,使分量碼的奇序列與原始信息相同;在譯碼器中,三個算法子程序可以任意選擇比較,使Turbo碼的仿真易于實現(xiàn),方便了對Turbo碼的分析和應(yīng)用研究。利用仿真結(jié)果分析了迭代次數(shù)、交織長度、不同算法對譯碼性能的影響,對實際系統(tǒng)設(shè)計有一定的指導(dǎo)作用。
- z0 t/ O% m$ J6 P: X
總結(jié)
以上是生活随笔為你收集整理的matlab做信号完整性,关于Matlab的Turbo码仿真研究的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【金融量化分析】#BSM formula
- 下一篇: Android Ble蓝牙中如何获取Ra