2FSK调制解调原理及设计.docx
《2FSK调制解调原理及设计.docx》由会员分享,可在线阅读,更多相关《2FSK调制解调原理及设计.docx(12页珍藏版)》请在冰豆网上搜索。
2FSK调制解调原理及设计
一.2FSK调制原理:
1、2FSK信号的产生:
2FSK是利用数字基带信号控制在波的频率来传送信息。
例如,1码用频率f1来传输,0码用频率f2来传输,而其振幅和初始相位不变。
故其表示式为
式中,假设码元的初始相位分别为
和
;
和
为两个不同的码元的角频率;幅度为A为一常数,表示码元的包络为矩形脉冲。
2FSK信号的产生方法有两种:
(1)模拟法,即用数字基带信号作为调制信号进行调频。
如图1-1〔a〕所示。
(2)键控法,用数字基带信号
及其反
相分别控制两个开关门电路,以此对两个载波发生器进行选通。
如图1-1〔b〕所示。
这两种方法产生的2FSK信号的波形基本相同,只有一点差异,即由调频器产生的2FSK信号在相邻码元之间的相位是连续的,而键控法产生的2FSK信号,则分别有两个独立的频率源产生两个不同频率的信号,故相邻码元的相位不一定是连续的。
(a)(b)
2FSK信号产生原理图
由键控法产生原理可知,一位相位离散的2FSK信号可看成不同频率交替发送的两个2ASK信号之和,即
其中
是脉宽为
的矩形脉冲表示的NRZ数字基带信号。
其中,
为
的反码,即假设
,则
;假设
,则
。
2、2FSK信号的频谱特性:
由于相位离散的2FSK信号可看成是两个2ASK信号之和,所以,这里可以直接应用2ASK信号的频谱分析结果,比较方便,即
2FSK信号带宽为
式中,
是基带信号的带宽。
二.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=[1234554321];
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.51.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.51.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');
holdon;
stem([0:
numPlot-1],z1(1:
numPlot),'ro');
holdoff;
axis([0numPlot-0.51.5]);
title('相干解调后的信号原序列比较')
legend('原输入二进制随机序列','相干解调后的信号')
xlabel('Time');
ylabel('Amplitude');
%误码率统计
[errorSymratioSym]=symerr(x,z1);
figure(6)
simbasebandex([0:
1:
5]);
title('相干解调后误码率统计')