首页 > 代码库 > 通信算法之九:4FSK调制解调仿真链路

通信算法之九:4FSK调制解调仿真链路

一.  4FSK原理

         DMR系统,数字集群通信系统。DMR协议采用的调制方式4FSK,是一种恒包络调制,调制时每秒发送2400个符号,每个符号携带两比特的信息。最大频偏D定义如下:D = 3h/2T,h代表每个调制的频偏系数,0.6。T标示符号周期,为1/2400。D=2160。

       4FSK调制器由一个平方根升余弦滤波器级联一个频率调制器组成。第一部分是成型滤波器模块,产生四电平的基带带限信号作为调制信号。第二部分是跳频部分FM。

      调频是角度调制的一种,角度调制一般表示为:Sm(t) = Acos(Wc(t)+ )。频率调制是利用基带信号载波频率得到的,即瞬时频偏随调制信号m(t)线性变化。满足: =Kf.m(t) 。其中,Kf为频偏常数。

二. 4FSK调制信号产生

       产生调制信号主要有两种,直接法和间接法。间接法实现成本和复杂度高。直接法调频是调制信号m(t)直接控制振荡器的频率使其按照调制信号的规律线性变化。调频信号的正交调制是间接法调频的一种实现方式.


三。4FSK调制解调算法设计流程

发射机设计:





接收机设计:






四。MATLAB仿真链路


%****************************************************************
% 内容概述:4FSK调制与4FSK解调 仿真链路
% 仿真链路:
% 创 建 人:
% 创建时间:2014年10月23日
% 修改时间:2014年10月28日 理想环境下调试通过
% 修改时间:2014年10月31日 高斯白噪声信道下调试通过
% 修改时间:2014年11月2日  高斯白噪声信道、有相差、有频偏直流分量环境下调试通过
% 参考文献:DMR通信系统各类工程实现文献
% 版权声明:不可随意复制、不可随意传播。
%****************************************************************
clc;
clear all;
close all;

SNR = (16:0.5:22);%信噪比(理论15.6dB)
BerEbNo = zeros(1,length(SNR));

for nEN=1:length(SNR)
    Err_counter = 0;
    for nframe=1:10000

        %----------------发送端物理层基带算法---------------------------------------
        %-1.输入基带信号-源比特序列--串并转换-映射-----------------------------------
        LenthBit = 264;
        LenthSample = 132;
        SourceBit = randint(1,LenthBit);  %比特速率 4.8kb/s
        SourceData = http://www.mamicode.com/BitStoPyinShe(SourceBit,LenthSample);%符号速率 2.4ksymbol/s
        figure()
        stem(SourceData(1:80),‘m-‘);
        grid on; 
        axis([0 80 -4 4]);
        %-2.成型滤波器-升余弦滤波器-------------------------------------------------
        %-包含:八倍内插和平方根升余弦成型滤波器,减小基带信号带宽占用
        Fd = 1;
        Fs = 8;
        Type = xx ;
        Rolloff = xx;
        Delay = xx;                      %基带信号m(n)速率 19.2 k/s
        Fsksignal = Squrootcosfilter(SourceData,Fd,Fs,Type,Rolloff,Delay);
        figure()
        plot(Fsksignal(1:600),‘m-‘);
        grid on; 
        %-----------------------以上是发送端物理层基带算法--------------------------
        %--------------------发送端物理层中频算法数字上变频-------------------------
        %-3.相位累加求和-----------------------------------------------------------
        phase = Phasesum(Fsksignal);
        %-4.相位sin(.)-cos(.)------------------------------------------------------
        %-符号速率2.4kbps,符号周期T ,调制系数H ,最大频偏D:D = 3h/2T
        T = 1/2400;
        H = 0.27;
        D = (3*H)/(2*T);
        Ts = 1/(2400*8);
        factor = 2*pi*D*Ts ;
        [II QQ] = phaseSinCos(phase,factor);
        %-5.数字中频-数字上变频-内插滤波-CIC-HB-FIR---------------------------------
        % 根据奈奎斯特抽样定理,采样频率FS应该大于2*FC+Bm.在实际应用中,一般要
        % 取采样频率FS大于或等于四倍的模拟信号频率。FS >= 4*FC
        % 【待开发数字中频算法:CIC-HB-FIR,符号速率:4*FC】
        %-6.数字中频-数字上变频-载波体制-sin(Wc*t)--cos(Wc*t)------------------------
        % 【待开发数字中频算法:正交,载波调制】
        % s(t) = A*cos(2*pi*FC*t)*I(t) - A*sin(2*pi*FC*t)*Q(t)
        %--------------------以上发送端物理层中频算法数字上变频----------------------


        %-7.空间信道传输-高斯白噪声信道---------------------------------------------
        figure()
        plot(II(500:800),‘m-‘);
        grid on; 
        title(‘过高斯白噪声信道之前的信号‘);
        II = awgn(II,SNR(nEN));
        QQ = awgn(QQ,SNR(nEN));
        figure()
        plot(II(500:800),‘m-‘);
        grid on; 
        title(‘过高斯白噪声信道之后的信号‘);
       
        %-8.数字中频-数字下变频-正交解调算法----------------------------------------
        % SI(t) = s(t)*cos(2*pi*FC*t)  SQ(t) = s(t)*sin(2*pi*FC*t)
        %内插滤波-CIC-HB-FIR
        %-9.数字中频-数字下变频-抽取滤波-------------------------------------------
        % 【待开发,数字下变频算法抽取滤波】
 
        %-10.空间信道传输-加相位差值--加频偏值----------------------------------------
        SigComplex = II +1j*QQ;
        Freq_offset = 1000 ;%频偏f=1000hz
        Phase_offset = pi/4;%%pi/4;相偏
        PPHH = (........................);
        NewSig = SigComplex.*PPHH;
        II = real(NewSig);
        QQ = imag(NewSig);
        figure()
        plot(II(500:800),‘m-‘);
        grid on; 
        title(‘过高斯白噪声信道/相位差/频率差之后的信号‘);
        %-11.相位估计、相差,差分算法--消除相干解调中出现的本地载波与信号相差的问题
        m = PhaseChaJiuZheng(II,QQ,factor);
        figure()
        plot(m(257:657),‘m-‘);
        grid on; 
        title(‘未经过匹配滤波的信号‘);
        % axis([0 160 -1 1]); 
        %-12.匹配滤波-----------------------------------------------------------
        mx = PipeiMatchFilter(m,Rolloff,Delay,Fs,Fd,Type);
        figure()
        plot(mx(1:300),‘m-‘);
        grid on; 
        title(‘经过匹配滤波的信号‘);
        % axis([0 160 -1 1]); 


        %-13.信号标准门限-动态范围确定------------------------
        %-确定动态范围---
