GMSK研究PCM/FM和GMSK的调制和解调方法

Posted fpga和matlab

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了GMSK研究PCM/FM和GMSK的调制和解调方法相关的知识,希望对你有一定的参考价值。

1.软件版本

matlab2013b

2.本算法工作内容

1. 用MATLAB仿真多符号检测(MSD)和Turbo乘积码的编解码

2. 研究Turbo码同步参数的优化设计及其性能;

3. 比较TPC和纠删码的性能,实现复杂度,实现方式上的差异;

4. 学习GMSK的调制、解调方式),重点研究GMSK-PN码的调制和解调方法,利用MATLAB对其进行仿真;并考虑是否可以利用PCM/FM加入PN码或其他方式实现测距功能;

5. 研究PCM/FM的码同步方法

3.部分源码

clc;
clear;
close all;
warning off;
addpath 'func_MSD\\'

Frame_Nums = 500;
Numbers    = 200;
Num_sym    = 10;
SNR1       = [0:1:7];
SNR2       = 10.^(SNR1/10);
VAR        = 1./(SNR2*2);
%设置调制指数
h          = 0.6;
load('Table.mat');
[Ro,Co]    = size(Table);

for indx2 = 1:length(SNR1)
    indx2
    ERR    = 0;
    var    = VAR(indx2);  
    for nn=1:Frame_Nums
        nn
        Dat_trans  = randsrc(1,Numbers,[0 1]);
        %差分编码
        Dat_trans2 = func_chafen(Dat_trans,Numbers);
        %定义噪声
        Noise      = sqrt(var/2)*(randn(1,Numbers) + i*randn(1,Numbers));
        %参数初始化
        parameter;
        %MSD检测
        while indx < Numbers
            Rec(number) = exp(j*4*h*number)*Dat_trans2(indx) + Noise(indx);
            number      = number+1;
            indx        = indx + 1;
            if number == Num_sym + 1
               number = 1;
               indx   = indx-2;
               %计算模
               y           = func_abs(Rec,Num_sym);
               %MSD检测
               MSD_results = func_MSD_Check(y,Table,Num_sym,Ro,Co);
               %检测误码率
               for hh=1:Num_sym-2 
                   if MSD_results(hh) ~= Dat_trans(hh+times*Co)
                      ERR = ERR + 1;
                   end
               end
               times       = times + 1;   
            end
        end
    end
    Berrs(indx2) = ERR/(Numbers*Frame_Nums);
end

figure;    
semilogy(SNR1,Berrs,'b-o');
legend('ber of MSD');
xlabel('SNR');
ylabel('ber');
grid on;  

if h == 0.8;
   save msd1.mat SNR1 Berrs   
end
if h == 0.7;
   save msd2.mat SNR1 Berrs    
end
if h == 0.6;
   save msd3.mat SNR1 Berrs    
end

clc;
clear;
close all;
warning off;
addpath 'func_tpc\\'

%调用矩阵
load h.mat
load g57x64.mat
N   = size(G,1);
M   = size(G,2);
SNR = [0:1:7];

for i=1:length(SNR)
    i
    Bit_err(i)    = 0; %设置误码率参数
    Num_err       = 0; %蒙特卡洛模拟次数
    Numbers       = 0; %误码率累加器
    SNRs          = 10^(SNR(i)/10);
    sigma         = 1/sqrt(2*M/N*SNRs);
    d1            = 1;
    d2            = 1;
    while Num_err <= 200
        fprintf('Eb/N0 = %f\\n', SNR(i));
        Num_err
        
        data                 = randint(N,N);
        %TPC编码
        tx_data              = func_tpc_encode(data,G,N,M);
        tx_data              = 2*tx_data-1;                        
        %通过高斯信道
        rx_data              = tx_data + sigma*randn(size(tx_data));
        rx_data              = reshape(rx_data,N+7,N+7);
        %TPC译码 
        decoded_bits         = func_tpc_decoded(rx_data,1,H,d1,d2);
        nberr                = sum(sum(abs(data-decoded_bits(M-N+1:M,M-N+1:M))));
        Num_err              = Num_err+nberr;
        Numbers              = Numbers+1;
    end
    Bit_err(i) = Num_err/(N*N*Numbers);
end

figure;
semilogy(SNR,Bit_err,'o-');
xlabel('Eb/N0(dB)');
ylabel('BER');
grid on;
save Results2.mat SNR Bit_err

4.仿真结论

1. 用MATLAB仿真多符号检测(MSD)和Turbo乘积码的编解码,得到参考文献[1]中图3、表1和图4;

比较TPC和纠删码

  学习GMSK的调制、解调方式,重点研究GMSK-PN码的调制和解调方法,利用MATLAB对其进行仿真;并考虑是否可以利用PCM/FM加入PN码或其他方式实现测距功能;

 PCM/FM的码同步方法

5.参考文献

[1] MSD与TPC技术在PCM_FM遥测系统中的应用研究_王晓波
[2] Turbo码块同步参数优化设计_吴岭
[3] 中频带宽对调频遥测解调性能的影响分析_朱宏权
[4] 同时传输遥测和伪码测距信号的GMSK技术_游莎莎
[5] 深空测控通信中GMSK体制非相干解调算法研究_吴伟仁
[6] 基于纠删码的遥测链路丢帧恢复技术_张金荣
[7] 基于PCM_FM遥测信号的多站时差定位技术应用研究_王俊峰
[8] GMSK调制技术及其在遥测中的应用分析_游莎莎A01-128

开发者涨薪指南 48位大咖的思考法则、工作方式、逻辑体系

以上是关于GMSK研究PCM/FM和GMSK的调制和解调方法的主要内容,如果未能解决你的问题,请参考以下文章

利用GSM模块通过GPRS在GMSK调制方式下与IP网通信

盲解调基于频率和滤波器参数估计的FH-GFSK调制信号盲解调算法matlab仿真

频带传输数字频带传输系统之不同调制方式的误码率与频谱特性总结

数字信号调制基于matlab 16QAM信号调制解调含Matlab源码 2050期

数字信号调制基于matlab 16QAM信号调制解调含Matlab源码 2050期

通信原理实验1 基于Matlab的模拟信号的调制和解调