Changing traceback gmsk viterbi demodulator object
    3 visualizzazioni (ultimi 30 giorni)
  
       Mostra commenti meno recenti
    
Hi, 
I want to see how changing the traceback (Tb) of a gmsk demodulator affects the BER curve in GMSK (pulse length=3), but there is no variation in the BER curve when Tb change, except when Tb=1. I tried Tb values from 2 to 100, does anybody have an idea why it occurs?
Thanks in advance.  
%%
close all
clear all
clc
%% Modulation parameters
oversamp = 30;
L = 3;
h = 0.5;
BT = 0.5;
fast_sim=0;
%% Bit generation and diff encoding
Nbits=10e4; % 12 bits for fixed input
%Nbits=5000;
    bits = randi([0 1],1,Nbits-2);
    bits = [[0 1] , bits];
    encoded_bits = xor(bits(1:end-1),bits(2:end));
    encoded_bits = not(encoded_bits);
    encoded_bits = (encoded_bits*2 - 1)';
    %encoded_bits =[-1 1 -1 -1 1 1 1 1 -1 1 1 -1]';
 %% Objects 
hMod = comm.GMSKModulator(...
       'SamplesPerSymbol',oversamp,...
       'BitInput', false,'InitialPhaseOffset' ,0, 'PulseLength',L);
hDeMod = comm.GMSKDemodulator(...
       'BitOutput',false,...
       'SamplesPerSymbol',oversamp, 'InitialPhaseOffset' ,0, 'PulseLength',L,...
        'TracebackDepth',2);  
%% Modulation
object_gfsk= step(hMod,encoded_bits);
%% BER calculation for Matlab object  
EbNodB = 0:1:10;
%EbNodB =100;
BER = zeros(1,numel(EbNodB)); 
for index = 1: numel(EbNodB)
    EbNodB(index),
    errors = 0;
    count = 0;
    while(1)
            %% Channel
            hAWGN = comm.AWGNChannel('NoiseMethod','Signal to noise ratio (Eb/No)','EbNo', (EbNodB(index)),'SamplesPerSymbol',oversamp);
            received = step(hAWGN, (object_gfsk));
            reset(hAWGN)
            %% Demodulator         
           estimatedBits=step(hDeMod, received);
           reset (hDeMod);%OJO NO BORRAR
           %% Error estimation  
            hError = comm.ErrorRate('ReceiveDelay', hDeMod.TracebackDepth);
            errorStats = step(hError, (encoded_bits(1:end)) , (estimatedBits));
            errorsN = errorStats(2);
            errors = errors + errorsN;
            count = count + 1;
            if(fast_sim == 1)
                if(errors>300 || count > 500)
                    BER(index) = errors / (count*numel(encoded_bits));
                    break;
                end
            else
                if(errors>700 || count > 1200)
                    BER(index) = errors / (count*numel(encoded_bits));
                    break;
                end
            end
    end
end
%% Plotting
semilogy(EbNodB,BER,'k','LineWidth',1.5);
grid on
1 Commento
  gidon schwartz
 il 15 Nov 2020
				
      Modificato: gidon schwartz
 il 16 Nov 2020
  
			hi,
Is it possibble that in GMSK a traceback of 2 is sufficient for decoding ( and therefore no improvement is shown for higher values of TB)?
do you have any new conclusions regarding this question?
Risposte (0)
Vedere anche
Categorie
				Scopri di più su PHY Components in Help Center e File Exchange
			
	Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!