设计五 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函数中的一样。
(3) awgn函数格式:y=awgn(x,snr)y=awgn(x,snr,sigpower)y=awgn(…,powertype)其中,x是信号;snr是信噪比,单位为dB;sigpower是信号功率;powertype指定信噪比snr的单位。
(4) symerr函数格式:[number,ratio]=synerr(x,y)其中,x、y是待比较信号,二元序列;number是x、y对应元素比较后不相同的符号个数;ratio是误符号率。
3.Simulink模块在Simulink模块库中,用于实现FSK信号调制解调的模块分别是“M-FSK Modulator Baseband”和“M-FSK Demodulator Baseband”,图形及参数设置如图5.4所示。
图5.4 FSK信号调制解调模块及参数设置三、设计内容利用Simulink中的“M-FSK Modulator Baseband”模块和“M-FSK Demodulator Baseband”模块建立2FSK调制解调系统模型,并观察调制、解调前后的波形,计算差错率。
解:仿真模块为:仿真结果:上图中第一张图是调制前原始基带信号的波形,第二张图是调制后通带信号的波形,第三张是解调信号的波形图。
设计六 2PSK和2DPSK调制解调系统一、设计目的1.掌握2PSK和2DPSK调制解调原理及MATLAB编程实现方法。
2.利用Simulink设计2PSK和2DPSK信号的调制解调系统。
3.画出2PSK和2DPSK信号的时域波形和频谱图。
二、设计原理1.2PSK和2DPSK调制解调原理2PSK(二进制绝对移相键控)信号是利用载波相位直接表示数字信号,2DPSK(相对移相键控)信号是利用前后相邻载波的相位差来表示数字信号,2DPSK信号可以看作是将绝对码变成相对码后再进行绝对移相而得到的。
2PSK和2DPSK信号的产生方法如图6.1所示。
(a) 模拟调相法产生2DPSK信号(b) 相位选择法产生2PSK信号图6.1 2PSK和2DPSK调制2PSK和2DPSK信号的解调方法如图6.2所示。
图6.2 2PSK和2DPSK信号的解调当0、1等概出现时,2PSK信号和2DPSK信号的功率谱密度为(6.1)2PSK信号的带宽为(6.2)【例6-1】用MATLAB产生独立等概的二进制信源,画出2PSK信号的波形及其功率谱。
解首先产生随机的二进制数字基带信号,然后根据2PSK信号的表达式产生二进制数字调制信号,最后通过FFT变换求解各种调制信号的功率谱。
源程序如下,用到的子函数sigexpand.m和T2F.m见例5-1。
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)); % 数字基带信号的傅里叶变换ht=A*cos(2*pi*fc*t); % 调制信号d_2psk=2*d_NRZ-1; % 双极性基带信号s_2psk=d_2psk(1:L).*ht; % 产生2PSK信号[f,s_2pskf]=T2F(t,s_2psk); % 2PSK信号的傅里叶变换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_2psk);axis([0,10,-1.2,1.2]); xlabel('(c) 2PSK信号');subplot(2,2,4); plot(f,10*log10(abs(s_2pskf).^2/Ts));axis([-fc-4,fc+4,-40,40]); xlabel('(d) 2PSK信号功率谱密度');程序运行结果如图6.3所示。
图6.3 2PSK调制波形及其频谱2.MATLAB函数在MATLAB中,pskmod函数和pskdemod函数分别实现PSK信号的调制和解调,scatterplot函数用于画数字调制信号的星座图。
(1) pskmod函数格式:y=pskmod(x,M)y=pskmod(x,M,ini_phase)其中,x是消息信号;M是消息的符号数,必须是2的整数次幂,消息信号是0~M-1之间的整数;ini_phase是初始相位,单位为rad。