DPSK调制解调的Matlab程序
- 格式:doc
- 大小:16.50 KB
- 文档页数:2
摘要MATLAB集成环境下的Simulink仿真平台,设计一个2DPSK调制与解调系统.用示波器观察调制前后的信号波形;用频谱分析模块观察调制前后信号频谱的变化;加上噪声源,用误码测试模块测量误码率;最后根据运行结果和波形来分析该系统性能。
关键词:Simulink;2DPSK;相干解调目录摘要 (I)关键词 (I)1 引言 (1)1.1 课程设计目的 (1)1.2 课程设计内容 (1)2基本原理 (1)2.1 2DPSK调制与解调原理 (1)2.1.1调制原理 (1)2.1.2解调原理 (2)3系统设计 (4)3.1 2DPSK调制与解调分析 (4)3.1.1 2DPSK调制与解调电路 (4)3.1.2 2DPSK调制部分参数设置 (4)3.1.3 2DPSK解调部分参数设置 (7)3.2 2DPSK调制电路频谱分析 (10)3.3 2DPSK解调电路频谱分析 (12)3.4加有噪声源的调制解调电路分析 (14)4 仿真电路分析与总结 (17)4.1 出现的问题 (17)4.2 解决方法 (17)结束语 (18)参考文献 (18)1 引言2DPSK信号中,相位变化变化是以未调载波的相位作为参考基准的。
由于载波恢复中相位有0、π模糊性,导致解调过程中出现“反相工作”现象,会付出的数字信号“1”和“0”的位置倒置,从而使2psk难以实际应用。
为了克服此缺点,提出了二进制差分相移键控(2dpsk)方式。
1.1 课程设计目的通过课程设计,巩固已经学过的有关数字调制系统的知识,加深对知识的理解和应用,学会应用Matlab Simulink工具对通信系统进行仿真。
1.2 课程设计内容利用MATLAB集成环境下的Simulink仿真平台,设计一个2DPSK调制与解调系统.用示波器观察调制前后的信号波形;用频谱分析模块观察调制前后信号频谱的变化;加上噪声源,用误码测试模块测量误码率;最后根据运行结果和波形来分析该系统性能。
利用Matlab simulink实现DPSK通信刘易 2011001010010工作简介此次工作完成了以下几个任务:1.Simulink的DPSK实现:利用MATLAB simulink模块实现了自定义的DPSK信号的调制和解调,其中通信是利用simulink的UDP send和UDP receive来实现的,将两台电脑直接用网线连接起来,便可在两边分别运行UDP send和UDP receive实现通信,其中目的IP用“255.255.255.255”以进行广播。
2.考虑噪声的通信:在考虑噪声的情况下传输自定义信号,并成功复原原信号。
3.语音信号的传输:在实现任意信号的通信后,用一段语音信号进行DPSK通信。
先对语音信号进行量化,然后通过DPSK调制,再用相干解调得到原传输信号,最后复原语音信号并进行播放。
信号的传输是在有噪声的情况下进行的。
下面分别介绍上述工作:Simulink的DPSK实现1.1 首先展示simulink的发送方的模块:1.2 定义需要传输的信号:{1 0 1 0 1 0 1 0 1 1}1.3 生成需要传输的信号:题目中要求:Tc=1800HZ,Rb=1200bps,但是为了模拟显示得更方便直观,我仅保持了这两个量的比例,将两个量改为了:Tc=3HZ,Rb=2bps。
(消息信号生成的代码参考附录1:产生消息信号)1.4 将消息信号与载波信号相乘得到需要传输的信号:需要指出,我只定义了10个需要传输的信号,即需要传输5秒,但我都是以6秒来发送后的,后面的5-6秒的两个信号用0填充了,其原因是后面接收方的低通滤波器有延迟,需要留足够的空间来显示完整信号。
下面给出传输信号的功率谱密度,这里的计算是利用离散信号做FFT再除以信号长度得到的(由于主要集中在某一范围因此仅给出部分范围的频谱):1.5然后UDP send模块需要将小心信号发送到接收端。
2.1 接收方的Simulink模块2.2接收方的接收信号(由scope6显示):从接收模块可以看到,在直接接收的信号到scope6之间有一个我自己定义的模块。
通信原理DPSKFSKASKPSK检波及波形实现的MATLAB程序十、附录程序程序一2ASK调制解调程序及注释clear all close all i=10;%10个码元j=5000; t=linspace(0,5,j);%0-5之间产生5000个点行矢量,即分成5000份fc=10;%载波频率fm=i/5;%码元速率%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%产生基带信号x=(rand(1,i))%rand函数产生在0-1之间随机数,共1-10个figure(2) plot(x) a=round(x);%随机序列,round取最接近小数的整数figure(3) stem(a)%火柴梗状图st=t; for n=1:10 if a(n) for m=j/i*(n-1)+1:j/i*n st(m)=0; end else for m=j/i*(n-1)+1:j/i*n st(m)=1; end end end figure(1); subplot(421); plot(t,st); axis([0,5,-1,2]); title('基带信号st'); %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%载波s1=cos(2*pi*fc*t); subplot(422); plot(s1); title('载波信号s1'); %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%调制e_2ask=st.*s1; subplot(423); plot(t,e_2ask); title('已调信号'); noise =rand(1,j); e_2ask=e_2ask+noise;%加入噪声subplot(424);plot(t,e_2ask); title('加入噪声的信号'); %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%相干解调at=e_2ask.*cos(2*pi*fc*t); at=at-mean(at);%因为是单极性波形,还有直流分量,应去掉subplot(425); plot(t,at); title('与载波相乘后信号'); [f,af] = T2F(t,at);%通过低通滤波器[t,at] = lpf(f,af,2*fm); subplot(426); plot(t,at);title('相干解调后波形'); %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%抽样判决for m=0:i-1; if at(1,m*500+250)+0.5 for j=m*500+1:(m+1)*500; at(1,j)=0; end else for j=m*500+1:(m+1)*500; at(1,j)=1; end end end subplot(427); plot(t,at); axis([0,5,-1,2]); title('抽样判决后波形')程序二2FSK调制解调程序及注释clear all close all i=10;%基带信号码元数j=5000; a=round(rand(1,i));%产生随机序列t=linspace(0,5,j); f1=10;%载波1频率f2=5;%载波2频率fm=i/5;%基带信号频率%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%产生基带信号st1=t; for n=1:10 if a(n) for m=j/i*(n-1)+1:j/i*n st1(m)=0; end else for m=j/i*(n-1)+1:j/i*n st1(m)=1; end end end st2=t; %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%基带信号求反for n=1:j; if st1(n) st2(n)=0; else st2(n)=1; end end; figure(1);subplot(411); plot(t,st1); title('基带信号st1'); axis([0,5,-1,2]); subplot(412); plot(t,st2); title('基带信号反码st2'); axis([0,5,-1,2]); %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%载波信号s1=cos(2*pi*f1*t) s2=cos(2*pi*f2*t) subplot(413),plot(s1); title('载波信号s1'); subplot(414),plot(s2); title('载波信号s2'); %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%调制F1=st1.*s1;%加入载波 1 F2=st2.*s2;%加入载波 2 figure(2); subplot(411); plot(t,F1); title('F1=s1*st1'); subplot(412); plot(t,F2); title('F2=s2*st2'); e_fsk=F1+F2; subplot(413); plot(t,e_fsk); title('2FSK信号')%键控法产生的信号在相邻码元之间相位不一定连续nosie=rand(1,j); fsk=e_fsk+nosie; subplot(414); plot(t,fsk); title('加噪声后信号') %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%相干解调st1=fsk.*s1;%与载波1相乘[f,sf1] = T2F(t,st1);%通过低通滤波器[t,st1] = lpf(f,sf1,2*fm); figure(3); subplot(311); plot(t,st1); title('与s1相乘后波形'); st2=fsk.*s2;%与载波2相乘[f,sf2] = T2F(t,st2);%通过低通滤波器[t,st2] = lpf(f,sf2,2*fm); subplot(312); plot(t,st2); title('与s2相乘后波形'); %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%抽样判决for m=0:i-1; if st1(1,m*500+250)st2(1,m*500+250); for j=m*500+1:(m+1)*500; at(1,j)=0; end else forj=m*500+1:(m+1)*500; at(1,j)=1; end end end; subplot(313); plot(t,at); axis([0,5,-1,2]); title('抽样判决后波形')程序三2PSK调制解调程序及注释clear all close all i=10; j=5000; fc=4;%载波频率fm=i/5;%码元速率B=2*fm; t=linspace(0,5,j); %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%产生基带信号a=round(rand(1,i));%随机序列,基带信号figure(3); stem(a); st1=t; for n=1:10 if a(n) for m=j/i*(n-1)+1:j/i*n st1(m)=0; end else for m=j/i*(n-1)+1:j/i*n st1(m)=1; end end end figure(1); subplot(411); plot(t,st1); title('基带信号st1'); axis([0,5,-1,2]); %%%%%%%%%%%%%%%%%%%%%%%%%%%%基带信号求反%由于PSK中的是双极性信号,因此对上面所求单极性信号取反来与之一起构成双极性码st2=t; for k=1:j; if st1(k) st2(k)=0; else st2(k)=1; end end; subplot(412); plot(t,st2); title('基带信号反码st2'); axis([0,5,-1,2]); st3=st1-st2; subplot(413); plot(t,st3); title('双极性基带信号st3'); axis([0,5,-2,2]); %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%载波信号s1=sin(2*pi*fc*t); subplot(414); plot(s1); title('载波信号s1'); %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%调制e_psk=st3.*s1; figure(2); subplot(511); plot(t,e_psk);title('e_2psk'); noise=rand(1,j); psk=e_psk+noise;%加入噪声subplot(512); plot(t,psk); title('加噪后波形'); %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%相干解调psk=psk.*s1;%与载波相乘subplot(513);plot(t,psk); title('与载波s1相乘后波形'); [f,af] = T2F(t,psk);%%%%%%%%%%%通过低通滤波器[t,psk] = lpf(f,af,B); subplot(514); plot(t,psk); title('低通滤波后波形'); %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%抽样判决for m=0:i-1; if psk(1,m*500+250) for j=m*500+1:(m+1)*500; psk(1,j)=0; end else for j=m*500+1:(m+1)*500; psk(1,j)=1; end end end subplot(515); plot(t,psk); axis([0,5,-1,2]); title('抽样判决后波形')程序四2DPSK调制解调程序及注释clear all close all i=10; j=5000; fc=4;%载波频率fm=i/5;%码元速率B=2*fm; t=linspace(0,5,j); %%%%%%%%%%%%%%%%%%%%%%%%%%%%%产生基带信号a=round(rand(1,i)); figure(4); stem(a); st1=t; for n=1:10 if a(n) for m=j/i*(n-1)+1:j/i*n st1(m)=0; end else for m=j/i*(n-1)+1:j/i*n st1(m)=1; end end end figure(1); subplot(321); plot(t,st1); title('绝对码'); axis([0,5,-1,2]); %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%差分变换b=zeros(1,i);%%%%%%%%全零矩阵b(1)=a(1); for n=2:10 if a(n)if b(n-1)=1 b(n)=0; elseb(n)=1; end else b(n)=b(n-1); end end st1=t; for n=1:10 if b(n) for m=j/i*(n-1)+1:j/i*n st1(m)=0; end else for m=j/i*(n-1)+1:j/i*n st1(m)=1; end end end subplot(323); plot(t,st1); title('相对码st1'); axis([0,5,-1,2]); st2=t; for k=1:j; if st1(k) st2(k)=0; else st2(k)=1; end end; subplot(324); plot(t,st2); title('相对码反码st2'); axis([0,5,-1,2]); %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%载波信号s1=sin(2*pi*fc*t); subplot(325); plot(s1); title('载波信号s1'); s2=sin(2*pi*fc*t+pi); subplot(326); plot(s2); title('载波信号s2'); %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%信号调制d1=st1.*s1; d2=st2.*s2; figure(2); subplot(411); plot(t,d1); title('st1*s1'); subplot(412); plot(t,d2); title('st2*s2'); e_dpsk=d1+d2; subplot(413); plot(t,e_dpsk); title('调制后波形'); noise=rand(1,j); dpsk=e_dpsk+noise;%%%%%%%%%%加入噪声subplot(414); plot(t,dpsk); title('加噪声后信号');%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%相干解调dpsk=dpsk.*s1;%%%%与载波s1相乘figure(3); subplot(411); plot(t,dpsk); title('与载波相乘后波形'); [f,af]=T2F(t,dpsk);%%%%通过低通滤波器[t,dpsk]=lpf(f,af,B); subplot(412); plot(t,dpsk); title('低通滤波后波形'); %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%抽样判决st=zeros(1,i);%%全零矩阵for m=0:i-1; if dpsk(1,m*500+250)st(m+1)=0; for j=m*500+1:(m+1)*500; dpsk(1,j)=0; end else for j=m*500+1:(m+1)*500; st(m+1)=1; dpsk(1,j)=1; end end end subplot(413); plot(t,dpsk); axis([0,5,-1,2]); title('抽样判决后波形') %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%码反变换dt=zeros(1,i);%%全零矩阵dt(1)=st(1); for n=2:10; if (st(n)-st(n-1))=0(st(n)-st(n-1)) dt(n)=0; else dt(n)=1; end end st=t; for n=1:10 if dt(n) for m=j/i*(n-1)+1:j/i*n st(m)=0; end else for m=j/i*(n-1)+1:j/i*n st(m)=1; end end end subplot(414); plot(t,st); axis([0,5,-1,2]); title('码反变换后波形');。
%DPSK调制解调程序清单%仿真DPSK信号的产生及相干解调过程%将成形滤波器系数量化为10比特后,写入tra_lpf.coe文件中%将接收滤波器系数量化为10比特后,写入rec_lpf.coe文件中%将DPSK已调数据量化为8比特后,写入Dpsk.txt文件中ps=1*10^6; %码速率为1MHza=0.8; %成形滤波器系数为0.8B=(1+a)*ps; %中频信号处理带宽Fs=8*10^6; %采样速率为8MHzfc=2*10^6; %载波频率为2MHzN=20000; %仿真数据的长度t=0:1/Fs:(N*Fs/ps-1)/Fs;%产生长度为N,频率为fs的时间序列s=randint(N,1,2); %产生随机数据作为原始数据,%并将绝对码变换为相对码ds=ones(1,N);for i=2:Nif s(i)==1ds(i)=-ds(i-1);elseds(i)=ds(i-1);endend%对相对码数据以Fs频率采样Ads=upsample(ds,Fs/ps);%设计平方升余弦滤波器n_T=[-2 2];rate=Fs/ps;T=1;Shape_b = rcosfir(a,n_T,rate,T);%figure(4);freqz(Shape_b)%对采样后的数据进行升余弦滤波;rcos_Ads=filter(Shape_b,1,Ads);%产生载频信号f0=sin(2*pi*fc*t);%产生DPSK已调信号dpsk=rcos_Ads.*f0;%与相干载波相乘,实现相干解调demod_mult=dpsk.*f0;%设计接收端低通滤波器fc=[ps 3.1*10^6]; %过渡带mag=[1 0]; %窗函数的理想滤波器幅度—dev=[0.01 0.01]; %纹波[n,wn,beta,ftype]=kaiserord(fc,mag,dev,Fs) %获取凯塞窗参数fpm=[0 fc(1)*2/Fs fc(2)*2/Fs 1]; %firpm函数的频段向量magpm=[1 1 0 0]; %firpm函数的幅值向量rec_lpf=firpm(n,fpm,magpm); %firpm函数返回的最优滤波器系数%对乘法运算后的数据进行低通滤波,输出解调后的基带信号demod_lpf=filter(rec_lpf,1,demod_mult);figure(1)%绘制成形滤波后信号频谱、DPSK信号频谱、DPSK信号时域波形m_rcos_Ads=20*log10(abs(fft(rcos_Ads,1024)));m_rcos_Ads=m_rcos_Ads-max(m_rcos_Ads);m_dpsk=20*log10(abs(fft(dpsk,1024)));m_dpsk=m_dpsk-max(m_dpsk);%设置幅频响应的横坐标单位为MHzx_f=[0:(Fs/length(m_dpsk)):Fs/2];x_f=x_f/10^6;%只显示正频率部分的幅频响应mrcos_Ads=m_rcos_Ads(1:length(x_f));mdpsk=m_dpsk(1:length(x_f));%设置时域波表的横坐标单位为usLen=100;%设置时域波形显示的点数x_t=1:Len;%产生长度为Len的时间序列x_t=x_t/Fs*10^6;%显示所需的频谱及时域波形subplot(311); plot(x_f,mrcos_Ads);legend('成形滤波后信号频谱');xlabel('频率(MHz)');ylabel('幅度(dB)');grid on;subplot(312); plot(x_f,mdpsk);legend('DPSK已调信号频谱');xlabel('频率(MHz)');ylabel('幅度(dB)');grid on;subplot(313); plot(x_t,dpsk(101:Len+100));grid on;legend('DPSK时域信号波形');xlabel('时间(us)');ylabel('幅度(V)');grid on;figure(2)%对相对码重复Fs/ps倍采样,便于绘图比较s_Ads=rectpulse(ds,Fs/ps);Len=500;%设置时域波形显示的点数x_t=1:Len;%产生长度为Len的时间序列x_t=x_t/Fs*10^6;%绘制DPSK解调前后时域波形delay=18;%为便于观察,对解调后的基带波形超前显示delay个点。
DPSK调制解调技术研究与MATLAB仿真任务书近年来,随着通信技术的飞速发展,DPSK调制解调技术受到了越来越多的重视,其高效率、低成本吸引了科研人员以及行业从业者的持久关注。
本文将研究DPSK调制解调技术,运用MATLAB仿真软件以验证理论,以及研究解调技术在调制解调技术中的应用。
DPSK(Differential Phase ShiftKeying)调制解调技术是一种对数接口调制方式,它是按照特定的相位移位编码传输数据信息。
DPSK技术具有低成本、容易实现等优点,常被用于远距离通信技术中。
DPSK调制解调技术主要包括调制和解调两部分。
调制的过程是把数据信息用相应的编码形式转换为模拟或数字信号,再经过滤波器和发射器发出;解调的过程是把数字信号从接收器取回后,经过锁相环(PLL)振荡器和比较器恢复原始数据信息。
MATLAB作为一种功能强大的仿真软件,结合DPSK调制解调技术可以快速验证理论,提高调制解调技术的运行效率。
在MATLAB中编写程序可以遵循整个通信系统的模拟流程,实现对调制前后信号的对比及比较,从而验证DPSK调制解调技术的有效性。
例如,可以先通过DPSK调制器调制信号,再将它通过MATLAB程序解调,取得与调制前信号完全相同的信号,这就验证了DPSK调制解调技术的有效性。
此外,调制解调技术在实际应用中也有着重要的作用。
DPSK调制解调技术具有容易实现的特点,可以应用于许多通信系统,例如CDMA(无线电话)、VSAT(卫星通信)等;此外,DPSK调制解调技术可以应用于DVB(数字电视)、Wi-Fi等网络技术,以保证网络传输的高速性和高效率。
综上所述,DPSK调制解调技术是一种对数接口调制方式,具有高效率、低成本的特点,可以满足科学研究以及工业应用的需求。
另外,利用MATLAB仿真软件可以快速验证DPSK调制解调技术的有效性,以及提高调制解调技术的应用效率。
摘要MATLAB集成环境下的Simulink仿真平台,设计一个2DPSK调制与解调系统.用示波器观察调制前后的信号波形;用频谱分析模块观察调制前后信号频谱的变化;加上噪声源,用误码测试模块测量误码率;最后根据运行结果和波形来分析该系统性能。
关键词:Simulink;2DPSK;相干解调目录摘要 (I)关键词 (I)1 引言 (1)1.1 课程设计目的 (1)1.2 课程设计内容 (1)2基本原理 (1)2.1 2DPSK调制与解调原理 (1)2.1.1调制原理 (1)2.1.2解调原理 (2)3系统设计 (4)3.1 2DPSK调制与解调分析 (4)3.1.1 2DPSK调制与解调电路 (4)3.1.2 2DPSK调制部分参数设置 (4)3.1.3 2DPSK解调部分参数设置 (7)3.2 2DPSK调制电路频谱分析 (10)3.3 2DPSK解调电路频谱分析 (12)3.4加有噪声源的调制解调电路分析 (14)4 仿真电路分析与总结 (17)4.1 出现的问题 (17)4.2 解决方法 (17)结束语 (18)参考文献 (18)1 引言2DPSK信号中,相位变化变化是以未调载波的相位作为参考基准的。
由于载波恢复中相位有0、π模糊性,导致解调过程中出现“反相工作”现象,会付出的数字信号“1”和“0”的位置倒置,从而使2psk难以实际应用。
为了克服此缺点,提出了二进制差分相移键控(2dpsk)方式。
1.1 课程设计目的通过课程设计,巩固已经学过的有关数字调制系统的知识,加深对知识的理解和应用,学会应用Matlab Simulink工具对通信系统进行仿真。
1.2 课程设计内容利用MATLAB集成环境下的Simulink仿真平台,设计一个2DPSK调制与解调系统.用示波器观察调制前后的信号波形;用频谱分析模块观察调制前后信号频谱的变化;加上噪声源,用误码测试模块测量误码率;最后根据运行结果和波形来分析该系统性能。
(完整版)2DPSK调制与解调matlab%- 2DPSK 调制与解调%---------------------------------------------------%>>>>>>>>>>>>>>>>>>参数初始化>>>>>>>>>>>>>>>>>>>>>%---------------------------------------------------fs = 3600000;%采样频率为36000赫兹Time_Hold_On = 1/1200;%一个时钟周期为1200分之1,对应比特率为1200bpsNum_Unit = fs * Time_Hold_On;%一个时钟周期内的采样点个数High_Level = ones ( 1, Num_Unit );%高电平(全1序列)Low_Level = zeros ( 1, Num_Unit );%低电平(全0序列)w = 1800;%载波角频率1800HzA = 1;%载波幅值%---------------------------------------------------%>>>>>>>>>>>>>>>>>>信号初始化>>>>>>>>>>>>>>>%---------------------------------------------------Sign_Set = [0,1,1,0,1,0,0,1];%原始序列Lenth_Of_Sign = length ( Sign_Set );%原始序列长度Sign_Sett = ones(1,Lenth_Of_Sign+1);%差分变换后的序列,初始化为长度为原始序列长度+1的全1序列(第一个码元为1)sign_orign = zeros ( 1, Num_Unit * (Lenth_Of_Sign+1) );%初始化基带信号为全0序列sign_result = zeros ( 1, Num_Unit * (Lenth_Of_Sign+1) );%初始化接收到的基带信号为全0序列st = zeros ( 1, Num_Unit *( Lenth_Of_Sign+1) );%初始化调制后的信号为全0序列t = 0 : 1/fs : Time_Hold_On * (Lenth_Of_Sign +1)- 1/fs;%信号采样时间点result=zeros(1,Lenth_Of_Sign+1);%初始化接收到的序列resultt=zeros(1,Lenth_Of_Sign);%初始化差分解调后的序列%---------------------------------------------------%>>>>>>>>>>>求差分编码>>>>>>>>>>>>%---------------------------------------------------for I = 2 : Lenth_Of_Sign+1 %差分变换后的序列第一个值为1,从第2个开始计算Sign_Sett(I)= xor(Sign_Sett(I-1),Sign_Set(I-1));%用异或运算求差分码end%---------------------------------------------------%>>>>>>>>>>>产生基带信号>>>>>>>>>>>>%---------------------------------------------------for I = 1 : Lenth_Of_Sign+1 %考虑差分变换后序列中每一个值if Sign_Sett(I) == 1sign_orign( (I-1)*Num_Unit + 1 : I*Num_Unit) = High_Level; %序列值为1,基带信号为高电平elsesign_orign( (I-1)*Num_Unit + 1 : I*Num_Unit) = Low_Level; %序列值为0,基带信号为低电平endend%---------------------------------------------------%>>>>>>>>>>>>>>>>>>调制部分>>>>>>>>>>>>>>>>>>%---------------------------------------------------for I = 1 : Lenth_Of_Sign+1 %考虑差分变换后序列中每一个值if Sign_Sett(I) == 1st( (I-1)*Num_Unit + 1 : I*Num_Unit) = A * cos ( 2 * pi * w * t( (I-1)*Num_Unit + 1 : I*Num_Unit ) + ( pi / 2 ) );%序列值为1,相位调制为π/2elsest( (I-1)*Num_Unit + 1 : I*Num_Unit) = A * cos ( 2 * pi * w * t( (I-1)*Num_Unit + 1 : I*Num_Unit ) );%序列值为0,相位调制为0 endendfiguresubplot ( 2,1,1 )plot(t, sign_orign);axis( [ 0 , Time_Hold_On *( Lenth_Of_Sign + 2), - (A / 2), A + (A / 2) ] );title ( '原始信号' );grid %画出基带信号subplot ( 2, 1, 2 );plot ( t, st );axis( [ 0 , Time_Hold_On *( Lenth_Of_Sign + 2), - 3*(A / 2), 3*(A / 2) ] );title ( '调制后的信号' );grid %画出相位调制后的信号%---------------------------------------------------%>>>>>>>>>>>>>>>>>>相干解调>>>>>>>>>>>>>>>>>>>>>>>>>>>>>%---------------------------------------------------dt = st .* cos ( 2 * pi * w * t ); %相干相乘figureplot ( t, dt );axis( [ 0 , Time_Hold_On *( Lenth_Of_Sign + 2), - 3*(A / 2),3*(A / 2) ] );title ( '相干相乘后的波形' );grid%--------------------------------------------------- %>>>>>>>>>>>>>>>>>>>低通滤波部分>>>>>>>>>>>>>>>>>>>>%---------------------------------------------------[N,Wn] = buttord( 2*pi*1500, 2*pi*3400,3,25,'s'); %临界频率采用角频率表示,计算低通滤波器参数[b,a]=butter(N,Wn,'s'); %产生N阶低通巴特沃斯滤波器[bz,az]=impinvar(b,a,fs); %映射为数字的dt = filter(bz,az,dt); %将相干相乘后的信号进行滤波figureplot ( t, dt );axis( [ 0 , Time_Hold_On *( Lenth_Of_Sign + 2), - 3*(A / 2), 3*(A / 2) ] );title ( '低通滤波后的波形' );grid%---------------------------------------------------%>>>>>>>>>>>>>抽样判决& 逆码变换部分>>>>>>>>>>>>>>>%---------------------------------------------------for I = 1 : Lenth_Of_Sign+1if dt((2*I-1)*Num_Unit/2) < 0.25 %在时钟周期中间采样,由于相干相乘后信号幅值变为1/2,所以判决门限为0.25sign_result( (I-1)*Num_Unit + 1 : I*Num_Unit) = High_Level;elsesign_result( (I-1)*Num_Unit + 1 : I*Num_Unit) = Low_Level;end%由于相干相乘后得到的信号变为原来的负数,所以进行逆码变换endfigureplot ( t, sign_result );axis( [ 0 , Time_Hold_On *( Lenth_Of_Sign + 2), - 3*(A / 2), 3*(A / 2) ] );title ( '逆码变换后的波形' );grid%---------------------------------------------------%>>>>>>>>>>>序列生成与差分还原>>>>>>>>>>>>%---------------------------------------------------for I=1: Lenth_Of_Sign+1result(I)=sign_result(I* Num_Unit)%将接收到的信号生成(差分)序列endfor I = 1 : Lenth_Of_Signresultt(I)= xor(result(I),result(I+1)) %将接收到的差分序列还原为原序列endwindow=boxcar(length(st)); %矩形窗nfft=1024;[Pxx,f]=periodogram(st,window,nfft,fs); %求功率谱密度plot(f,10*log10(Pxx));。
1.BPSK调制1.系统原理高斯白噪声图1 BPSK调制系统原理框图BPSK调制系统的原理框图如图1所示,其中脉冲成形的作用是抑制旁瓣,减少邻道干扰,通常选用升余弦滤波器;加性高斯白噪声模拟信道特性,这是一种简单的模拟;带通滤波器BPF可以滤除有效信号频带以外的噪声,提高信噪比;在实际通信系统中相干载波需要使用锁相环从接收到的已调信号中恢复,这一过程增加了系统的复杂度,同时恢复的载波可能与调制时的载波存在180度的相位偏差,即180度相位反转问题,这使得BPSK系统在实际中无法使用;低通滤波器LPF用于滤除高频分量,提高信噪比;抽样判决所需的同步时钟需要从接收到的信号中恢复,即码元同步,判决门限跟码元的统计特性有关,但一般情况下都为0。
2.参数要求码元速率2400波特,载波频率4800Hz,奈奎斯特频率19200Hz。
3.仿真参数采样频率:为码元速率的16倍,即奈奎斯特频率为码元速率的8倍,在计算误码率的时,采样频率为码元速率的8倍,即奈奎斯特频率为码元速率的4倍。
脉冲成形滤波器参数:脉冲成形滤波器选用FIR型升余弦滤波器,滚降系数为0.5,阶数为21,调用MATLAB中的rcosfir函数来设计滤波器。
低通滤波器:低通滤波器选用FIR型低通滤波器,参数为:f2=[0 0.125 0.4 1];w2= [1 0.95 0.1 0];b2 = fir2(30,f2,w2);调用fir2函数来生成。
两种调制/解调方式的各种参数都相同,后面不再赘述。
4.脉冲成形滤波器的冲击响应和频率特性图2 脉冲成形滤波器的冲击响应和频率特性5.低通滤波器的冲击响应和频率特性图3 低通滤波器的冲击响应和频率特性6.仿真过程各点波形:说明:在画图时,进行了归一化处理。
噪声的方差为1,随机序列的幅度为1,调制加噪后信噪比为-3dB,按照理想情况计算,解调后信噪比为0dB。
图2 随机序列(16个)图3 脉冲成形后的波形脉冲成形的作用是抑制旁瓣,减少邻道干扰,在实际通信过程中必不可少,但是为了与理论误码率进行对比,在后面计算误码率时,没有进行脉冲成形。
%- 2DPSK 调制与解调%---------------------------------------------------%>>>>>>>>>>>>>>>>>>参数初始化>>>>>>>>>>>>>>>>>>>>>%---------------------------------------------------fs = 3600000;%采样频率为36000赫兹Time_Hold_On = 1/1200;%一个时钟周期为1200分之1,对应比特率为1200bpsNum_Unit = fs * Time_Hold_On;%一个时钟周期内的采样点个数High_Level = ones ( 1, Num_Unit );%高电平(全1序列)Low_Level = zeros ( 1, Num_Unit );%低电平(全0序列)w = 1800;%载波角频率1800HzA = 1;%载波幅值%---------------------------------------------------%>>>>>>>>>>>>>>>>>>信号初始化>>>>>>>>>>>>>>>%---------------------------------------------------Sign_Set = [0,1,1,0,1,0,0,1];%原始序列Lenth_Of_Sign = length ( Sign_Set );%原始序列长度Sign_Sett = ones(1,Lenth_Of_Sign+1);%差分变换后的序列,初始化为长度为原始序列长度+1的全1序列(第一个码元为1)sign_orign = zeros ( 1, Num_Unit * (Lenth_Of_Sign+1) );%初始化基带信号为全0序列sign_result = zeros ( 1, Num_Unit * (Lenth_Of_Sign+1) );%初始化接收到的基带信号为全0序列st = zeros ( 1, Num_Unit *( Lenth_Of_Sign+1) );%初始化调制后的信号为全0序列t = 0 : 1/fs : Time_Hold_On * (Lenth_Of_Sign +1)- 1/fs;%信号采样时间点result=zeros(1,Lenth_Of_Sign+1);%初始化接收到的序列resultt=zeros(1,Lenth_Of_Sign);%初始化差分解调后的序列%---------------------------------------------------%>>>>>>>>>>>求差分编码>>>>>>>>>>>>%---------------------------------------------------for I = 2 : Lenth_Of_Sign+1 %差分变换后的序列第一个值为1,从第2个开始计算Sign_Sett(I)= xor(Sign_Sett(I-1),Sign_Set(I-1));%用异或运算求差分码end%---------------------------------------------------%>>>>>>>>>>>产生基带信号>>>>>>>>>>>>%---------------------------------------------------for I = 1 : Lenth_Of_Sign+1 %考虑差分变换后序列中每一个值if Sign_Sett(I) == 1sign_orign( (I-1)*Num_Unit + 1 : I*Num_Unit) = High_Level; %序列值为1,基带信号为高电平elsesign_orign( (I-1)*Num_Unit + 1 : I*Num_Unit) = Low_Level; %序列值为0,基带信号为低电平endend%---------------------------------------------------%>>>>>>>>>>>>>>>>>>调制部分>>>>>>>>>>>>>>>>>>%---------------------------------------------------for I = 1 : Lenth_Of_Sign+1 %考虑差分变换后序列中每一个值if Sign_Sett(I) == 1st( (I-1)*Num_Unit + 1 : I*Num_Unit) = A * cos ( 2 * pi * w * t( (I-1)*Num_Unit + 1 : I*Num_Unit ) + ( pi / 2 ) );%序列值为1,相位调制为π/2elsest( (I-1)*Num_Unit + 1 : I*Num_Unit) = A * cos ( 2 * pi * w * t( (I-1)*Num_Unit + 1 : I*Num_Unit ) );%序列值为0,相位调制为0endendfiguresubplot ( 2,1,1 )plot(t, sign_orign);axis( [ 0 , Time_Hold_On *( Lenth_Of_Sign + 2), - (A / 2), A + (A / 2) ] );title ( '原始信号' );grid %画出基带信号subplot ( 2, 1, 2 );plot ( t, st );axis( [ 0 , Time_Hold_On *( Lenth_Of_Sign + 2), - 3*(A / 2), 3*(A / 2) ] );title ( '调制后的信号' );grid %画出相位调制后的信号%---------------------------------------------------%>>>>>>>>>>>>>>>>>>相干解调>>>>>>>>>>>>>>>>>>>>>>>>>>>>>%---------------------------------------------------dt = st .* cos ( 2 * pi * w * t ); %相干相乘figureplot ( t, dt );axis( [ 0 , Time_Hold_On *( Lenth_Of_Sign + 2), - 3*(A / 2), 3*(A / 2) ] );title ( '相干相乘后的波形' );grid%--------------------------------------------------- %>>>>>>>>>>>>>>>>>>>低通滤波部分>>>>>>>>>>>>>>>>>>>>%---------------------------------------------------[N,Wn] = buttord( 2*pi*1500, 2*pi*3400,3,25,'s'); %临界频率采用角频率表示,计算低通滤波器参数[b,a]=butter(N,Wn,'s'); %产生N阶低通巴特沃斯滤波器[bz,az]=impinvar(b,a,fs); %映射为数字的dt = filter(bz,az,dt); %将相干相乘后的信号进行滤波figureplot ( t, dt );axis( [ 0 , Time_Hold_On *( Lenth_Of_Sign + 2), - 3*(A / 2), 3*(A / 2) ] );title ( '低通滤波后的波形' );grid%---------------------------------------------------%>>>>>>>>>>>>>抽样判决& 逆码变换部分>>>>>>>>>>>>>>>%---------------------------------------------------for I = 1 : Lenth_Of_Sign+1if dt((2*I-1)*Num_Unit/2) < 0.25 %在时钟周期中间采样,由于相干相乘后信号幅值变为1/2,所以判决门限为0.25sign_result( (I-1)*Num_Unit + 1 : I*Num_Unit) = High_Level;elsesign_result( (I-1)*Num_Unit + 1 : I*Num_Unit) = Low_Level;end%由于相干相乘后得到的信号变为原来的负数,所以进行逆码变换endfigureplot ( t, sign_result );axis( [ 0 , Time_Hold_On *( Lenth_Of_Sign + 2), - 3*(A / 2), 3*(A / 2) ] );title ( '逆码变换后的波形' );grid%---------------------------------------------------%>>>>>>>>>>>序列生成与差分还原>>>>>>>>>>>>%---------------------------------------------------for I=1: Lenth_Of_Sign+1result(I)=sign_result(I* Num_Unit)%将接收到的信号生成(差分)序列endfor I = 1 : Lenth_Of_Signresultt(I)= xor(result(I),result(I+1)) %将接收到的差分序列还原为原序列endwindow=boxcar(length(st)); %矩形窗nfft=1024;[Pxx,f]=periodogram(st,window,nfft,fs); %求功率谱密度plot(f,10*log10(Pxx));。
利用MATLAB实现DPSK调制及解调
DPSK(Differential Phase Shift Keying)调制是一种数字信息传输调制方式。
它采用相位差的改变来表示数字信息,具有抗噪声和波动的能力,因此在数字通信领域得到了广泛的应用。
MATLAB是一种适合数字信号处理的工具,可以有效地实现DPSK调制及解调。
以下是具体的实现步骤:
DPSK调制
1. 生成数字信息比特流,转换为1和-1形式。
2. 将比特流进行差分编码得到差分比特流。
3. 将差分比特流分组,每组2个比特。
4. 根据相邻两个比特的差异,确定相位差。
差分比特流为00或11时,相位差为0;差分比特流为01或10时,相位差为π。
5. 根据相位差,生成相位进行调制得到调制信号。
可以使用sinc函数或高斯函数对信号进行脉冲整形。
DPSK解调
1. 将DPSK调制后的信号送入相干解调器。
2. 使用带通滤波器去除高频噪声。
3. 再次进行相干解调,得到调制信号。
4. 对调制信号进行差分解码还原差分比特流。
5. 对差分比特流进行译码得到数字信息比特流。
利用MATLAB实现DPSK调制及解调的代码可在Matlab官网上找到并学习使用。
clear all;close all;fs=4000000; %设定系统的抽样频率k=20000;%设定数字基带信号的频率fc=200000;%设定正弦载波频率t=0:1/fs:4000/fs;%仿真时间范围p=21;s=randint(1,p,2); %设定需要产生的码元个数m=s(ceil(k*t+0.01));%将基带生成时域信号figure(1) subplot(311)plot(t,m);axis([0 10e-4 —0。
2 1。
2]);grid on;title(’数字基带信号');b=randint(1,p,2);%将生成的基带转换为差分码for i=1:pif (i==1)if (s(i)==0)b(i)=0;elseb(i)=1;endelseif (s(i)==b(i-1))b(i)=0;elseb(i)=1;endendn=b(ceil(k*t+0。
01)); %将差分码生成时域信号subplot(312)plot(t,n);axis([0 10e-4 -0.2 1。
2]);grid on;title(’差分码')x=(n-0.5).*2car=sin(2*pi*fc*t);%定义载波dpsk=x。
*car; %2dpsk信号的载波调制subplot(313);plot(t,car);axis([0 10e—4 —1.2 1.2]);title('正弦载波’);figure(2) subplot(311);plot(t,dpsk);axis([0 10e-4 -1.2 1。
2]);title('2DPSK信号');grid on;vn=0。
05;noise=vn.*(randn(size(t)));%产生噪音subplot(312);plot(t,noise);grid on;title(’噪音信号');axis([0 10e—4 —0。
关于BPSK、MPSK、MDPSK及MATLAB的操作说明一、示范程序的运行方法本课程提供的示范程序包括三个方面,分别是BPSK、M(M=4、8)进制PSK和DPSK 通信系统的仿真。
前者由c++实现,后两者用Matlab语言编写。
示范程序已经上载于我院的ftp服务器上,同学们可以从“ftp://202.112.108.122/”的“通信原理与计算机仿真”文件夹中下载到本地机。
1、BPSK示范程序的运行直接运行文件夹下的可执行文件“A wgnbpsk.exe”,观察高斯白噪声的BPSK仿真;直接运行文件夹下的可执行文件“Rayleigh.exe”,观察噪声为瑞利分布的BPSK仿真。
2、M(M=4、8)进制PSK和DPSK示范程序的运行一个完整的matlab仿真程序一般由多个文件组成(即主函数和子函数)。
另外,Matlab 强调了“当前工作目录”,执行matlab仿真程序的过程,简单的说,就是在“Matlab的当前工作目录为该程序的主函数所在文件夹”的前提下,键入主函数名,然后回车运行。
一系列的操作类似于DOS命令。
举例来说,我们要运行四进制PSK仿真程序,首先把示范程序中的“M-psk”文件夹拷至Matlab的根目录下(假设其路径为“c:/matlab5.3/M-psk”),观察四进制PSK仿真程序,它的主函数为“psk.m”,路径是“c:/matlab5.3/M-psk/4psk/psk.m”。
运行此仿真程序的过程为:a.用“pwd”命令显示当前目录,其默认值一般为“c:/matlab5.3/work”;b.用“cd”命令改变当前工作目录,使其指向“c:/matlab5.3/M-psk/4psk”,即主函数“psk.m”所在文件夹,命令为“cd c:/matlab5.3/M-psk/4psk”;c.键入“psk”运行仿真程序。
以此类推,如果我们要运行八进制DPSK仿真程序(假设事先已将文件夹“M-dpsk”复制到路径“c:/matlab5.3/work/M-dpsk”下,则此时主函数“dpsk8.m”所在路径是“c:/matlab5.3/work/M-dpsk/8dpsk”),故只需键入命令“cd c:/matlab5.3/work/M-dpsk /8dpsk”,回车后运行“dpsk8”即可。
基于MATLAB的2DPSK调制和解调仿真1. MATLAB/SIMULINK简介美国Mathworks公司于1967年推出了矩阵实验室“Matrix Laboratory”(缩写为Matlab)这就是Matlab最早的雏形。
开发的最早的目的是帮助学校的老师和学生更好的授课和学习。
从Matlab诞生开始,由于其高度的集成性及应用的方便性,在高校中受到了极大的欢迎。
由于它使用方便,能非常快的实现科研人员的设想,极大的节约了科研人员的时间,受到了大多数科研人员的支持,经过一代代人的努力,目前已发展到了7.X版本。
Simulink是MATLAB中的一种可视化仿真工具,也是目前在动态系统的建模和仿真等方面应用最广泛的工具之一。
确切的说,Simulink是一个用来对动态系统进行建模、仿真和分析的软件包,它支持线性和非线性系统,连续、离散时间模型,或者是两者的混合。
系统还可以使多种采样频率的系统,而且系统可以是多进程的。
在Simulink环境中,它为用户提供了方框图进行建模的图形接口,采用这种结构画模型图就如同用手在纸上画模型一样自如、方便,故用户只需进行简单的点击和拖动就能完成建模,并可直接进行系统的仿真,快速的得到仿真结果。
2.二进制差分相位键控(2DPSK)在2PSK信号中,信号相位的变化是以未调正弦载波的相位作为参考,用载波相位的绝对数值表示数字信息的,所以称为绝对移相.由图 2 - 14 所示2PSK 信号的解调波形可以看出, 由于相干载波恢复中载波相位的180°相位模糊,导致解调出的二进制基带信号出现反向现象,从而难以实际应用. 为了解决2PSK信号解调过程的反向工作问题, 提出了二进制差分相位键控(2DPSK). 2DPSK方式是用前后相邻码元的载波相对相位变化来表示数字信息.假设前后相邻码元的载波相位差为Δφ,可定义一种数字信息与Δφ之间的关系为则一组二进制数字信息与其对应的 2DPSK 信号的载波相位关系如下所示:二进制数字信息: 1 1 0 1 0 0 1 1 1 02DPSK信号相位: 0 π 0 0 πππ 0 π 0 0或π 0 ππ 0 0 0 π 0 ππ数字信息与Δφ之间的关系也可以定义为可以看出,2DPSK信号的实现方法可以采用:首先对二进制数字基带信号进行差分编码,将绝对码表示二进制信息变换为用相对码表示二进制信息,然后再进行绝对调相,从而产生二进制差分相位键控信号。
DPSK调制解调方案1 运行平台(硬件):CXD301数字(信号)处理板系统:win7/64;win7/32;win10/64;win11/64软件:ISE/ModelSimSE/(Verilog)/(Matlab)2 主要功能及性能指标2.1 主要功能1)可产生基带码元数据2)完成绝对码到相对码的转换3)基带数据的成型(滤波器)电路4)产生DPSK调制数据5)完成DPSK解调(载波提取,相干解调)6)完成位同步信号提取(超前-—滞后型锁相环法位同步电路) 7)解调端完成相对码到绝对码的转换2.2 主要性能指标调制端:1)系统(时钟):50MHz2)基带数据速率:390.625kbps3)基带成型滤波器成型系数:0.84) 载波频率:390.625kbps解调端:1)采样频率:3.125MHz2)解调方式:Costas环提取载波,相干解调3 程序结构框图说明DPSK调制解调电路程序主要由基带信号生成模块(pcm.v)、绝对码转相对码模块(Coder.v)、Psk调制模块(psk_mod.v)、Costas模块(Costas.v)、位同步模块(BitSync.v)和相对码转绝对码模块(Decoder.v)组成。
基带信号生成模块(pcm.v)产生码率为390.625kbps的基带数据,送给Coder.v完成相对码的转换,同时将绝对码送CXD301扩展口观测。
转换后的相对码送给PSK调制模块;PSK调制模块完成PSK信号调制,先对PCM基带数据进行成型滤波,控制传输频带,再与390.625kbps的载波进行相乘,完成PSK调制;PSK调制数据经CXD301板上的DA、滤波、运放模块送BNC测试口的同时,经板上短接线回至(AD)通道,经AD采样后回送至(FPGA),由Costas模块完成相干载波提取的同时完成数据解调;解调后的数据送至位同步模块完成位同步脉冲的提取。
提取出的位同步信号与解调后的数据送Decoder.v模块,完成相对码到绝对码的转换,还原成发送端的原始信号。
2DPSK调制与解调系统的仿真1、 2DPSK基本原理1.1 2DPSK信号原理2DPSK方式即是利用前后相邻码元的相对相位值去表示数字信息的一种方式。
现假设用Φ表示本码元初相与前一码元初相之差,并规定:Φ=0表示0码,Φ=π表示1码。
则数字信息序列与2DPSK信号的码元相位关系可举例表示如2PSK信号是用载波的不同相位直接去表示相应的数字信号而得出的,在接收端只能采用相干解调,它的时域波形图如图2.1所示。
图1.1 2DPSK信号在这种绝对移相方式中,发送端是采用某一个相位作为基准,所以在系统接收端也必须采用相同的基准相位。
如果基准相位发生变化,则在接收端回复的信号将与发送的数字信息完全相反。
所以在实际过程中一般不采用绝对移相方式,而采用相对移相方式。
定义∆Φ为本码元初相与前一码元初相之差,假设:∆Φ=0→数字信息“0”;∆Φ=π→数字信息“1”。
则数字信息序列与2DPSK信号的码元相位关系可举例表示如下:数字信息: 1 0 1 1 0 1 1 1 0 1DPSK信号相位:π 0 0 π 0 0 π 0 π π 0或:0 π π 0 π π 0 π 0 0 π1.2 2DPSK信号的调制原理一般来说,2DPSK信号有两种调试方法,即模拟调制法和键控法。
2DPSK信号的的模拟调制法框图如图1.2.1所示,其中码变换的过程为将输入的单极性不归零码转换为双极性不归零码。
图1.2.1 模拟调制法2DPSK 信号的的键控调制法框图如图1.2.2所示,其中码变换的过程为将输入的基带信号差分,即变为它的相对码。
选相开关作用为当输入为数字信息“0” 时接相位0,当输入数字信息为“1”时接pi 。
图1.2.2 键控法调制原理图1.3 2DPSK 信号的解调原理2DPSK 信号最常用的解调方法有两种,一种是极性比较和码变换法,另一种是差分相干解调法。
1.3.1 2DPSK 信号解调的极性比较法它的原理是2DPSK 信号先经过带通滤波器,去除调制信号频带以外的在信道中混入的噪声,再与本地载波相乘,去掉调制信号中的载波成分,再经过低通滤波器去除高频成分,得到包含基带信号的低频信号,将其送入抽样判决器中进行抽样判决的到基带信号的差分码,再经过逆差分器,就得到了基带信号。
BPSK(DPSK)调制解调实验指导书电子科技大学通信学院《二相BPSK(DPSK)调制解调实验指导书》二相BPSK(DPSK)调制解调实验班级学生学号教师二相BPSK(DPSK)调制解调实验指导书二相BPSK(DPSK)调制解调实验一、实验目的1、掌握二相BPSK(DPSK)调制解调的工作原理。
2、掌握二相绝对码与相对码的变换方法。
3、熟悉BPSK(DPSK)调制解调过程中各个环节的输入与输出波形。
4、了解载波同步锁相环的原理与构成,观察锁相环各部分工作波形。
5、了解码间串扰现象产生的原因与解决方法,能够从时域和频域上分析经过升余弦滚降滤波器前后的信号。
6、掌握Matlab软件的基本使用方法,学会Simulink环境的基本操作与应用。
二、实验原理数字信号载波调制有三种基本的调制方式:幅移键控(ASK),频移键控(FSK)和相移键控(PSK)。
它们分别是用数字基带信号控制高频载波的参数如振幅、频率和相位,得到数字带通信号。
PSK调制在数字通信系统中是一种极重要的调制方式,它的抗干扰噪声性能及通频带的利用率均优于ASK幅移键控和FSK频移键控。
由于PSK调制具有恒包络特性,频带利用率比FSK高,并在相同的信噪比条件下误码率比FSK低。
同时PSK调制的实现也比较简单。
因此,PSK技术在中、高数据传输中得到了十分广泛的应用。
BPSK是利用载波相位的变化来传递数字信息,而振幅和频率保持不变。
在BPSK中,通常用初始相位0和π分别表示二进制“1”和“0”。
其调制原理框图如图1所示,解调原理框图如图2所示。
图1 BPSK的模拟调制方式由于在BPSK 信号的载波恢复过程中存在着载波相位0 和180 的不确定性反向,所以在实际的BPSK 通信系统设计中,往往采用差分编解码的方法克服这个问题。
差分编解码是利用前后信号相位的跳变来承载信息码元,不再是以载波的绝对相位传输码元信息。
差分编解码的原理可用下式描述。
1n n n d b d -=⊕ 1n n n b d d -=⊕ 其中第一个公式为差分编码原理,第二个公式为差分解码原理。
文档从互联网中收集,已重新修正排版,word格式支持编辑,如有帮助欢迎下载支持。
目录摘要 ................................................................................................................... 错误!未定义书签。
Abstract............................................................................................................. 错误!未定义书签。
1.设计目的与要求 ............................................................................................ 错误!未定义书签。
2.方案的选择 .................................................................................................... 错误!未定义书签。
2.1调制部分............................................................................................. 错误!未定义书签。
2.2解调部分............................................................................................. 错误!未定义书签。
3.单元电路原理和设计 .................................................................................... 错误!未定义书签。
DPSK调制解调技术研究与MATLAB仿真任务书随着计算机信息技术的发展,调制解调器(Modem)迅速成为电子工程领域的主流技术。
相较于传统模拟调制解调器,数字调制解调技术的运用使得电信的传输质量得到大大的提高。
在这一背景下,如何深入研究DPSK调制解调技术,运用MATLAB进行仿真,对于运用这项技术的实际应用具有极大的意义。
DPSK(Differential Phase-Shift Keying)是一种相位调制方式。
它类似于普通的PSK调制,但是在相位调制时有所不同,是用移相技术来调制。
其中,每个信号调制码词之间都有一定的差分,而不是普通的绝对相位调制。
DPSK调制可以将调制码词转换为双相位移相差的解调码词,产生一种可以被正确解调的差分调制码流。
DPSK调制解调技术在调制解调器中的应用越来越广泛。
由于其传输高效率、低成本、能够抵抗外界噪声等优势,DPSK调制解调技术已经成为目前最先进的调制解调技术。
本文的任务是:以MATLAB为工具,研究并仿真DPSK调制解调技术的实现过程和其应用示例。
首先,介绍DPSK调制解调原理和编解码过程;其次,研究相位移动量的变化对抗噪声的影响;最后,使用MATLAB实现DPSK调制解调技术的仿真,并进行应用分析。
首先,介绍DPSK调制解调原理和编解码过程。
DPSK调制解调技术是一种基于相位移动差分解调技术。
其实现原理是,当每次检测到新比特时,将其与前一次检测到的比特相比较,以确定当前比特相对于前一次比特是升还是降,从而确定相位移动量及其符号。
这就是编码过程,同样的,解码过程也是类似的,只是将检测到的比特跟期望的比特相比,以确定其相位移动量及其符号,从而实现解码。
其次,研究相位移动量的变化对抗噪声的影响。
DPSK调制解调技术的优点之一就是可以很好地抗噪声,因为每次检测到的比特都是基于前一次比特的相位移动,而不是普通的绝对相位调整,能够抵抗一些外部噪声干扰,对系统的传输有良好的保护作用。
%DPSK调制解调程序清单
%仿真DPSK信号的产生及相干解调过程
%将成形滤波器系数量化为10比特后,写入tra_lpf、coe文件中
%将接收滤波器系数量化为10比特后,写入rec_lpf、coe文件中
%将DPSK已调数据量化为8比特后,写入Dpsk、txt文件中
ps=1*10^6; %码速率为1MHz
a=0、8; %成形滤波器系数为0、8
B=(1+a)*ps; %中频信号处理带宽
Fs=8*10^6; %采样速率为8MHz
fc=2*10^6; %载波频率为2MHz
N=20000; %仿真数据的长度
t=0:1/Fs:(N*Fs/ps-1)/Fs;%产生长度为N,频率为fs的时间序列
s=randint(N,1,2); %产生随机数据作为原始数据,
%并将绝对码变换为相对码
ds=ones(1,N);
for i=2:N
if s(i)==1
ds(i)=-ds(i-1);
else
ds(i)=ds(i-1);
end
end
%对相对码数据以Fs频率采样
Ads=upsample(ds,Fs/ps);
%设计平方升余弦滤波器
n_T=[-2 2];
rate=Fs/ps;
T=1;
Shape_b = rcosfir(a,n_T,rate,T);%figure(4);freqz(Shape_b)
%对采样后的数据进行升余弦滤波;
rcos_Ads=filter(Shape_b,1,Ads);
%产生载频信号
f0=sin(2*pi*fc*t);
%产生DPSK已调信号
dpsk=rcos_Ads、*f0;
%与相干载波相乘,实现相干解调
demod_mult=dpsk、*f0;
%设计接收端低通滤波器
fc=[ps 3、1*10^6]; %过渡带
mag=[1 0]; %窗函数的理想滤波器幅度
dev=[0、01 0、01]; %纹波
[n,wn,beta,ftype]=kaiserord(fc,mag,dev,Fs) %获取凯塞窗参数
fpm=[0 fc(1)*2/Fs fc(2)*2/Fs 1]; %firpm函数的频段向量magpm=[1 1 0 0]; %firpm函数的幅值向量
rec_lpf=firpm(n,fpm,magpm); %firpm函数返回的最优滤波器系数
%对乘法运算后的数据进行低通滤波,输出解调后的基带信号
demod_lpf=filter(rec_lpf,1,demod_mult);
figure(1)
%绘制成形滤波后信号频谱、DPSK信号频谱、DPSK信号时域波形
m_rcos_Ads=20*log10(abs(fft(rcos_Ads,1024)));m_rcos_Ads=m_rcos_Ads-max(m_rcos_Ads); m_dpsk=20*log10(abs(fft(dpsk,1024)));m_dpsk=m_dpsk-max(m_dpsk);
%设置幅频响应的横坐标单位为MHz
x_f=[0:(Fs/length(m_dpsk)):Fs/2];x_f=x_f/10^6;
%只显示正频率部分的幅频响应
mrcos_Ads=m_rcos_Ads(1:length(x_f));
mdpsk=m_dpsk(1:length(x_f));
%设置时域波表的横坐标单位为us
Len=100;%设置时域波形显示的点数
x_t=1:Len;%产生长度为Len的时间序列
x_t=x_t/Fs*10^6;
%显示所需的频谱及时域波形
subplot(311); plot(x_f,mrcos_Ads);
legend('成形滤波后信号频谱');
xlabel('频率(MHz)');ylabel('幅度(dB)');grid on;
subplot(312); plot(x_f,mdpsk);
legend('DPSK已调信号频谱');
xlabel('频率(MHz)');ylabel('幅度(dB)');grid on;
subplot(313); plot(x_t,dpsk(101:Len+100));grid on;
legend('DPSK时域信号波形');
xlabel('时间(us)');ylabel('幅度(V)');grid on;
figure(2)
%对相对码重复Fs/ps倍采样,便于绘图比较
s_Ads=rectpulse(ds,Fs/ps);
Len=500;%设置时域波形显示的点数
x_t=1:Len;%产生长度为Len的时间序列
x_t=x_t/Fs*10^6;
%绘制DPSK解调前后时域波形
delay=18;%为便于观察,对解调后的基带波形超前显示delay个点。
plot(x_t,s_Ads(1:Len)/2,'-',x_t,demod_lpf(delay:Len+delay-1)/max(demod_lpf),'--');
legend('相对码信号波形','DPSK解调后基带波形');
xlabel('时间(us)');ylabel('幅度(V)');grid on;。