【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

猜你喜欢

转载自blog.csdn.net/ccsss22/article/details/125192383
今日推荐