QPSK调制解调课设完整版.docx

上传人:b****5 文档编号:3085156 上传时间:2022-11-17 格式:DOCX 页数:17 大小:176.28KB
下载 相关 举报
QPSK调制解调课设完整版.docx_第1页
第1页 / 共17页
QPSK调制解调课设完整版.docx_第2页
第2页 / 共17页
QPSK调制解调课设完整版.docx_第3页
第3页 / 共17页
QPSK调制解调课设完整版.docx_第4页
第4页 / 共17页
QPSK调制解调课设完整版.docx_第5页
第5页 / 共17页
点击查看更多>>
下载资源
资源描述

QPSK调制解调课设完整版.docx

《QPSK调制解调课设完整版.docx》由会员分享,可在线阅读,更多相关《QPSK调制解调课设完整版.docx(17页珍藏版)》请在冰豆网上搜索。

QPSK调制解调课设完整版.docx

QPSK调制解调课设完整版

2012专业综合课程设计

 

————————————通信专业

 

姓名:

***

班级:

0902402

学号:

090240212

 

 

题目:

利用matlab设计并仿真数字通信系统

一、题目要求

利用matlab软件设计并仿真下面的无线通信系统

要求:

1、输入信号为比特流形式,比特速率通常为100kbps数量级。

2、载波频率自定。

通常为MHz数量级。

3、信道为多径信道(仿真中2径即可),信道中噪声为加性高斯白噪声。

4、信噪比自行设定。

5、画出图中各点波形。

6、画出系统误码率与接收端信噪比SNR的关系(蒙特卡洛仿真)。

7、在给定信噪比情况下,分析多径延时大小对系统性能有没有影响?

画出系统误码率与多径延时大小之间的关系。

2、设计过程

1)概念理解:

QPSK即四进制移向键控(QuaternaryPhaseShiftKeying),它利用载波的四种不同相位来表示数字信息,由于每一种载波相位代表两个比特信息,因此每个四进制码元可以用两个二进制码元的组合来表示。

两个二进制码元中的前一个码元用a表示,后一个码元用b表示。

2)调制:

QPSK信号可以看作两个载波正交2PSK信号的合成,下图表示QPSK正交调制器。

 

原理分析:

由randint函数产生一个1x20的二进制随机矩阵,作为基带信号data;然后转换成极性码(极性NRZ电平编码器);然后按奇偶次序抽出随机数后组成1x10的矩阵(分离器);将这两个矩阵中码元宽度增大为原来的2倍(采用增加点数);如图在a路Idata与余弦载波相乘,b路同理;最后代数相加,此时便产生QPSK调制信号作为输出。

3)解调:

解调原理图如下所示。

1(t)同相信道门限=0

2(t)正交信道门限=0

原理分析:

同相支路和正交支路分别采用相干解调方式解调,得到

,经过低通滤波器(LPF)抽样判决和并/串交换器,将上下支路得到的并行数据恢复成串行数据demodata(1x20),此过程在复接器实现,此时便得到QPSK解调信号(应该和基带信号一样)。

4)高斯信道:

应题目要求,通过无线信道传输的调制信号会加入高斯噪声,使用awgn(si,SNR)函数来实现;实现多径信道,将延时后的信号s1加到未延时信号s0合并作为输出信号即可。

5)带通滤波器(BPF):

使用butter(N,[wp1,wp2],‘’)和filter函数实现,其中的参数通过计算公式可知

Wp1=2*delta_t*(fc-f);

Wp2=2*delta_t*(fc+f);

三、仿真结果及分析

图一

随机产生一个1x20的二进制随机矩阵data,图中基带每个码元由抽样间隔delta_t间隔的离散点构成,总共2000个点(即每个码元由100个点构成),I/Q路信号的码元应该为原来的2倍,所以每个码元由200个点构成,这样长度才能和原序列等长。

实现的部分代码如下:

data=randint(1,nb);

%调用一个随机函数(0or1),输出到一个1*100的矩阵

datanrz=data.*2-1;%变成极性码

data1=zeros(1,2000);%创建一个1*nb/delta_T的零矩阵

%将基带信号变换成对应波形信号

data0=zeros(1,2000);%创建一个1*nb/delta_T的零矩阵

forq=1:

nb

data0((q-1)*100+1:

q*100)=data(q);%将非极性码变成对应的波形信号

end

%串并转换,将奇偶位数据分开

idata=datanrz(1:

ml:

(nb-1));%将奇偶位分开,因此间隔m1为2

idata0=zeros(1,2000);%创建一个1*nb/delta_T的零矩阵

forq=1:

nb/2

idata0(2*(q-1)*100+1:

2*q*100)=idata(q);%将其码元宽度扩展成为原来码元的2倍

end

qdata=datanrz(2:

ml:

nb);

qdata0=zeros(1,2000);

forq=1:

nb/2

qdata0(2*(q-1)*100+1:

2*q*100)=qdata(q);

end

图二:

部分代码如下:

%%%%%%%%QPSK信号的调制%%%%%%%%%%%%

forii=1:

N

a(ii)=cos(2*pi*fc*t(ii));

end

idata1=idata0.*a;%奇数位数据与余弦函数相乘,得到一路的调制信号

forjj=1:

N

b(jj)=-sin(2*pi*fc*t(jj));

end

qdata1=qdata0.*b;%偶数位数据与余弦函数相乘,得到另一路的调制信号

s0=idata1+qdata1;%将奇偶位数据合并,s即为QPSK调制信号

%%%%%%%延迟信号%%%%%%%%

