实验二BPSK误码率仿真教学文稿.docx
《实验二BPSK误码率仿真教学文稿.docx》由会员分享,可在线阅读,更多相关《实验二BPSK误码率仿真教学文稿.docx(9页珍藏版)》请在冰豆网上搜索。
![实验二BPSK误码率仿真教学文稿.docx](https://file1.bdocx.com/fileroot1/2022-12/8/29e80876-fb61-4b85-aeca-8428634b5cf9/29e80876-fb61-4b85-aeca-8428634b5cf91.gif)
实验二BPSK误码率仿真教学文稿
实验二-BPSK误码率仿真
实验报告
实验目的
1.掌握BPSK信号调制、相干解调方法;
2.掌握BPSK信号误码率计算。
实验内容
1.BPSK信号的调制;
2.BPSK信号相干解调;
3.不同信噪比环境下BPSK信号误码率计算,并与理论误码率曲线对比。
实验原理
BPSK信号调制原理
1.系统原理
图1BPSK调制系统原理框图
BPSK调制系统的原理框图如图1所示,其中脉冲成形的作用是抑制旁瓣,减少邻道干扰,通常选用升余弦滤波器;加性高斯白噪声模拟信道特性,这是一种简单的模拟;带通滤波器BPF可以滤除有效信号频带以外的噪声,提高信噪比;在实际通信系统中相干载波需要使用锁相环从接收到的已调信号中恢复,这一过程增加了系统的复杂度,同时恢复的载波可能与调制时的载波存在180度的相位偏差,即180°相位反转问题,这使得BPSK系统在实际中无法使用;低通滤波器LPF用于滤除高频分量,提高信噪比;抽样判决所需的同步时钟需要从接收到的信号中恢复,即码元同步,判决门限跟码元的统计特性有关,但一般情况下都为0。
2.参数要求
码元速率1000波特,载波频率4KHz,采样频率为16KHz。
BPSK信号解调原理
BPSK信号的解调方法是相干解调法。
由于PSK信号本身就是利用相位传递信息的,所以在接收端必须利用信号的相位信息来解调信号。
图2中给出了一种2PSK信号相干接收设备的原理框图。
图中经过带通滤波的信号在相乘器中与本地载波相乘,然后用低通滤波器滤除高频分量,在进行抽样判决。
判决器是按极性来判决的。
即正抽样值判为1,负抽样值判为0。
图2BPSK解调系统原理框图
BPSK信号误码率
在AWGN信道下BPSK信号相干解调的理论误码率为:
,其中
为信噪比
。
在大信噪比
条件下,上式可近似为:
实验结果与分析
BPSK信号调制
根据BPSK信号产生原理,用matlab仿真BPSK信号如图3所示。
图3BPSK信号调制
查看BPSK信号功率谱如图4所示。
图4BPSK信号功率谱
BPSK信号解调
根据BPSK信号解调原理,信号乘载波,并进行低通滤波,得到解调后信号如图四所示。
图5BPSK信号解调
可以看出,经过相干解调后波形发生了较大变化,最后经过抽样判决即可恢复出原始信息,如图6所示。
图6抽样判决
BPSK信号误码率仿真
将信道中的信噪比以0.5dB从-10dB到8dB变化,每个信噪比得到一个误码率,最后画出误码率曲线和理论曲线如图7所示。
原始信息采用100000比特数据,因此在信噪比较大误码率较低时,仿真结果与理论结果差距逐渐增大;在小信噪比环境下,与理论值较为接近。
从结果中也可以看出,两条曲线之间总存在大约0.5dB的差距,考虑未抽样或滤波等带来的信噪比损失。
将仿真曲线整体减少0.5dB后可以得到如图8所示曲线。
此时与理论值有较好的重合。
这一点具体原因至今还没弄清楚。
实验心得
本次实验掌握了BPSK信号的产生、调制、解调、抽样判决与误码率计算,结果基本与理论相符合。
但是实验中采用数据量较大,程序运行时间在15s左右,还有很大的改进之处,在以后的实验中要注意程序的简洁性与高效性。
图7误码率仿真
图8修正后误码率仿真
实验代码
%%BPSK信号调制解调误码率分析
clearall;closeall;clc;tic
%383科
%%产生随机比特流作为传输信息
bit_len=100000;
bits=randint(1,bit_len);
%%初始各码元对应的基带波形s(t)
RB=1000;%符号速率
Fs=16000;%采用率
Fd=Fs/RB;%每个码元的采样点数
sig_len=Fd*bit_len;
s=zeros(1,sig_len);%基带信号
fori=1:
bit_len
ifbits(i)==1
s((i-1)*Fd+1:
i*Fd)=ones(1,Fd);
else
s((i-1)*Fd+1:
i*Fd)=-1*ones(1,Fd);
end
end
%%BPSK调制
Fc=4000;%载波频率
carrier=cos(2*pi*Fc/Fs*(1:
sig_len));%载波
wml=zeros(1,length(-10:
0.5:
8));
lilun=zeros(1,length(-10:
0.5:
8));
forj=-10:
0.5:
8
sig=s.*carrier;
sig=awgn(sig,j);
%----------同步检测法解调-------------
m=sig.*carrier;%同步解调
ss=lpf(m,Fs,2*RB);
%----------抽样判决------------
z=ss(Fd/2:
Fd:
sig_len);%抽样
%z=z/max(abs(z));
%z=ceil(z);
z(z>=0)=1;%判决
z(z<0)=0;
a=z-bits;%计算误码率
c=find(a~=0);
wml((j+10)/0.5+1)=length(c)/bit_len;
k=sqrt(10^(j/10));
lilun((j+10)/0.5+1)=0.5*erfc(k);
end
figure
semilogy(-10:
0.5:
8,wml,'r');holdon;
semilogy(-10:
0.5:
8,lilun);holdoff;
gridon;legend('仿真误码率','理论误码率');
xlabel('E/N(dB)');ylabel('Pe');
%%查看调制
figure;
subplot(2,1,1);
plot(0:
1/Fd:
bit_len-1/Fd,s,'r');
holdon;
plot(0:
1/Fd:
bit_len-1/Fd,sig);
holdoff;axis([0,bit_len,-2,2]);xlabel('*Ts');
title('BPSK调制载频4K,波特率1K,采样率16K');
subplot(2,1,2);
plot(0:
1/Fd:
16-1/Fd,s(1:
16*Fd),'r');
holdon;
plot(0:
1/Fd:
16-1/Fd,sig(1:
16*Fd));
holdoff;axis([0,16,-2,2]);xlabel('*Ts');
title('BPSK调制信号:
16个符号');
%%查看功率谱
p1=fftshift(abs(fft(s)));
p2=fftshift(abs(fft(sig)));
x=-Fs/2:
Fs/sig_len:
Fs/2-Fs/sig_len;
figure;
subplot(2,1,1);
plot(x/1000,p1);
xlabel('KHz');
title('基带信号频谱');
subplot(2,1,2);
plot(x/1000,p2);
xlabel('KHz');
title('BPSK信号频谱');
%%查看解调
figure;
subplot(2,1,1);
plot(0:
1/Fd:
bit_len-1/Fd,s,'r');
holdon;
plot(0:
1/Fd:
bit_len-1/Fd,ss);
holdoff;axis([0,bit_len,-2,2]);xlabel('*Ts');
title('BPSK解调信号');
subplot(2,1,2);
plot(0:
1/Fd:
16-1/Fd,s(1:
16*Fd),'r');
holdon;
plot(0:
1/Fd:
16-1/Fd,ss(1:
16*Fd));
holdoff;axis([0,16,-2,2]);xlabel('*Ts');
title('BPSK解调信号:
16个符号');
其中用到的lpf低通滤波器函数为:
functions=lpf(x,fs,fm)
%FIR低通滤波器
%对信号x滤波采样率fs截止频率fm
N=64;
h=fir1(N,fm/(fs/2));
s=conv(x,h);
s=s(N/2+1:
length(x)+N/2);