您的当前位置:首页Turbo码的编译码算法仿真汇总

Turbo码的编译码算法仿真汇总

2024-01-12 来源:小侦探旅游网


Turbo码的编译码算法仿真汇总

电子信息类实践课III 通信系统仿真

题 目 Turbo码的编译码算法仿真 专 业 学 号 姓 名 日 期

注:本报告仅供参考

哈尔滨工业大学 电子信息类实践课III 通信系统仿真 1

哈尔滨工业大学 电子信息类实践课III 通信系统仿真 1

哈尔滨工业大学 电子信息类实践课III 通信系统仿真 1

哈尔滨工业大学 电子信息类实践课III 通信系统仿真 由于多径和移动台运动等影响因素,使得移动信道对传输信号在时间、频率和角度上造成了色散,如时间色散、频率色散、角度色散等等。根据不同无线环境,接收信号包络一般服从几种典型分布,如瑞利分布、莱斯分布和Nakagami-m分布。在仿真衰落信道时,最重要的参数是多径扩展和多普勒频移。

通常在离基站较远、反射物较多的地区,发射机和接收机之间没有直射波路径,存在大量反射波;到达接收天线的方向角随机且在(0~2pi)均匀分布;各反射波的幅度和相位都统计独立。

图3 瑞利分布概率分布密度

3、设计与实现过程

1

哈尔滨工业大学 电子信息类实践课III 通信系统仿真 信号生成卷积解调交织Turbo译码Turbo编码解交织过信道计算误码率 图4、程序一框图

 具体实现过程:按照流程图中的各方面(模块)内容进行代码级的详细说明,例如:

 衰落信道的设计

在进行仿真的过程中尝试使用了两种不同的编写方式:

a. Create Rayleigh fading channel object.

chan_ray = rayleighchan(1/10000,100);

fadedSig = filter(chan_ray,modSignal); % Apply the channel effects hChan = comm.AWGNChannel('NoiseMethod', 'Signal to noise ratio (SNR)');

hChan.SNR = EbNo_db(n);

fadedSig = filter(chan_ray,modSignal); % Apply the channel effects receivedSignal = step(chan,fadedSig); % Apply the channel effects

b.调用改进JAKES模型产生单径平坦型瑞利衰落信道子程序

2

哈尔滨工业大学 电子信息类实践课III 通信系统仿真 nsamp = 8;%脉冲抽样点数

ts = 1/(num*nsamp);%抽样时间间隔 t = (0:num*nsamp-1)*ts;%抽样时间序列 ···

h = rayleigh(10,t);%调用瑞利衰落子程序,输入为(最大多普勒频移,抽样时间序列)

···

modSignal = rectpulse(modSignal,nsamp);%矩形脉冲形成 modSignal = h'.*modSignal;%通过瑞利信道

receivedSignal = intdump(receivedSignal,nsamp); %匹配滤波相干解调 使用matlab函数rayleighchan

 程序一:

a.调用turbo编码器 解码器 encoder =

comm.TurboEncoder('InterleaverIndicesSource','Input port');

decoder =

comm.TurboDecoder('InterleaverIndicesSource','Input port', ...

'NumIterations',4);

b.调用AWGN信道

chan = comm.AWGNChannel('EbNo',EbNo_db,'BitsPerSymbol',log2(M)); c. 进行编码解码

Turbo编码:encodedData = step(encoder,msg,index); ···调制编码···

过信道receivedSignal = step(chan,modSignal); ···解调···

Turbo译码:receivedBits = step(decoder,-demodSignal,index);

 程序二

code_length = 1024;%码长 rate = 1/2;%码率 niter = 4;%迭代次数 a.信道:AWGN

EbN0_db = 2:6;

3

哈尔滨工业大学 电子信息类实践课III 通信系统仿真 en = 10^(EbN0_db(nEN)/10); L_c = 4*en*rate;%信道置信度

sigma = 1/sqrt(2*rate*en);%AWGN信道标准差

过信道:r = encoder_out + sigma*randn(1,code_length*(2)); b.Turbo编码器

%第一个分量RSC编码

output1 = rsc_encode(G,msg,1);%1*2048 y(1,:) = output1(1:2:2*code_length);%系统比特 y(2,:) = output1(2:2:2*code_length);%校验比特 %第二个分量RSC编码 a = reshape(y(1,:),32,32); y_inv = reshape(a',1,1024);

output2 = rsc_encode(G,y_inv,-1);%输入1024 输出1*2048 y(3,:) = output2(2:2:2*code_length);%校验比特输出 删余生成码率为1/2的码

encoder_out(1:2:end) = y(1,:);

encoder_out(2:4:end) = y(2,1:2:end);

encoder_out(4:4:end) = y(3,2:2:end);%删余,奇为系统比特 c.Turbo译码器

通过解复用生成每个分量译码器的译码输入数据;初始化外部信息L_e(1:code_length)后。根据迭代次数,循环依次进行第一分量译码、第二分量译码。

%第一分量译码器

L_a(index) = L_e; %先验信息 L_all = sova(rec_s(1,:),G,L_a,1);

L_e = L_all-2*rec_s(1,1:2:2*code_length)-L_a;%计算外部信息 %第二分量译码器

L_a = L_e(index);

L_all = sova(rec_s(2,:),G,L_a,2);

L_e = L_all-2*rec_s(2,1:2:2*code_length)-L_a; 最后再估计信息比特值。 d.软输入Viterbi算法

初始化时,建立网格图,网格中的零状态初始化度量为0,其他为负无穷。输

4

哈尔滨工业大学 电子信息类实践课III 通信系统仿真 入先验信息L_a、RSC码生成矩阵以及数据;前向跟踪计算所有路径度量值;第一分量译码器,从零状态开始向后跟踪;第二分量译码器从最可能的状态开始后向跟踪;后向跟踪获得估计比特及最大似然路径;找到相应于不同信息比特估计的竞争路径的最小delta值,得到软输出。(具体可参看刘向东、向良军编著的《信道编码与matlab仿真》,除SOVA算法外里面还给出了Log_MAP算法)。

4、结论

在进行仿真时,发现上述两种衰落信道误码率基本都是50%左右,也就意味着基本上全部都是错的。在进行了分析之后发现,在不加其他模块进行仿真的时候,光对比经过衰落信道前后的比特流基本就能错一半左右。

图5 衰落信道下程序1仿真结果

5

哈尔滨工业大学 电子信息类实践课III 通信系统仿真 图6 仿真得出ber值

因无法仿真出较好的衰落信道,因此两个程序都放弃衰落信道改用加性高斯白噪声信道。

图7 程序1结果

在16QAM调制信号时在-1dB便能达到接近10-6。

6

哈尔滨工业大学 电子信息类实践课III 通信系统仿真 图8 程序2结果

程序二是1/2码率,采用BPSK调制、sova译码算法,需要到9dB时,误码率大概能达到10量

-6级。两者程序出现如此大的结果差异,最主要的可能与Turbo译码方式相关。

7

哈尔滨工业大学 电子信息类实践课III 通信系统仿真 成绩评定表

成 绩 评 定 项目 比例 20% 80% 100% 得分 报告成绩(百分制) 答辩成绩(百分制) 总评成绩(百分制) 评语: 评审教师: 时 间:

注:课题设计成绩评定表单独一页,装订在报告的最后

8

因篇幅问题不能全部显示,请点此查看更多更全内容