《扩频通信系统仿真实验报告7750.pdf》由会员分享,可在线阅读,更多相关《扩频通信系统仿真实验报告7750.pdf(11页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、 重庆交通大学信息科学与工程学院 综合性设计性实验报告 专 业:通信工程专业 11 级 学 号:姓 名:实验所属课程:移动通信原理与应用 实验室(中心):软件与通信实验中心 指 导 教 师:2013 年 3 月 教师评阅意见:签名:年 月 日 实验成绩:一、题目 扩频通信系统仿真实验 二、仿真要求 扩频通信系统的多用户数据传输 传输的数据随机产生,要求采用频带传输(BPSK 调制);扩频码要求采用周期为 63(或 127)的 m 序列;仿真从基站发送数据到三个不同的用户,各不同用户分别进行数据接收;设计三种不同的功率延迟分布,从基站到达三个不同的用户分别经过多径衰落(路径数分别为 2,3,4)
2、;三个用户接收端分别解出各自的数据并与发送前的数据进行差错比较。三、仿真方案详细设计 通信系统的总体框图如下 发射机原理图 用户 1 发射机 用户 2 发射机 用户 3 发射机 多径,高斯信道 用户 1 接收机 用户 2 接收机 用户 3 接收机 接收机原理 由上图可知,整个设计由发送端、信道和接收机组成。其中发射端主要完成 m 序列的产生,随机 0,1 序列的产生。然后利用 m 序列对产生的随机序列进行扩频,然后再用 cos(wt)对其进行调制。信道主要模拟信号的多径传输,在这个信道中一共有三个用户的数据进行传输,用户一经过了 2 径衰落,用户二经过了 3 径衰落,用户三经过了 4 径衰落。
3、接收端接收到的信号是几路多径信号的加噪后的叠加,首先要完成信号的解扩,然后再解调,滤波,抽样判决最后分别与原始信号比较并统计误码率 现对主要功能部分进行详细描述 1.扩频码(m 序列)的产生 扩频码为伪随机序列,本实验采用自相关特性好,互相关特性较差的 M 序列,因为有三路用户,故选取带有 6 位移位寄存器,周期为 63 的 m 序列。其对应的二进制序列分别为:1000011,1100111,1101101.以 1000011 为例,其具体的寄存器结构图如下所示:初始化各寄存器单元内容为 1 产生 m 序列的 matlab 程序如下 function c=genMseq(b)1 1 1 1 1
4、 1 1 t0cos扩频信号 Signal 扩频码 调制之后的信号 扩频码 解扩信号 解调信号 LBF t0cos接收信号 N=length(b)-1;D=ones(1,N);A=b(N:-1:1);c=;for i=1:2N-1 c1=rem(sum(D.*A),2);c=c,D(N);D=c1,D(1:N-1);end c=c*2-1;%变为 1,-1 的序列 End 2、扩频 扩频的主要思想是每一位数据位都扩展成长度为 m 序列长的信息,其具体做法是将数据信息中的1用 m 序列代替,而对于-1用-m 序列代替,这样对每一个数据位都进行扩展就实现了对原始数据的扩频。其结构框图如下 Sign
5、al 扩频码 M 序列 其仿真代码如下:function ssignal=dsss(signal,c)signal=signal*2-1;ssignal=;for i=1:length(signal)ssignal=ssignal,signal(i)*c;end end 3、多径信道的仿真 function multiS=channels(modusignal,snr,k)%模拟多径衰落 len=length(modusignal);x1=randn(1,len);y1=randn(1,len);r1=abs(x1+j*y1).*modusignal;r1=zeros(1,5),r1(1:le
6、ngth(modusignal)-5);x2=randn(1,len);y2=randn(1,len);r2=abs(x2+j*y2).*modusignal;r2=zeros(1,8),r2(1:length(modusignal)-8);x3=randn(1,len);y3=randn(1,len);r3=abs(x3+j*y3).*modusignal;r3=zeros(1,10),r3(1:length(modusignal)-10);if k=2 multiS=modusignal+r1;else if k=3 multiS=modusignal+r1+r2;else if k=4
7、multiS=modusignal+r1+r2+r3;end end end multiS=awgn(multiS,snr);4、接收端解扩 在假定扩频码与接收信号同步的情况下,可对接收信号进行解扩,其解扩的过程与扩频的过程一样,也是利用扩频码与接收信号进行相乘即可。其原理图如下:解扩代码如下:function dessignal=dedsss(receiveSignal,c,chipRate,fs)L=fs/chipRate;c1=;d(t)c(t)cos(2f0t)解扩 d(t)cos(2f0t)C(t)for i=1:length(c)c1=c1,c(i)*ones(1,L);end d
8、essignal=;for i=1:length(c1):length(receiveSignal)dessignal=dessignal,reciveSignal(i:i+length(c1)-1).*c1;end end 5、调制与解调 本文采用的是 BPSK 调制解调方式。发送端将扩频后的信号 s 乘上载波 cos(2*ft)即完成了调制,接收端再乘以载波 cos(2*ft)做相干解调,必须保证接收端乘以的载波与发送端的载波是相干的才能很好的解调,最后再经过一个低通滤波器滤除相乘过程中产生的高频成分即完成了解调。四、仿真结果及结论 原信号和扩频之后的信号 图 1 原信号频谱与扩频后信号频
9、谱 图 2 010203040506070809010000.20.40.60.81050100150200250300350400-1-0.500.51 第一个用户信号经过扩频,调制之后的信号以及三个用户信号分别经过 2 径,3 径,4径信道后的叠加信号之和如下图所示 图 3 第一个原始用户信号与其经过接收端解扩,解调,抽样判决之后的最终信号的比较如下 图 4 110011501200125013001350-1-0.500.511300140015001600170018001900200021002200-6-4-20246-2.5-2-1.5-1-0.500.511.522.5x 10
10、40200040006000800010000扩 频 前 信 号 频 谱-3-2-10123x 10405001000150020002500扩 频 后 信 号 频 谱010203040506070809010000.20.40.60.81010203040506070809010000.20.40.60.81第二个原始用户信号与其经过接收端解扩,解调,抽样判决之后的最终信号的比较如下 图 5 第三个原始用户信号与其经过接收端解扩,解调,抽样判决之后的最终信号的比较如下 实验结果分析 图 6 扩频通信的理论基础为香农公式:C=Blog(1+S/N)由公式可知,我们可以用牺牲带宽的办法来换取较低
11、的信噪比,增加系统的抗干扰能力。直接序列扩频,是直接利用具有高码率的扩频码序列在发送端扩展信号的频谱,而在接收端,用相同的扩频码序列进行解扩,把展宽的扩频信号还原成原始的信息,是一种数字调制方法。由图 2 可知,信号经过扩频后信号的频谱被展宽了,并且频谱功率降低了,这使得扩频通信系统具有较强的抗干扰能力,且具有很强的隐蔽性和抗侦查,抗窃听的能力。这种能力随着扩频增益的增大而增大。扩频增益的提高就需要提高扩频码m 序列的位数了。因为 m 序列具有良好的自相关特性和互相关特性,正是这两大特性使得在接收端可以很010203040506070809010000.20.40.60.81010203040
12、506070809010000.20.40.60.810102030405060708090100-1-0.500.51010203040506070809010000.20.40.60.81好的进行扩频码的同步,以及多路用户的区分,从而具有很好的抗多径干扰能力。图三的上半部分为用户 1 的信号,下半部分为三个用户经过叠加的信号,由图可知,三个信号叠加过后有点儿像一个信号上面叠加了一些噪声。A 用户经过的是两径信道,B 用户经过的是三径信道,C 用户经过的是四径信道,所以在接收端 A 用户的误码率最低,其次是 B 用户,最后是 C 用户。本实验没有进行扩频码的同步,所以效果不是那么地好。由图四
13、、五、六可知接收端还是能比较好的恢复出原信号的。说明了扩频通信还是具有较好的抗干扰能力的。五、总结与体会 通过本次实验,我对直接序列扩频的原理有了一个更加全面的认识,对扩频系统在通信过程中的作用有了深刻的理解,特别是扩频通信抗多径衰落的能力在本实验中得到了很好的体现。在实验过程中也遇到了一些问题,中途连滤波器的设计也是拿出以前写过的代码重读了一遍然后参照那个写的。感觉到知识具有很强的遗忘性,那我们在今后的学习中要经常温习学过的东西,这样不仅能巩固知识还能学到新的东西,正所谓温故而知新嘛。MATLAB 确实是一个很好的模拟软件,它能够让人很直观的理解通信的过程。我深知实验中还是存在着很大的不足的
14、,比如说由于时间关系没有在接收端进行扩频码序列的跟踪同步,使得系统的抗多径效果不是特别明显,在接下来的时间里,我会继续努力的,最后感谢李老师的辛苦教学。六、主要仿真代码 主程序代码如下:%主函数 function main()clc;clear;close all;N=100;%扩频部分 sscPara1=1 0 0 0 0 1 1;sscPara2=1 1 0 0 1 1 1;sscPara3=1 1 0 1 1 0 1;c1=genMseq(sscPara1);c2=genMseq(sscPara2);c3=genMseq(sscPara3);modusignal1,dataRate,fc
15、,fs,ssignal1,chipRate,data1=transmitters(c1,N);data=;for i=1:1/(8*63):length(data1)data=data,2*data1(fix(i)-1;end figure;subplot(2,1,1);n=1:1/(8*63):length(data1);plot(n,data);ssignal=;for i=1:1/8:length(ssignal1)ssignal=ssignal,ssignal1(fix(i);end subplot(2,1,2);l=1:1/8:length(ssignal1);plot(l,ssig
16、nal);N1=length(data);figure;subplot(2,1,1);sff1=-fix(N1/2):1:(fix(N1/2);plot(sff1,fftshift(abs(fft(data);title(扩频前信号频谱);N2=length(ssignal);subplot(2,1,2);sff2=-fix(N2/2):1:(fix(N2/2);plot(sff2,fftshift(abs(fft(ssignal);title(扩频后信号频谱);t=1:length(modusignal1);figure;subplot(2,1,1);plot(t,modusignal1);
17、modusignal2,dataRate,fc,fs,ssignal2,chipRate,data2=transmitters(c2,N);modusignal3,dataRate,fc,fs,ssignal3,chipRate,data3=transmitters(c3,N);modusignal1=channels(modusignal1,2);t=1:length(modusignal1);subplot(2,1,2);plot(t,modusignal1);modusignal2=channels(modusignal1,3);modusignal3=channels(modusign
18、al1,4);modusignal=modusignal1+modusignal2+modusignal3;BER1=;BER2=;BER3=;for snr=-10:2:10 wr1=0;wr2=0;wr3=0;for i=1:10 receiveSignal=awgn(modusignal,snr);d1=receiver(receiveSignal,dataRate,chipRate,fc,fs,c1);d2=receiver(receiveSignal,dataRate,chipRate,fc,fs,c2);d3=receiver(receiveSignal,dataRate,chip
19、Rate,fc,fs,c3);wr1=wr1+sum(d1=data1)/100;wr2=wr2+sum(d2=data2)/100;wr3=wr3+sum(d3=data3)/100;end wr1=wr1/11;wr2=wr2/11;wr3=wr3/11;BER1=BER1,wr1;BER2=BER2,wr2;BER3=BER3,wr3;end BER1 BER2 BER3 figure;subplot(2,1,1);n=1:1/8:length(data);plot(n,data);n=1:1/8:length(d1);da1=;for i=1:1/8:length(d1)da1=da1
20、,d1(fix(i);end subplot(2,1,2);plot(n,da1);figure;n=0:1:10;semilogy(n,BER1,*r);hold on semilogy(n,BER2,*y);hold on semilogy(n,BER3,*b);%解扩实现 function dessignal=dedsss(receiveSignal,c,chipRate,fs)L=fs/chipRate;c1=;for i=1:length(c)c1=c1,c(i)*ones(1,L);end dessignal=;for i=1:length(c1):length(receiveSi
21、gnal)dessignal=dessignal,receiveSignal(i:i+length(c1)-1).*c1;end end%接收端信号解调 function demoSignal,b=demodu(dessignal,dataRate,fc,fs)t=linspace(0,1/dataRate,fs/dataRate);carrier=cos(2*pi*fc*t);demoSignal=;for i=1:length(carrier):length(dessignal)demoSignal=demoSignal,carrier.*dessignal(i:i+length(carrier)-1);end load lowpas;l=fix(length(lowpas)/2);demoSignal=demoSignal,zeros(1,l);b=filter(lowpas,1,demoSignal);b=b(l+1:end);panjue=;for i=1:length(demoSignal)/length(carrier)if demoSignal(i-1)*length(carrier)+3)=0 panjue=panjue,1;else panjue=panjue,0;end end b=panjue;end