《移动通信原理与应用》实验报告
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
重庆交通大学信息科学与工程学院综合性设计性实验报告
专业:通信工程专业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
function PN=mseq(s)
N=length(s);
c=[];
D=s;
for i=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序列代替,这样对每一个数据位都进行扩展就实现了对原始数据的扩频。其结构框图如下:
扩频仿真代码如下:
%扩频
function expandsignal=expand(signal,PN)
expand=[];
for i=1:length(signal)
if signal(i)==1
expand=[expand,PN];
else
expand=[expand,-1*PN];
end
end
expandsignal=expand;%扩频后的序列
end
③多径信道的仿真
对多径信道的仿真主要通过对不同用户产生的数据经三径进行传输,每一径信号又有三个用户数据叠加而成,并且每一径信号具有不同的延迟和衰减。最后在信道的另一端三径信号进行叠加并对其加燥。
多径信道仿真代码如下:
function multiS=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));
if k==2
r=[modusignal.*r1,0,0,0]+[signal1.*r2,0,0];
end
if k==3
r=[modusignal.*r1,0,0,0]+[signal1.*r2,0,0]+[signal2.*r3,0];
end
if k==4
r=[modusignal.*r1,0,0,0]+[signal1.*r2,0,0]+[signal2.*r3,0]+[signal3.*r4];
end
multiS=r;
end
④解扩
在扩频码与接收信号同步的情况下, 可对接收信号进行解扩, 其解扩的过程与扩频的过程一样, 也是利用扩频码与接收信号进行相乘即可。其原理图如下:
解扩代码如下:
function deexpandsignal=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]));