计算机通信与网络v2 实验课程(16)

描述

继续讲解!本人非常重视实践教学,在本科阶段就要把同学们的知识夯实。那么各种仿真就是最好的夯实工具。继续讲解扩频通信的知识。很多同学总结写的挺好,就是缺少实践。比如15级王美女的总结。

波形的仿真开发步骤:
要先完成该基带波形的性能仿真,然后通过比较来决定是否采用。
其次,在基带性能仿真程序的基础上结合专项仿真的结果进行相关模块的补充。
然后,在进行波形在实际系统实现过程中的细节仿真。要考虑实现过程中受到系统环境的影响。
最后,再不断的优化程序的不足。算法很重要,要通过阅读扩充知识,通过文档总结知识,才能不断提高自己。
总结的很到位,但自己实践了吗?关键是要实践!说到这,我就必须再讲讲BPSK程序了。这个程序掌握不了是肯定写不好扩频程序的。先看看BPSK的源代码吧!

通信网络

%%%      BPSK调制解调器误码性能仿真程序    %%

%%%          BPSK_modem_sim2.m             %%%% 

 %%       date: 2016-12-26     author: 算法工匠    %%


%%%%%   程序说明

% 完成BPSK调制解调器的仿真,比较不同信噪比下的误码性能。

% 通信体制具体内容如下:

% 调制方式:BPSK   编码方式:无

% 滚降因子:0.5

% 解调方式:相干解调  译码方式:无

% 噪声:加性高斯白噪声

% 中频信号仿真


%%%        仿真环境 

% 软件版本:matlab 2015b


%%%        sim系列说明之处

% sim2:增加了不同信噪比下的误码性能仿真,

%  注释掉图形语句,节约仿真时间;


clear all;

close all;

format long;

%%********       程序主体          *****%%


%%%%%%     系统参数       %%%%%%   

bit_rate = 1000;

symbol_rate = 1000;

fre_sample = 16000;

symbol_sample_rate = 16;  

% 一个符号内的采样倍数

fre_carrier = 4000;

%  生成低通滤波器

LPF_fir128 = fir1(128,0.2); 

% 生成匹配滤波器

rolloff_factor = 0.5;  % 滚降因子

rcos_fir = rcosdesign(rolloff_factor, 6, symbol_sample_rate);         

%  生成匹配滤波器 a square-root raised cosine FIR filter with rolloff factor 


%%%%      信源       %%%%%%%      

%%% 随机信号

% msg_source = randint(1,1000);

msg_source = [ones(1,20) zeros(1,20) randint(1,19960)]; 

% 给出标志性的帧头,方便调试。

% 通常帧头会采用扩频序列,为了方便调试,可以采用全1和全0。

% 2022年,randint函数已经不用了,需要更换为randi函数了,如何更换呢?


%%%%%%%%     发射机     %%%%%%%      

%%%%%  编码器

% bchcode  % BCH编码


%%%%%  调制器

%%%  双极性变换 

bipolar_msg_source = 2*msg_source - 1; 


%%% 滤波器

% rcosflt   滚降成型滤波

rcos_msg_source = rcosflt(bipolar_msg_source,1000,16000);

% Roll-off factor 为 0.5。


% 频域观察

fft_rcos_msg_source = abs(fft(rcos_msg_source));


figure(1)

plot(rcos_msg_source,'-*')

title('时域波形')

figure(2)

plot(fft_rcos_msg_source)

title('频域波形')


aaa = 1;  % 调试断点


%%% 载波发送

time =[1:length(rcos_msg_source)];

rcos_msg_source_carrier = rcos_msg_source'.*cos(2*pi*fre_carrier.*time/fre_sample);


% 频域观察

% fft_rcos_msg_source_carrier = abs(fft(rcos_msg_source_carrier));

% figure(3)

% plot(rcos_msg_source_carrier)

% title('时域波形')

% figure(4)

% plot(fft_rcos_msg_source_carrier)

% title('频域波形')


aaa = 1;  % 调试断点


%%%%%%       信道       %%%%%% 

% 设置信噪比

snr = -41 ;


for i = 1:length(snr) 

%%% 高斯白噪声信道

rcos_msg_source_carrier_noise = awgn(rcos_msg_source_carrier,snr(i),'measured');

% rcos_msg_source_carrier_noise = awgn(rcos_msg_source_carrier,snr);


%%% 瑞利信道


%%%%%      接收机      %%%%%%%      


%%%%%% 解调器

%%% 载波恢复

% 生成本地载波

rcos_msg_source_noise = rcos_msg_source_carrier_noise.*cos(2*pi*fre_carrier.*time/fre_sample);


