当前位置:   article > 正文

通信原理—数字信号的2DPSK调制与解调_2dpsk信号的解调方法you

2dpsk信号的解调方法you

摘要

在现代通信技术中,因为基于数字信号的数据传输优于模拟信号的传输,所以数字信号的传输显得越来越重要。本课程设计先对2DPSK调制与解调的基本原理进行了阐述,并根据相干解调的原理,利用MATLAB软件,设计了调制解调的仿真程序,结合可视化对2DPSK的调制与解调的各个过程进行分析。根据MATLAB随机产生的10000个随机宽度为1的码元作为信源,对其进行载波调制,将信源在高斯白噪声信道进行传输,在接收端,先进行带通滤波,再相干载波进行解调,然后经过低通滤波器,最后进行抽样判决与码反变换恢复出原码,得到结果,由系统的输入和解调恢复输出波形图可以看出,仿真效果前后波形一致,仅仅出现了时延差,所得到的效果符合预期,完成了所给任务的要求。

关键词:2DPSK 相干解调MATLAB仿真相干解调

  1. 引言

无线通信技术在现代社会中扮演着重要的角色,随着通信技术的不断发展,2DPSK调制与解调技术被广泛应用于数字通信系统中。2DPSK调制与解调技术是一种数字调制解调技术,它通过改变载波的相位来传输数字信息,从而实现高效、可靠的数据传输[1]。

虽然近距离时我们可以利用数字基带信号直接传输,但是进行远距离传输时必须将基带信号调制到高频处。为了使数字信号能够在信道中传输,要求信道应具有高通形式的传输特性。然而,在实际信道中,大多数信道具有带通传输特性,数字信号不能直接在这种带通传输特特性的信道中传输,因此,必须用数字信号对载波进行调制,产生各种已调信号。我们通常采用数字键控的方法来实现数字调制信号,所以又将其称为键控法。当调制信号采用二进制数字信号时,这种调制就被称为二进制数字调制。最常用的二进制数字调制方式有二进制振幅键控、二进制移频键控和二进制移相键控。其中二进制移相键控又包括两种方式:绝对移相键控(2PSK)和相对(差分)移相方式(2DPSK )。在二进制数字调制中,当正弦载波的相位随二进制数字基带信号离散变化时,就产生了二进制移相键控,即所谓的绝对移相键控(2PSK)。虽然绝对移相键控的实现方法较为简单,但是却存在一个缺点,即我们所说的倒“

”现象。因此,在实际中一般不采用2PSK 方式,而采用2DPSK方式对数字信号进行调制解调[2]。

在本次课程设计中,我们将基于MATLAB软件平台,设计并实现2DPSK调制与解调技术的原理,以及如何进行调制与解调过程。具体来说,我们将探讨2DPSK调制与解调技术的基本原理,包括数字信号的采样与量化、信道编码、符号映射、调制与解调过程等。本文主要讨论关于2DPSK的调制解调。并将其与MATLAB结合进行研究和仿真。

  1. 设计内容及要求

  1. 设计内容

用MATLAB产生独立等概信源,码元数N=10000,码元宽度Ts=1。对信源进行二进制差分相移键控2DPSK调制,将调制信号送入高斯白噪声信道。载波信号为:A·cos(2πfct),其中振幅A、载频fc=2自行设定。信道中加入高斯白噪声,解调器输入信噪比自行设定,接收端采用相干解调法/非相干解调法进行解调。用MATLAB软件对上述条件下2DPSK调制解调系统进行仿真分析。

  1. 设计要求

1、掌握2DPSK调制解调系统的原理和设计方法。

2、用MATLAB绘制2DPSK调制信号的时域波形和功率谱。

3、用MATLAB绘制高斯白噪声信号的时域波形和功率谱。

4、用MATLAB分别绘制2DPSK信号经过带通滤波后信号、解调输出信号的时域波形和功率谱。

5、用MATLAB绘制2DPSK调制解调系统在AWGN信道中的误码率曲线。

