一.2FSK调制原理:
1、2FSK信号的产生:
2FSK是利用数字基带信号控制在波的频率来传送信息。例如,1码用频率f1来传输,0码用频率f2来传输,而其振幅和初始相位不变。故其表示式为
Acos(t)发送\"1\"时 2FSK(t)Acos(12t12) 发送\"0\"时
πf1和22πf2为两个不同的式中,假设码元的初始相位分别为1和2;12码元的角频率;幅度为A为一常数,表示码元的包络为矩形脉冲。 2FSK信号的产生方法有两种:
(1)模拟法,即用数字基带信号作为调制信号进行调频。如图1-1(a)所示。 (2)键控法,用数字基带信号g(t)及其反g(t)相分别控制两个开关门电路,以此对两个载波发生器进行选通。如图1-1(b)所示。
这两种方法产生的2FSK信号的波形基本相同,只有一点差异,即由调频器产生的2FSK信号在相邻码元之间的相位是连续的,而键控法产生的2FSK信号,则分别有两个的频率源产生两个不同频率的信号,故相邻码元的相位不一定是连续的。
(a) (b)
2FSK信号产生原理图
由键控法产生原理可知,一位相位离散的2FSK信号可看成不同频率交替发送的两个2ASK信号之和,即
2FSK(t)g(t)cos(1t1)g(t)·cos(2t2)
[ang(tnTs)]cos(1t1)[ang(tnTs)]cos(2t2)nn
其中g(t)是脉宽为Ts的矩形脉冲表示的NRZ数字基带信号。
an0,概率P1,概率1P
an0,概率1P1,概率P
其中,an为an的反码,即若an1,则an0;若an0,则an1。
2、2FSK信号的频谱特性:
由于相位离散的2FSK信号可看成是两个2ASK信号之和,所以,这里可以直接应用2ASK信号的频谱分析结果,比较方便,即
S2FSK(f)S2ASK1(f)S2ASK2(f)2222ST[|Sa(ff)T||Sa(ff)T||Sa(ff)T||Sa(ff)T|] 1S1S2S2S16116[(ff1)(ff1)(ff2)(ff2)]
2FSK信号带宽为 B2FSK|f1f2|2fs|f1f2|2Rs 式中,Rsfs是基带信号的带宽。
二.2FSK解调原理:
仿真是基于非相干解调进行的,即不要求载波相位知识的解调和检测方法。 其非相干检测解调框图如下
M信号非相干检测解调框图 当k=m时检测器采样值为:
当k≠m时在样本
和
中的信号分量将是0,只要相继频率之间的频率间隔是
,就与相移值无关了,于是其余相关器的输出仅有噪声组成。
其中噪声样本{}和{}都是零均值,具有相等的方差
对于平方律检测器而言,即先计算平方包络
并取其最大值信号。
二进制FSK系统的理论误码率与信噪比的关系给出如下
2FSK具体设计调制与解调
2FSK
采用键控法调制,相干解调法进行解调
程序代码如下:
Fc=10; %载频
Fs=100; %系统采样频率 Fd=1; %码速率 N=Fs/Fd; df=10;
numSymb=25;%进行仿真的信息代码个数 M=2; %进制数 SNRpBit=60;%信噪比 SNR=SNRpBit/log2(M); seed=[12345 54321]; numPlot=25;
%产生25个二进制随机码
x=randsrc(numSymb,1,[0:M-1]);%产生25个二进制随机码 figure(1)
stem([0:numPlot-1],x(1:numPlot),'bx'); title('二进制随机序列') xlabel('Time');
ylabel('Amplitude'); %调制
y=dmod(x,Fc,Fd,Fs,'fsk',M,df); numModPlot=numPlot*Fs; t=[0:numModPlot-1]./Fs; figure(2)
plot(t,y(1:length(t)),'b-'); axis([min(t) max(t) -1.5 1.5]); title('调制后的信号') xlabel('Time');
ylabel('Amplitude');
%在已调信号中加入高斯白噪声 randn('state',seed(2));
y=awgn(y,SNR-10*log10(0.5)-10*log10(N),'measured',[],'dB');%在已调信号中加入高斯白噪声 figure(3)
plot(t,y(1:length(t)),'b-');%画出经过信道的实际信号 axis([min(t) max(t) -1.5 1.5]);
title('加入高斯白噪声后的已调信号') xlabel('Time');
ylabel('Amplitude'); %相干解调
z1=ddemod(y,Fc,Fd,Fs,'fsk',M,df); %带输出波形的相干M元频移键控解调 figure(4)
stem([0:numPlot-1],x(1:numPlot),'bx'); hold on;
stem([0:numPlot-1],z1(1:numPlot),'ro'); hold off;
axis([0 numPlot -0.5 1.5]);
title('相干解调后的信号原序列比较')
legend('原输入二进制随机序列','相干解调后的信号') xlabel('Time');
ylabel('Amplitude'); %误码率统计
[errorSym ratioSym]=symerr(x,z1); figure(6)
simbasebandex([0:1:5]);
title('相干解调后误码率统计')