BPSK调制解调链路实现
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
文章目录
前言
一、通信系统整体概念
二、链路实现
1.生成随机bit
2.量化
3.调制
4.过信道
5.加窗
6.解调
三、多信噪比下的误码率
四、完整代码:
总结
前言
经过多年的学习,发现自己虽然通信专业科班出身,并且现在从事相关工作,但是工作中常常对很多概念含糊不清,所以想通过整理将现有的通信算法流程整理一下,查漏补缺,如有帮助到他人,也是手有余香的美事。
一、通信系统整体概念
通信系统非常庞杂,但是学习时总是分模块理解,比较碎片化,常常只是处理整个流程中非常小的一部分,很难从全景出发。所以我想先能有个整体躯干,然后基于这一躯干逐步补充算法的枝节。我想在每个文档的给出每个模块的优化,对整体的性能影响。如下图所示,一个简单的通信系统分为如下几个模块,信源,发送设备,信道,噪声,解调器,信宿。
我想就从上述这个模型出发,搭建一个仿真链路,说明每个通信中的处理步骤的作用,首先从最简单的BPSK调制解调链路开始。
二、链路实现
1.生成随机bit
a=rand(1,m);
2.量化
代码如下(示例):量化:BPSK调制只有水平幅度的调制,我们可以通过生成范围为0~1的随机比特,然后将这一范围的随机bit映射到-1、1这两个值上。
for i=1:mif(a(1,i)>0.5)a(1,i)=1;elsea(1,i)=-1;end;end;
3.调制
将量化后的信号加载到载波上:
bpsk_m(1,i)=a(1,k)*sin(2*pi*0.5*i+fan)+a(1,k)*cos(2*pi*0.5*i+fan);
4.过信道
过信道:基线接收信号y=h*s+n;,这里为了简化逻辑,认为信道不对幅度相位做改变,只有噪声对信号有影响。
bpsk_m=bpsk_m+N0;% 信号加噪声,模拟过信道
5.加窗
加窗后接收信号y=window(h*s+n);这里window(*)表示对信号进行加窗。
tempx=fft(bpsk_m2);tempxor=tempx;tempx=tempx.*h0; %低通滤波tempx=ifft(tempx);
窗函数如下图所示:
加窗前后的信号变化如下图所示:
上图中without window曲线表示没有低通滤波器的滤波的接收到的时域数据信号,从图中可以看出,此时的数据有很多杂波,这也就是高频分量。上图中with window曲线表示通过低通滤波器后接收到的时域数据信号,相对未加窗信号平滑了许多。随后的decoded曲线表示根据加窗后信号解码出的时域数据,又经过量化,变为了-1、1的数字信号。
6.解调
就是简单的硬判决,大于门限一个值,小于门限一个值。
In=real_x1+real_x; % 可只取一路,这里取了两路之和for i=1:N % 滤波后整形if(In(1,i)>0) % 判决,得到解调结果In(1,i)=1;elseIn(1,i)=-1;end;end;
三、多信噪比下的误码率
下图给出不同信噪比下的误码率:
从图中可以看出,随着信噪比的增加,误码率在不断改善。
四、完整代码:
如下代码可由matlab/octave实现,前文中的图片均由下述代码实现:
clc;
close all;
clear;
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
m=128;
N=512;
fan=pi/20;
n=1:1:N;
snr=-9:1:-2;
for isnr=1:length(snr)iSNR=10^(snr(isnr)/10);N0=sqrt(1/iSNR/2)*randn(1,N) ;%噪声h0=mywindow(N);%%%%%%%%% 随机序列a=rand(1,m);for i=1:mif(a(1,i)>0.5)a(1,i)=1;elsea(1,i)=-1;end;end;%%% 生成BPSK信号bpsk_m=zeros(1,N);j=1;k=1;for i=1:Nif(j==(N/m+1))j=1;k=k+1;end; % 0.05*pi 为初始相位,可以任意改变bpsk_m(1,i)=a(1,k)*sin(2*pi*0.5*i+fan)+a(1,k)*cos(2*pi*0.5*i+fan);j=j+1;end;bpsk_m=bpsk_m+N0;% 信号加噪声,模拟过信道% 接收处理 用正交本振与信号相乘,变频bpsk_m1=bpsk_m.*sin(2*pi*0.5*n);bpsk_m2=bpsk_m.*cos(2*pi*0.5*n);%滤波tempx=fft(bpsk_m1);tempx=tempx.*h0; %低通滤波tempx=ifft(tempx);real_x=real(tempx);tempx=fft(bpsk_m2);tempxor=tempx;tempx=tempx.*h0; %低通滤波tempx=ifft(tempx);%显示非滤波后的时域效果tempxor=ifft(tempxor); real_x1=real(tempx);real_x1or=real(tempxor);In=real_x1+real_x; % 可只取一路,这里取了两路之和for i=1:N % 滤波后整形if(In(1,i)>0) % 判决,得到解调结果In(1,i)=1;elseIn(1,i)=-1;end;end;an=zeros(1,m);for i=1:man(1,i)=In(1,(i-1)*N/m+N/(2*m));end;Pe(isnr) = sum(an~=a)/m;
end
figure(1)
subplot(2,1,1);
plot(real_x1or,'k');
hold on
plot(real_x1+real_x,'b');
axis([1 N -2.5 2.5]);
grid on;
hold on;
plot(In,'r');
title('received signal')
legend('without window','with window','decoded');
subplot(2,1,2); % 比较误码
plot(an,'r*');hold on;
axis([1 m -2 2]);
plot(a,'b^');
title('signal')
legend('out','in');figure(2)
semilogy(snr,Pe,'r-o');%画曲线
xlabel('SNR (dB) ');
ylabel('BER');
title('BER-SNR')
legend('BPSK-simu');
grid on;
figure(3)
plot(1:length(h0),h0)
axis([1 length(h0) 0 1.1]);
title('window')
总结
本文给出了BPSK调制解调,加窗,采样等处理节点的具体实现,并给出了仿真性能结果,希望能给大家带来帮助,接下来我会给出信道对信号处理的影响。
BPSK调制解调链路实现相关推荐
- 用matlab实现bpsk,用MATLAB实现的BPSK调制解调源程序(国外英文资料).doc
用MATLAB实现的BPSK调制解调源程序(国外英文资料) 用MATLAB实现的BPSK调制解调源程序(国外英文资料) modulation.m 函数output_modu =调制(input_fra ...
- 【AGC+FPGA】基于FPGA的数字AGC自适应增益设计,应用在BPSK调制解调系统中
AGC测试,这里我们主要通过产生一个信号,输入到AGC中,来分析AGC的工作效果,其仿真结果如下 图所示: 这里,我们使用测试信号的时候,通过输入一个正弦信号,实现AGC的功能. BPSK解调部分,这 ...
- matlab ellip传递函数,BPSK和QPSK调制解调原理及MATLAB程序
<BPSK和QPSK调制解调原理及MATLAB程序>由会员分享,可在线阅读,更多相关<BPSK和QPSK调制解调原理及MATLAB程序(10页珍藏版)>请在人人文库网上搜索. ...
- 介绍IQ调制解调的原理,阐述其在BPSK,QPSK,QAM等中的应用
在完成项目:用IQ调制实现4FSK 后,虽然我了解了IQ调制的原理,也明白4FSK调制的原理(键控),但是其结合应用的原理一直没搞懂. 今天抽空学习的时候看了两篇文章: 无线通信中的IQ调制,BPSK ...
- 基于PLUTO和MATLAB的QPSK无线调制解调系统
**实验介绍:**本次实验应用软件无线电模块ADALM-PLUTO和MATLAB软件,并结合现代无线数字通信原理,利用MATLAB设计出完整的 QPSK无线通信系统,利用ADALM-PLUTO实现完整 ...
- 通信算法之十一:QPSK/DQPSK/OQPSK/BPSK/DBPSK/16QAM调制解调仿真链路
一. QPSK 正交相移键控 (Quadrature Phase Shift Keying)简称"QPSK",是一种数字调制方式.它分为绝对相移和相对相移两种.由于绝对相移方式存在 ...
- BPSK、QPSK、MPSK、QAM、16QAM的调制解调Matlab实现
BPSK.QPSK.MPSK.QAM.16QAM的调制解调Matlab实现_ICT_Liang的博客-CSDN博客_matlab qam 16QAM调制解调仿真(matlab,详细介绍仿真方案的设计. ...
- BPSK信号matlab,BPSK信号调制解调与MATLAB仿真.docx
在科技迅猛发展的今天,大量的信息交流离不开当今社会生活的方方面面,所以数字通信系统占据了重要地位,信号的调制与解调,就在通信中起着非常重要的作用,并且在信号传输过程中使信号的安全性和传输特性大大提高, ...
- bpsk调制及解调实验_无线通信中的IQ调制,BPSK调制,QPSK调制,16QAM调制的理解...
欢迎FPGA工程师加入官方微信技术群 点击蓝字关注我们FPGA之家-中国最好最大的FPGA纯工程师社群 先从IQ调制说起: IQ调制:IQ解调原理:Linux下使用GNU Octave运行下面的代码: ...
- 关于BPSK的调制解调——matlab实现
附一段实现代码,刚接触通信可以从最简单的bpsk入门熟悉调制解调过程. %BPSK收发系统clc;clear;close all;%%可调参数 interpolation_rate =256; %内插 ...
最新文章
- 查看spark是否有僵尸进程,有的话,先杀掉。可以使用下面命令
- js中字符串和数组的使用
- asp.net core webapi Session 内存缓存
- MVC利用URLRoute实现伪静态后正真的静态html无法访问
- 将一个字符类型转换为字符串类型
- java认证考试题库看不懂_一道JAVA认证考试试题,有点想不通,各位看看...
- POJ2155 Matrix
- rsync+inotify实现数据实时同步
- js高程读书笔记(1-3章)
- 曾辉机器人_工业机器人市占率5年来首现下滑 “春寒”中国产机器人如何突围?...
- java 文件的删除一行_如何从java中的文件中删除一行文本?
- linux登陆命令行,如何使用linux命令行登陆
- oracle arm版本,Oracle版本区别
- 常见的几种加密方法和实现
- 大数据开发技术课程报告(搭建Hadoop完全分布式集群操作集群)
- Java 集合 --- String, StringBuilder, StringBuffer
- android authority root galaxy s5,三星G9006v (Galaxy S5 联通4G)一键ROOT教程,看教程秒懂ROOT...
- 十二核能让联发科引爆核弹战吗?
- call,apply,bind的用法和区别
- 计算机科学人生观和价值观,我的人生观和价值观