提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录

  • 前言

    一、通信系统整体概念

    二、链路实现

    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调制解调链路实现相关推荐

  1. 用matlab实现bpsk,用MATLAB实现的BPSK调制解调源程序(国外英文资料).doc

    用MATLAB实现的BPSK调制解调源程序(国外英文资料) 用MATLAB实现的BPSK调制解调源程序(国外英文资料) modulation.m 函数output_modu =调制(input_fra ...

  2. 【AGC+FPGA】基于FPGA的数字AGC自适应增益设计,应用在BPSK调制解调系统中

    AGC测试,这里我们主要通过产生一个信号,输入到AGC中,来分析AGC的工作效果,其仿真结果如下 图所示: 这里,我们使用测试信号的时候,通过输入一个正弦信号,实现AGC的功能. BPSK解调部分,这 ...

  3. matlab ellip传递函数,BPSK和QPSK调制解调原理及MATLAB程序

    <BPSK和QPSK调制解调原理及MATLAB程序>由会员分享,可在线阅读,更多相关<BPSK和QPSK调制解调原理及MATLAB程序(10页珍藏版)>请在人人文库网上搜索. ...

  4. 介绍IQ调制解调的原理,阐述其在BPSK,QPSK,QAM等中的应用

    在完成项目:用IQ调制实现4FSK 后,虽然我了解了IQ调制的原理,也明白4FSK调制的原理(键控),但是其结合应用的原理一直没搞懂. 今天抽空学习的时候看了两篇文章: 无线通信中的IQ调制,BPSK ...

  5. 基于PLUTO和MATLAB的QPSK无线调制解调系统

    **实验介绍:**本次实验应用软件无线电模块ADALM-PLUTO和MATLAB软件,并结合现代无线数字通信原理,利用MATLAB设计出完整的 QPSK无线通信系统,利用ADALM-PLUTO实现完整 ...

  6. 通信算法之十一:QPSK/DQPSK/OQPSK/BPSK/DBPSK/16QAM调制解调仿真链路

    一. QPSK 正交相移键控 (Quadrature Phase Shift Keying)简称"QPSK",是一种数字调制方式.它分为绝对相移和相对相移两种.由于绝对相移方式存在 ...

  7. BPSK、QPSK、MPSK、QAM、16QAM的调制解调Matlab实现

    BPSK.QPSK.MPSK.QAM.16QAM的调制解调Matlab实现_ICT_Liang的博客-CSDN博客_matlab qam 16QAM调制解调仿真(matlab,详细介绍仿真方案的设计. ...

  8. BPSK信号matlab,BPSK信号调制解调与MATLAB仿真.docx

    在科技迅猛发展的今天,大量的信息交流离不开当今社会生活的方方面面,所以数字通信系统占据了重要地位,信号的调制与解调,就在通信中起着非常重要的作用,并且在信号传输过程中使信号的安全性和传输特性大大提高, ...

  9. bpsk调制及解调实验_无线通信中的IQ调制,BPSK调制,QPSK调制,16QAM调制的理解...

    欢迎FPGA工程师加入官方微信技术群 点击蓝字关注我们FPGA之家-中国最好最大的FPGA纯工程师社群 先从IQ调制说起: IQ调制:IQ解调原理:Linux下使用GNU Octave运行下面的代码: ...

  10. 关于BPSK的调制解调——matlab实现

    附一段实现代码,刚接触通信可以从最简单的bpsk入门熟悉调制解调过程. %BPSK收发系统clc;clear;close all;%%可调参数 interpolation_rate =256; %内插 ...

最新文章

  1. 查看spark是否有僵尸进程,有的话,先杀掉。可以使用下面命令
  2. js中字符串和数组的使用
  3. asp.net core webapi Session 内存缓存
  4. MVC利用URLRoute实现伪静态后正真的静态html无法访问
  5. 将一个字符类型转换为字符串类型
  6. java认证考试题库看不懂_一道JAVA认证考试试题,有点想不通,各位看看...
  7. POJ2155 Matrix
  8. rsync+inotify实现数据实时同步
  9. js高程读书笔记(1-3章)
  10. 曾辉机器人_工业机器人市占率5年来首现下滑 “春寒”中国产机器人如何突围?...
  11. java 文件的删除一行_如何从java中的文件中删除一行文本?
  12. linux登陆命令行,如何使用linux命令行登陆
  13. oracle arm版本,Oracle版本区别
  14. 常见的几种加密方法和实现
  15. 大数据开发技术课程报告(搭建Hadoop完全分布式集群操作集群)
  16. Java 集合 --- String, StringBuilder, StringBuffer
  17. android authority root galaxy s5,三星G9006v (Galaxy S5 联通4G)一键ROOT教程,看教程秒懂ROOT...
  18. 十二核能让联发科引爆核弹战吗?
  19. call,apply,bind的用法和区别
  20. 计算机科学人生观和价值观,我的人生观和价值观

热门文章

  1. 亲邻门禁卡复制数据分析
  2. python导入鸢尾花数据集_2020-11-01 鸢尾花数据集Python处理
  3. 华为主题引擎怎么下载_华为主题动态引擎
  4. mac系统vscode头文件not found
  5. Bluno 是干什么的?- 云物联戒烟设备的可选原型之一
  6. 你来比划我来猜 绿色游戏猜词小软件
  7. SMT32F767通过STM32CUBE HAL库配置QSPI和W25Q256驱动
  8. 一句话搞懂JavaSE、JavaEE和JavaME之间的区别
  9. mysql数据库左连接
  10. 北大青鸟汉字注释机内码_汉字与机内码相互转换程序