8psk课程设计.docx
《8psk课程设计.docx》由会员分享,可在线阅读,更多相关《8psk课程设计.docx(16页珍藏版)》请在冰豆网上搜索。
![8psk课程设计.docx](https://file1.bdocx.com/fileroot1/2023-2/1/cab85304-ce7f-461e-8ec8-ddb78c7a104a/cab85304-ce7f-461e-8ec8-ddb78c7a104a1.gif)
8psk课程设计
西南科技大学
课程设计报告
课程名称:
通信系统课程设计
设计名称:
8PSK调制与解调系统仿真
姓名:
刘潇
学号:
20096125
班级:
通信0901
指导教师:
詹曦
起止日期:
2012.6.4-2012.6.19
西南科技大学信息工程学院制
课程设计任务书
学生班级:
通信0901学生姓名:
刘潇学号:
20096125
设计名称:
8PSK调制与解调系统仿真
起止日期:
2012.6.4-2012.6.19指导教师:
詹曦
设计要求:
基本要求:
(1)分析QPSK调制、解调原理,并画出其系统框图;
(2)产生等概率且相互独立的二进制序列,作为待传输的信号,并画出其波形;
(3)进行8PSK调制,分别画出I、Q两支路信号经过乘法器后的波形以及8PSK调制波形;
(4)产生均值为0,方差为1的加性高斯随机噪声,画出其时域波形及频谱;
(5)将加性高斯随机噪声作为传输信道的干扰,画出接收端信号的时域图;
(6)进行8PSK解调,输出解码序列,画出解调后信号波形;
(7)计算系统信噪比、传输误码率。
扩展要求:
进行蒙特卡罗分析,画出蒙特卡罗仿真图,即在不同的系统信噪比情况下的传输误码率曲线图。
说明:
使用MATLAB或其它编程软件编程实现。
课程设计学生日志
时间
设计内容
2012.6.4-2012.6.7
查阅资料,确定系统方案
2012.6.8-2012.6.9
设计总体方案
2012.6.10-2012.6.13
学习MATLAB方面相关知识并编写调试程序
2012.6.14-2012.6.15
验证实验结果
2012.6.16-2012.6.18
完成课程设计,撰写报告
2012.6.19
答辩
课程设计评语表
成绩:
指导教师:
年月日
8PSK调制与解调系统仿真
一、设计目的和意义
对8PSK行调制和解调,通过MATLAB编程,掌握MATLAB的使用,熟练掌握8PSK的调制原理,解调原理。
二、设计原理
1.QPSK调制
QPSK是MPSK调制中最常用的,又称4PSK,它可以看成由两个BPSK调制器构成。
输入的串行二进制信息序列经串并转换,分成两路速率减半的序列,电平发生器分别产生双极性二电平信号I(t)和Q(t),然后对coswct和sinwct进行调制,相加后即得到QPSK信号。
2.QPSK相干解调
QPSK相干解调如下图,正交路和同相路分别设置两个相关器(或匹配滤波器),得到I(t)和Q(t),经电平判决和并-串变换即可恢复原始信息。
3.8PSK调制
8PSK是另一种常用的多相键控,载波有(0,/4,/2,3/4,,5/4,3/2,7/4)八种不同的初相,可以在一个波形周期(0,TS)内发送3个二进制符号(000,001,010,011,100,101,110,111)。
频带利用率能达到6b/S/HZ。
由于8PSK信号幅度不是恒定的,因此,被调制信号将不再保持恒定幅度,它必须能够从任何起点到达任何相位位置。
这意味着8-PSK信号的幅度变化很大,这给RF放大器带来了较大压力,而且可能会导致进一步失真。
通过8PSK设计的增强功能,即3π/8旋转则能够降低较大的幅度变化。
所以,经过符号映射后的符号,应再按照F式进行3π/8弧度的符号旋转函数首先将产生的二进制序列送入,在串并变换处分成3个电平,b1,b2和b3,其中b1用于决定同相路信号的极性,当其为1时,同路信号的极性为1,当其为0时,同路信号的极性为-1。
b2用于确定正交路信号的极性,当其为1时,正交路信号的极性为1,当其为0时,正交路信号的极性为-1。
b3用于确定同相路和正交路的幅度,当8PSK信号幅度为1时,若b3为1时同相路的基带信号幅度应为0.924,而正交路幅度为0.383;若b3为0时,同相路信号幅度为0.383,而正交路信号幅度为0.924。
求出I和Q以后就分别与相位相反的载波叠加。
最后相加就得到了调制后的8PSK信号。
4.8PSK正交相干解调
8PSK信号与信道中的噪声叠加后输入解调器,首先将信号分解成四个独立的信号,然后分别与相位不同的载波相叠加,然后就是判决电路,当不对时,计数器加1。
判决出以后的信号就是b1,b2,b3最后将3个信号叠加起来就得到了输出信号。
蒙特卡罗分析就是分析信号信噪比的误码率和误比特率,然后对信号进行分析,与理论的误码率和误比特率进行对比。
三、详细设计步骤
1、MATLAB库中的高斯随机数发生函数randn是应用给出的最低标准随机数发生器以及极坐标法,将均匀分布的随机数映射成高斯分布的随机数。
2、产生二进制序列后当进行8PSK调制时伴随着高斯随机噪声,这时的信号便会有不同概率误差,我们就用蒙特卡罗来估计分析,存在的误差是怎么的,有多少,基于蒙特卡罗的思想原则和应用特征,结合通信中调制解调理论,利用蒙特卡罗思想在通信系统建模的应用,并给出仿真结果。
蒙特卡罗法的步骤是:
(1)构造实际问题的目标概率模型;
(2)根据目标概率模型的特点,确定概率密度函数和累积概率分布函数;(3)统计试验结果,给出问题的解和精度估计。
仿真平台为matlab7.0,验证蒙特卡罗方法的好坏主要是能否把仿真结果确切显示出来。
在计算信号误差函数时为了提高实验效果,在伪随机采样时就对概率密度函数和累积概率分布函数作好统计,这样得到的采样信号统计特征量,才能防止随着伪随机数数目增加而处理时间以指数级增加。
蒙特卡罗法的主要思路是:
一、针对所要求解或所要验证的问题建立一个简单且便于实现的概率统计模型;
二、对模型中的随机变量建立抽样方法,在计算机上进行随机模拟,抽取足够的随机数,并对有关的事件进行统计;
三、对模拟试验结果加以分析说明.
3、数字调相{或相移键控PSK)最简单的形式为,利用=进制数字信号对两个同频反相正弦渡进行控制不断切换合成调相渡,即BPSK。
8BPSK是一种常用的八相相移键控,有八种可能输出的相位,它不是恒幅度调制,不仅在相位中而且在幅度中亦包台信息,一个符号携带三个比特的信息8PSK的调制信号可以看成是对两个正交载波进行四电平双边带调制后所得的两路四进制幅度键控4ASK信号的叠加。
4、在传输信道中引入噪声,解调出的信号以眼图的形式输出,改变干扰信号的强度,录取不同干扰强度下的眼图,利用眼图来观察其噪声带来的误码率。
计算对应眼图的眼皮厚度与眼图开启度。
改变信噪比的大小,相应的给出眼皮厚度和眼图开启度的值及相应的受扰后的眼图。
结合眼皮厚度与眼图开启度两个参数,建立二者的比值(眼图厚度比)与干扰强度的对应关系。
通过大量的仿真数据获得拟合曲线。
四、设计结果及分析
图一
图二
图三
图四
图五
图六
图七
图八
五、体会
通过这次课程设计,我拓展了知识,锻炼了实践能力,我学会将学习的知识综合运用,解决问题。
在做设计的过程中难免总会出现各种问题,通过查阅资料,自学其中的相关知识,无形间提高了我们的动手,动脑能力,通过课程设计让我知道了,我们平时所学的知识如果不加以实践的话等于纸上谈兵。
课程设计主要是我们理论知识的延伸,它的目的主要是要在设计中发现问题,并且自己要能找到解决问题的方案,形成一种独立的意识。
我相信这次的课程设计中学到的东西将会对我今后的工作有很大的帮助。
六、参考文献
曹志刚,钱亚生.现代通信原理.清华大学出版社,1992
f=1*300%采样频率
g=(sign(rand(1,300)-0.5+eps)+1)/2%产生二进制序列
sn=randn(1,100*length(g));%产生高斯白噪声
dt=2*pi/299;
t=0:
dt:
2*pi;
si=[];co=[];%si为正交分量,co为同相分量
sit=[];sqt=[];%sit为同相分量幅度,sqt为正交分量幅度
sb2=[];%输入二进制序列
forn=1:
3:
length(g);%一次取3个二进制数
ifg(n)==0&&g(n+1)==0&&g(n+2)==0
%b1b2b3=000时正交分量和同相分量的幅值
it=-0.383*ones(1,300);
qt=-0.924*ones(1,300);
b2=[zeros(1,100)zeros(1,100)zeros(1,100)]
elseifg(n)==0&&g(n+1)==0&&g(n+2)==1%b1b2b3=001时
it=-0.924*ones(1,300);
qt=-0.383*ones(1,300);
b2=[zeros(1,100)zeros(1,100)ones(1,100)]
elseifg(n)==1&&g(n+1)==0&&g(n+2)==0
it=0.383*ones(1,300);
qt=-0.924*ones(1,300);
b2=[ones(1,100)zeros(1,100)zeros(1,100)]
elseifg(n)==1&&g(n+1)==0&&g(n+2)==1
it=0.924*ones(1,300);
qt=-0.383*ones(1,300);
b2=[ones(1,100)zeros(1,100)ones(1,100)]
elseifg(n)==0&&g(n+1)==1&&g(n+2)==0
it=-0.383*ones(1,300);
qt=0.924*ones(1,300);
b2=[zeros(1,100)ones(1,100)zeros(1,100)]
elseifg(n)==0&&g(n+1)==1&&g(n+2)==1
it=-0.924*ones(1,300);
qt=0.383*ones(1,300);
b2=[zeros(1,100)ones(1,100)ones(1,100)]
elseifg(n)==1&&g(n+1)==1&&g(n+2)==1
it=0.924*ones(1,300);
qt=0.383*ones(1,300);
b2=[ones(1,100)ones(1,100)ones(1,100)]
elseifg(n)==1&&g(n+1)==1&&g(n+2)==0
it=0.383*ones(1,300);
qt=0.924*ones(1,300);
b2=[ones(1,100)ones(1,100)zeros(1,100)]
end
sb2=[sb2b2];
c=cos(f*t);s=sin(f*t);
sit=[sitit];sqt=[sqtqt];
co=[coc];si=[sis];
end
figure
(1);
plot(sit);%I路
title('I');
figure
(2);
plot(sqt);%Q路
title('Q');
psk=sit.*co+sqt.*si;%调制后的8psk信号
%%%%%%%%%%%%%%%%%%%%%%%%%%
figure(3);
subplot(311);
stem(sn)%输出噪声的时域图
title('高斯随机噪声')
zaosheng=fft(sn);
abs(zaosheng);
subplot(312);%画出噪声的频谱图
abs(zaosheng)
plot(abs(zaosheng));
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
figure(4);
subplot(211);plot(sb2,'LineWidth',1.5);
gridon;title('二进制序列(信源)');
axis([03000-1.51.5]);
set(gca,'Xtick',[300,600,900,1200]);
xlabel('(a)t/(ts/300)');
subplot(212);plot(psk,'LineWidth',1.5);
gridon;title('8PSK');axis([03000-1.51.5]);
xlabel('(b)t/(Ts/300)');
rpsk=psk+sn;%加入加性高斯白噪声
rs=[];%rs用来存放解调后的二进制序列
form=1:
300:
100*length(g)-300;
rpsk1=rpsk(m:
m+299);%取一个码元
sit=rpsk1.*cos(f*t);
it=cumtrapz(sit)*dt;
it=it(end);%相关后得的I路电平
ifit>0%对得到的电平进行判决
rs=[rsones(1,100)];
elseifit<0
rs=[rszeros(1,100)];
end
sqt=rpsk1.*sin(f*t);
qt=cumtrapz(sqt)*dt;
qt=qt(end);%相关后得的Q路电平
ifqt>0%对得到的电平进行判决
rs=[rsones(1,100)];
elseifqt<0
rs=[rszeros(1,100)];
end
sb3=rpsk1.*cos(f*t-pi/4);
b3=cumtrapz(sb3)*dt;
b3=b3(end);
sb4=rpsk1.*sin(f*t-pi/4);
b4=cumtrapz(sb4)*dt;
b4=b4(end);
b5=abs(b3+b4);%得到b3的电平并判决
ifb5<2
rs=[rsones(1,100)];
elseifb5>2
rs=[rszeros(1,100)];
end
end
figure(5);%rpsk为接收到的8PSK信号
plot(rpsk);%画出加入噪声后的psk图
title('接收端信号的时域图');
figure(6);
plot(rs,'LineWidth',1.5);gridon;
title('解调输出');axis([03000-1.51.5]);
set(gca,'Xtick',[300,600,900,1200]);
xlabel('t/(ts/300)');
%绘眼图
figure(7);
tt=0:
2*300-1;%显示2个码元周期内的眼图
fork=3:
40
eyepsk=rpsk(k*300+1:
(k+2)*300);%rpsk为接收到的8PSK信号
drawnow
plot(tt,eyepsk);holdon;
end
title('眼图');
%蒙特卡罗分析
EsNodb=3:
0.5:
10;%设置信噪比范围
Es=1;
No=10.^(-EsNodb/10);
sigma=sqrt(No/2);%噪声功率,其值随信噪比而变
error=zeros(1,length(EsNodb));%错误计数
sdata=zeros(1,length(EsNodb));%进行比较判决抽样值的总的计数
fori=1:
length(EsNodb)
error(i)=0;
sdata(i)=0;
whileerror(i)<1000%误码数<1000
d=ceil(rand(1,10000)*8);%产生信源10000个
s=sqrt(Es)*exp(j*2*pi/8*(d-1));%复基带形式
r=s+sigma(i)*(randn(1,length(d))+j*randn(1,length(d)));
form=1:
8
rd(m,:
)=abs(r-sqrt(Es)*exp(j*2*pi/8*(m-1)));
%rd有m行,每行对应r与m的差值,8*10000的二维数组
end
form=1:
length(s)
dd(m)=find(rd(:
m)==min(rd(:
m)));
%找到rd的m列中最小的值的行序号(与之相对的判决电平值),
%dd(m)即为接收到的m值,find()函数返回的是行号
ifdd(m)~=d(m)%与发送的m相比,进行误码计数
error(i)=error(i)+1;
end
end
sdata(i)=sdata(i)+10000;
end
end
pe=error./sdata;%仿真得的误码率
ps=erfc(sqrt(EsNodb)*sin(pi/8));%理论误码率
figure(8);
semilogy(EsNodb,pe,'b*:
');holdon;
semilogy(EsNodb,ps,'r-');
xlabel('Es/No(db)');ylabel('误码率');
legend('仿真结果','理论计算结果');