QPSK调制解调过程,包括串并转换,电平转换,载波调制,相干解调,抽样判决等-程序员宅基地

技术标签: matlab  QPSK  板块1:通信与信号处理  调制解调  MATLAB  

目录

一、理论基础

二、核心程序

三、仿真结论


一、理论基础

        QPSK是英文Quadrature Phase Shift Keying的缩略语简称,意为正交相移键控,是一种数字调制方式。在19世纪80年代初期,人们选用恒定包络数字调制。这类数字调制技术的优点是已调信号具有相对窄的功率谱和对放大设备没有线性要求,不足之处是其频谱利用率低于线性调制技术。19世纪80年代中期以后,四相绝对移相键控(QPSK)技术以其抗干扰性能强、误码性能好、频谱利用率高等优点,广泛应用于数字微波通信系统、数字卫星通信系统、宽带接入、移动通信及有线电视系统之中。通过完成设计内容, 学习QPSK调制解调的基本原理,同时也要复习通信系统的主要组成部分,了解调制解调方式中最基础的方法。了解QPSK的实现方法及数学原理。并对“通信”这个概念有个整体的理解,学习数字调制中误码率测试的标准及计算方法。同时还要复习随机信号中时域用自相关函数,频域用功率谱密度来描述平稳随机过程的特性等基础知识,来理解高斯信道中噪声的表示方法,以便在编程中使用。 
        理解QPSK调制解调的基本原理,并使用MATLAB编程实现QPSK信号在高斯信道和瑞利衰落信道下传输,以及该方式的误码率测试。复习MATLAB编程的基础知识和编程的常用算法以及使用MATLAB仿真系统的注意事项,并锻炼自己的编程能力,通过编程完成QPSK调制解调系统的仿真,以及误码率测试,并得出响应波形。在完成要求任务的条件下,尝试优化程序。
通过本次实验,除了培养了自主动手学到了知识之外,还可以将次研究作为一种推广,让自己来深入一层的了解QPSK以至其他调制方式的原理和实现方法。可以方便自己进行测试和对比。

      正交相移键控(Quadrature Phase Shift Keying,QPSK)是一种数字调制方式。它分为绝对相移和相对相移两种。由于绝对相移方式存在相位模糊问题,所以在实际中主要采用相对移相方式DQPSK。QPSK是一种四进制相位调制,具有良好的抗噪特性和频带利用率,广泛应用 于卫星链路、数字集群等通信业务。

       OQPSK是在QPSK基础上发展起来的一种恒包络数字调制技术。恒包络技术是指已调波的包络保持为恒定,它与多进制调制是从不同的两个角度来考虑调制技术的。恒包络技术所产生的已调波经过发送带限后,当通过非线性部件时,只产生很小的频谱扩展。这种形式的已调波具有两个主要特点,其一是包络恒定或起伏很小;其二是已调波频谱具有高频快速滚降特性,或者说已调波旁瓣很小,甚至几乎没有旁瓣。采用这种技术已实现了多种调制方式。OQPSK信号,它的频带利用率较高,理论值达1b/s/Hz。在QPSK中,当码组0011或0110时,产生180°的载波相位跳变。这种相位跳变引起包络起伏,当通过非线性部件后,使已经滤除的带外分量又被恢复出来,导致频谱扩展,增加对相邻波道的干扰。为了消除180°的相位跳变,在QPSK基础上提出了OQPSK。
        一个已调波的频谱特性与其相位路径有着密切的关系,因此,为了控制已调波的频率特性,必须控制它的相位特性。恒包络调制技术的发展正是始终围绕着进一步改善已调波的相位路径这一中心进行的。
        OQPSK也称为偏移四相相移键控,是QPSK的改进型。它与QPSK有同样的相位关系,也是把输入码流分成两路,然后进行正交调制。不同点在于它将同相和正交两支路的码流在时间上错开了半个码元周期。由于两支路码元半周期的偏移,每次只有一路可能发生极性翻转,不会发生两支路码元极性同时翻转的现象。因此,OQPSK信号相位只能跳变0°、±90°,不会出现180°的相位跳变。QPSK信号可以看作两个载波正交2PSK信号的合成,所以QPSK正调制器可参考通信原理

