完整版BPSKDPSK调制.docx
- 文档编号:27688558
- 上传时间:2023-07-04
- 格式:DOCX
- 页数:29
- 大小:319.68KB
完整版BPSKDPSK调制.docx
《完整版BPSKDPSK调制.docx》由会员分享,可在线阅读,更多相关《完整版BPSKDPSK调制.docx(29页珍藏版)》请在冰豆网上搜索。
完整版BPSKDPSK调制
卫星通信仿真作业BPSK调制/解调系统及性能分析
1、实验原理
1.1BPSK调制原理
BPSK(binaryphaseshiftkeying)二进制移相键控,作为一种数字调制方式,用已调信号载波的0°和180°分别表示二进制数字基带信号的1和0。
BPSK信号的时域表达式为
其中的
为双极性码,取值为±1。
这样的话,当发送的码元为+1时,输出波形的初始相位为0;而当发送码元为-1时,输出波形的初始相位为180°。
1.2BPSK解调原理
BPSK解调有两种方式,一种是相干解调,一种是非相干解调,即差分解调。
1.2.1相干解调
相干解调的基本原理是将BPSK调制信号直接与载波进行相乘,然后通过低通滤波器进行滤波,最终进行抽样判决即可。
1.2.2差分解调
差分解调不能直接应用与BPSK,它是对DPSK调制的一种解调方式。
而要进行差分解调,首先对输入信源进行DPSK调制。
要进行DPSK调制,首先要对输入码元进行码形变换,然后对变换后的码元进行BPSK调制即可。
而对输入码元进行码形变换就是将输入的绝对码变换为相对码。
它们之间的关系可由公式导出
其中
为原信源码元,
为差分编码后的变换码元。
差分解调的过程是将DPSK调制后的波形与它做一个码元宽度时间延迟后的波形进行相乘,然后通过低通滤波器进行滤波,最终进行抽样判决。
1.3BPSK调制解调系统整体框图
1.4DPSK调制解调系统整体框图
2、实验过程
2.1BPSK系统的调制/解调全过程
2.1.1参数设定
在对BPSK系统调制解调全过程的仿真时,设定如下参数:
码元长度:
10
采样率:
100倍码元速率,也就是一个码元采样100个点
信号比:
7dB(也就是噪声的增益为0.1)
波形成型滤波器参数:
使用升余弦滤波器,滚降系数0.5。
低通滤波器参数:
5阶椭圆滤波器,通带最大衰减为0.5dB,阻带衰减为60dB,截止频率为800Hz。
以下是各个过程的波形:
2.1.2产生长度为10的随机二进制信源序列
序列的波形与频谱图下面两图所示
2.1.2通过升余弦滤波器,产生适合在信道中传输的波形,如下图所示
2.1.3产生一个频率为4800Hz的载波信号,如下图所示
2.1.4在不加噪声的情况下,码元进行BPSK调制后的波形以及调制后波形的频谱特性
2.1.5产生高斯白噪声,高斯白噪声的时序和频域波形如下图
2.1.6调制波形加上白噪声后的时域和频域波形如下图
2.1.7相干解调的过程
先将调制波形与载波进行相乘,结果的时域和频域波形如下
2.1.8低通滤波器的冲激响应已经频率响应如下图所示
2.1.9相干解调后的波形通过低通滤波器后的波形如下图所示
2.1.10最终进行抽样判决后,波形与原码元序列波形对比如下图所示
2.2DPSK系统的调制/解调全过程
参数设定和BPSK相同。
以下为各个过程的波形
2.2.1首先对码元进行波形变换,变换后的波形与原码元对比如下图所示。
注意,这里将相对码的第一个码元设置为“1”。
2.2.2对码形变换后的码元通过波形成型滤波器后的波形如下图
2.2.3对上面的码字进行BPSK调制,即对原码字进行DPSK调制后的时域和频域波形如下图
2.2.4对调制波形加扰后的时域和频域波形如下
2.2.5非相干解调将调制波形延迟一个码元时间,然后相乘,过程的三种波形以及相乘后波形的频谱如下图所示
2.2.6差分解调后的波形通过低通滤波器后的波形如下图
2.2.7最终经过抽样判决后的码元序列和原信源码元序列如下图
2.3对误码率分析
2.3.1参数设定
在对误码率进行分析的时候,由于要检测误码率性能,因此在参数设定上和之前相比降低了采样率,增加了码元长度。
码元长度:
10000
采样率:
16倍码元速率,也就是一个码元采样16个点
信号比:
从3dB到9dB,步长为0.5dB
通过对相干解调和非相干解调误码率分析后的误码率曲线如下
3、实验结论
3.1解调的性能与滤波器的参数选择有很大的关系。
3.2相干解调的性能好与差分解调的性能。
3.3实际计算中,由于码元长度的限制,误码率的计算可能不够精确,而由于码元长度的限制受制于计算机的性能和内存的大小,因此不能做到太大。
4.附录:
源代码
4.1BPSK/DPSK调制过程
clc
clear
clf
i=0;
%参数设定
fs=4800*50;%采样频率
fc=4800;%载波频率
t=0:
0.01:
9.99;
n=t*100;%1000个采样点
N=1000;%N=1000
%产生比特信号
x=round(rand(1,10))
m=x(ceil(t+0.001));
i=i+1;
figure(i);
plot(t,m,'.-');
title('产生长度为10的随机二进制比特序列');
xlabel('码元序号');
ylabel('码元值');
axis([0,10,-1,2]);
gridon;
%码元的频谱
f=n*fs/N;
m_f=fft(m,N);
i=i+1;
figure(i);
stem(f(1:
N/10),abs(m_f(1:
N/10)));
title('信源码元的频谱')
xlabel('频率/Hz');
ylabel('幅度');
%波形成型
b2=rcosfir(0.5,10,100,1);
[h,w]=freqz(b2,1,N);
m_f=fft(m,N);
m1=m_f.*abs(h');
m2=ifft(m1);
m2=real(m2)/100;
i=i+1;
figure(i);
plot(t,m2)
axis([0,10,-0.5,1.5]);
gridon;
title('码元经过波形成型滤波器')
%产生载波信号
tc=n/fs;%采样点对于采样时刻
carry=sin(2*pi*fc*tc);
i=i+1;
figure(i);
plot(t,carry);
title('产生频率是4800Hz,初相是0的载波');
xlabel('码元序号');
ylabel('载波幅度');
axis([0,10,-2,2]);
gridon;
%BPSK调制
bpsk=carry.*(m2*2-1);%如果码元是1,则波形即为载波,如果码元是0,则波形是反向,因此*(-1)
i=i+1;
figure(i);
subplot(2,1,1)
plot(t,m,'.-');
title('产生长度为10的随机二进制比特序列');
xlabel('码元序号');
ylabel('码元值');
axis([0,10,-1,2]);
gridon;
subplot(2,1,2)
plot(t,bpsk);
title('不加噪声BPSK调制波形');
xlabel('码元序号');
ylabel('调制波形幅度');
axis([0,10,-2,2]);
gridon;
%BPSK调制波形频谱
bpsk_f=fft(bpsk,N);
i=i+1;
figure(i);
stem(f(1:
N/20),abs(bpsk_f(1:
N/20)));
title('BPSK调制波形频谱')
xlabel('频率/Hz');
ylabel('幅度')
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%产生高斯白噪声
noise=0.1*randn(1,1000);
i=i+1;
figure(i);
plot(t,noise);
title('高斯白噪声');
axis([0,10,-2,2]);
gridon;
%高斯白噪声频谱
noise_f=fft(noise,N);
i=i+1;
figure(i);
stem(f(1:
N/1),abs(noise_f(1:
N/1)));
title('高斯白噪声频谱')
xlabel('频率/Hz');
ylabel('幅度')
%BPSK加噪声波形
bpsk_n=bpsk+noise;
i=i+1;
figure(i);
plot(t,bpsk_n);
title('加高斯白噪声后的BPSK调制波形');
axis([0,10,-2,2]);
gridon;
%BPSK加噪声波形频谱
bpsk_nf=fft(bpsk_n,N);
i=i+1;
figure(i);
stem(f(1:
N/20),abs(bpsk_nf(1:
N/20)));
title('BPSK加噪声波形频谱')
xlabel('频率/Hz');
ylabel('幅度')
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%相干解调
bpsk_1=bpsk_n.*carry;%将调制波形先和载波相乘
i=i+1;
figure(i);
plot(t,bpsk_1);
title('调制波形和载波相乘');
xlabel('码元序号');
ylabel('幅度');
axis([0,10,-2,2]);
gridon;
%调整波形与载波相乘后的频域
bpsk_1f=fft(bpsk_1,N);
i=i+1;
figure(i);
stem(f(1:
N/20),abs(bpsk_1f(1:
N/20)));
title('调制波形与载波相乘的频域波形');
xlabel('频率(Hz)');
ylabel('幅度');
%低通滤波
%配置一个低通滤波器,5阶,通带最大衰减为0.5dB,阻带衰减为60dB,截至频率为800Hz。
[B_lp,A_lp]=ellip(5,0.5,60,800*2/100000);
%低通滤波器的冲激响应
i=i+1;
figure(i);;
dimpulse(B_lp,A_lp);
title('低通滤波器的冲激响应');
axis([0,1000,-0.02,0.02]);
%低通滤波器的频率响应
i=i+1;
figure(i);;
w=0:
0.1:
2*pi*0.3;
freqz(B_lp,A_lp,w);
title('低通滤波器的频率响应');
%相干解调通过低通滤波器
bpsk_2=filter(B_lp,A_lp,bpsk_1);
i=i+1;
figure(i);
plot(t,bpsk_2);
title('相干解调通过低通滤波器');
xlabel('码元序号');
ylabel('幅度');
axis([0,10,-2,2]);
gridon;
%抽样判决
forj=1:
10
if(bpsk_2(j*100)>0)
y(j)=1;
else
y(j)=0;
end
end
n=y(ceil(t+0.001));
i=i+1;
figure(i);
subplot(2,1,1)
plot(t,m,'.-');
title('信源序列');
axis([0,10,-1,2]);
gridon;
subplot(2,1,2)
plot(t,n,'.-');
title('抽样判决后序列');
axis([0,10,-1,2]);
gridon;
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%差分解调
%先进行码形变换,把绝对码变换为相对码
x1
(1)=1;%相对码先对第一个码元定义为‘1’
forj=1:
10
%x1(i)=mod((x1(i-1)+x(i)),2);
x1(j+1)=mod((x1(j)+x(j)+1),2);%差分编码
end
t1=0:
0.01:
10.99;
m1=x1(ceil(t1+0.001));
i=i+1;
figure(i);
subplot(2,1,1)
plot(t,m,'.-');
title('原码元(绝对码)')
axis([-1,10,-1,2]);
gridon;
subplot(2,1,2)
plot(t1-1,m1,'.-');
title('差分编码(相对码)')
axis([-1,10,-1,2]);
gridon;
%波形成型
%波形成型
b2=rcosfir(0.5,10,100,1);
[h,w]=freqz(b2,1,N+100);
m1_f=fft(m1,N+100);
m11=m1_f.*abs(h');
m21=ifft(m11);
m21=real(m21)/100;
i=i+1;
figure(i);
plot(t1,m21)
axis([0,10,-0.5,1.5]);
gridon;
title('差分编码成形')
%对相对码进行BPSK调制,也就是对原码元进行DPSK调制
dpsk=[carry(1:
100),carry].*(m21*2-1);
i=i+1;
figure(i);
plot(t1-1,dpsk);
title('DPSK调制波形');
axis([-1,10,-2,2]);
gridon;
%DPSK调制波形频谱
dpsk_f=fft(dpsk,N);
i=i+1;
figure(i);
stem(f(1:
N/20),abs(dpsk_f(1:
N/20)));
title('DPSK调制波形频谱')
xlabel('频率/Hz');
ylabel('幅度')
%DPSK调制后加噪声
noise1=0.1*randn(1,1100);
dpsk_n=dpsk+noise1;
i=i+1;
figure(i);
plot(t1-1,dpsk_n);
title('加高斯白噪声后的DPSK调制波形');
axis([-1,10,-2,2]);
gridon;
%DPSK加噪声波形频谱
dpsk_nf=fft(dpsk_n,N);
i=i+1;
figure(i);
stem(f(1:
N/20),abs(dpsk_nf(1:
N/20)));
title('BPSK加噪声波形频谱')
xlabel('频率/Hz');
ylabel('幅度')
%对DPSK调制波形进行差分解调
dpsk_1=dpsk_n;%原有的DPSK调制波形
dpsk_2=[dpsk_n(101:
1100),zeros(1,100)];%差分移位的DPSK调制波形
i=i+1;
figure(i);
subplot(3,1,1)
plot(t1,dpsk_1);
title('原DPSK调制波形');
axis([0,11,-2,2]);
gridon;
subplot(3,1,2)
plot(t1,dpsk_2);
title('移位DPSK调制波形');
axis([0,11,-2,2]);
gridon;
dpsk_3=dpsk_1.*dpsk_2;%两个DPSK调制波形相乘
subplot(3,1,3)
plot(t1,dpsk_3);
title('相乘后波形');
axis([0,11,-2,2]);
gridon;
%差分解调波形的频域
%f=n*fs/N;
dpsk_3f=fft(dpsk_3(1:
1000),N);
i=i+1;
figure(i);
stem(f(1:
N/20),abs(dpsk_3f(1:
N/20)));
title('差分解调波形的频域');
xlabel('频率(Hz)');
ylabel('幅度');
%低通滤波
%配置一个低通滤波器,5阶,通带最大衰减为0.5dB,阻带衰减为60dB,截至频率为800Hz。
[B_lp,A_lp]=ellip(5,0.5,60,800*2/100000);
dpsk_4=filter(B_lp,A_lp,dpsk_3(1:
1000));
i=i+1;
figure(i);
plot(t,dpsk_4);
title('差分解调通过低通滤波器');
xlabel('码元序号');
ylabel('幅度');
axis([0,10,-2,2]);
gridon;
%抽样判决
forj=1:
10
if(dpsk_4(j*100)>0)
y1(j)=1;
else
y1(j)=0;
end
end
n1=y1(ceil(t+0.001));
i=i+1;
figure(i);
subplot(2,1,1)
plot(t,m,'.-');
title('信源序列');
axis([0,10,-1,2]);
gridon;
subplot(2,1,2)
plot(t,n1,'.-');
title('差分解调后序列');
axis([0,10,-1,2]);
gridon;
4.2误码率分析过程
clear
%参数设定
fc=4800;%载波频率
rb=2400;%码元速率
fs2rb=16;%采样频率与码元速率的比值
fs=fs2rb*rb;%采样频率
M_num=100000;%码元长度
N_num=fs2rb*M_num;%采样点数
t=0:
1/fs2rb:
M_num-1/fs2rb;%码元的时间上的定义,一个时间单位对应一个码元
n=fs2rb*t;%对应采样点
pe1=[];
pe1th=[];
pe2=[];
pe2th=[];
%产生码元
Mcode=2*round(rand(1,M_num))-1;%产生一个随机的码元序列M,取值为正负1,非归零码
Msam=Mcode(ceil(t+1/fs2rb));%码元序列M对应的采样值
%figure;
%stem(Mcode);
%title('码元序列M');
%先进行码形变换,把绝对码变换为相对码
Mshift
(1)=1;%相对码先对第一个码元定义为‘1’
forj=1:
M_num
Mshift(j+1)=abs(Mshift(j)+Mcode(j))-1;%差分编码
end
t1=0:
1/fs2rb:
M_num+1-1/fs2rb;
Mshiftsam=Mshift(ceil(t1+0.1/fs2rb));
%产生载波信号
phase=2*pi*fc/rb*t;%载波对应的相位
carry=cos(phase);%载波
%figure
%plot(t,carry);
%title('载频');
forr1_db=3:
0.5:
9
%高斯白噪声
NOISE=1/sqrt(2*10^(r1_db/10));%噪声增益
noise=NOISE*randn(1,N_num);%产生噪声
%BPSK调制
bpsk=Msam.*carry;%BPSK调制
bpsk_n=bpsk+noise;%通过信道加噪声
%figure
%plot(t,bpsk_n);
%相干解调
bpsk1=bpsk_n.*carry;%调制波形与载频相乘
%低通滤波器设计
f2=[00.1250.41];w2=[10.950.10];
b2=fir2(30,f2,w2);
[h2,w2]=freqz(b2,1,512);
bpsk2=filter(b2,1,bpsk1);%低通滤波
%判决
fori=1:
M_num
if(bpsk2(i*fs2rb)>0)
Mcode1(i)=1;
else
Mcode1(i)=-1;
end
end
error1=sum(abs(Mcode1-Mcode))/2;
pe1=[pe1,error1/M_num];
pe1th=[pe1th,0.5*erfc(sqrt(2*10^(r1_db/10)))];
%差分解调
%2DPSK调制
dpsk=[carry(1:
fs2rb),carry].*Mshiftsam;
%DPSK波形加噪声
noise1=NOISE*randn(1,N_num+fs2rb);
dpsk_n=dpsk+noise1;
%2DPSK调制波形与延迟波形相乘
dpsk_1=[dpsk_n(fs2rb+1:
N_num+fs2rb),zeros(1,fs2rb)];%DPSK调制波形延迟一个码元间隔
dpsk1=dpsk_1.*dpsk_n;
dpsk1=dpsk1(1:
N_num);
%低通滤波
dpsk2=filter(b2,1,dpsk1);
%判决
fori=1:
M_num
if(dpsk2(i*fs2rb)>0)
Mcode2(i)=1;
else
Mcode2(i)=-1;
end
end
error2=sum(abs(Mcode2-Mcode))/2
pe2=[pe2,error2/M_num];
pe2th=[pe2th,0.5*exp(-10^(r1_db/10))];
end
r1_db=[3:
0.5:
9];
figure;
semilogy(r1_db,pe1,'-x');
holdon;
semilogy(r1_db,pe1th,'-o')
legend('实际','理论')
title('相干解调误码率分析');
xlabel('SNR/dB');
ylabel('Pe');
figure;
semilogy(r1_db,pe2,'-x');
holdon;
semilogy(r1_db,pe2th,'-o')
legend('实际','理论')
title('差分解调误码率分析');
xlabel('SNR/dB');
ylabel('Pe');
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 完整版 BPSKDPSK 调制
![提示](https://static.bdocx.com/images/bang_tan.gif)