资源描述
天津理工大学计算机与通信工程学院
通信工程专业设计阐明书
基于Matlab/Simulink
QPSK调制解调仿真设计与研究
姓 名 韩双年
学 号 2226
班 级 09通信3班
指引教师 白媛
日 期 -12-16
目录
摘 要 2
第一章 前 言 2
1.1 专业设计任务及规定 2
1.2 Matlab简介 2
1.3 Matlab下simulink简介 3
1.4 通信系统模型 3
第二章 QPSK调制 4
2.1 QPSK简介 4
2.2 QPSK调制原理 4
2.2.1 相乘法 4
2.2.2 选取法 5
2.3 QPSK调制原理框图 6
2.4 QPSK调制方式Matlab仿真 6
2.5 QPSK调制方式Matlab-simulink仿真 7
2.5.1 simulink调制建模 7
2.5.2 simulink调制仿真成果 8
第三章 QPSK解调 13
3.1 QPSK解调原理 13
3.2 QPSK解调原理框图 13
3.3 QPSK解调方式Matlab仿真 13
3.4 QPSK解调方式Matlab-simulink仿真 14
3.4.1 QPSK解调建模 14
3.4.2 传播信道 16
3.4.3 仿真成果 16
3.5 仿真成果分析 18
第四章 QPSK通信系统性能分析 19
第五章 结论 19
参照文献 20
附 录 20
摘 要
正交相移键控(QPSK),是一种数字调制方式。QPSK技术具备抗干扰能力好、误码率低、频谱运用效率高等一系列长处。论文重要简介了正交相移键控(QPSK)概况,以及正交相移键控QPSK调制解调概念和原理,运用Matlab中M文献和Simulink模块对QPSK调制解调系统进行了仿真,对QPSK在高斯白噪声信道中性能进行了,分析理解Simulink中涉及到QPSK各种模块功能。
【核心词】Matlab QPSK Simulnk 仿真
第一章 前 言
1.1 专业设计任务及规定
1理解并掌握QPSK调制与解调基本原理;
2在通信原理课程基本上设计与分析简朴通信系统;
3学会运用MATLAB7.0编写程序进行仿真,依照实验成果能分析所设计系统性能。
4学习MATLAB基本知识,熟悉MATLAB集成环境下Simulink仿真平台。
5运用通信原理有关知识在仿真平台中设计QPSK调制与解调仿真系统并用示波器观测解调后波形
6在指引教师指引下,独立完毕课程设计所有内容,能对的阐述和分析设计和实验成果。
1.2 Matlab简介
MATLAB是MATrix LABoratory缩写,是一款由美国Math Works公司出品商业数学软件。MATLAB 是一种用于算法开发、数据可视化、数据分析以及数值计算高档技术计算语言和交互式环境。除了矩阵运算、绘制函数/数据图像等惯用功能外,MATLAB还可以用来创立顾客界面及与调用其他语言(涉及C,C++和FORTRAN)编写程序。尽管MATLAB重要用于数值计算,但是由于大量额外工具箱它也适合于不同领域应用,如控制系统设计与分析、图像解决和信号解决和通信、金融建模和分析等。除了一种完整Simulink包,提供了一种可视化开发环境,通惯用于系统仿真、动态/嵌入式系统开发等。
1.3 Matlab下simulink简介
Simulink是MATLAB最重要组件之一,它提供一种动态系统建模、仿真和综合分析集成环境。在该环境中只要通过简朴鼠标操作,就可以构造出复杂系统。Simulink提供了一种建立模型方块图图形顾客接口,这个创立过程只需单击和拖动鼠标操作就能完毕,它提供了一种更快捷、直接明了方式,并且顾客可以及时看到系统仿真成果。Simulink具备适应面广、构造和流程清晰及仿真精细、效率高、贴近实际、等长处,基于以上长处Simulink已被广泛应用于控制理论和数字信号解决复杂仿真和设计。同步有大量第三方软件和硬件应用于Simulink。
1.4 通信系统模型
通信系统就是传递信息所需要一切技术设备和传播媒质总和,涉及信息源、发送设备、信道、接受设备和信宿(受信者) ,它普通模型如图1.4.1所示。
图1.4.1 通信系统普通模型
模仿通信系统是运用模仿信号来传递消息通信系统,其模型如图1.4.2所示。
图1.4.2 模仿通信系统模型
第二章 QPSK调制
2.1 QPSK简介
Quadrature Phase Shift Keying通过使用载波四个各不相似相位差来表达输入信息,是具备四进制相移键控。QPSK是在M=4时数字调相技术,它通过商定四种载波相位,分别为45°,135°,225°,275°,输入数据为二进制数字序列,由于载波相位是四进制,所有咱们需要把二进制数据变为四进制,即把二进制序列中每两个比特提成一组,四种排列组合,即00,01,10,11,双比特码元即为一组。每两位二进制信息比特构成每一组,它们分别表达着着四个符号中某一种符号。
2.2 QPSK调制原理
QPSK调制有两种产生办法相乘电路法和选取法。
2.2.1 相乘法
输入信号是二进制不归零双极性码元,它通过“串并变换”电路变成了两路码元。变成并行码元后,每个码元持续时间是输入码元两倍。用两路正交载波去调制并行码元。
图2.2.1选取法
QPSK调制中,QPSK信号可以当作是两个载波正交2PSK信号调制器构成。原理分析如下:基本原理和系统构造QPSK与二进制PSK同样,传播信号包括信息都存在于相位中。个别载波相位取四个等间隔值之一,如л/4、3л/4、5л/4、7л/4。相应,可将发射信号定义为:
其中,i=1,2,3,4;E是发射信号每个符号能量,T为符号持续时间,载波频率f等于nc/T,nc为固定整数。每一种也许相位值相应于一种特定二位组。下面简介QPSK信号产生和检测。如图为典型QPSK发射机框图。输入二进制数据序列一方面被不归零(NRZ)电平编码转换器转换为极性形式,即负号1和0分别用和-表达。该二进制波形被分接器提成两个分别由输入序列奇数位偶数位构成彼此独立二进制波形,这两个二进制波形分别用a1(t)和a2(t)表达。此时,在任何一信号时间间隔内a1(t),和a2(t)幅度正好分别等于Si1和 Si2,即由发送二位组决定。这两个二进制波形a1(t)和a2(t)被用来调制一对正交载波:,。这样就得到一对二进制PSK信号。和正交性使这两个信号可以被独立地检测。最后,将这两个二进制PSK信号相加,从而得盼望QPSK。
2.2.2 选取法
输入基带信号通过串并变换后用于控制一种相位选取电路,按照当时输入双比特ab,决定选取哪个相位载波输出。
图2.2.2选取法
2.3 QPSK调制原理框图
图2.3 调制原理框图
2.4 QPSK调制方式Matlab仿真
I 路信号是用余弦载波,由2进制数据流奇数序列构成;Q路信号用正弦载波,由2进制数据流偶数序列构成。下面a是Idata,b就是Qdata,它们分布与各自载波相乘分别输出 I 路信号和 Q 路信号。I 路信号加上Q路信号就是QPSK输出信号。当 I 路载波信号是0相位时为1,是180°相位时为0;当Q路载波信号是0相位时为1,是180°相位时为0。
2.4 matlab调制仿真图
2.5 QPSK调制方式Matlab-simulink仿真
2.5.1 simulink调制建模
图2.5.1调制框图
(1)产生需要信号源
在搭建QPSK调制解调系统中使用伯努力信号发生器产生随机01比特序列,每两比特代表就一种符号。Bernoulli Binary Generator模块运用伯努利分布原理,相应得到参数为p伯努利分布。伯努利分布均值1 - p和方差p(1 – p)。一种零概率参数指定p。本次实验中p设立为0.5,即0和1等概。采样时间可依照需要进行设立,例如测误码率时采样时间设为0.01s。
图2.5.2信号源参数设立
(2)串并变换
咱们先通过使用buffer 这个模块来实现将信号源信号转变为两路信号。Buffer 模块可以重新分派缓冲区块输入样本,用到了Demux,可以将一种复合输入转化为各种单一输出,即可以输出各种采样率较低帧信号。但会产生与缓冲区容量相似时延。因此,咱们可以设立buffer参数容量为2。
图2.5.3 Buffer参数设立
(3)单极性信号转化为双极性信号
由于QPSK调制信号规定是双极性信号,因此用伯努利随机生成二进制Generator模块产生信号必要通过转化才可以被使用。运用加法模块和常数产生模块将1和0序列各自减去1/2,再运用比例运算模块乘以2,就得到了1和-1 双极性序列。
(4)调制模块
分别将两路信号乘以相位相差 л/ 2载波,然后相加。载波由正弦信号发生器产生。正弦波模块参数设立为可基于时间模式,时间设为使用仿真时间,咱们设载波信号幅度为1,载波频率可依照需要来进行设立,两路载波同频正交,相位相差л / 2。咱们设上支路相位为0,下支路相位为 л/ 2。
图2.5.4上支路载波参数
图2.5.5下支路载波参数
2.5.2 simulink调制仿真成果
图2.5.6信号源和转变后双极性信号
图2.5.7上支路载波
图2.5.8 下支路载波
图2.5.9调制信号
第三章 QPSK解调
3.1 QPSK解调原理
QPSK接受机由一对共输入地有关器构成。这两个有关器分别提供本地产生地相干参照信号和。有关器接受信号x(t),有关器输出地x1和x2被用来与门限值0进行比较。如果x1>0,则判决同相信道地输出为符号1;如果x1<0 ,则判决同相信道输出为符号0。如果正交通道也是如此判决输出。最后同相信道和正交信道输出这两个二进制数据序列被复加器合并,重新得到原始二进制序列。在AWGN信道中,判决成果具备最小负号差错概率。用两路具备互相正交特性载波来解调信号,可以分离这两路正交2PSK信号。相干解调后,并行码元通过并/串变换后,最后得到串行数据流。
3.2 QPSK解调原理框图
图3.2相干解调原理框图
3.3 QPSK解调方式Matlab仿真
正交支路和同相支路分别设立两个有关器(或匹配滤波器) ,得到I(t)和Q(t) ,经电平判决和并/串变换后即可恢复原始信息。
I_demo=QPSK_rc_n0.*cos(2*pi*f1*t1); % 解调(相干解调,与载波相乘)
Q_demo=QPSK_rc_n0.*sin(2*pi*f1*t1);
I_recover=conv(I_demo,xrc); % 低通滤波
Q_recover=conv(Q_demo,xrc);
图3.3 matlab解调仿真图
3.4 QPSK解调方式Matlab-simulink仿真
3.4.1 QPSK解调建模
一方面将从高斯信道送过来信号分别乘以与调制时载波同频载波,且相位相差为 л/ 2载波。解调可以使用有关器或者匹配滤波器进行解调,本次实验使用是有关器,这时信号需要通过设立积分器。由于积分器设立为使用积分器时,需要在时间t=T 时使得积分器复位,因此需要设立积分模块续设立在时钟下降沿时复位。并需要设立参数为使用外部信号,此时,时钟设立为与该支路码元时间相似,即是发送信号码元时间两倍输入。然后积分后信号通过采样并保持模块,即sample and hold 模块,此时,设立这个模块为触发上升沿,同样使用时钟设立为与该支路码元时间相似,即是发送信号码元时间两倍输入。此时各路传播信号相应地会使一种单位时延产生。然后使用autothreshold 模块,该模块依照输入信号数据自动设立出阀值,由此,可对输入信号做出鉴定,再输出相应二进制比特序列,并可输出阀值。最后使用N-sample switch 模块来实现并串转换,由于咱们最后需要是最原始信号,将两路信号合二为一,在第一路信号发出一种样本时间后,样本时间设立为发送信号码元时间,开关会自动转换到第二路信号,此时换做第二路信号输入,一种码元时间后模块重置,如此循环。同样,此模块也需要两倍发送信号码元时间输入。
图3.4.1积分器设立
图3.4.2采样和保持设立
图3.4.3解调模块
3.4.2 传播信道
本次实验使用是高斯信道和抱负信道。实验所需高斯噪声咱们可以由高斯信道模块来提供,用到了Zero-Order Hold,和子模块,即SubSystem,通过子模块建立新封装(Mask)功能模块其中参数设立中信噪比为Es/No , Es/No为信号能量比噪声功率谱密度。AWGN信道模块可以将加性高斯白噪声加到一种实数或复数输入信号。当前输入信号是实数,这个模块增长了实数高斯噪声,产生一种实数输出信号。此块继承它输入信号采样时间。模块使用信号解决模块随机产生噪声。初始种子可以是一种标量或矢量长度相匹配输入信号通道数。种子详细资料初次,查看随机源模块库文献参照页面中设立信号解决。该端口数据类型都继承自该驱动器信号块。注意权力所有值假设一种1欧姆标称阻抗。
图3.4.3高斯信道模块
3.4.3 仿真成果
图3.4.4信号源和转变后双极性信号
图3.4.5通过高斯信道后调制信号
图3.4.6上支路积分和采样后信号
图3.4.7上支路判决后信号
图3.4.8下支路积分和采样后信号
图3.4.9下支路判决后信号
图3.4.10源信号流和通过调制解调后信号流对比
3.5 仿真成果分析
从上述图中可以看出,由于整个系统模块有引进噪声,以及电路使用了积分、采样保持模块,还原后信号幅度差别较大,通过判决门限后,得到本来二进制信号。咱们从仿真成果图中看出,信道噪声功率谱密度越大,信号信噪比越小,误码率越高,这也符合实际状况。仿真各种条件都是抱负化,除了噪声之外不会发生任何错误,和实际状况相比,在相似信噪比之下,比特错误率理应要小多,但是仿真所得成果误码率偏大。
第四章 QPSK通信系统性能分析
(1)从仿真成果中看出,信号信噪比越小,错误率越高,跟实际状况比较符合。
(2)由于仿真中各种条件都是抱负化,涉及数据在传播过程中,除了噪声影响以外不会发生任何错误,因此相对实际状况来说,在相似信噪比下,比特错误率要小多,但是仿真所得成果与事实规律并不违背。
总结:
第五章 结论
在搭建QPSK调制解调系统中一方面遇到问题就是串并转换问题,simulink中没有可以直接解决这个问题模块,通过网上搜索与查阅有关资料,最后选用buffer模块,完毕可串并转换功能,但是带人了两个单位延迟。
之后便是示波器显示问题,本次产生信号采样速率设立为1秒,载波频率1HZ,对仿真过程中波形分析带来诸多以便。
(3)在完毕QPSK系统simulink仿真中,由于以便起见,载波大小设为1HZ,与实际调制解调中所用载波相差甚远,但若将载波设立变大,会对实验仿真和分析带来极大不便。
参照文献
[1] 苗长云,沈保锁.当代通信原理及应用(第2版)[M].北京:电子工业出版社,.
[2] 樊昌信,曹丽娜.通信原理(第6版)[M].国防工业出版社,.1.
[3] 刘国华,李二喜.基于FPGAQPSK调制器设计与实现[J].电子设计工程,(9).
[4] 高博,杨燕,胡建军.基于MatlabQPSK系统设计仿真[J].科学技术与工程,(5)
[5] 谢斌,蔡虔,钟文涛.基于MATLAB/SIMULINKQPSK通信系统仿真[J].科技广场,(1).
附 录
(1)QPSK调制M文献程序
clear all
close all
% x1是类似[1 1 -1 -1 -1 -1 1 1]分布,作用是控制相位180°反转。
%由于仿真中载波频率是f=1Hz,因此1s间隔内有一种完整周期正弦波。
t=[-1:0.01:7-0.01]; % t共800个数据,-1~7s
t1=[0:0.01:8-0.01]; %t1也是800个数据点 ,0 ~8s
tt=length(t); % tt=800
x1=ones(1,800);
for i=1:tt
if (t(i)>=-1 & t(i)<=1) | (t(i)>=5& t(i)<=7);
x1(i)=1;
else x1(i)=-1;
end
end
t2 = 0:0.01:7-0.01; %t2是700个数据点,是QPSK_rc绘图下标
t3 = -1:0.01:7.1-0.01; %t3有810个数据点,是i_rc时间变量
t4 = 0:0.01:8.1-0.01; %t4有810个数据点,是q_rc时间变量
tt1=length(t1);
x2=ones(1,800); %x2是类似于[1 1 -1 -1 1 1 1 1]分布,作用是控制相位180°反转
for i=1:tt1
if (t1(i)>=0 & t1(i)<=2) | (t1(i)>=4& t1(i)<=8);
x2(i)=1;
else x2(i)=-1;
end
end
f=0:0.1:1;
xrc=0.5+0.5*cos(pi*f); %xrc是一种低通特性传播函数
y1=conv(x1,xrc)/5.5; %y1和x1 事实上没什么区别,仅仅是上升沿、下降沿有点过渡带
y2=conv(x2,xrc)/5.5; % y2和x2 事实上没什么区别,仅仅是上升沿、下降沿有点过渡带
n0=randn(size(t2));
f1=1;
i=x1.*cos(2*pi*f1*t); % x1就是I data
q=x2.*sin(2*pi*f1*t1); %x2就是Q data
I=i(101:800);
Q=q(1:700);
QPSK=sqrt(1/2).*I+sqrt(1/2).*Q;
QPSK_n=(sqrt(1/2).*I+sqrt(1/2).*Q)+n0;
n1=randn(size(t2));
i_rc=y1.*cos(2*pi*f1*t3);% y1就是I data,i_rc也许是贴近实际波形,i则是抱负波形
q_rc=y2.*sin(2*pi*f1*t4);%y2就是Q data,q_rc也许是贴近实际波形,q则是抱负波形
I_rc=i_rc(101:800);
Q_rc=q_rc(1:700);
QPSK_rc=(sqrt(1/2).*I_rc+sqrt(1/2).*Q_rc);
QPSK_rc_n1=QPSK_rc+n1;
figure(1)
subplot(3,1,1);plot(t3,i_rc);axis([-1 8 -1 1]);ylabel('a序列');
subplot(3,1,2);plot(t4,q_rc);axis([-1 8 -1 1]);ylabel('b序列');
subplot(3,1,3);plot(t2,QPSK_rc);axis([-1 8 -1 1]);ylabel('合成序列');
(2)QPSK解调M文献程序
clear all
close all
bit_in = randint(1e3,1,[0 1]);
bit_I = bit_in(1:2:1e3);%bit_I为”奇数序列”,奇数序列是同相分量,以cos为载波
bit_Q = bit_in(2:2:1e3);%bit_Q是bit_in所有偶数下标构成”偶数序列”,以sin为载波
data_I = -2*bit_I+1;% 将bit_I中1变成-1,0变成1;注意data_I是500点
data_Q = -2*bit_Q+1;%将bit_Q中1变成-1,0变成1
data_I1=repmat(data_I',20,1);%将500行列向量data_I共轭转置data_I’复制为20*500矩阵,20行数据是相似。
data_Q1=repmat(data_Q',20,1);
for i=1:1e4 %data_I2是将data_I1这个20*500矩阵拉长为1*10000行向量
data_I2(i)=data_I1(i);
data_Q2(i)=data_Q1(i);
end;
f=0:0.1:1;
xrc=0.5+0.5*cos(pi*f);
data_I2_rc=conv(data_I2,xrc)/5.5;% data_I2_rc就是Idata
data_Q2_rc=conv(data_Q2,xrc)/5.5;% data_Q2_rc就是Qdata
f1=1;
t1=0:0.1:1e3+0.9; % 10010个数据,长度和data_I2_rc以及data_Q2_rc相似
n0=rand(size(t1)); %n0是1*10010均匀分布噪声
I_rc=data_I2_rc.*cos(2*pi*f1*t1);
Q_rc=data_Q2_rc.*sin(2*pi*f1*t1);
QPSK_rc=(sqrt(1/2).*I_rc+sqrt(1/2).*Q_rc);
QPSK_rc_n0=QPSK_rc+n0;
I_demo=QPSK_rc_n0.*cos(2*pi*f1*t1); % 解调(相干解调,与载波相乘)
Q_demo=QPSK_rc_n0.*sin(2*pi*f1*t1);
I_recover=conv(I_demo,xrc); % 低通滤波
Q_recover=conv(Q_demo,xrc);
I=I_recover(11:10010);
Q=Q_recover(11:10010);
t2=0:0.05:1e3-0.05; %t2有0个点
t3=0:0.1:1e3-0.1; %t3有10000个点
data_recover=[]; % 抽样判决
for i=1:20:10000 %data_recover是待判决0点
data_recover=[data_recover I(i:1:i+19) Q(i:1:i+19)];
end;
bit_recover=[];
for i=1:20:0
if sum(data_recover(i:i+19))>0 %20点为同一种值,20点数据叠加后与阈值0比较
data_recover_a(i:i+19)=1;%data_recover_a是并/串转换后0点
bit_recover=[bit_recover 1];%bit_recover是1000点数据
else
data_recover_a(i:i+19)=-1;
bit_recover=[bit_recover -1];
end
end
error=0;
dd = -2*bit_in+1;% 将bit_in中1变成-1,0变成1
ddd=[dd']; %ddd是1表达0,-1表达1原始序列,1000个点
ddd1=repmat(ddd,20,1);%ddd1是20*1000矩阵
for i=1:2e4
ddd2(i)=ddd1(i);%将ddd1拉直为1*0行向量ddd2
end
for i=1:1e3
if bit_recover(i)~=ddd(i)
error=error+1;
end
end
p=error/1000;
figure(1)
subplot(4,1,1);plot(t2,ddd2);axis([0 100 -2 2]);title('原序列');
subplot(4,1,2);plot(t1,I_demo);axis([0 100 -2 2]);title('I 支路解调');
subplot(4,1,3);plot(t1,Q_demo);axis([0 100 -2 2]);title('Q 支路解调');
subplot(4,1,4);plot(t2,data_recover_a);axis([0 100 -2 2]);title('解调后序列');
展开阅读全文