delay=0.0019;

forii0=1:

N

a_dl(ii0)=cos(2*pi*fc*t(ii0)+delay);

end

idata1_dl=idata0.*a_dl;%奇数位数据与余弦函数相乘,得到一路的调制信号

forjj0=1:

N

b_dl(jj0)=-sin(2*pi*fc*t(jj0)+delay);

end

qdata1_dl=qdata0.*b_dl;%偶数位数据与余弦函数相乘,得到另一路的调制信号

s1=idata1_dl+qdata1_dl;%将奇偶位数据合并,s即为QPSK调制信号

%%%%%%%%%%%%%%%%%%%%%%%%%%

%高斯信道

si=s0+s1;

图三:

通过带通滤波器(PLF)后,上下的毛刺(即高斯噪声)得到了很好的滤除,但是和图二中的调制信号相比,有点儿失真。

部分代码如下:

%高斯信道

si=s0+s1;

sk=awgn(si,SNR);%通过高斯信道之后的信号

%%%%%%%%%%%%%%%%%%%%%%%%%%

%butter数字带通滤波器

[B,A]=butter(4,[0.08,0.12],'bandpass');

sr=filter(B,A,sk);

图四:

在通过同相支路和正交支路分别采用相干解调方式解调后,得到

,其中包络为低频,在经过低通滤波器后(LPF)后,能很好的滤除高频部分(载波),得到低频部分,和图一的I/Q路信号对比,基本不失真;然后进行抽样判决和并/串交换器,将上下支路得到的并行数据恢复成串行数据demodata(1x20),此时便得到QPSK解调信号,基本保持不失真。

部分代码如下:

%%%%%%%%%%%解调部分

idata_lpf=sr.*a;%这里面其实隐藏了一个串并转换的过程

qdata_lpf=sr.*b;%对应的信号与正余弦信号相乘

%%%%%%低通滤波器%%%%%%%%%

[W,M]=butter(4,0.03365,'low');

idata2=filter(W,M,idata_lpf);

qdata2=filter(W,M,qdata_lpf);

idata3=zeros(1,nb/2);%建立1*nb/2数组,以存放解调之后的信号

qdata3=zeros(1,nb/2);

%抽样判决的过程,与0作比较,data>=0,则置1,否则置0

forn=1:

nb/2

ifsum(idata2((n-1)*200+1:

n*200))>=0

idata3(n)=1;

elseidata3(n)=0;

end

ifsum(qdata2((n-1)*200+1:

n*200))>=0

qdata3(n)=1;

elseqdata3(n)=0;

end

end

%将判决之后的数据存放进数组

demodata=zeros(1,nb);%解调信号

demodata(1:

ml:

(nb-1))=idata3;%存放奇数位

demodata(2:

ml:

nb)=qdata3;%存放偶数位

%为了显示,将它变成波形信号(即传输一个1代表单位宽度的高电平)

demodata1=zeros(1,2000);%创建一个1*nb/delta_T的零矩阵

forq=1:

nb

demodata1((q-1)*100+1:

q*100)=demodata(q);%将极性码变成对应的波形信号

end

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

图五:

系统误码率与接收端信噪比SNR的关系(蒙特卡洛仿真)。

本实验将SNR=0:

6设为大循环,里面包含一个for循环(10000次);每当循环10000次,统计误码数p(h),计算出误码率perror;随着信噪比的增大,误码率呈现下降趋势,在SNR=5,6时,基本误码率为0。

部分代码如下:

forSNR=0:

6%信噪比

forf=1:

500

......

......

end

%误码率计算

forv=1:

length(data);

ifdata(v)~=demodata(v);

p(h)=p(h)+1;

end

end

end

perror(y)=p(h)/10000;

y=y+1;

h=h+1;

End

figure(8)

SNR=0:

6;

plot(SNR,perror);title('误码率和信噪比的关系');

axis([0600.008]);

图六:

误码率和延时的关系:

在一个周期内,可以看出0~0.2.......1.2~1.4之间呈现上升趋势,这是因为误码率随着延时在一定范围的增大而增大,而在整个0~2内,具有周期性变化,周期为1/fc。

部分代码如下:

clc;

y=1;

h=1;

dd=1;

SNR=3.6;%此处涉信噪比为3.6

MINtime=0;

MAXtime=50*1e-7;

delay_t=1e-7;

p=zeros(1,50);

perror=zeros(1,50);

fordelay=MINtime:

delay_t:

MAXtime-delay_t

for

........

..........

End%在SNR=3.6,每取定一个delay,就得出一个误码率

End

figure(9)

delay=MINtime:

delay_t:

MAXtime-delay_t;

stem(delay,perror);title('PERROR&&DELAY');

axis([MINtimeMAXtime00.01]);

四、实验小结

1)设计缺点:

用了for循环的方式一增加点数实现对I/Q路信号的码元宽度进行拓宽,可以参考ceil函数;低通滤波器的截止频率并没有设置为2*delta_t*f,因为这样误码率非常大,所以设置了一个比其稍大的参数;最后的误码率和延时的关系图由于取点(n=20)较少,所以并没有很好的反映出他们的关系。

2)设计优点:

程序进一步优化后,再取大量点时运行速度较为理想;误码率实现了10*(-4)级的理想化;判决时通过使用sum(..)

与0的比较来更为准确的做出判决,减小了误码率,若采用中点取点(如:

0~200,在100处来判决),这样偶然误差较大,从而译码器准度不高。

3)学到

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 法律文书 > 判决书

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1