2PSK 调制与解调系统的仿真
摘要:用数字基带信号控制载波,把数字基带信号变换为数字带通信号的过程称为数字调制。键控法,如
对载波的相位进行键控,便可获得相移键控(PSK)基本的调制方式。由于 PSK 在生活中有着广泛
的应用,本论文详细介绍了 PSK 波形的产生和仿真过程。我们可以系统的了解基本原理,以及得到
数字调制波形的方法。利用 MATLAB 仿真可更好的认识 2PSK 信号波形的调制过程。
关键词:数字调制、2PSK、调制与解调、Matlab 仿真
设计内容
1. 设计任务与要求
课程设计需要运用 MATLAB 编程实现 2PSK 调制解调过程,并且输出其调制及解调过
程中的波形,讨论其调制和解调效果。
2. 设计原理
数字信号的传输方式分为基带传输和带通传输,在实际应用中,大多数信道具有带通特
性而不能直接传输基带信号。为了使数字信号在带通信道中传输,必须使用数字基带信号对
载波进行调制,以使信号与信道的特性相匹配。这种用数字基带信号控制载波,把数字基带
信号变换为数字带通信号的过程称为数字调制。
数字调制技术的两种方法:①利用模拟调制的方法去实现数字式调制,即把数字调制看
成是模拟调制的一个特例,把数字基带信号当做模拟信号的特殊情况处理;②利用数字信号
的离散取值特点通过开关键控载波,从而实现数字调制。这种方法通常称为键控法,比如对
载波的相位进行键控,便可获得相移键控(PSK)基本的调制方式。
图 2-1 相应的信号波形的示例
1
0
1
调制原理
数字调相:如果两个频率相同的载波同时开始振荡,这两个频率同时达到正最大值,同
时达到零值,同时达到负最大值,它们应处于"同相"状态;如果其中一个开始得迟了一点,
就可能不相同了。如果一个达到正最大值时,另一个达到负最大值,则称为"反相"。一般把
信号振荡一次(一周)作为 360 度。如果一个波比另一个波相差半个周期,我们说两个波的
相位差 180 度,也就是反相。当传输数字信号时,"1"码控制发 0 度相位,"0"码控制发 180
度相位。载波的初始相位就有了移动,也就带上了信息。
相移键控是利用载波的相位变化来传递数字信息,而振幅和频率保持不变。在 2PSK 中,
通常用初始相位 0 和π分别表示二进制“1”和“0”。因此,2PSK 信号的时域表达式为
(t)=Acos
t+
)
其中, 表示第 n 个符号的绝对相位:
=
因此,上式可以改写为
图 2-2
2PSK 信号波形
解调原理
2PSK 信号的解调方法是相干解调法。由于 PSK 信号本身就是利用相位传递信息的,所
以在接收端必须利用信号的相位信息来解调信号。下图 2-3 中给出了一种 2PSK 信号相干接
收设备的原理框图。图中经过带通滤波的信号在相乘器中与本地载波相乘,然后用低通滤波
器滤除高频分量,在进行抽样判决。判决器是按极性来判决的。即正抽样值判为 1,负抽样
值判为 0.
2PSK 信号相干解调各点时间波形如图 2 - 14 所示. 当恢复的相干载波产生 180°倒相
时,解调出的数字基带信号将与发送的数字基带信号正好是相反,解调器输出数字基带信号全
部出错.
图 2 -3
2PSK 信号相干解调各点时间波形
这种现象通常称为"倒π"现象.由于在 2PSK 信号的载波恢复过程中存在着 180°的相位
模糊,所以 2PSK 信号的相干解调存在随机的"倒π"现象,从而使得 2PSK 方式在实际中很少采
用.
3. 系统结构图
1. 2PSK 信号的调制原理框图如下图 2-3 所示
2. 2PSK 信号的调制原理框图如下图 2-4 所示
2-4 2PSK 信号的调制原理框图
2PSK
带通滤波
相乘
低通滤波
V(t)
抽样判决
cosωt
本地载波
提取
解调器
2-5 2PSK 信号的解调原理框图
定时脉冲
4. 仿真程序
2PSK 基于 MATLAB 的程序代码:
clear all;
close all;
fs=8e5;%抽样频率
fm=20e3;%基带频率
n=2*(6*fs/fm);
final=(1/fs)*(n-1);
fc=2e5; % 载波频率
t=0:1/fs:(final);
Fn=fs/2;%耐奎斯特频率
%用正弦波产生方波
%==========================================
twopi_fc_t=2*pi*fm*t;
A=1;
phi=0;
x = A * cos(twopi_fc_t + phi); % 方波
am=1;
x(x>0)=am;
x(x<0)=-1;
figure(1)
subplot(321);
plot(t,x);
axis([0 2e-4 -2 2]);
title('基带信号');
grid on
car=sin(2*pi*fc*t);%载波
ask=x.*car;%载波调制
subplot(322);
plot(t,ask);
axis([0 200e-6 -2 2]);
title('PSK 信号');
grid on;
%=====================================================
vn=0.1;
noise=vn*(randn(size(t)));%产生噪音
subplot(323);
plot(t,noise);
grid on;
title('噪音信号');
axis([0 .2e-3 -1 1]);
askn=(ask+noise);%调制后加噪
subplot(324);
plot(t,askn);
axis([0 200e-6 -2 2]);
title('加噪后信号');
grid on;
%带通滤波
%======================================================================
fBW=40e3;
f=[0:3e3:4e5];
w=2*pi*f/fs;
z=exp(w*j);
BW=2*pi*fBW/fs;
a=.8547;%BW=2(1-a)/sqrt(a)
p=(j^2*a^2);
gain=.135;
Hz=gain*(z+1).*(z-1)./(z.^2-(p));
subplot(325);
plot(f,abs(Hz));
title('带通滤波器');
grid on;
Hz(Hz==0)=10^(8);%avoid log(0)
subplot(326);
plot(f,20*log10(abs(Hz)));
grid on;
title('Receiver -3dB Filter Response');
axis([1e5 3e5 -3 1]);
%滤波器系数
a=[1 0 0.7305];%[1 0 p]
b=[0.135 0 -0.135];%gain*[1 0 -1]
faskn=filter(b,a,askn);
figure(2)
subplot(321);
plot(t,faskn);
axis([0 100e-6 -2 2]);
title('通过带通滤波后输出');
grid on;
cm=faskn.*car;%解调
subplot(322);
plot(t,cm);
axis([0 100e-6 -2 2]);
grid on;
title('通过相乘器后输出');
%低通滤波器
%==================================================================
p=0.72;
gain1=0.14;%gain=(1-p)/2
Hz1=gain1*(z+1)./(z-(p));
subplot(323);
Hz1(Hz1==0)=10^(-8);%avoid log(0)
plot(f,20*log10(abs(Hz1)));
grid on;
title('LPF -3dB response');
axis([0 5e4 -3 1]);
%滤波器系数
a1=[1 -0.72];%(z-(p))
b1=[0.14 0.14];%gain*[1 1]
so=filter(b1,a1,cm);
so=so*10;%add gain
so=so-mean(so);%removes DC component
subplot(324);
plot(t,so);
axis([0 8e-4 -3.5 3.5]);
title('通过低通滤波器后输出');
grid on;
%Comparator
%======================================================
High=2.5;
Low=-2.5;
vt=0;%设立比较标准
error=0;
len1=length(so);
for ii=1:len1
if so(ii) >= vt
Vs(ii)=High;
else
Vs(ii)=Low;
end
end
Vo=Vs;
subplot(325);
plot (t,Vo), title('解调后输出信号'),
axis([0 2e-4 -5 5])
grid on;
xlabel('时间 (s)'), ylabel('幅度(V)'),
5. 仿真结果