% 滤波高频,保留基带信号

rcos_msg_source_LP = filter( LPF_fir128, 1, rcos_msg_source_noise );

% 延时64个采样点输出。


%%% 仿真误码率需要多次循环,此时需要注释掉图形语句!

% figure(5)

% plot(rcos_msg_source_LP)

% title('时域波形')

% figure(6)

% plot(abs(fft(rcos_msg_source_LP)))

% title('频域波形')


% 滤波  filter

rcos_msg_source_MF = filter( rcos_fir, 1, rcos_msg_source_LP );


%%% 仿真误码率需要多次循环,此时需要注释掉图形语句!

% figure(7)

% plot(rcos_msg_source_MF,'-*')

% title('时域波形')

% figure(8)

% plot(abs(fft(rcos_msg_source_MF)))

% title('频域波形')


%%% 最佳采样点

% 选取最佳采样点,一个符号取一个点进行判决

decision_site = 160; % (96+128+96)/2 = 160  三个滤波器延迟值

rcos_msg_source_MF_option = rcos_msg_source_MF(decision_site: symbol_sample_rate : end);

% 涉及三个滤波器,固含有三个滤波器延迟累加。


%%% 判决

msg_source_MF_option_sign = sign(rcos_msg_source_MF_option);


%%% 仿真误码率需要多次循环,此时需要注释掉图形语句!

% figure(9)

% plot(rcos_msg_source_MF_option,'-*')

% title('时域波形')


%%%%%% 解码器

% bchdecode  % BCH译码


%%%%%%%         信宿       %%%%%  

%%% 误码性能比对

% [err_number,bit_err_ratio] = biterr(x,y) 

[err_number,bit_err_ratio] = biterr(msg_source(1:length(rcos_msg_source_MF_option)), (msg_source_MF_option_sign + 1)/2)


end

%%%     仿真结果      %%%

% snr  ber

% -4      0.0114

% -3.5    0.0071

% -3      0.0046

% -2.5    0.0040

% -2.0    0.0019

% -1.5    0.0012

% -1.0    8.50e-04

% -0.5    6.00e-04

% 0       2.00e-04

% 0.5     1.00e-04

% 1       5.00e-04

% 注意:snr和信号的比特信噪比EbNo存在等效关系!

% EbNo = SNR + 10*lg(0.5*16)-10*lg(2)

% 比如 EbNo = 6dB 

% berawgn(6,'psk',2,'nondiff') = 0.0024

% berawgn(5,'psk',2,'nondiff') = 0.0059

% 该误码率和snr为-3.8dB时的误码结果基本一致。

% 5 = -3.8 + 10*log10(0.5*16)

% 仿真表明该关系正确!

%%%%    结论   %%%%%% 

% 完成了BPSK调制解调器在不同误码率下的仿真。

% 仿真结果正确。

% 使用awgn函数需要了解函数中参数snr和比特信噪比之间的换算关系。

% 没有包含编译码内容。

% 2017-1-5

通信网络

这种代码可是真正的干货!请认真消化!那滚降成型滤波器到底如何使用呢?什么是EbNo呢?这些问题可以先找度娘哦!

通信网络

2022年,本专题系列的阅读量已经破万!

加油!我会一直努力!

由浅入深!

建议学通信相关专业的人士赶紧去看!

通信网络


未完,待续!

通信网络

20181105记录:

前段时间女儿写了一篇作文《歪脖子的爸爸》。这三个月我被强迫症折磨的要死要活的。从最开始的抖动到头往一边偏,真的很痛苦。膏药持续的贴以缓解肌肉酸痛,直到皮肤都破了。就这样,我还坚持拯救红包单车。但看到那些单车管理员都那么粗暴的对待单车,这个社会要能承受共享事物还需太长的素质之路要走。最近还建群抢红包推广文章,居然被一个以前的前台服务员说了一句:谁让你拉我进群的啊。我当时说了对不起,但是我拉你你可以拒绝啊,再说你是拿了所有的运气红包才说这句话的。这位曹姓女士的素质可见一斑,之前是由于她帮我定富建酒店的客房才加她为好友的(就是为了方便订客房),没想到她居然是这样的人。哎,早点分辨出来能避免更多的麻烦!社会上什么人都有,想做营销的同学们做好心里准备了吗?

通信网络

通信网络

修订记录

20181106 完成初稿;

20221129 修订内容v2;


原文标题:计算机通信与网络v2 实验课程(16)

文章出处:【微信公众号:通信工程师专辑】欢迎添加关注!文章转载请注明出处。

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分