移动通信课程设计 直接序列扩频系统仿真.docx
- 文档编号:11195745
- 上传时间:2023-02-25
- 格式:DOCX
- 页数:31
- 大小:1.18MB
移动通信课程设计 直接序列扩频系统仿真.docx
《移动通信课程设计 直接序列扩频系统仿真.docx》由会员分享,可在线阅读,更多相关《移动通信课程设计 直接序列扩频系统仿真.docx(31页珍藏版)》请在冰豆网上搜索。
移动通信课程设计直接序列扩频系统仿真
信息与通信工程学院
移动通信课程设计实验报告
题目:
直接序列扩频系统仿真
班级:
姓名:
学号:
班内序号:
日期:
目录
一、背景3
二、要求:
3
三、设计概述3
四、直接序列扩频系统仿真3
1、基本扩频系统仿真流程图3
2、matlab程序及仿真结果图5
2.1、生成m序列及m序列性质5
2.2、生成50位随机待发送二进制比特序列,并进行扩频编码6
2.3、对扩频前后信号进行BPSK调制,观察其时域波形8
2.4、计算并观察扩频前后BPSK调制信号的频谱9
2.5、接收机与本地恢复载波相乘,比较扩频与否的时域波形11
2.6、与恢复载波相乘后,观察其频谱变化12
2.7、仿真观察信号经凯萨尔窗低通滤波后的频谱14
2.8、观察解扩后的信号波形、频谱15
2.9、比较扩频系统解扩前后信号带宽、信号功率谱16
2.10、对解扩信号进行采样判决18
五、仿真产生不同的伪随机序列21
1、m序列(跟四、2.1一样)21
2、产生随机序列Gold码和正交Gold码22
2.1、产生Gold码并仿真其自相关函数23
2.2、产生正交Gold码并仿真其互相关函数25
六、验证直扩系统对窄带干扰的抑制能力27
1、加窄带干扰的直扩系统建模28
2、不同扩频序列长度下的误码率比较29
3、扩频序列长度N=7时,不同强度窄带干扰下的误码率比较30
七、分工30
八、心得体会30
一、背景
直接序列扩频通信系统(DSSS)是目前应用最为广泛的系统。
在发送端,直扩系统将发送序列用伪随机序列扩展到一个很宽的频带上去,在接受端又用相同的扩频序列进行解扩,回复出原有信息。
由于干扰信息与伪随机序列不相关,扩频后能够使窄带干扰得到有效的抑制,提高输出信噪比。
系统框图如下图所示:
二、要求:
1.通过matlab建模,对直扩系统进行仿真
2.研究并仿真产生不同的伪随机序列
3.验证直扩系统对窄带干扰的抑制能力,给出误码率等仿真曲线
三、设计概述
本次课设按要求完成,利用matlab进行直接扩频系统的仿真,利用BPSK调制,仿真了扩频、调制、解调、解扩过程,并对是否使用直接扩频进行了对比。
并仿真了Gold码及正交Gold码。
另外,通过matlab的simulink工具盒仿真了直接扩频系统的误码率。
四、直接序列扩频系统仿真
1、基本扩频系统仿真流程图
2、matlab程序及仿真结果图
2.1、生成m序列及m序列性质
实验产生7位m序列,频率100Hz,模拟线性反馈移位寄存器序列,原理图如下:
clearall;
clc;
X1=0;X2=0;X3=1;
m=350;%重复50遍的7位单极性m序列
fori=1:
m
Y3=X3;Y2=X2;Y1=X1;
X3=Y2;X2=Y1;
X1=xor(Y3,Y1);
L(i)=Y1;
end
fori=1:
m
M(i)=1-2*L(i);%将单极性m序列变为双极性m序列
end
k=1:
1:
m;
figure
(1)
subplot(3,1,1)%做m序列图
stem(k-1,M);
axis([0,7,-1,1]);
xlabel('k');
ylabel('M序列');
title('移位寄存器产生的双极性7位M序列');
subplot(3,1,2)
ym=fft(M,4096);
magm=abs(ym);%求双极性m序列频谱
fm=(1:
2048)*200/2048;
plot(fm,magm(1:
2048)*2/4096);
title('双极性7位M序列的频谱')
axis([90,140,0,0.1]);
[a,b]=xcorr(M,'unbiased');
由上图可以看出,7位m序列为1,-1,-1,-1,1,-1,1。
2.2、生成50位随机待发送二进制比特序列,并进行扩频编码
生成的信息码频率为100/7Hz,利用m序列编码后,频率变为100Hz。
N=50;a=0;
x_rand=rand(1,N);%产生50个0与1之间随机数
fori=1:
N
ifx_rand(i)>=0.5%大于等于0.5的取1,小于0.5的取0
x(i)=1;a=a+1;
elsex(i)=0;
end
end
t=0:
N-1;
figure
(2)%做信息码图
subplot(2,1,1)
stem(t,x);
title('扩频前待发送二进制信息序列');
tt=0:
349;
subplot(2,1,2)
l=1:
7*N;
y(l)=0;
fori=1:
N
k=7*i-6;
y(k)=x(i);k=k+1;y(k)=x(i);k=k+1;y(k)=x(i);k=k+1;y(k)=x(i);k=k+1;y(k)=x(i);k=k+1;y(k)=x(i);k=k+1;y(k)=x(i);
end
s(l)=0;
fori=1:
350%扩频后,码率变为100/7*7=100Hz
s(i)=xor(L(i),y(i));
end
tt=0:
7*N-1;
stem(tt,s);
axis([0,350,0,1]);
title('扩频后的待发送序列码');
2.3、对扩频前后信号进行BPSK调制,观察其时域波形
BPSK调制采用2kHz信号cos(2*2000*t)作为载波
figure(3)
subplot(2,1,2)
fs=2000;
ts=0:
0.00001:
3.5-0.00001;%为了使信号看起来更光滑,作图时采样频率为100kHz
%ps=cos(2*pi*fs*ts);
s_b=rectpulse(s,1000);%将冲激信号补成矩形信号
s_bpsk=(1-2.*s_b).*cos(2*pi*fs*ts);%扩频后信号BPSK调制时域波形
plot(ts,s_bpsk);
xlabel('s');
axis([0.07,0.2,-1.2,1.2])
title('扩频后bpsk信号时域波形');
subplot(2,1,1)
s_bb=rectpulse(x,7000);
s_bpskb=(1-2.*s_bb).*cos(2*pi*fs*ts);%无扩频信号BPSK调制时域波形
plot(ts,s_bpskb);
xlabel('s');
axis([0.07,0.2,-1.2,1.2]);
title('扩频前bpsk信号时域波形')
可以看出,100/7Hz的无扩频信号每0.07s时由于序列极性变换产生相位变换,100Hz的扩频后调制信号每0.01s由于序列极性变换产生相位变换。
2.4、计算并观察扩频前后BPSK调制信号的频谱
对信号采用400000点fft计算,得到频谱
figure(4)
N=400000;
ybb=fft(s_bpskb,N);%无扩频信号BPSK调制频谱
magb=abs(ybb);
fbb=(1:
N/2)*100000/N;
subplot(2,1,1)
plot(fbb,magb(1:
N/2)*2/N);
axis([1700,2300,0,0.3]);
title('扩频前调制信号频谱');
xlabel('Hz');
subplot(2,1,2)
yb=fft(s_bpsk,N);%扩频信号BPSK调制频谱
mag=abs(yb);
fb=(1:
N/2)*100000/N;
plot(fb,mag(1:
N/2)*2/N);
axis([1700,2300,0,0.3]);
title('扩频后调制信号频谱');
xlabel('Hz');
如图,扩频前信号主瓣宽度约为2*100/7=28Hz,扩频后,信号频谱展宽,主瓣1900~2100Hz约为200Hz,为无扩频信号频谱宽度的N=7倍,符合理论推算。
2.5、接收机与本地恢复载波相乘,比较扩频与否的时域波形
figure(5)
subplot(2,1,1)
reb=s_bpskb.*cos(2*pi*fs*ts);%无扩频系统接收信号乘以本地恢复载波信号
plot(ts,reb);
axis([0.10,0.18,-1.5,1.5]);
xlabel('t');
title('扩频前接收信号乘以恢复载波');
subplot(2,1,2)
re=s_bpsk.*cos(2*pi*fs*ts);%扩频系统接收信号乘以本地恢复载波信号
plot(ts,re);
axis([0.10,0.18,-1.5,1.5]);
xlabel('t');
title('扩频后接收信号乘以恢复载波');
可以看出,接收信号乘以恢复载波后,已经能大致恢复出信号的变化。
同时,无扩频系统符号速率仍然是100/7Hz即0.07s出现符号变化,扩频系统100Hz即0.01s出现符号变化。
2.6、与恢复载波相乘后,观察其频谱变化
figure(6)
subplot(2,1,1)
yreb=fft(reb,N);
magreb=abs(yreb);
freb=(1:
N/2)*100000/N;
plot(freb,magreb(1:
N/2)*2/N);
axis([0,5000,0,0.3]);
title('扩频前乘以恢复载波后信号频谱');
subplot(2,1,2)
yre=fft(re,N);
magre=abs(yre);
plot(freb,magre(1:
N/2)*2/N);
title('扩频后乘以恢复载波后信号频谱');
axis([0,5000,0,0.3]);
可以看出,信号乘以频率为2kHz的恢复载波后,在基带和4kHz处存在频谱分量,则下一步需要对信号进行低通滤波。
2.7、仿真观察信号经凯萨尔窗低通滤波后的频谱
figure(7)
fp=100;
fc=200;
as=100;ap=1;%衰减100dB
fsw=22000;
wp=2*fp/fsw;
wc=2*fc/fsw;
Nw=ceil((as-7.95)/(14.36*(wc-wp)/2))+1;%求凯萨尔窗低通滤波器阶数
beta=0.1102*(as-8.7);
window=kaiser(Nw+1,beta);
b=fir1(Nw,wc,window);
bs=abs(freqz(b,1,400000,fsw))';
subplot(1,1,1)
magrel=bs.*magre;
plot(freb,magrel(1:
N/2)*2/N);
title('信号经过凯萨尔窗函数低通滤波');
axis([0,200,0,0.2]);
xlabel('Hz');
2.8、观察解扩后的信号波形、频谱
figure(8)
subplot(2,1,1)
yrel=real(ifft(bs.*yre,400000));
jj=rectpulse(M,1000);%扩频信号乘以解扩序列
yrej=jj.*yrel(1:
350000);
plot(ts(1:
350000),yrej);
xlabel('t');
axis([0,4,-0.5,0.5]);
title('解扩后信号波形');
subplot(2,1,2)
yj=fft(yrej,N);
magj=abs(yj);
plot(freb,magj(1:
N/2)*2/N);
axis([0,500,0,0.2]);
title('解扩后信号频谱');
xlabel('Hz');
由于扩频信号与m序列具有良好的相关性,故乘以m序列以后,能基本还原出原信号波形。
同时可以看出,频谱已经由扩展带宽再次缩短,还原出原信号频谱。
2.9、比较扩频系统解扩前后信号带宽、信号功率谱
figure(9)
title('解扩前后信号频偏对比');
subplot(2,2,1)
plot(freb,magrel(1:
N/2)*2/N);
axis([0,200,0,0.2]);
title('解扩前信号频偏');
subplot(2,2,3)
plot(freb,magj(1:
N/2)*2/N);
axis([0,200,0,0.2]);
title('解扩后信号频偏');
subplot(2,2,2)
yjb=fft(yrel,N);
prelb=yjb.*conj(yjb)/N;
plot(freb,prelb(1:
N/2)*2/N);
axis([0,200,0,0.01]);
title('解扩前信号功率谱');xlabel('Hz');
subplot(2,2,4)
yj=fft(yrej,N);
prel=yj.*conj(yj)/N;
plot(freb,prel(1:
N/2)*2/N);
axis([0,200,0,0.01]);
title('解扩后信号功率谱');
xlabel('Hz');
可以清楚看出,解扩前信号主瓣约为100Hz,解扩后恢复为100/7Hz,与发送信息吻合。
解扩后信号的频谱被压缩,功率幅度增加,符合理论分析结果。
2.10、对解扩信号进行采样判决
figure(10)
subplot(2,1,1)
fori=1:
1:
350
ij=i*1000-500;
ss(i)=yrej(ij);
end
stem(ss);
title('解扩信号采样');
subplot(2,1,2)
fori=1:
1:
350%判决信号算法
ifss(i)>0.2
ss(i)=1;
elseifss(i)<-0.2
ss(i)=-1;
elsess(i)=0;
end
end
fori=1:
1:
50
ij=7*i-6;
ifss(ij)==0
ss(ij)=ss(ij+4);
end
end
fori=1:
1:
348
ifss(i)==0
ss(i)=ss(i+2);
end
end
fori=1:
1:
50
S(i)=ss(i*7-3);
ifS(i)==0
S(i)=S(i)+1;
end
S(i)=(1-S(i))/2;
end
stem(S);
title('判决后的最终信号');
至此,扩频系统仿真完成,比较最终判决信号与原发送信号完全吻合。
五、仿真产生不同的伪随机序列
1、m序列(跟四、2.1一样)
X1=0;X2=0;X3=1;
m=350;%重复50遍的7位单极性m序列
fori=1:
m
Y3=X3;Y2=X2;Y1=X1;
X3=Y2;X2=Y1;
X1=xor(Y3,Y1);
L(i)=Y1;
end
fori=1:
m
M(i)=1-2*L(i);%将单极性m序列变为双极性m序列
end
k=1:
1:
m;
figure
(1)
subplot(2,1,1)%做m序列图
stem(k-1,M);
axis([0,7,-1,1]);
xlabel('k');
ylabel('M序列');
title('移位寄存器产生的双极性7位M序列');
[a,b]=xcorr(M,'unbiased');
subplot(2,1,2)%求双极性m序列自相关函数
plot(b,a);
axis([-20,20,-0.5,1.2]);
title('双极性7位M序列的自相关函数');
2、产生随机序列Gold码和正交Gold码
Gold码是由m序列派生出的一种伪随机码,它具有类似于m序列具有的伪随机性质,但其同长度不同序列的数目比m序列的多得多。
Gold码发生器框图:
Gold码是由m序列的优选对移位模二加构成,m1和m2为同长度的两个不同m序列并为优选对。
Gold码的自相关特性:
Gold证明过Gold码序列的自相关函数的所有非最高峰的取值为三值,如下式所示,其中p=2n-1,为Gold码序列的周期。
当n为奇数时,
+1,当n为偶数且不是4的整数倍时,
。
实验中,我采用了长度n=7的一对优选对构成Gold码。
采用matlab里面的gfprimfd(7,'all')命令得到全部的18个本原多项式表达式,如下图:
之后选取的本原多项式的八进制数表示为m1(211),m2(217)。
2.1、产生Gold码并仿真其自相关函数
X1=1;X2=1;X3=1;X4=1;X5=1;X6=1;X7=-1;
m=2^7-1;
fori=1:
1:
m
Y7=X7;Y6=X6;Y5=X5;Y4=X4;Y3=X3;Y2=X2;Y1=X1;
X7=Y6;X6=Y5;X5=Y4;X4=Y3;X3=Y2;X2=Y1;
X1=Y3*Y7;
L1(i)=Y1;
end
fori=1:
1:
m
Y7=X7;Y6=X6;Y5=X5;Y4=X4;Y3=X3;Y2=X2;Y1=X1;
X7=Y6;X6=Y5;X5=Y4;X4=Y3;X3=Y2;X2=Y1;
X1=Y1*Y2*Y3*Y7;
L2(i)=Y1;
end
fori=1:
1:
m
L(i)=L1(i)*L2(i);
L(i)=1-L(i);
L(i)=0.5*L(i);
end
figure
(1)
subplot(2,1,1)
i=1:
127;
stairs(i,L);
axis([0,130,-1.2,1.2]);
title('n=7Gold码');
xlabel('k');
subplot(2,1,2)
a=L;b=a;Nb=127;N=2*m;
fork=1:
N
c=xor(a,b);
D=sum(c);
A=Nb-D;
R(k)=(A-D)/(A+D);%计算相关系数
b=[b(Nb),b(1:
(Nb-1))];
end
k=0:
(N-1);
plot(k,R,'--r.');
axis([64,191,-0.5,1.2]);
title('n=7Gold码自相关函数');
xlabel('k');
可以根据
计算出,除了在k=127*n即序列周期的整数倍时自相关函数为1以外,其余自相关数值应为三值函数,取值分别为-0.0787,-0.1339和0.1181。
而从图上看出,Gold自相关函数满足以上条件,具有尖锐的自相关特性,说明仿真正确。
2.2、产生正交Gold码并仿真其互相关函数
Gold码的长度等于对应的m序列的长度,是奇数,上述仿真中为127,因此其互相关不为0,属于准正交码。
可以证明,若在同一优选对产生的Gold码末尾加一个0,则构成的偶位Gold码相互正交,其股相关函数Rij(0)=0,称为正交Gold码或偶位Gold码。
Rij≠0,
。
figure
(2)
fori=1:
1:
m
Lz1(i)=1-2*L(i);
end
Lz1(m+1)=1;
X1=-1;X2=1;X3=1;X4=1;X5=1;X6=1;X7=1;
fori=1:
1:
m
Y7=X7;Y6=X6;Y5=X5;Y4=X4;Y3=X3;Y2=X2;Y1=X1;
X7=Y6;X6=Y5;X5=Y4;X4=Y3;X3=Y2;X2=Y1;
X1=Y1*Y2*Y3*Y7;
L3(i)=Y1;
end
fori=1:
1:
m
L4(i)=L2(i)*L3(i);
Lz2(i)=L4(i)*L1(i);
end
Lz2(m+1)=1;
subplot(2,1,1)
i=1:
128;
stairs(i,Lz1);
axis([0,130,-1.2,1.2]);
title('n=7正交Gold码');
xlabel('k');
subplot(2,1,2)
k=128;xk=fft(Lz1,2*k);yk=fft(Lz2,2*k);rm=real(ifft(conj(xk).*yk));
rm=ifftshift(rm);
m=-k:
k-1;
stem(m,rm,'r.');
gridon;
axis([-10,10,-20,20]);
title('n=7正交Gold码互相关函数');
xlabel('k');
如图,正交Gold码在码型上只是比Gold码多了一位(单极性为0,双极性为1),使得其成为了真正的随机序列,满足了随机序列的3个基本特性。
从其互相关函数的截选段可以看出,互相关函数只在0时取0,正确。
至此,Gold码仿真完成。
六、验证直扩系统对窄带干扰的抑制能力
误码率仿真采用了MATLAB里面的SIMULINK及BERTOOL工具。
SIMULINK是MATLAB最重要的组件之一,它提供一个动态系统建模、仿真和综合分析的集成环境。
SIMULINK具有适应面广、结构和流程清晰及仿真精细、贴近实际、效率高、灵活等优点,并基于以上优点SIMULINK已被广泛应用于控制理论和数字信号处理的复杂仿真和设计。
同时有大量的第三方软件和硬件可应用于或被要求应用于SIMULINK。
1、加窄带干扰的直扩系统建模
仿真过程中,仍然采用了100Hz的扩频序列,100/7Hz的数据码流,2kHz的BPSK调制并加入了与中心频点频偏20Hz的窄带强干扰。
误码率仿真采用了SIMULIMK自带的ErrorRateCalculation模块,来对比发送与接收的码流。
建模的过程中,考虑了信号的频率,极性,窄带干扰和awgn信道的高斯白噪声,完全符合一般的通信系统的组成结构。
仿真时间为100s。
2、不同扩频序列长度下的误码率比较
如图,扩频系统的误码率与扩频序列的长度有关,可以看出,在信噪比很小的情况下,不同扩频序列长度的误码率基本相同。
当信噪比逐渐增大时,系统的误码情况有所好转。
扩频码越长,误码率越低,抗干扰能力越强。
3、扩频序列长度N=7时,不同强度窄带干扰下的误码率比较
如图,当窄带强干扰的振幅为信号幅度的10倍时,扩频系统的误码率不变,说明扩频系统对窄带强干扰有很强的抑制能力,符合之前的matlab仿真结果。
当窄带强干扰的振幅增至信号幅度的250倍和500倍时,系统误码率随干扰振幅增大而增大。
窄带干扰幅度为信号幅度250倍时,误码率小于0.01,可以接受。
当窄带干扰幅度为信号幅度的500倍时,误码率较大,不能忍受,但这种情况基本不会出现。
七、分工
八、心得体会
通过本次课程设计,我们对移动通信的理解增强了。
我们深入地学习了直接序列扩频系统的相关理论知识,了解了它的工作原理。
我们的MATLAB编程能力也有了提高。
在课程设计中,我们遇到了许多困难。
通过克服这些困难,我们的动手能力和团队协作能力都有了提高。
这次课程设计是一次很好的实践经历。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 移动通信课程设计 直接序列扩频系统仿真 移动 通信 课程设计 直接 序列 系统 仿真