通信系统仿真作业(设计五-设计七)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
设计五 2FSK调制解调系统
一、设计目的
1.掌握2FSK信号的调制解调原理及MATLAB编程实现方法。
2.利用Simulink设计2FSK信号的调制解调系统。
3.画出2FSK信号的时域波形和频谱图。
二、设计原理
1.2FSK信号的调制解调原理
数字移频键控是用载波的频率来传送数字消息,或者说用所传送的数字消息控制载波的频率。2FSK信号便是符号“1”对应于载频,而符
号“0”对应于载频(与不同的另一载频)的已调波形,而且与之间的改变是瞬间完成的。从原理上讲,数字调频可用模拟调频法来实现,也可用键控法来实现,如图5.1所示。
图5.1 2FSK信号的调制
根据以上对2FSK信号的调制原理的分析,已调信号的数字表达式可以表示为
(5.1)
其中,是单个矩形脉冲,脉宽为,且
2FSK信号的常用解调方法采用如图5.2所示的非相干检测法和相干检测法。这里的取样判决器是判定哪一个输入样值大,此时可以不专门设置门限电平。
(a) 非相干方式
(b) 相干方式
图5.2 2FSK信号的解调
2FSK调制属于非线性调制,其频谱特性的研究常用把2FSK信号看成是两个2ASK信号相叠加的方法。2FSK信号的功率谱密度为:
(5.2)
传输2FSK信号所需频带约为
(5.3)
【例5-1】用MATLAB产生独立等概的二进制信源,画出2FSK信号的波形及其功率谱。
解首先产生随机的二进制数字基带信号,然后根据2FSK信号的表达式产生二进制数字调制信号,最后通过FFT变换求解调制信号的功率谱。源程序如下:
A=1; % 调制信号幅度
fc=2; % 载波频率
N_sample=8; % 每码元的采样点数
N=500; % 码元数目
Ts=1; % 采样间隔
dt=Ts/fc/N_sample; % 波形采样间隔
t=0:dt:N*Ts-dt; % 定义时间序列
L=length(t); % 计算时间序列长度
% 产生二进制信源
d=sign(randn(1,N));
dd=sigexpand((d+1)/2,fc*N_sample);
gt=ones(1,fc*N_sample);
d_NRZ=conv(dd,gt);
[f,d_NRZf]=T2F(t,d_NRZ(1:L)); % 数字基带信号的傅里叶变换
sd_2fsk=2*d_NRZ-1; % 双极性基带信号
s_2fsk=A*cos(2*pi*fc*t+2*pi*sd_2fsk(1:L).*t); % 产生2FSK信号
[f,s_2fskf]=T2F(t,s_2fsk); % 2FSK信号的傅里叶变换
figure(1)
subplot(2,2,1); plot(t,d_NRZ(1:L));
axis([0,10,0,1.2]); xlabel('(a) 输入信号');
subplot(2,2,2); plot(f,10*log10(abs(d_NRZf).^2/Ts));
axis([-2,2,-40,40]); xlabel('(b) 输入信号功率谱密度');
subplot(2,2,3); plot(t,s_2fsk);
axis([0,10,-1.2,1.2]); xlabel('(c) 2FSK信号');
subplot(2,2,4); plot(f,10*log10(abs(s_2fskf).^2/Ts));
axis([-fc-4,fc+4,-40,40]); xlabel('(d) 2FSK信号功率谱密度');
%---------------------------------------------------------------------------------------------------------------
function [out]=sigexpand(d,M)
% 将输入的序列扩展成间隔为N-1个0的序列
N=length(d);
out=zeros(M,N);
out(1,:)=d;
out=reshape(out,1,M*N);
%---------------------------------------------------------------------------------------------------------------
function [f,sf]=T2F(t,st)
% 利用FFT对信号进行傅里叶变换
% t,st分别为输入时间和信号
% f,sf分别为输出频率和信号频谱
dt=t(2)-t(1);
T=t(end);
df=1/T;
N=length(st);
f=-N/2*df:df:N/2*df-df;
sf=fft(st);
sf=T/N*fftshift(sf);
程序运行结果如图5.3所示。
图5.3 2FSK信号的波形及其频谱
2.MATLAB函数
在MATLAB中,fskmod函数和fskdemod函数分别实现FSK信号的调制和FSK信号的非相干解调,awgn函数实现在信号中加入高斯白噪声,symerr函数实现错误符号数的统计和误符号率的计算。
(1) fskmod函数
格式:y=fskmod(x,M,freq_sep,nsamp)
y=fskmod(x,M,freq_sep,nsamp,F s)
其中,x是消息信号;M是消息的符号数,必须是2的整数次幂,消息信号是0~M-1之间的整数;freq_sep是两载波频率之间的频率间隔,单位为Hz;nsamp是输出信号y中每符号的采样数,必须是大于1的正整数;F s是采样频率,freq_sep和M必须满足(M-1)*freq_sep<=F s。
(2) fskdemod函数
格式:z=fskdemod(y,M,freq_sep,nsamp)
z=fskdemod(y,M,freq_sep,nsamp,F s)
其中,y是已调信号;其余参数与fskmod函数中的一样。