DPSK调制解调的Matlab程序

合集下载

基于MATLAB的2DPSK调制与解调系统的分析

基于MATLAB的2DPSK调制与解调系统的分析

摘要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通信

利用Matlab simulink实现DPSK通信

利用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之间有一个我自己定义的模块。

matlab2psk调制与解调代码 -回复

matlab2psk调制与解调代码 -回复
matlab2psk调制与解调代码-回复
标题:Matlab2PSK调制与解调代码详解
在通信系统中,调制和解调是两个至关重要的过程。调制是将信息信号转换为适合在特定信道中传输的信号的过程,而解调则是将接收到的信号恢复为原始信息信号的过程。在这个过程中,Phase Shift Keying (PSK)是一种常见的数字调制技术,包括二进制相移键控(BPSK)、四进制相移键控(QPSK)等。以下我们将通过Matlab代码详细解析PSK的调制与解调过程。
匹配滤波
h = rectpulse(10);匹配滤波器脉冲响应
filtered_signal = filter(h, 1, bpsk_signal_noisy);
判决门限设置
threshold = 0;
received_data = filtered_signal > threshold;
BPSK解调
在这段代码中,我们首先生成了一组随机的二进制数据,然后使用"pskmod"函数将其调制为BPSK信号。其中,函数的第二个参数"2"表示我们正在使用二进制相移键控。
接下来,我们来看一下QPSK的调制过程。QPSK是在BPSK的基础上,每个符号携带两个比特的信息。以下是一个简单的QPSK调制代码示例:
matlab
matlab
生成随机二进制数据
data = randi([0,1],1000,1);
K调制
bpsk_signal = pskmod(data, 2);
添加高斯白噪声
snr_db = 10;信噪比(dB)
noise_power = 1/(10^(snr_db/10));
bpsk_signal_noisy = awgn(bpsk_signal,snr_db);

通信原理DPSKFSKASKPSK检波及波形实现的MATLAB程序

通信原理DPSKFSKASKPSK检波及波形实现的MATLAB程序

通信原理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调制解调的Matlab程序

DPSK调制解调的Matlab程序

%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调制解调技术研究与MATLAB仿真任务书

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的2DPSK调制与解调系统的分析

基于MATLAB的2DPSK调制与解调系统的分析

摘要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调制与解调matlab

(完整版)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. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

%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;。

相关文档
最新文档