MFSK的matlab仿真(以4FSK为例)

        FSK调制是基本的数字频带传输,本文将大致介绍FSK,并以4FSK为例,利用相干解调的方法,做一个matlab仿真。

        参考教材:《通信原理(第二版)》 李晓峰 周宁 邵怀宗 朱立东 编著

一、2FSK基本原理

1.2FSK

        2FSK利用两个频率(f1和f2)的正弦波来传送符号1和0,其信号可以表述为

s_{2FSK}(t)=\begin{cases} & \text{ if } a_n=1\: \; Am(t)\cos (2\pi f_1t) \\ & \text{ if } a_n=0\; \, Am(t)cos (2\pi f_0t) \end{cases}

         实现电路可以是简单的电子开关。

        其实,2FSK信号是两个频率的正弦波的交错组合,可以表示为

s_{2FSK}(t)=Am(t)\cos (2\pi f_1t)+A\overline{m(t)}\cos (2\pi f_0t)

        式中,A为载波的振幅,m(t)为符号序列{a_n}的单极性矩形NRZ基带信号,\overline{m(t)}=1-m(t)为反相信号,这表明2FSK信号可以看作两路互补的OOK信号的叠加。

2.相位连续性

        由之前的公式产生的信号在1和0码转换处很可能是不连续的,不连续的信号会占据很多频带。产生连续香味的FSK信号的一种方法是合理选择T_b,f_1,f_0的取值,可以用桑德FSK信号参数

f_1=(k+1)R_b\: \: \: \: \: \: \: \: \: \: \: \: f_0=kR_b

        另一种方法是按照模拟FM的方法,通过压控振荡器(VCO) 来产生,如图所示,信号可以表示为

s_{2 \mathrm{FSK}}(t)=A \cos \left[2 \pi f_{\mathrm{c}} t+D_{f} \int_{-\infty}^{t} m(\tau) \mathrm{d} \tau\right]

        其中f_c=(f_1+f_2)/2,D_f是调频器的频偏常量。

3.包络检波法

        2FSK常用的解调方法是包络检波法,属于非相干解调,接收框图如下图所示,它实际上是工作在f_1f_0上的两个互补的OOK接收系统的组合。该系统的要点是

        (1)上支路接收的Am(t)\cos (2\pi f_1t)的部分,下支路接收的是A\overline{m(t)}\cos (2\pi f_0t)的部分。必须满足\left | f_1-f_0 \right |\geqslant R_b,两个BPF才能分离开两路OOK信号。

        (2)上、下支路包络检波器的输出y_1(t)y_0(t)是互补对称的 。

        (3)两支路的抽样值分别是y_1y_0,判决准则为

4.误码率

        假定AWGN信道中噪声双边功率谱密度为N_0/2,该接收系统的误码率为

P_e\approx \frac{​{1}}{2}\exp (-(E_b/N_0)/2)

        其中,E_b=\frac{A^{2}T_b}{2},是2FSK信号的平均比特能量。

5.带宽

        2FSK信号的带宽定义为:两个频峰外侧边缘间的距离,即

B_{2FSK}=\left |f_1-f_0 \right |+2B

\left |f_1-f_0 \right |的理论最小间距是R_b/2,结合基带信号的理论最小带宽为R_b/2,因此2FSK信号的最小带宽为B_{2FSK}=1.5R_b

二、MFSK基本原理

1.MFSK表达式

        MFSK是多元频移键控的简称,信号可以表示为

s_{MFSK}(t)=Ag_T(t)\cos (2\pi f_nt),(n-1)T_s\leqslant t \leqslant nT_s

        通常规定f_n等间距,最小频率间隔为R_s/2

2.MFSK解调

        MFSK解调通常采用包络检波法,接收框图如下:

         在本代码中,采用的是相干借解调法,相干解调步骤如下:

        首先讲4FSK信号进行混频,即乘上各路载波,混频后再经过低通滤波器,经过低通滤波器后的波形如下:

        此时峰值就是信号0、1、2、3各自出现的位置,此时我们在经过抽样判决,将它们所在位置画成方波,最后通过相加得到原来的波形。

三、4FSK调制及相干解调matlab代码

clear ;                  % 清除所有变量
close all;                  % 关闭所有窗口
clc;                        % 清屏
%% 基本参数
% N=4;                        % 调制阶数
M=100;                        % 产生符号数
L=100;                      % 每码元复制L次,每个码元采样次数
Ts=0.001;                   % 每个码元的宽度,即码元的持续时间
R=1/Ts;                     % 码元速率1K
dt=Ts/L;                    % 采样间隔
TotalT=M*Ts;                % 总时间
t=0:dt:TotalT-dt;           % 时间
Fs=1/dt;                    % 采样间隔的倒数即采样频率
%% 确定传输信号
wave=randi([0, 3], 1, M);     %产生发送比特数据;

%% 画出基带信号图形
figure(1)
fz=ones(1,L);               % 定义复制的次数L,L为每码元的采样点数
x1=wave(fz,:);              % 将原来wave的第一行复制L次,称为L*M的矩阵
jidai=reshape(x1,1,L*M);% 产生单极性不归零矩形脉冲波形,将刚得到的L*M矩阵,按列重新排列形成1*(L*M)的矩阵
subplot(2,2,1)
plot(t,jidai);
title("基带信号波形")          % 标题
xlabel('时间');         % x轴标签
ylabel('幅度');            % y轴标签
%% 4FSK调制
modulated_signal = zeros(1, length(t)); % 初始化调制信号


fre1=2500;
f1= fre1;
f2= fre1+125;
f3= fre1+250;
f4= fre1+375;
for i = 1:M
    % 根据每个元素值选择相应的频率
    switch wave(i)
        case 0
            freq = f1;
        case 1
            freq =f2;
        case 2
            freq =f3;
        case 3
            freq =f4;
        otherwise
            error('Invalid input data');
    end
    % 生成调制信号
    modulated_signal((i - 1) * L + 1:i * L) = cos(2 * pi * freq * t((i - 1) * L + 1:i * L));
end

%% 画出调制后的图像和频谱图
%画出4FSK图像
subplot(2,2,3)
plot(t,modulated_signal,'b',t,(jidai-1.5),'r');
title("4FSK信号波形")          % 标题
xlabel('时间');         % x轴标签
ylabel('幅度');            % y轴标签
%画出频谱图
%信源频谱
T=t(end);                  % 时间
df=1/T;                    % 频谱分辨率
N=length(modulated_signal);             % 采样长度
f=(-N/2:N/2-1)*df;         % 频率范围
mf=fftshift(abs(fft(jidai)));%对信源信号采用快速傅里叶变换并移到矩阵中心
subplot(2,2,2)
plot(f,mf)   % 绘制信源频谱波形
axis([-0,10000,-0.1,15000]);
title("基带信号频谱")          % 标题
xlabel('频率/Hz');         % x轴标签
ylabel('幅度');            % y轴标签
grid;
%4FSK信号频谱
sf=fftshift(abs(fft(modulated_signal)));% 对2FSK信号采用快速傅里叶变换并将0-fs频谱移动到-fs/2-fs/2
subplot(2,2,4)
plot(f,sf)   % 绘制调制信号频谱
axis([-0,10000,-0.1,1500]);
title("4FSK信号频谱")      % 标题
xlabel('频率/Hz');         % x轴标签
ylabel('幅度');            % y轴标签
grid;

        完整代码移步 4FSK信号调制-matlab-MFSK-相干解调-通信原理进行下载~

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值