首页/文章/ 详情

大学毕业设计一席谈之二十 BPSK相干解调仿真(19)滚降成形下的相位跟踪

精品
作者优秀平台推荐
详细信息
文章亮点
作者优秀
优秀教师/博士学历/特邀专家/独家讲师
平台推荐
内容稀缺
1月前浏览507

本文之前已经给出完整的BPSK波形(波形是指传输体制涉及的所有内容)仿真程序,包含帧头和组帧的内容,还包括调制解调编解码的内容。为了去除相位模糊度,还会将BPSK改为DBPSK!实际环境大多会采用仿真来预先设计波形的调制方式!但对于一个完整的波形而言,还需要完善的地方依旧有很多!比如如何仿真出帧检测概率?

后续会继续讲解这方面的内容,会涉及到载波相位的前馈估计内容。再接回文章大学毕业设计一席谈之二十 BPSK相干解调仿真(14)信噪比等效! 所讲的知识体系。

大家在公 众号的文章里会发现完整的调制解调器程序里面都是有滚降成型的,那么之前的相干解调程序中提出过这样的问题,大家还记得吗?

本文的程序会一并给出答案!大家看了上一篇文章的程序后,也许会问滚降成型的目的是为了找到最佳采样点?不仅如此哦,还能限制信号带宽!这样系统间的干扰就少了很多!

2025年3月,续写此系列,一年一篇文章,只为出精品。本文超过五千字,涉及程序的升级过程,只为让大家能够看出环路的关键参数的变化过程,非专业人士莫入。

那就接着PLL_BPSK_sim4_3继续深入下去,于是有了下面这三个程序!图中有背景点亮的三个文件。

我带着大家看看sim3程序。之前的程序体现的是程序升级的过程。最重大的改变就是加入滚降成形了!!!但加的方式好像和《通信原理》书中说的不一样!!!

cnr_number = 1;  % 仿真循环次数


%-----    帧头 20 位   ------

Iframe_head = [ 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1];


%----  信息内容 10000 位  -----

indisplay1 = randi([0 1],1,10000); 

information1 = 2*indisplay1-1;


%-----起始内容是BTR位 ----

Ibit_flow = [Iframe_head information1];

% information Iframe_head information Iframe_head information];


%--------    调制   ------

len = length(Ibit_flow);

inf_phase = zeros(1,len);


%-----  BPSK  ---

Tra_baseI = Ibit_flow;


%----   滚降成型   ----

sr = 2.4e3;

sps = 8; % 每个符号的采样点数

samplefre = sps*sr;

Isignalsample = upsample(Tra_baseI, sps);


%%% 滚降滤波器

rollof_factor = 0.5; % 滚降因子,可调整

rcos_fir = rcosdesign(rollof_factor,6,sps);

rcos_Isignalsample = filter(rcos_fir,1,Isignalsample);


%-----  生成有载波调制的数据 -----

fcarrier = 3*sr;

foffset = 30; % Hz 频偏值

ophase = pi/3;

time = (0:length(rcos_Isignalsample)-1)/samplefre;

tra_IFsignal = rcos_Isignalsample.*cos(2*pi*(fcarrier+foffset).*time+ophase);


%%%%%%%%%%%%%%%%%%%%

%%%%%     信道部分     %%%%%%              

%%%%%%%%%%%%%%%%%%%%%


for ebn0 = 6 % 单个值仿真成功后再进行多值测试

%------加性高斯白噪声信道----

spow=sum(tra_IFsignal.^2)/len;  

attn=0.5*spow*1/2*10.^(-ebn0/10);

% 这里有错误,不影响算法,但影响误码性能的判断!

attn=sqrt(attn);  % sqrt: built in function

noise = randn(1,length(tra_IFsignal)).*attn;


IFsignal = tra_IFsignal + noise;

% IFsignal = awgn(tra_IFsignal, snr, 'measured');   %设置载噪比


% 设置信号的起始位置signal_start

% 不同的值可以模拟不同时刻的开机捕获过程 

signal_start = 1;

realIFsignal = IFsignal(signal_start:length(IFsignal));


来源:通信工程师专辑
ACT通信UM
著作权归作者所有,欢迎分享,未经许可,不得转载
首次发布时间:2025-03-08
最近编辑:1月前
算法工匠
博士后 | 高级工程师 诚信做事 认真讲课 传播知识
获赞 408粉丝 2663文章 436课程 40
点赞
收藏
作者推荐
未登录
还没有评论
课程
培训
服务
行家
VIP会员 学习计划 福利任务
下载APP
联系我们
帮助与反馈