QPSK信号调制效果如下所示:

        通过上面对QPSK信号的调制,我门对QPSK有了更加深刻的认识。那么它的解调可以采用与2PSK信号类似的解调方法进行解调。同相支路和正交支路分别采用相干解调方式解调,之后可以得到二者的和,经过抽样判决和串、并交换器,将上下之路得到的并行数据恢复为串行数据。

QPSK解调原理:

QPSK解调结果如下:

        四相相移调制是利用载波的四种不同相位差来表征输入的数字信息,是四进制移相键控。QPSK是在M=4时的调相技术,它规定了四种载波相位,分别为45°,135°,225°,315°,调制器输入的数据是二进制数字序列,为了能和四进制的载波相位配合起来,则需要把二进制数据变换为四进制数据,这就是说需要把二进制数字序列中每两个比特分成一组,共有四种组合,即00,01,10,11,其中每一组称为双比特码元。每一个双比特码元是由两位二进制信息比特组成,它们分别代表四进制四个符号中的一个符号。

    在数字信号的调制方式中QPSK四相移键控是目前最常用的一种卫星数字信号调制方式,它具有较高的频谱利用率、较强的抗干扰性、在电路上实现也较为简单。目前已经广泛应用于无线通信中,成为现代通信中一种十分重要的调制解调方式。

       QPSK是一种频谱利用率高、抗干扰性强的数调制方式, 它被广泛应用于各种通信系统中. 适合卫星广播。例如,数字卫星电视DVB-S2 标准中,信道噪声门限低至4. 5 dB,传输码率达到45M bös,采用QPSK 调制方式,同时保证了信号传输的效率和误码性能。

       在数字信号的调制方式中,所学的2ASP、2FSP、2KSP是比较早的理论,随着时代的发展,科技的进步,人民生活水平的提高,对通信行业有着越来越高的要求。QPSK技术的出现,解决了许多技术上的问题。和QPSK最接近的是2PSK技术。2PSK技术是运用“0”和“1”进行编码;而QPSK运用四个相位进行编码。也就是说QPS利用载波的四种不同相位来表示数字信息。对输入的码元进行划分,每两个比特码编为一组。然后用四种不同的相位来表示。所以QPSK又被称为双比特码元。由于每一种载波相位代表两个比特信息,因此每个四进制码元可以用两个二进制码元的组合来表示。

二、核心程序

................................................................
     y3=z2.*y2;
    subplot(212)
    plot(t1,y3)
    axis([0 0.4 -3 3 ]);
     title('Q支路分量相干解调信号')
    xlabel('时间/s')
    ylabel('幅值')
    grid on;
%加噪信号通过滤波器    
    [b,a]=butter(3,0.1);
   x3=filter(b,a,x3);
    [b,a]=butter(2,0.1);
   y3=filter(b,a,y3);
    figure(6)
   subplot(211)
   plot(t1,x3);
  axis([0 0.2 -3 3 ]);
   title('I支路分量相干解调信号通过滤波器')
    xlabel('时间/s')
    ylabel('幅值')
    grid on;
   subplot(212)
   plot(t1,y3);
    axis([0 0.2 -3 3 ]);
     title('Q支路分量相干解调通过滤波器')
    xlabel('时间/s')
    ylabel('幅值')
    grid on;
   out1=zeros(1,length(x3)/(2*N_samples));
   for i=0:(N/2-1)