6、对仿真结果进行分析,并调整参数,观察仿真结果的变化。

  1. 设计原理

  1. 2DPSK的基本原理

  1. 2DPSK的调制原理

  1. 2DPSK的解调原理

  1. 仿真设计方案

  1. 2DPSK调制与解调的总体的设计

  1. 信号产生模块:采用randi函数产生一组值为0 或 1 的随机二进制数据,作为通信仿真系统的数字基带信号输入。

  1. 差分编码模块:将信号源产生的数字基带信号进行差分编码。

  1. 2DPSK调制模块:对双极性不归零码进行绝对调相,产生信道中传输的2DPSK信号。

  1. 信道模块:为模拟井下复杂通信环境对井下短程通信的影响,信道模块加入高斯白噪声(AWGNChannel),即在输入信号中叠加高斯白噪声,为简单起见,假设信号在信道传输中没有时间或相位的延迟。

  1. 带通滤波模块:采用切比雪夫滤波器进行滤除带外噪声。

  1. 解调模块:2DPSK信号的解调采用载波相干解调。直接用与载波同频同相的正弦信号作为载波同步输出的相干载波.解调后的信号经相关接收,抑制与载波无关的噪声及干扰,使其在指定的抽样判决时刻有最大的信噪比。

  1. 低通滤波模块:采用低通滤波器进行对高频分量的滤除。

  1. 抽样判决模块:为无失真地恢复输入信号,解调后的基带信号必须要经过抽样判决器的判决。由于本文假设没有传输延迟,其抽样判决的位同步定时脉冲可用一个脉冲源替代。

  1. 差分解码模块:差分译码器把抽样判决输出的相对码转换成绝对码,需要注意的是,差分编码器和差分解码器的初始状态应该一致。

  1. 比较和显示模块:一是输入数字基带信号与解码恢复信号的比较和显示,二是输入基带信号与恢复信号之间误码率的分析与显示。

  1. 2DPSK具体模块设计

  1. 仿真结果分析


  1. 调制过程的结果及分析

  1. 信道结果及分析


  1. 解调过程的结果及分析

  1. 误码率结果

  1. 总结

在利用Matlab中的完成的2DPSK调制解调系统仿真设计中,由于信道中引入了适当的高斯白噪声,还有接收端带通滤波器、低通滤波器的参数设置问题,使得仿真存在一定的时延差。

本设计中采用了相干解调的设计方式,接收端需要提供一个与发射端调制载波同频同相的相干载波,这样才能保证载波同步。

最终恢复出来的原码与生成的原码符合,结果良好,在本次课程设计中,经过不断的查阅资料,查阅参考代码,最终完成了课程设计,学到了很多,也对通信原理有了更多的认识,对MATLAB的操作也更加熟练。

参考文献

[1] 曹雪虹,杨洁,童莹著. Matlab/SystemView通信原理实验与系统仿真[M] 清华大学出版社. 2022.

[2] 陈树新,于龙强,李勇军著. 通信原理学习辅导与实验指导[M]. 清华大学出版社. 2022.

[3] 彭燕妮著. 通信原理实验教程[M]. 中国铁道出版社. 2022.

[4] 樊昌信,曹丽娜著. 通信原理(第7版)[M]. 国防工业出版社. 2012.

[5] 刘佳,许海霞,陈宁夏,肖明明著. 通信原理实验教程[M]. 中山大学出版社. 2016.

[6] 达新宇,甘忠辉,薛凤凤,刘晋东著. 通信原理实验与课程设计[M]. 电子工业出版社. 2016.

[7] 王福昌,屈代明著. 通信原理(第2版)[M]. 清华大学出版社. 2015.

所得结果