计算标准门限---------------------------

        [up down mid mean]=SignalDynamicRange(mx);
        [up_level_std mid_level_std down_level_std]=SignalBiaozhunRange(up,down,mean);
        %-14.符号同步算法-确定最佳判决点,记为syn---去掉直流分量算法,去掉F
       [msigle I] = SynsampleDingshi(mx,mean);

        %-16.门限判决,逆映射--------------------------------------
        Dataout = zeros(1,2*length(msigle));
        for kk = 1:length(msigle)
            if msigle(kk) > up_level_std
                Dataout(2*kk-1:2*kk) = [0 1];%3
            elseif (msigle(kk) <= up_level_std)&&(msigle(kk) > mid_level_std)
                Dataout(2*kk-1:2*kk) = [0 0];%1
            elseif (msigle(kk) <= mid_level_std)&&(msigle(kk) > down_level_std)
                Dataout(2*kk-1:2*kk) = [1 0];%-1
            else
                Dataout(2*kk-1:2*kk) = [1 1];%-3
            end
        end 
        [errNum,errRate] = biterr(SourceBit,Dataout);
        if errNum ~= 0
            Index = find(SourceBit ~= Dataout);
            disp([‘错误比特位置= ‘,num2str(Index),‘ 符号同步Syn= ‘,num2str(I)]);
        end
        Err_counter = Err_counter + errNum;
        Ber = Err_counter/nframe/LenthBit;
    end
    BerEbNo(nEN) = Ber;
    fprintf(‘EcNo:%1.2fdB,误码率:%8.4e,\n‘,SNR(nEN),Ber);
end
semilogy(SNR,BerEbNo,‘b-v‘);
grid on;
xlabel(‘Ec/No[dB]‘);
ylabel(‘Bit Error Rate‘);
title(‘--4FSK调制解调仿真误码率曲线--‘);
disp(‘--4FSK调制,4FSK解调仿真结束--‘);
%---------------------------------------------


五。仿真图形









【详细资料,及相应MATLAB代码,咨询qq:1279682290】


通信算法之九:4FSK调制解调仿真链路