if(x3(N_samples*i+N_samples/2)>0) 
           out1(i+1)=1;
       else
           out1(i+1)=-1;
       end
   end
   out2=zeros(1,length(y3)/(2*N_samples));
   for j=0:(N/2-1)
       if(((y3(N_samples/4+N_samples*j)+y3((N_samples*3)/4+N_samples*j))/2)>0) 
           out2(j+1)=1;
       else
           out2(j+1)=-1;
       end
   end
   out=zeros(1,length(bitstream)); 
    for k=1:length(bitstream)/2
        out(2*(k-1)+1)=out1(k);  
        out(2*(k-1)+2)=out2(k);
    end
  figure(7)
  subplot(211)
  stem(out);
  title('QPSK输出信号')
  ylabel('幅值')
  axis([0 8 -1 1]);
    spectrum=(real(fft(z1,10*length(z1)))).^2;
    S_spectrum=spectrum(1:length(spectrum)/2);
  subplot(212)
    F=0:fs/(2*length(S_spectrum)):fs/2-fs/(2*length(S_spectrum));
    plot(F,10*log10(S_spectrum))
    axis([0 50 0 60]);
    title('QPSK信号功率谱密度')
    xlabel('频率/Hz')
    ylabel('功率')
    snr=0:0.5:10;    
ber=1-(1-1/2*erfc(sqrt(0.4*snr))).^2;
    figure(8)
   semilogy(log(snr),ber,'-b*')
 title('QPSK信号误码率分析')
    xlabel('信噪比')
    ylabel('误码率')  
up143

三、仿真结论

        I路码元为奇数位码元,Q路码元为偶数位码元,将二者合成之后,就得到所谓的正交相移键控(QPSK),也就是四进制绝对调相4PSK。它的调制解调按照后边附录程序进行QPSK是由两路BPSK信一号构成,且两路信号相互正交的,即相位差相差90o,两路BPSK信号相加,即得到QPSK信号。下面所示图示即为I路和Q路的码元情况:

 

 

 

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/ccsss22/article/details/130187660

智能推荐

oracle 12c 集群安装后的检查_12c查看crs状态-程序员宅基地

文章浏览阅读1.6k次。安装配置gi、安装数据库软件、dbca建库见下:http://blog.csdn.net/kadwf123/article/details/784299611、检查集群节点及状态:[root@rac2 ~]# olsnodes -srac1 Activerac2 Activerac3 Activerac4 Active[root@rac2 ~]_12c查看crs状态

解决jupyter notebook无法找到虚拟环境的问题_jupyter没有pytorch环境-程序员宅基地

文章浏览阅读1.3w次,点赞45次,收藏99次。我个人用的是anaconda3的一个python集成环境,自带jupyter notebook,但在我打开jupyter notebook界面后,却找不到对应的虚拟环境,原来是jupyter notebook只是通用于下载anaconda时自带的环境,其他环境要想使用必须手动下载一些库:1.首先进入到自己创建的虚拟环境(pytorch是虚拟环境的名字)activate pytorch2.在该环境下下载这个库conda install ipykernelconda install nb__jupyter没有pytorch环境

国内安装scoop的保姆教程_scoop-cn-程序员宅基地

文章浏览阅读5.2k次,点赞19次,收藏28次。选择scoop纯属意外,也是无奈,因为电脑用户被锁了管理员权限,所有exe安装程序都无法安装,只可以用绿色软件,最后被我发现scoop,省去了到处下载XXX绿色版的烦恼,当然scoop里需要管理员权限的软件也跟我无缘了(譬如everything)。推荐添加dorado这个bucket镜像,里面很多中文软件,但是部分国外的软件下载地址在github,可能无法下载。以上两个是官方bucket的国内镜像,所有软件建议优先从这里下载。上面可以看到很多bucket以及软件数。如果官网登陆不了可以试一下以下方式。_scoop-cn

Element ui colorpicker在Vue中的使用_vue el-color-picker-程序员宅基地