参考代码

  1. clear all; % 清除所有变量
  2. close all; % 关闭所有窗口
  3. clc; % 清屏
  4. %% 基本参数
  5. M=10000; % 产生码元数
  6. L=100; % 每码元复制L次,每个码元采样次数
  7. Ts=1; % 每个码元的宽度,即码元的持续时间
  8. Rb=1/Ts; % 码元速率1K
  9. dt=Ts/L; % 采样间隔
  10. TotalT=M*Ts; % 绝对码总时间
  11. t=0:dt:TotalT-dt; % 时间1
  12. TotalT2=(M+1)*Ts; % 相对码总时间
  13. t2=0:dt:TotalT2-dt; % 时间2
  14. Fs=1/dt; % 采样间隔的倒数即采样频率
  15. %% 产生单极性波形
  16. wave=randi([0,1],1,M); % 产生二进制随机码,M为码元个数
  17. %% 绝对码变相对码
  18. wave2=ones(1,M+1); % 产生1*(M+1)的全1行向量
  19. %% 相对码第一个参考值为1,相对码b(n+1)=绝对码a(n)和相对码b(n)做异或
  20. for k = 2:M+1
  21. wave2(k) = xor(wave(k-1),wave2(k-1));%生成相对码
  22. end
  23. fz=ones(1,L); % 定义复制的次数L,L为每码元的采样点数
  24. x1=wave(fz,:); % 将原来wave的第一行复制L次,称为L*M的矩阵
  25. juedui=reshape(x1,1,L*M); % 产生单极性不归零矩形脉冲波形,将刚得到的L*M矩阵,按列重新排列形成1*(L*M)的矩阵
  26. x2=wave2(fz,:); % 将原来wave2的第一行复制L次,称为L*M的矩阵
  27. jidai=reshape(x2,1,L*(M+1));% 产生单极性不归零矩形脉冲波形,将刚得到的L*(M+1)矩阵,按列重新排列形成1*(L*(M+1))的矩阵
  28. %% 单极性变为双极性
  29. % 基带信号变为双极性即jidai为1的时候,jidai为1;jidai为0的时候,jidai为-1
  30. for n=1:length(jidai)
  31. if jidai(n)==1
  32. jidai(n)=1;
  33. else
  34. jidai(n)=-1;
  35. end
  36. end
  37. %% DPSK调制
  38. fc=4;
  39. zb=sin(2*pi*fc*t2); % 载波
  40. dpsk=jidai.*zb; % DPSK的模拟调制
  41. figure(1); % 绘制第1幅图
  42. subplot(311); % 窗口分割成3*1的,当前是第1个子图
  43. plot(t,juedui,'LineWidth',2);% 绘制基带码元波形,线宽为2
  44. title('绝对码信号波形'); % 标题
  45. xlabel('时间/s'); % x轴标签
  46. ylabel('幅度'); % y轴标签
  47. axis([0,10,-1.1,1.1]) % 坐标范围限制
  48. subplot(312); % 窗口分割成3*1的,当前是第2个子图
  49. plot(t2,jidai,'LineWidth',2);% 绘制基带码元波形,线宽为2
  50. title('相对码信号波形'); % 标题
  51. xlabel('时间/s'); % x轴标签
  52. ylabel('幅度'); % y轴标签
  53. axis([0,10,-1.1,1.1]) % 坐标范围限制
  54. subplot(313) % 窗口分割成3*1的,当前是第3个子图
  55. plot(t2,dpsk,'LineWidth',2);% 绘制DPSK的波形
  56. title('2DPSK信号时域波形') % 标题
  57. axis([0,10,-1.1,1.1]); % 坐标范围限制
  58. xlabel('时间/s;'); % x轴标签
  59. ylabel('幅度'); % y轴标签
  60. %% 画DPSK的功率谱
  61. figure(2);
  62. [r1,lags1]=xcorr(dpsk); %做自相关
  63. f1=fftshift(fft(r1));%频谱校正
  64. x=((0:length(f1)-1)*200/length(f1)-100)/2; %x轴
  65. y=abs(f1);
  66. plot(x,y);grid on;
  67. title('2DPSK信号功率谱')
  68. xlabel('f/Hz');
  69. ylabel('幅度');
  70. %% 信号经过高斯白噪声信道
  71. %产生高斯白噪声
  72. figure(3);
  73. normal=0.1*randn(1,201); %产生均值为0,方差为0.01的高斯白噪声
  74. [r,lags]=xcorr(normal); %做自相关
  75. subplot(2,1,1);plot(normal);grid on;
  76. axis([0 100 -0.5 0.5]);title('高斯白噪声');
  77. xlabel('时间');
  78. ylabel('幅度');
  79. f=fftshift(fft(r));%频谱校正
  80. x=((0:length(f)-1)*200/length(f)-100)/2; %x轴
  81. y=abs(f);
  82. subplot(2,1,2);plot(x,y);grid on;
  83. axis([-100 100 -20 20]);title('高斯白噪声功率谱');
  84. xlabel('f/Hz');
  85. ylabel('幅度');
  86. tz=awgn(dpsk,15); % 信号dpsk中加入白噪声,信噪比为SNR=15dB
  87. figure(4); % 绘制第2幅图
  88. subplot(211); % 窗口分割成2*1的,当前是第1个子图
  89. plot(t2,tz,'LineWidth',2); % 绘制DPSK信号加入白噪声的波形
  90. axis([0,10,-1.5,1.5]); % 坐标范围设置
  91. title('通过高斯白噪声信道后的时域信号');% 标题
  92. xlabel('时间/s'); % x轴标签
  93. ylabel('幅度'); % y轴标签
  94. %% 带通滤波器的设计
  95. wavNum = 20;
  96. N_sample = 4000;
  97. wp=[wavNum-5 wavNum+5]*2/N_sample;
  98. ws=[wavNum-10 wavNum+10]*2/N_sample;
  99. rp=3;
  100. rs=30;
  101. [N,wn]=cheb2ord(wp,ws,rp,rs);
  102. [b,a]=cheby2(N,rp,wn,'bandpass');%切比雪夫带通滤波
  103. sig_bandpass = filter(b,a,tz);
  104. subplot(212);
  105. plot(t2,sig_bandpass);
  106. title('通过带通滤波器后的信号时域波形');
  107. axis([0,10,-2,2]);%经过带通滤波器之后的信号
  108. xlabel('时间/s'); % x轴标签
  109. ylabel('幅度'); % y轴标签
  110. figure(5)
  111. subplot(211);
  112. plot(t2,sig_bandpass);
  113. title('通过带通滤波器后的信号时域波形');
  114. axis([0,10,-2,2]);%经过带通滤波器之后的信号
  115. xlabel('时间/s'); % x轴标签
  116. ylabel('幅度'); % y轴标签
  117. [g,lags]=xcorr(sig_bandpass); %做自相关
  118. f=fftshift(fft(g));%频谱校正
  119. x=((0:length(f)-1)*200/length(f)-100)/2; %x轴
  120. y=abs(f);
  121. subplot(212);plot(x,y);grid on;
  122. % axis([-100 100 -20 20]);
  123. title('通过带通滤波器后的信号功率谱图');
  124. xlabel('f/Hz');
  125. ylabel('幅度');
  126. %% 解调部分
  127. tz=sig_bandpass.*zb; % 相干解调,乘以相干载波
  128. figure(6);
  129. plot(t2,tz,'LineWidth',1) % 绘制乘以相干载波后的信号
  130. axis([0,10,-1.5,1.5]); % 设置坐标范围
  131. title('乘以相干载波后时域信号')% 标题
  132. xlabel('时间/s'); % x轴标签
  133. ylabel('幅度'); % y轴标签
  134. %% 加噪信号经过滤波器
  135. % 低通滤波器设计
  136. fp=2*Rb; % 低通滤波器截止频率,乘以2是因为下面要将模拟频率转换成数字频率wp=Rb/(Fs/2)
  137. b=fir1(30, fp/Fs, boxcar(31));% 生成fir滤波器系统函数中分子多项式的系数
  138. % fir1函数三个参数分别是阶数,数字截止频率,滤波器类型
  139. % 这里是生成了30阶(31个抽头系数)的矩形窗滤波器
  140. [h,w]=freqz(b, 1,512); % 生成fir滤波器的频率响应
  141. % freqz函数的三个参数分别是滤波器系统函数的分子多项式的系数,分母多项式的系数(fir滤波器分母系数为1)和采样点数(默认)512
  142. lvbo=fftfilt(b,tz); % 对信号进行滤波,tz是等待滤波的信号,b是fir滤波器的系统函数的分子多项式系数
  143. figure(7); % 绘制第3幅图
  144. subplot(411); % 窗口分割成4*1的,当前是第1个子图
  145. plot(w/pi*Fs/2,20*log(abs(h)),'LineWidth',2); % 绘制滤波器的幅频响应
  146. title('低通滤波器的频谱'); % 标题
  147. xlabel('频率/Hz'); % x轴标签
  148. ylabel('幅度/dB'); % y轴标签
  149. subplot(412) % 窗口分割成4*1的,当前是第2个子图
  150. plot(t2,lvbo,'LineWidth',2);% 绘制经过低通滤波器后的信号
  151. axis([0,10,-1.1,1.1]); % 设置坐标范围
  152. title('经过低通滤波器后的信号');% 标题
  153. xlabel('时间/s'); % x轴标签
  154. ylabel('幅度'); % y轴标签
  155. %% 抽样判决
  156. k=0; % 设置抽样限值
  157. pdst=1*(lvbo>0); % 滤波后的向量 的每个元素和0进行比较,大于0为1,否则为0
  158. subplot(413) % 窗口分割成4*1的,当前是第3个子图
  159. plot(t2,pdst,'LineWidth',2) % 画出经过抽样判决后的信号
  160. axis([0,10,-0.1,1.1]); % 设置坐标范用
  161. title('经过抽样判决后的信号')% 标题
  162. xlabel('时间/s'); % x轴标签
  163. ylabel('幅度'); % y轴标签
  164. %% 相对码变绝对码
  165. yuanma=ones(1,L*M);
  166. for k=1:L*M-1
  167. yuanma(k)=xor(pdst(k),pdst(k+L));
  168. end
  169. %% 消除毛刺现象
  170. for k=1:L*M-2
  171. if (yuanma(k+1)~=yuanma(k) && yuanma(k+1)~=yuanma(k+2))
  172. yuanma(k+1)=yuanma(k);
  173. end
  174. end
  175. subplot(414) % 窗口分割成4*1的,当前是第4个子图
  176. plot(t,yuanma,'LineWidth',2)% 画出经过抽样判决后的信号
  177. axis([0,10,-0.1,1.1]); % 设置坐标范用
  178. title('解差分编码后的码元波形')% 标题
  179. xlabel('时间/s'); % x轴标签
  180. ylabel('幅度'); % y轴标签
  181. %% 绘制通过解调后的信号功率谱
  182. figure(8);
  183. subplot(211)
  184. plot(t2,lvbo,'LineWidth',2);% 绘制经过低通滤波器后的信号
  185. axis([0,10,-1.1,1.1]); % 设置坐标范围
  186. title('解调后信号的时域信号');% 标题
  187. xlabel('时间/s'); % x轴标签
  188. ylabel('幅度'); % y轴标签
  189. subplot(212)
  190. [r2,lags2]=xcorr(lvbo); %做自相关
  191. f2=fftshift(fft(r2));%频谱校正
  192. x2=((0:length(f2)-1)*200/length(f2)-100)/2; %x轴
  193. y2=abs(f2);
  194. plot(x2,y2);grid on;
  195. title('解调后信号功率谱');
  196. xlabel('f/Hz'); % x轴标签
  197. ylabel('幅度'); % y轴标签
  198. %% 画误码率曲线
  199. figure(9)
  200. r_dB = 0:0.1:15;
  201. r1 = 10.^(r_dB/10);
  202. pe = erfc(sqrt(r1));
  203. semilogy(r_dB,pe)%semilogy的作用是创建一个对数图
  204. grid on
  205. title('误码率曲线')% 标题
  206. ylabel('pe')
  207. xlabel('r (dB)')
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家小花儿/article/detail/95056
推荐阅读
相关标签
  

闽ICP备14008679号