u1T(t)=
0其他
设发送端发出的信号如上式所示,则接收端带通滤波器输出波形y(t)为
[a+nc(t)]cosωct-ns(t)sinωct发送“1”时
y(t)=
[-a+nc(t)]cosωct-ns(t)sinωct发送“0”时
y(t)经过想干解调(相乘—低通)后,送入抽样判决器的输入波形为
a+nc(t)发送“1”时
x(t)=
-a+nc(t)发送“0”时
由于nc(t)是均值为0,方差为σ2的高斯噪声,所以x(t)的一维概率密度函数为
f1(x)=exp发送“1”时
f2(x)=exp发送“0”时
由最佳判决门限分析可知,在发送“1”和“0”概率相等时,即P
(1)=P(0)时,最佳门限b*=0.此时,发“1”而错判为“0”的概率为
P(0/1)=P(x≦0)=∫0-∞f1(x)dx=1/2erfc(
)
式中:
r=a2/2σ2n
同理,发“0而错判为“1”的概率为
P(1/0)=P(x>0)=∫0-∞f0(x)dx=1/2erfc(
)
2PSK信号的调制器键控法原理方框图如图:
图62PSK信号的调制器原理方框图
说明:
2psk调制器可以采用相乘器,也可以采用相位选择器就模拟调制法而言,与产生2ASK信号的方法比较,只是对s(t)要求不同,因此2PSK信号可以看作是双极性基带信号作用下的DSB调幅信号。
而就键控法来说,用数字基带信号s(t)控制开关电路,选择不同相位的载波输出,这时s(t)为单极性NRZ或双极性NRZ脉冲序列信号均可。
2PSK信号属于DSB信号,它的解调,不再能采用包络检测的方法,只能进行相干解调。
2PSK信号的解调通常采用相干解调法原理框图如图:
图72PSK信号的相干解调原理方框图
图中,假设相干载波的基准相位与2PSK信号的基准一致(通常默认为0相位)。
说明:
由于PSK信号的功率谱中五载波分量,所以必须采用相干解调的方式。
在相干解调中,如何得到同频同相的本地载波是个关键问题。
只有对PSK信号进行非线性变换,才能产生载波分量。
2PSK信号经过带通滤波器得到有用信号,经相乘器与本地载波相乘再经过低通滤波器得到低频信号v(t),再经抽样判决得到基带信号。
2PSK相干解调系统性能原理框图如图:
图82PSK相干解调系统性能原理方框图
由最佳判决门限分析可知,在发送“1”符号和发送“0”符号概率相等时,最佳判决门限b*=0。
此时,发“1”而错判为“0”的概率为
同理,发送“0”而错判为“1”的概率为
故2PSK信号相干解调时系统的总误码率为
在大信噪比条件下,上式可近似为
三、实验过程。
根据代码即可实现全部过程,图形如下:
代码如下:
clc;
clearall;
closeall;
max=15;
s=randint(1,max);%长度为max的随机二进制序列?
Sinput=[];
forn=1:
length(s);
ifs(n)==0;
A=zeros(1,2000);
elses(n)==1;
A=ones(1,2000);
end
Sinput=[SinputA];
end
figure
(1);
subplot(211);
plot(Sinput);
gridon
axis([02000*length(s)-22]);
title('输入信号波形');
Sbianma=encode(s,7,4,'hamming');%汉明码编码后序列?
a1=[];
b1=[];
f=1000;
t=0:
2*pi/1999:
2*pi;
forn=1:
length(Sbianma);
ifSbianma(n)==0;
B=zeros(1,2000);%每个值2000个点
elseSbianma(n)==1;
B=ones(1,2000);
end
a1=[a1B];%s(t),码元宽度2000
c=cos(2*pi*f*t);%载波信号?
b1=[b1c];%与s(t)等长的载波信号,变为矩阵形式?
end
figure
(2);
subplot(211)
plot(a1);
gridon;
axis([02000*length(Sbianma)-22]);title('编码后二进制信号序列');
a2=[];
b2=[];
forn=1:
length(Sbianma);
ifSbianma(n)==0;
C=ones(1,2000);%每个值2000点
d=cos(2*pi*f*t);%载波信号
elseSbianma(n)==1;
C=ones(1,2000);
d=cos(2*pi*f*t+pi);%载波信号
end
a2=[a2C];%s(t),码元宽度2000?
b2=[b2d];%与s(t)等长的载波信号?
end
tiaoz=a2.*b2;%e(t)调制?
figure(3);
subplot(211);
plot(tiaoz);
gridon;
axis([02000*length(Sbianma)-22]);
title('2psk已调制信号');
figure
(2);subplot(212);
plot(abs(fft(a1)));
axis([02000*length(Sbianma)0400]);
title('编码后二进制信号序列频谱');
figure(3);
subplot(212);
plot(abs(fft(tiaoz)));
axis([02000*length(Sbianma)0400]);
title('2psk信号频谱')
%-----------------带有高斯白噪声的信道----------------------?
tz=awgn(tiaoz,10);%信号tiaoz加入白噪声,信噪比为10?
figure(4);
subplot(211);
plot(tz);
gridon
axis([02000*length(Sbianma)-22]);
title('通过高斯白噪声后的信号');
figure(4);
subplot(212);
plot(abs(fft(tz)));
axis([02000*length(Sbianma)0800]);
title('加入白噪声的2psk信号频谱');
%-------------------同步解调-----------------------------?
jiet=2*b1.*tz;%同步解调?
figure(5);
subplot(211);
plot(jiet);
gridon
axis([02000*length(Sbianma)-22]);title('相乘后的信号波形')
figure(5);
subplot(212);
plot(abs(fft(jiet)));
axis([02000*length(Sbianma)0800]);
title('相乘后的信号频率');
%----------------------低通滤波器---------------------------
fp=500;
fs=700;
rp=3;
rs=20;
fn=11025;
ws=fs/(fn/2);
wp=fp/(fn/2);%计算归一化角频率?
[n,wn]=buttord(wp,ws,rp,rs);%计算阶数和截止频率?
[b,a]=butter(n,wn);%计算H(z)?
figure(6);
freqz(b,a,1000,11025);
subplot(211);
axis([040000-1003])
title('lpf频谱图');
jt=filter(b,a,jiet);
figure(7);
subplot(211);
plot(jt);
gridon
axis([02000*length(Sbianma)-22]);
title('经低通滤波器后的信号波形');
figure(7);
subplot(212);
plot(abs(fft(jt)));
axis([02000*length(Sbianma)0800]);title('经低通滤波器后的信号频率');
%-----------------------抽样判决--------------------------?
form=1:
2000*length(Sbianma);
ifjt(m)<0;
jt(m)=1;
elsejt(m)>0;
jt(m)=0;
end
end
figure(8);
subplot(211);
plot(jt)
gridon
axis([02000*length(Sbianma)-22]);
title('经抽样判决后信号jt(t)波形')
figure(8);
subplot(212);
plot(abs(fft(jt)));
axis([02000*length(Sbianma)0800]);
title('经抽样判决后的信号频谱');
gridon;
n=500:
2000:
2000*length(Sbianma);
a5=[];
a5=[a5jt(n)];
s1=decode(a5,7,4,'hamming');
a6=[];
forn=1:
length(s1);
ifs1(n)==0;
G=zeros(1,2000);
elses1(n)==1;
G=ones(1,2000);
end
a6=[a6G];
end
figure
(1);
subplot(212);
plot(a6);
gridon
axis([02000*length(s)-22]);
title('汉明码译码后的波形')
gridon
%------------------2psk误码率仿真-------------------------?
snrdB_min=-10;
snrdB_max=10;
snrdB=snrdB_min:
1:
snrdB_max;
Nsymbols=200;
snr=10.^(snrdB/10);
h=waitbar(0,'SNR?
Iteration');
len_snr=length(snrdB);
forj=1:
len_snr
waitbar(j/len_snr);
sigma=sqrt(1/(2*snr(j)));
error_count=0;
fork=1:
Nsymbols
d=round(rand
(1));%随即数据?
x_d=2*d-1;%0,1分别转化为-1,1
n_d=sigma*randn
(1);%加噪
y_d=x_d+n_d;%加噪后接收?
ify_d>0
d_est=1;
else
d_est=0;
end
if(d_est~=d)
error_count=error_count+1;
end
end
errors(j)=error_count;
end
ber_sim=errors/Nsymbols;
ber_theor=(erfc(sqrt(snr))).**erfc(sqrt(snr)));
figure(9);
semilogy(snrdB,ber_theor,'-',snrdB,ber_sim,'*');
axis([snrdB_minsnrdB_max1]);
xlabel('信噪比');
ylabel('误码率');
title('2psk信噪比误码率关系图');
legend('理论值','实际值')