MATLAB仿真BPSK调制.docx
《MATLAB仿真BPSK调制.docx》由会员分享,可在线阅读,更多相关《MATLAB仿真BPSK调制.docx(61页珍藏版)》请在冰豆网上搜索。
![MATLAB仿真BPSK调制.docx](https://file1.bdocx.com/fileroot1/2023-6/27/e4a455ac-56f0-4c9a-895f-9435decf00f3/e4a455ac-56f0-4c9a-895f-9435decf00f31.gif)
MATLAB仿真BPSK调制
一、背景4
二、基本要求4
三、设计概述4
四、Matlab设计流程图5
五、Matlab程序及仿真结果图6
1、生成m序列及m序列性质6
2、生成50位随机待发送二进制比特序列,并进行扩频编码7
3、对扩频前后信号进行BPSK调制,观察其时域波形9
4、计算并观察扩频前后BPSK调制信号的频谱10
5、仿真经awgn信道传输后,扩频前后信号时域及频域的变化11
6、对比经信道前后两种信号的频谱变化12
7、接收机与本地恢复载波相乘,观察仿真时域波形14
8、与恢复载波相乘后,观察其频谱变化15
9、仿真观察信号经凯萨尔窗低通滤波后的频谱16
10、观察经过低通滤波器后无扩频与扩频系统的时域波形17
11、对扩频系统进行解扩,观察其时域频域18
12、比较扩频系统解扩前后信号带宽19
13、比较解扩前后信号功率谱密度20
14、对解扩信号进行采样、判决21
15、在信道中加入2040~2050Hz窄带强干扰并乘以恢复载波24
16、对加窄带干扰的信号进行低通滤波并解扩25
17、比较解扩后信号与窄带强干扰的功率谱27
六、误码率simulink仿真28
1、直接扩频系统信道模型28
2、加窄带干扰的直扩系统建模29
3、用示波器观察发送码字及解扩后码字30
4、直接扩频系统与无扩频系统的误码率比较31
5、不同扩频序列长度下的误码率比较32
6、扩频序列长度N=7时,不同强度窄带干扰下的误码率比较33
七、利用Walsh码实现码分多址技术34
1、产生改善的walsh码35
2、产生两路不同的信息序列36
3、用两个沃尔什码分别调制两路信号38
4、两路信号相加,并进行BPSK调制39
5、观察调制信号频谱,并经awgn信道加高斯白噪和窄带强干扰40
6、接收机信号乘以恢复载波,观察时域和频域42
7、信号经凯萨尔窗低通滤波器43
8、对滤波后信号分别用m1和m2进行解扩44
9、对两路信号分别采样,判决45
八、产生随机序列Gold码和正交Gold码47
1、产生Gold码并仿真其自相关函数48
2、产生正交Gold码并仿真其互相关函数50
九、实验心得体会51
直接序列扩频系统仿真
一、背景
直接序列扩频通信系统(DSSS)是目前应用最为广泛的系统。
在发送端,直扩系统将发送序列用伪随机序列扩展到一个很宽的频带上去,在接受端又用相同的扩频序列进行解扩,回复出原有信息。
由于干扰信息与伪随机序列不相关,扩频后能够使窄带干扰得到有效的抑制,提高输出信噪比。
系统框图如下图所示:
二、基本要求:
1.通过matlab建模,对直扩系统进行仿真,数据调制方式可以自由选择,可以使用基带信号,但最好能使用频带信号,信道为高斯白噪信道。
要仿真出扩频前的信号的频偏,扩频后的信号频谱,过信道之后的频谱以及解扩之后的频谱。
2.研究并仿真产生m序列,写出生成m序列的算法。
3.验证直扩系统对窄带干扰的抑制能力,在信道中加入一个窄带强干扰,仿真出加了干扰后的频谱图和解扩后的频谱图,给出误码率等仿真图。
4.在以上基础上仿真实现码分多址技术,使用Walsh码进行复用,实现多个信号同时传输。
(选做)
可选项:
1.在信道中加入多径,使用rake接收来抗多径效应。
2.产生除m序列之外的其他随机序列,如Gold码,正交Gold码等等。
3.对比无扩频的系统的误码率。
三、设计概述
本次课设完成基本要求,并选作了可选项码分多址,Gold码及误码率对比。
通过matlab建模仿真了直扩系统BPSK调制的各点频偏及时域信号,并仿真了窄带强干扰对直扩系统的影响以及利用改善的WALSH码实现码分多址技术。
另外,通过matlab的simulink工具盒bertool工具仿真对比了直扩系统和无扩频系统的误码率。
四、matlab设计流程图
基本扩频系统仿真流程图
五、matlab程序及仿真结果图
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');
subplot(3,1,3)%求双极性m序列自相关函数
plot(b,a);
axis([-20,20,-0.5,1.2]);
title('双极性7位M序列的自相关函数');
由上图可以看出,7位m序列为1,-1,-1,-1,1,-1,1。
另外,自相关函数的图形比较尖锐,最大值为1,最小值为-1/7,符合理论结果。
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('扩频后的待发送序列码');
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调制时域波形,(1-2.*s_b)是1,-1序列
plot(ts,s_bpsk);
xlabel('s');
axis([0.055,0.085,-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.055,0.085,-1.2,1.2]);
title('扩频前bpsk信号时域波形')
可以看出,100/7Hz的无扩频信号每0.07s时由于序列极性变换产生相位变换,100Hz的扩频后调制信号每0.01s由于序列极性变换产生相位变换。
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.8]);
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.8]);
title('扩频后调制信号频谱');
xlabel('Hz');
如图,扩频前信号主瓣宽度约为2*100/7=28Hz,扩频后,信号频谱展宽,主瓣1900~2100Hz约为200Hz,为无扩频信号频谱宽度的N=7倍,符合理论推算。
5、仿真经awgn信道传输后,扩频前后信号时域及频域的变化
awgn信道模拟了真实的信道,为传输信号增加了高斯白噪声。
在本次仿真中,设定信道信噪比为3dB,即信噪比约为2。
figure(5)
subplot(2,2,1)
s_bpskba=awgn(s_bpskb,3,'measured');%经过信道加高斯白噪,信噪比为3dbw
plot(ts,s_bpskb,ts,s_bpskba);
axis([0,0.005,-1.2,1.2]);
xlabel('t');
title('经过信道加噪后的信号与原信号时域波形对比');
subplot(2,2,3)
s_bpska=awgn(s_bpsk,3,'measured');
plot(ts,s_bpsk,ts,s_bpska);
title('扩频后经加噪过信道后的信号与原信号时域波形对比');
xlabel('t');
axis([0.0675,0.0725,-1.2,1.2]);
subplot(2,2,2)
ybba=fft(s_bpskba,N);%无扩频调制信号经信道后频谱分析
magba=abs(ybba);
plot(fbb,magba(1:
N/2)*2/N);
title('扩频前经信道调制信号频谱');
axis([1700,2300,0,0.8]);
xlabel('Hz');
subplot(2,2,4)
yba=fft(s_bpska,N);%扩频调制信号经信道后频谱分析
maga=abs(yba);
fb=(1:
N/2)*100000/N;
plot(fb,maga(1:
N/2)*2/N);
axis([1700,2300,0,0.8]);
xlabel('Hz');
title('扩频后经信道调制信号频谱');
可以看出,蓝色为光滑余弦调制信号,绿色为加噪声后时域波形,出现较大锯齿。
至于频谱变化,这张图并不明显,于是我在下一张图继续比较了加入高斯噪声后的频谱变化。
6、对比经信道前后两种信号的频谱变化
figure(6)
title('对比经信道前后的信号频谱');
subplot(2,2,1)
plot(fbb,magb(1:
N/2)*2/N);
axis([0,4000,0,0.04]);
title('扩频前调制信号频谱');
xlabel('Hz');
subplot(2,2,2)
plot(fbb,magba(1:
N/2)*2/N);
axis([0,4000,0,0.04]);
title('扩频前经信道调制信号频谱');
xlabel('Hz');
subplot(2,2,3)
plot(fb,mag(1:
N/2)*2/N);
axis([0,4000,0,0.04]);
title('扩频后调制信号频谱');
xlabel('Hz');
subplot(2,2,4)
plot(fb,maga(1:
N/2)*2/N);
axis([0,4000,0,0.04]);
title('扩频后经信道调制信号频谱');
xlabel('Hz');
由上图可以清楚地对比经高斯白噪声信道前后的频谱对比。
虽然整体的幅度趋势不变,但是能看出,经过信道加噪后,在所有的频率点上都产生了一定的振幅,符合高斯白噪声的原理。
此处的信噪比为3dB。
另外可以看出,BPSK调制将信号频谱搬移到了以2000Hz为中心频率的频段上。
下面,我将分别仿真解调解扩后译码输出及加入窄带强干扰后解调解扩译码输出的时域和频谱。
(1)不加窄带强干扰
7、接收机与本地恢复载波相乘,观察仿真时域波形
figure(7)
subplot(2,1,1)
reb=s_bpskba.*cos(2*pi*fs*ts);%无扩频系统接收信号乘以本地恢复载波信号
plot(ts,reb);
axis([0.055,0.085,-1.5,1.5]);
xlabel('t');
title('扩频前接收信号乘以恢复载波');
subplot(2,1,2)
re=s_bpska.*cos(2*pi*fs*ts);%扩频系统接收信号乘以本地恢复载波信号
plot(ts,re);
axis([0.055,0.085,-1.5,1.5]);
xlabel('t');
title('扩频后接收信号乘以恢复载波');
可以看出,接收信号乘以恢复载波后,已经能大致恢复出信号的变化。
同时,无扩频系统符号速率仍然是100/7Hz即0.07s出现符号变化,扩频系统100Hz即0.01s出现符号变化。
8、与恢复载波相乘后,观察其频谱变化
figure(8)
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.5]);
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.5]);
可以看出,信号乘以频率为2kHz的恢复载波后,在基带和4kHz处存在频谱分量,则下一步需要对信号进行低通滤波。
9、仿真观察信号经凯萨尔窗低通滤波后的频谱
figure(9)
subplot(2,1,1)
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);%返回截止频率为wc的Nw阶的低通滤波器系数向量
bs=abs(freqz(b,1,400000,fsw))';%频率响应,400000点的fft变换
plot(bs)
magrebl=bs.*magreb;%频谱与低通滤波器相乘
plot(freb,magrebl(1:
N/2)*2/N);
axis([0,200/7,0,1]);
title('扩频前:
信号经过凯萨尔窗函数低通滤波');
xlabel('Hz');
subplot(2,1,2)
magrel=bs.*magre;
plot(freb,magrel(1:
N/2)*2/N);
title('扩频后:
信号经过凯萨尔窗函数低通滤波');
axis([0,200,0,0.4]);
xlabel('Hz');
10、观察经过低通滤波器后无扩频与扩频系统的时域波形
figure(10)
subplot(2,1,1)
yrebl=real(ifft(bs.*yreb,400000));%对无扩频系统频谱做ifft变换
tm=(1:
N)/N*4;
plot(tm,yrebl);
xlabel('t');
title('扩频前经过凯萨尔窗函数滤波后时域波形');
subplot(2,1,2)
yrel=real(ifft(bs.*yre,400000));%对扩频系统频谱做ifft变换
plot(tm,yrel);
xlabel('t');
title('扩频后经过凯萨尔窗函数滤波后时域波形');
如图,经过低通滤波器后,高频分量基本消失,剩下的信号已经能够进行采样判决,时域波形与原信息基本吻合。
11、对扩频系统进行解扩,观察其时域频域
figure(11)
subplot(2,1,1)
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序列以后,能基本还原出原信号波形。
同时可以看出,频谱已经由扩展带宽再次缩短,还原出原信号频谱。
12、比较扩频系统解扩前后信号带宽
figure(12)
title('解扩前后信号频偏对比');
subplot(2,1,1)
plot(freb,magrel(1:
N/2)*2/N);
axis([0,200,0,0.4]);
title('解扩前信号频偏');
subplot(2,1,2)
plot(freb,magj(1:
N/2)*2/N);
axis([0,200,0,0.4]);
title('解扩后信号频偏');
可以清楚看出,解扩前信号主瓣约为100Hz,解扩后恢复为100/7Hz,与发送信息吻合。
13、比较解扩前后信号功率谱密度
figure(13)
subplot(2,1,1)
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,1,2)
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');
如图,解扩后信号的频谱被压缩,功率幅度增加,符合理论分析结果。
14、对解扩信号进行采样、判决
figure(14)
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('判决后的最终信号');
至此,扩频系统仿真完成,比较最终判决信号与原发送信号完全吻合。
(2)信道中加入窄带强干扰
加入窄带干扰的matlab系统流程图
15、在信道中加入2040~2050Hz窄带强干扰并乘以恢复载波
产生方法为:
生成单位冲激信号,其频谱为白色。
之后,用2040~2050Hz的带通滤波器对其进行滤波。
之后,与恢复载波相乘。
figure(15)
subplot(2,1,1)
fd=200000;
Wp1=2*2040/fd;%2040~2050Hz带通滤波器
Wp2=2*2050/fd;
Wc1=2*2030/fd;
Wc2=2*2060/fd;
Ap=1;
As=100;
W1=(Wp1+Wc1)/2;
W2=(Wp2+Wc2)/2;
wdth=min((Wp1-Wc1),(Wc2-Wp2));
Nd=ceil(11*pi/wdth)+1;
bd=fir1(Nd,[W1W2]);
zd
(1)=1;%产生单位冲激信号
fori=2:
1:
350000
zd(i)=0;
end
ds=abs(freqz(bd,1,400000,fd))';
ybz=fft(zd,N)*100000;
magz=abs(ybz);
dz=ds.*magz;%冲激信号频谱乘以带通滤波器
dsz=maga+dz;
%magrelz=magrel;
plot(freb,dz(1:
N/2)*2/N,freb,maga(1:
N/2)*2/N);
xlabel('Hz');
axis([1700,2300,0,0.6]);
title('经信道后,加上一窄带强干扰的频谱');
subplot(2,1,2)
rez=real(ifft(dz,N));
ts=(1:
N)/N*4;
yzz=rez.*cos(2*pi*2000*ts);%信号乘以恢复载波
yz=fft(yzz,N);
magyz=abs(yz);
renz=real(ifft(maga,N));
ynzz=renz.*cos(2*