基于Matlab的QPSK调制与解调系统仿真—数字通信课程设计
西南科技大学
课 程 设 计 报 告
课程名称: 数字通信课程设计 设计名称:基于Matlab的QPSK调制与解调系统仿真 姓 名: 学 号: 班 级: 指导教师: 起止日期: 2011.6.21-2011.7.3
西南科技大学信息工程学院制
1
课 程 设 计 任 务 书 学生班级: 学生姓名: 学号: 设计名称: 基于Matlab的QPSK调制与解调系统仿真 起止日期: 2011.6.28----2011.7.4 指导教师:
基本要求:
(1)分析QPSK调制、解调原理,画出系统框图,推导星座图(设载波相位
为0?);
产生随机二进制序列,作为待传输的数据,数据的速率是5Mbit/s;
(2)载波频率为50MHz,完成QPSK调制,分别画出两路信号经过乘法器后
的时域波形,并给出分析、解释;
(3)产生加性高斯白噪声,画出时域波形及频谱,
将加性高斯白噪声作为传输信道的干扰,画出接收端信号的时域图;
(4)完成QPSK解调,输出解码序列,画出信号经过乘法器,低通滤波器后
的波形。
(5)计算系统信噪比、传输误码率
扩展要求:
(1)计算在不同系统信噪比下,传输误码率;
(2)画出系统信噪比,传输误码率的曲线。
2
课 程 设 计 学 生 日 志
时间 设计
6.28--6.29 查阅Matlab、通信原理的有关资料
6.30--7.2 用Matlab编写并调试程序,实现QPSK的调制与解调 7.3 写课程设计论文
7.4 课程设计答辩
课 程 设 计 考 勤 表
周 星期一 星期二 星期三 星期四 星期五
3
课 程 设 计 评 语 表
指导教师评语:
成绩: 指导教师:
年 月 日
4
基于Matlab的QPSK调制与解调系统仿真 一、设计目的和意义
, 分析QPSK调制、解调原理,画出系统框图,推导星座图(设载波相位为0?);
Mbit/s; , 产生随机二进制序列,作为待传输的数据,数据的速率是5
, 载波频率为50MHz,完成QPSK调制,分别画出两路信号经过乘法器后的时域波
形,并给出分析、解释;
, 产生加性高斯白噪声,画出时域波形及频谱,
, 将加性高斯白噪声作为传输信道的干扰,画出接收端信号的时域图;
, 完成QPSK解调,输出解码序列,画出信号经过乘法器,低通滤波器后的波形。
, 计算系统信噪比、传输误码率
扩展要求:
, 计算在不同系统信噪比下,传输误码率;
, 画出系统信噪比,传输误码率的曲线。
意义:在通信和信息传输系统、工业自动化或电子工程技术中,调制和解调应用最为广泛。
二、设计原理
1、2PSK信号
2PSK信号用载波相位的变化来表征被传输信息的状态,通常规定0相位载波和π相位载波分别表示传“1”和传“0”。
2PSK码元序列的波形与载频和码元持续时间之间的关系有关。当一个码元中包含有整数个载波周期时,在相邻码元的边界处波形是不连续的,或者说相位是不连续的。当一个码元中包含的载波周期数比整数个周期多半个周期时,则相位连续。当载波的初始相位差90度时,即余弦波改为正弦波时,结果类似。
2PSK信号的产生
主要有两种。第一种叫相乘法,是用二进制基带不归零矩形脉冲信号与载波相乘,得到相位反相的两种码元。第二种方法叫选择法,是用此基带信号控制一个开关电路,以选择输入信号,开关电路的输入信号是相位相差,的同频载波。这两种方法的复杂程度差不多,并且都可以用数字信号处理器实现。
2、4PSK信号
四进制绝对相移键控(4PSK)直接利用载波的四种不同相位来表示数字信息。由于每一种相位代表两个比特信息,因此每个四进制码元可以用两个二进制码元的组合来表示。两个二进制码元中的前一比特用a来表示,后一比特用b表示。四进制信号可等效为两个正交载波进行双边带调制所得信号之和。这样,就把数字调相和线性调制联系起来,为四相波形的产生提供依据。
5
3、调制原理
K即四进制移向键控,它利用载波的四种不同相位来表示数字信息,由 QPS
于每一种载波相位代表两个比特信息,因此每个四进制码元可以用两个二进制码元的组合来表示。两个二进制码元中的前一个码元用a表示,后一个码元用b表示。 QPSK信号可以看作两个载波正交2PSK信号的合成,下图表示QPSK正交调制器。
由QPSK信号的调制可知,对它的解调可以采用与2PSK信号类似的解调方法进行解调。解调原理图如下所示,同相支路和正交支路分别采用相干解调方式解调,得到和,经过抽样判决和并/串交换器,将上下支路得到的并行数It()Qt()
据恢复成串行数据。
6
三、设计步骤
1、步骤
(1)用matlab中randint()产生二进制随机序列,再通过算法把序列转换为相应的波形。
(2)将第(1)步中得到的二进制序列以奇偶分开,cos(wc*t)、sin(wc*t)调制,然后相加得到调制信号Sqpsk(t)。
(3)高斯白噪声,然后观察其信号和频谱。
(4)进行相干解调后,经过低通滤波器,然后抽样判决恢复信号I(t)和Q(t),再经过串并转换恢复信号。
2、源代码
clear;
T=1; % 基带信号宽度,也就是频率 f=1/T=5Mhz fc=10/T; % 载波频率 fc=10*1/T=50Mhz
space=2;
nb=20;
delta_T=T/50;
7
t=0:delta_T:nb*T-delta_T; N=length(t); %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%% 调制部分
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% 基带信号的产生
data=randn(1,nb)>0.5; % 调用一个随机函数(0 or 1),
datanrz=data.*2-1; % 变成极性码
data1=zeros(1,nb/delta_T); for q=1:nb
data1((q-1)/delta_T+1:q/delta_T)=datanrz(q); % 将极性码变成对应的波形信号 end
% 将基带信号变换成对应波形信号
data0=zeros(1,nb/delta_T); % 创建一个1*nb/delta_T的零矩阵
for q=1:nb
data0((q-1)/delta_T+1:q/delta_T)=data(q); % 将非极性码变成对应的波形信号 end
figure(1);
subplot(2,1,1)
plot(data0),title('波形信号(非极性)');
axis([0,1000,0,1.5]);
subplot(2,1,2)
plot(data1),title('波形信号(极性)');
axis([0,1000,-1.5,1.5]);
% 串并转换,将奇偶位数据分开
idata=datanrz(1:space:(nb-1)); % 将奇偶位分开
qdata=datanrz(2:space:nb);
% QPSK信号的调制
ich=zeros(1,nb/delta_T/2); % 创建一个1*nb/delta_T/2的零矩阵,以便后面存放奇偶位数据
for i=1:nb/2
ich((i-1)/delta_T+1:i/delta_T)=idata(i); end
for ii=1:N/2
a(ii)=sqrt(2/T)*cos(2*pi*fc*t(ii)); end
idata1=ich.*a; % 奇数位数据与余弦函数相乘,得到一路的调制信号 qch=zeros(1,nb/2/delta_T);
for j1=1:nb/2
8
qch((j1-1)/delta_T+1:j1/delta_T)=qdata(j1);
end
for jj=1:N/2
b(jj)=sqrt(2/T)*sin(2*pi*fc*t(jj)); end
qdata1=qch.*b; % 偶数位数据与正弦函数相乘,得到另一路的调制信号
figure(2);
subplot(2,1,1)
plot(idata1),title('I(t)cos(Wc*t)'); axis([0,700,-2,2]);
subplot(2,1,2)
plot(qdata1),title('Q(t)sin(Wc*t)'); axis([0,700,-2,2]);
s=idata1+qdata1; % 将奇偶位数据合并
figure(3);
plot(s),title('调制信号');
axis([0,500,-3,3]);
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%% 高斯信道
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%
% 高斯信道
y=wgn(1,1000,1)
y1=abs(fft(y));
s1=awgn(s,0);
s11=abs(fft(s1));
figure(4)
subplot(1,2,1)
plot(y),title('高斯白噪声');
subplot(1,2,2)
plot(y1),title('高斯白噪声频谱');
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
9
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%% QPSK 解调部分 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% 解调部分
idata2=s1.*a;
qdata2=s1.*b;
figure(5);
subplot(2,1,1)
plot(idata2),title('I(t)');
axis([0,600,-4,4]);
subplot(2,1,2)
plot(qdata2),title('Q(t)');
axis([0,600,-4,4]);
idata3=zeros(1,nb/2);
qdata3=zeros(1,nb/2);
% 抽样判决的过程,与0作比较,data>=0,则置1,否则置0
for n=1:nb/2
% A1(n)=sum(idata2((n-1)/delta_T+1:n/delta_T));
if sum(idata2((n-1)/delta_T+1:n/delta_T))>=0
idata3(n)=1;
else idata3(n)=0;
end
% A2(n)=sum(qdata2((n-1)/delta_T+1:n/delta_T));
if sum(qdata2((n-1)/delta_T+1:n/delta_T))>=0
qdata3(n)=1;
else qdata3(n)=0;
end
end
% 将判决之后的数据存放进数组
demodata=zeros(1,nb);
demodata(1:space:(nb-1))=idata3; % 存放奇数位
demodata(2:space:nb)=qdata3; % 存放偶数位
demodata1=zeros(1,nb/delta_T); for q=1:nb
demodata1((q-1)/delta_T+1:q/delta_T)=demodata(q);
end
figure(6);
10
plot(demodata1),title('基带信号');
axis([0,1000,-2,2]);
四、实验结果及分析
(1)产生的非极性基带信号和极性信号。
(2)与cos(wc*t)和sin(wc*t)相乘后的波形如下:
(3)得到调制信号Sqpsk(t):
11
(3)用wgn()产生高斯白噪声,时域图和频域图
(4)相干解调后的I(t)和Q(t)信号
12
(5)基带信号
五、实验体会
13
通过本次计算机通信课程设计,让我在除了课本的知识之外的知识有了更好的理解,对QPSK调制解调的工作原理有了更好的理解,在设计之前,收集了很多的
,但当真正深入设计时,却也遇到了诸多的问题,让我体会到了设计的要求在于系统性,可行性,准确性,诸多问题的出现给我们的设计带来了难度,也同时是更大的一次挑战。最后,在查阅了大量的资料咨询了许多同学后,终于得出了正确的结果,顺利完成了本次课程设计。
这次课程设计让我明白,有时候,光有基础知识是不够的,实践是检验真理的唯一标准,我们在把知识付出实践的过程中,常常会遇到或多或少的困难。只要我们想办法,用心去思考,用行动去创造,困难都会迎刃而解。
只有做到理论知识和实践相结合,才能真正做一个服务社会的人。
最后再次真切的感谢龙老师。
六、参考文献
[1] 曹志刚.现代通讯原理.清华大学出版社,2007.8
[2] 张威.MATLAB基础与编程入门.西安电子科技大学出版社,2004.2
14