文章浏览阅读4.5k次,点赞2次,收藏3次。首先要有一个color-picker组件 <el-color-picker v-model="headcolor"></el-color-picker>在data里面data() { return {headcolor: ’ #278add ’ //这里可以选择一个默认的颜色} }然后在你想要改变颜色的地方用v-bind绑定就好了,例如:这里的:sty..._vue el-color-picker

迅为iTOP-4412精英版之烧写内核移植后的镜像_exynos 4412 刷机-程序员宅基地

文章浏览阅读640次。基于芯片日益增长的问题,所以内核开发者们引入了新的方法,就是在内核中只保留函数,而数据则不包含,由用户(应用程序员)自己把数据按照规定的格式编写,并放在约定的地方,为了不占用过多的内存,还要求数据以根精简的方式编写。boot启动时,传参给内核,告诉内核设备树文件和kernel的位置,内核启动时根据地址去找到设备树文件,再利用专用的编译器去反编译dtb文件,将dtb还原成数据结构,以供驱动的函数去调用。firmware是三星的一个固件的设备信息,因为找不到固件,所以内核启动不成功。_exynos 4412 刷机

Linux系统配置jdk_linux配置jdk-程序员宅基地

文章浏览阅读2w次,点赞24次,收藏42次。Linux系统配置jdkLinux学习教程,Linux入门教程(超详细)_linux配置jdk

随便推点

matlab(4):特殊符号的输入_matlab微米怎么输入-程序员宅基地

文章浏览阅读3.3k次,点赞5次,收藏19次。xlabel('\delta');ylabel('AUC');具体符号的对照表参照下图:_matlab微米怎么输入

C语言程序设计-文件(打开与关闭、顺序、二进制读写)-程序员宅基地

文章浏览阅读119次。顺序读写指的是按照文件中数据的顺序进行读取或写入。对于文本文件,可以使用fgets、fputs、fscanf、fprintf等函数进行顺序读写。在C语言中,对文件的操作通常涉及文件的打开、读写以及关闭。文件的打开使用fopen函数,而关闭则使用fclose函数。在C语言中,可以使用fread和fwrite函数进行二进制读写。‍ Biaoge 于2024-03-09 23:51发布 阅读量:7 ️文章类型:【 C语言程序设计 】在C语言中,用于打开文件的函数是____,用于关闭文件的函数是____。

Touchdesigner自学笔记之三_touchdesigner怎么让一个模型跟着鼠标移动-程序员宅基地

文章浏览阅读3.4k次,点赞2次,收藏13次。跟随鼠标移动的粒子以grid(SOP)为partical(SOP)的资源模板,调整后连接【Geo组合+point spirit(MAT)】,在连接【feedback组合】适当调整。影响粒子动态的节点【metaball(SOP)+force(SOP)】添加mouse in(CHOP)鼠标位置到metaball的坐标,实现鼠标影响。..._touchdesigner怎么让一个模型跟着鼠标移动

【附源码】基于java的校园停车场管理系统的设计与实现61m0e9计算机毕设SSM_基于java技术的停车场管理系统实现与设计-程序员宅基地

文章浏览阅读178次。项目运行环境配置:Jdk1.8 + Tomcat7.0 + Mysql + HBuilderX(Webstorm也行)+ Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。项目技术:Springboot + mybatis + Maven +mysql5.7或8.0+html+css+js等等组成,B/S模式 + Maven管理等等。环境需要1.运行环境:最好是java jdk 1.8,我们在这个平台上运行的。其他版本理论上也可以。_基于java技术的停车场管理系统实现与设计

Android系统播放器MediaPlayer源码分析_android多媒体播放源码分析 时序图-程序员宅基地

文章浏览阅读3.5k次。前言对于MediaPlayer播放器的源码分析内容相对来说比较多,会从Java-&amp;amp;gt;Jni-&amp;amp;gt;C/C++慢慢分析,后面会慢慢更新。另外,博客只作为自己学习记录的一种方式,对于其他的不过多的评论。MediaPlayerDemopublic class MainActivity extends AppCompatActivity implements SurfaceHolder.Cal..._android多媒体播放源码分析 时序图

java 数据结构与算法 ——快速排序法-程序员宅基地

文章浏览阅读2.4k次,点赞41次,收藏13次。java 数据结构与算法 ——快速排序法_快速排序法