FSK调制解调原理及设计
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
一.2FSK 调制原理:
1、2FSK 信号的产生:
2FSK 是利用数字基带信号控制在波的频率来传送信息。例如,1码用频率f1来传输,0码用频率f2来传输,而其振幅和初始相位不变。故其表示式为
式中,假设码元的初始相位分别为1θ和2θ;112
f π=ω和222f π=ω为两个不同的码元的角频率;幅度为A 为一常数,表示码元的包络为矩形脉冲。
2FSK 信号的产生方法有两种:
(1)模拟法,即用数字基带信号作为调制信号进行调频。如图1-1(a )所示。
(2)键控法,用数字基带信号)(t g 及其反)(t g 相分别控制两个开关门电路,以此对两个载波发生器进行选通。如图1-1(b )所示。
这两种方法产生的2FSK 信号的波形基本相同,只有一点差异,即由调频器产生的2FSK 信号在相邻码元之间的相位是连续的,而键控法产生的2FSK 信号,则分别有两个独立的频率源产生两个不同频率的信号,故相邻码元的相位不一定是连续的。
(a) (b)
2FSK 信号产生原理图
由键控法产生原理可知,一位相位离散的2FSK 信号可看成不同频率交替发送的两个2ASK 信号之和,即
其中)(t g 是脉宽为s T 的矩形脉冲表示的NRZ 数字基带信号。 其中,n a 为n a 的反码,即若1=n a ,则0=n a ;若0=n a ,则1=n a 。
2、2FSK 信号的频谱特性:
由于相位离散的2FSK 信号可看成是两个2ASK 信号之和,所以,这里可以直接应用2ASK 信号的频谱分析结果,比较方便,即
2FSK 信号带宽为 s s F S K R f f f f f B 2||2||21212+-=+-≈ 式中,s s f R =是基带信号的带宽。 二.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('相干解调后误码率统计')