《移动通信原理与应用》实验报告概述.docx
- 文档编号:4865351
- 上传时间:2022-12-11
- 格式:DOCX
- 页数:22
- 大小:241.07KB
《移动通信原理与应用》实验报告概述.docx
《《移动通信原理与应用》实验报告概述.docx》由会员分享,可在线阅读,更多相关《《移动通信原理与应用》实验报告概述.docx(22页珍藏版)》请在冰豆网上搜索。
《移动通信原理与应用》实验报告概述
重庆交通大学信息科学与工程学院
综合性设计性实验报告
专业:
通信工程专业12级
学号:
631206040218
姓名:
柴闯闯
实验所属课程:
移动通信原理与应用
实验室(中心):
信息技术软件实验室
指导教师:
谭晋
2014年11月
教师评阅意见:
签名:
年月日
实验成绩:
一、题目
扩频通信系统仿真实验
二、仿真要求
①传输的数据随机产生,要求采用频带传输(DPSK调制);
②扩频码要求采用周期为63(或127)的m序列;
③仿真从基站发送数据到三个不同的用户,各不同用户分别进行数据接收;
④设计三种不同的功率延迟分布,从基站到达三个不同的用户分别经过多径衰落(路径数分别为2,3,4);
⑤三个用户接收端分别解出各自的数据并与发送前的数据进行差错比较。
三、仿真方案详细设计
(1)通信系统的总体框图如下:
由上图可以看出,整个设计由发送端、信道和接收机三个部分组成。
①发射机原理
发送端首先产生三组用户数据和三组不同的m序列,并用三组m序列分别对用户信息进行扩频。
再将扩频信号与载波进行DPSK调制,得到高频的已调调信号并将其送入无线的多径信道。
②无线信道
信道模拟成无线的多径多用户信道,在这个信道中有三个用户进行数据传输,每个用户的数据分别通过三径传输到达接收端。
三径会有不同的延时,衰减。
最终,还要将三径用户数据增加高斯白噪声。
③接收机原理
接收端会接收到有燥的三径信息的叠加。
首先,要对接收到的三径信息进行解扩,分离出三组用户信息;其次,在将解扩后的信息进行带通滤波去除带外噪声;最后,分别对三组用户信息进行解调得到原始数据,在对接收到的数据进行误码率统计,得出系统的性能指标。
(2)功能模块的详细设计
①扩频码(m序列)的产生
扩频码为伪随机码,可以m序列、Golden序列。
本设计采用自相关特性好,互相关特性较差的m序列,为了节省运算量,我选取了周期为63扩频序列,经过计算易知要产生周期为63的m序列需要长度为6的反馈系数,经过查找资料得出三组反馈系数(八进制)45、67、75,其对应的二进制为1000011、1100111、1101101。
并将二进制与移位寄存器级数对应,以1000011为例,设初始化各寄存器单元内容为1,其具体的寄存器结构图如下所示:
产生m序列的matlab程序如下:
%m序列的产生,s为初始状态,抽头系数为(1000011)2
functionPN=mseq(s)
N=length(s);
c=[];
D=s;
fori=1:
2^N-1
c1=rem(D(N)+D(N-1),2);
c=[c,D(N)];
D=[c1,D(1:
N-1)];
end
c=c*2-1;%变为1,-1的序列
PN=c;
end
②扩频
扩频的主要思想是每一位数据位都扩展成长度为m序列长的信息,其具体做法是将数据信息中的‘1’用m序列代替,而对于‘-1’用-m序列代替,这样对每一个数据位都进行扩展就实现了对原始数据的扩频。
其结构框图如下:
扩频仿真代码如下:
%扩频
functionexpandsignal=expand(signal,PN)
expand=[];
fori=1:
length(signal)
ifsignal(i)==1
expand=[expand,PN];
else
expand=[expand,-1*PN];
end
end
expandsignal=expand;%扩频后的序列
end
③多径信道的仿真
对多径信道的仿真主要通过对不同用户产生的数据经三径进行传输,每一径信号又有三个用户数据叠加而成,并且每一径信号具有不同的延迟和衰减。
最后在信道的另一端三径信号进行叠加并对其加燥。
多径信道仿真代码如下:
functionmultiS=channels(modusignal,k)
a=length(modusignal);
signal1=[0,modusignal];
signal2=[0,0,modusignal];
signal3=[0,0,0,modusignal];
r1=0.01*abs(randn(1,a)+j*randn(1,a));
r2=0.1*abs(randn(1,a+1)+j*randn(1,a+1));
r3=0.2*abs(randn(1,a+2)+j*randn(1,a+2));
r4=0.5*abs(randn(1,a+3)+j*randn(1,a+3));
ifk==2
r=[modusignal.*r1,0,0,0]+[signal1.*r2,0,0];
end
ifk==3
r=[modusignal.*r1,0,0,0]+[signal1.*r2,0,0]+[signal2.*r3,0];
end
ifk==4
r=[modusignal.*r1,0,0,0]+[signal1.*r2,0,0]+[signal2.*r3,0]+[signal3.*r4];
end
multiS=r;
end
④解扩
在扩频码与接收信号同步的情况下, 可对接收信号进行解扩, 其解扩的过程与扩频的过程一样, 也是利用扩频码与接收信号进行相乘即可。
其原理图如下:
解扩代码如下:
functiondeexpandsignal=deexpand(signal,k)
expandsignal1=expand(round(rand(1,10)),mseq([1,0,0,1,1,0]));
expandsignal2=expand(round(rand(1,10)),mseq([1,1,0,1,1,0]));
expandsignal3=expand(round(rand(1,10)),mseq([1,0,0,1,1,1]));
ifk==2
fori=1:
length(expandsignal1)
deexpPN1((i-1)*100+1:
i*100)=expandsignal1(i);
end
fori=1:
length(signal)-3
deexpsignal1(i)=signal(i).*deexpPN1(i);
end
deexpandsignal=deexpsignal1;
end
ifk==3
fori=1:
length(expandsignal1)
deexpPN2((i-1)*100+1:
i*100)=expandsignal2(i);
end
fori=1:
length(signal)-3
deexpsignal2(i)=signal(i).*deexpPN2(i);
end
deexpandsignal=deexpsignal2;
end
ifk==4
fori=1:
length(expandsignal1)
deexpPN3((i-1)*100+1:
i*100)=expandsignal3(i);
end
fori=1:
length(signal)-3
deexpsignal3(i)=signal(i).*deexpPN3(i);
end
deexpandsignal=deexpsignal3;
end
End
⑤调制与解调
为了使低频信号能够在高频中传输,并且增强系统的抗噪声性能,我们必须采用一定的调制解调技术,这里我采用DPSK对扩频信号进行调试,并在接收端对解扩信号进行DPSK解调以恢复出原有信号。
DPSK是利用前后相邻码元的载波相对相位变化传递数字信息。
DPSK的主要思路利用前后相邻码元的载波相对相位变化进行调制,以将低频的信号调制到较高频率,在接收端再将调制信号乘以载波做相干解调,便得到倍频信号和原信号的叠加,再低通滤波器将倍频信号滤掉就能得到原始信号。
I、调制框图如下:
调制仿真代码如下:
%差分编码
functionY=difference(X)
a=length(X);
fori=1:
a
ifX(i)==-1
X(i)=0;
end
end
Y=zeros(1,a);
b=0.01:
0.01:
a;
for(i=1:
a)
is((i-1)*100+1:
i*100)=X(i);
end
if(X
(1)==1)
Y
(1)=1;
elseY
(1)=0;
end
fori=2:
a
Y(i)=rem(Y(i-1)+X(i),2);
end
Y;
t=0.01:
0.01:
a;
for(i=1:
a)
st((i-1)*100+1:
i*100)=Y(i);
End
%DPSK调制
functionz=dpsk(X)
fs=2000;
w=2;%调制频率
n=length(X);
t=1:
100;
nn=1:
100;
n1=0.01:
0.01:
n;
for(i=1:
n)
is((i-1)*100+1:
i*100)=X(i);
st((i-1)*100+1:
i*100)=0;
end
for(nn=1:
100)
oss(nn)=sin(2*pi*w*(t(nn)/100));
osc(nn)=sin(2*pi*w*(t(nn)/100)+pi);
end
for(i=1:
n)
if(X(i)==1)
for(nn=1:
100)
st(100*(i-1)+nn)=oss(nn);
end
else
for(nn=1:
100)
st(100*(i-1)+nn)=osc(nn);
end
end
end
z=st;
II、解调框图如下:
解调仿真代码如下:
functiony=dpskdemod(X)
fs=200;
w=2;
n=length(X)/100;
tt=0.01:
0.01:
n;
dt=X.*sin(2*pi*w*tt);
%低通滤波器
[N,Wn]=buttord(2*pi*25,2*pi*50,3,25,'s');%临界频率采用角频率表示
[b,a]=butter(N,Wn,'s');
[bz,az]=impinvar(b,a,fs);%映射为数字的
dt=filter(bz,az,dt);
%抽样判决逆码变换部分
dt1=0;
dt2=0;
for(i=1:
n)
for(j=1:
100)
dt1=dt1+dt(100*(i-1)+j);
end
dt2=dt1/100;
if(dt2>0.05)
dtt(100*(i-1)+1:
100*i)=1;
dt2=0;
dt1=0;
elsedtt(100*(i-1)+1:
100*i)=0;
dt2=0;
dt1=0;
end
end
fori=1:
n
y(i)=dtt((i-1)*100+50);
end
四、仿真结果及结论
第一组用户数据:
第二组用户数据:
第三组用户数据:
信道中三径数据的叠加:
仿真说明及结论:
为了观察到较好的图示效果,仿真时只产生了10个数据,并对一些波形图进行了部分区间的显示。
由上图可知接收端数据与发送端数据基本一致,但仍存在一些误码如:
用户1接收端的数据在第一个比特和第二个比特之间有一个负脉冲,这是误码的存在引起的。
由于时间原因,在系统中没有对误码进行统计,总体而言基本上实现了要求。
五、总结与体会
本次实验是集扩频通信、DPSK调制与解调、多径衰落于一体的综合性实验。
在实验过程中遇到很多困难,如滤波延时引起经过滤波器之后的信号在滤波系数长度的2倍加1段的幅值接近为0,多径衰落引起信号的延时,DPSK在解调之后还需要与m序列相乘才能恢复出原始数据等等,后来经过认真思考和上网查阅相关资料等途径终于解决了这些问题。
通过本次实验设计,让我对以前学习过的MATLAB软件编程系统地复习了一遍,重新温习了对于用rand来产生随机序列的编写方法及过程,还有其中的如DPSK调制函数、高斯白噪声函数、滤波器的设计等等的用法。
在系统的巩固了MATLAB知识的基础上,也让我学习了扩频码的产生原理及扩频码的要求(自相关性高、互相关性低)、多径延迟信道的特性。
这次实验有以下几点收获:
(1)实验的核心部分是接收机部分,接收部分主要是对已调的信号进行解扩和解调,解扩要注意的就是需要一个与接收端完全一样的同步PN序列,把已调信号解扩出来,解扩信号再经过DPSK解调,得到的信号波形应与发端信号相同,说明完全恢复了所发送数据波形。
(2)扩频是用来传输信号的带宽远远大于信息本身带宽的一种传输方式,频带的扩展由独立于信息的扩频码(PN码)实现,与所传数据无关,在接收端用同步接收实现解扩和数据恢复。
扩频通信的理论基础为香农定理:
。
由香农定理可得出重要结论:
对于给定的信息传输速率,可以用不同的带宽和信噪比的组合来传输。
扩频通信系统就是利用香农定理将信道带宽扩展许多倍以换取低信噪比,增强了系统的抗干扰能力。
直接序列扩频(DS),是直接利用具有高码率的扩频码序列在发送端扩展信号的频谱,而在接收端,用相同的扩频码序列进行解扩,把展宽的扩频信号还原成原始的信息,是一种数字调制方法。
(3)本次实验基本完成了实验的预期效果,达到了实验的要求,使我对M序列的生成、直接序列扩频、信道的多径多用户数据叠加、解扩过程有了更加升入的理解和更熟练的应用,对以后的学习和使用有很大的帮助。
(4)本次实验让我明白对于一个综合性实验而言,首先要学会查找资料,把实验涉及到的基本原理搞懂,然后要把要写程序的基本思路弄清,把整个程序分成几个小模块,再逐个模块去解决,最后才是写程序和调试程序。
(5)本次实验,让我对无线通信原理理论和MATLAB软件有了更深的了解,对其中很多函数的使用有了更深一步的掌握,加强了自己动手能力和学习技能的提升。
六、主要仿真代码
主要程序代码如下:
functionPN=mseq(s)%m序列子函数
functionexpandsignal=expand(signal,PN)%扩频子函数
functionY=difference(X)%差分编码子函数
functionz=dpsk(X)%DPSK调制子函数
functionmultiS=channels(modusignal,k)%无线信道子函数
functiondeexpandsignal=deexpand(signal,k)%解扩子函数
functiony=dpskdemod(X)%解调子函数
functiony=dpskdemod(X)%解差分子函数
functiony=f(signal,PN)%原始信号恢复子函数
%主函数
user1=round(rand(1,10));%生成用户1的0,1随机数据
user2=round(rand(1,10));%生成用户2的0,1随机数据
user3=round(rand(1,10));%生成用户3的0,1随机数据
x=1/100:
1/100:
10;
fori=1:
length(x)
yuser1(i)=user1(ceil(x(i)));
yuser2(i)=user2(ceil(x(i)));
yuser3(i)=user3(ceil(x(i)));
end
t1=[1,0,0,1,1,0];%用户1的m序列的初始状态
t2=[1,1,0,1,1,0];%用户2的m序列的初始状态
t3=[1,0,0,1,1,1];%用户3的m序列的初始状态
PN1=mseq(t1);%生成用户1的m序列
PN2=mseq(t2);%生成用户2的m序列
PN3=mseq(t3);%生成用户3的m序列
expandsignal1=expand(user1,PN1);%生成用户1的扩频序列
expandsignal2=expand(user2,PN2);%生成用户2的扩频序列
expandsignal3=expand(user3,PN3);%生成用户3的扩频序列
yy=difference(expandsignal1);
y1=dpsk(difference(expandsignal1));%用户1扩频调制后的信号
y2=dpsk(difference(expandsignal2));%用户2扩频调制后的信号
y3=dpsk(difference(expandsignal3));%用户3扩频调制后的信号
ys1=channels(y1,2);%用户1经过多径衰落后的信号
ys2=channels(y2,3);%用户2经过多径衰落后的信
ys3=channels(y3,4);%用户3经过多径衰落后的信号
yn=ys1+ys2+ys3;
yt1=deexpand(ys1,2);%用户1解扩后的信号
yt2=deexpand(ys2,3);%用户2解扩后的信号
yt3=deexpand(ys3,4);%用户3解扩后的信号
yd1=dpskdemod(yt1);%用户1解调后的信号
yd2=dpskdemod(yt2);%用户2解调后的信号
yd3=dpskdemod(yt3);%用户3解调后的信号
yi1=indifference(yd1);%用户1解差分
yi2=indifference(yd2);%用户2解差分
yi3=indifference(yd3);%用户3解差分
yr1=f(yi1,PN1);%用户1数据恢复
yr2=f(yi2,PN2);%用户2数据恢复
yr3=f(yi3,PN3);%用户3数据恢复
%%%%%%%%%%%%%%%用户1部分%%%%%%%%%%%%%%%
figure
subplot(3,2,1)
plot(x,yuser1);
title('用户1的发送数据');
axis([010-0.21.2]);
grid
subplot(3,2,2)
plot(1/63:
1/63:
10,yr1);
axis([0,10,-0.1,1.1]);
title('接收到用户1数据');
grid
subplot(3,2,3)
plot(expandsignal1);
title('用户1扩频后的时域信号');
axis([0630-1.21.2]);
subplot(3,2,4)
plot(0.01:
0.01:
length(yy),yt1);
title('用户1解扩后的时域信号');
axis([020-0.30.3]);
subplot(3,2,5)
plot(0.01:
0.01:
length(yy),y1);
title('用户1DPSK调制后的时域信号');
axis([020-1.21.2]);
subplot(3,2,6)
plot(yi1);
title('用户1DPSK解调后的时域信号');
axis([06300.21.2]);
figure
subplot(2,2,1)
plot((0:
length(expandsignal1)-1)*100/length(expandsignal1)-100/2,abs(fftshift(fft(expandsignal1))));
title('用户1扩频后的频谱图');
subplot(2,2,2)
plot((0:
length(yt1)-1)*100/length(yt1)-100/2,abs(fftshift(fft(yt1))));
title('用户1解扩后的频谱图');
axis([-15150400]);
subplot(2,2,3)
plot((0:
length(y1)-1)*100/length(y1)-100/2,abs(fftshift(fft(y1))));
title('用户1调制后的频谱图');
axis([-202003000]);
subplot(2,2,4)
plot((0:
length(yi1)-1)*100/length(yi1)-100/2,abs(fftshift(fft(yi1))));
title('用户1解调后的频谱图');
axis([-20200400]);
%%%%%%%%%%%%%%%用户2部分%%%%%%%%%%%%%%%
figure
subplot(3,2,1)
plot(x,yuser2);
title('用户2的发送数据');
axis([010-0.21.2]);
grid
subplot(3,2,2)
plot(1/63:
1/63:
10,yr2);
axis([0,10,-0.1,1.1]);
title('接收到用户2数据');
grid
subplot(3,2,3)
plot(expandsignal2);
title('用户2扩频后的时域信号');
axis([0630-1.21.2]);
subplot(3,2,4)
plot(0.01:
0.01:
length(yy),yt2);
title('用户2解扩后的时域信号');
axis([020-0.80.8]);
subplot(3,2,5)
plot(0.01:
0.01:
length(yy),y2);
title('用户2DPSK调制后的时域信号');
axis([020-1.21.2]);
subplot(3,2,6)
plot(yi2);
title('用户2DPSK解调后的时域信号');
axis([06300.21.2]);
figure
subplot(2,2,1)
plot((0:
length(expandsignal2)-1)*100/length(expandsignal2)-100/2,abs(fftshift(fft(expandsignal2))));
title('用户2扩频后的频谱图');
subplot(2,2,2)
plot((0:
length(yt2)-1)*100/length(yt2)-100/2,abs(fftshift(fft(yt2))));
title('用户2解扩后的频谱图');
axis([-151501500]);
subplot(2,2,3)
plot((0:
length(y2)-1)*100/length(y2)-100/2,abs(fftshift(fft(y2))));
title('用户2调制后的频谱图');
axis([-202003000]);
subplot(2,2,4)
plot((0:
length(yi2)-1)*100/length(yi2)-100/2,abs(fftshift(fft(yi2))));
title('用户2解调后的频谱图');
axis([-20200400]);
%%%%%%%%%%%%%%%用户3部分%%%%%%%%%%%%%%%
figure
subplot(3,2,1)
plot(x,yuser3);
title('用户3的发送数据');
axis([010
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 移动通信原理与应用 移动 通信 原理 应用 实验 报告 概述
![提示](https://static.bdocx.com/images/bang_tan.gif)