No BSD License  

Highlights from
BPSK Simulator for Low Rate Transmisions

image thumbnail
from BPSK Simulator for Low Rate Transmisions by César Delgado González
BPSK Simulator for didactical purposes. Systemic coding style.

sincroBaudio(I,Q, L, memoria)
function [trama, memoria, IQc, decisor] = sincroBaudio(I,Q, L, memoria)
%------------------------------------------------------------------------
%|  function [trama, memoria, IQc, decisor] = ... 
%|                                sincroBaudio(I,Q, L, memoria)
%------------------------------------------------------------------------
%|
%|    Funcion que implementa el sincronismo de baudio de la
%|  practica final.
%|     Emplea dos mecanismos para detectar seal a la entrada:
%|       a) Deteccion de Umbral: espera que una muestra supere
%|                       un umbral de amplitud
%|       b) Cruces por cero    : espera detectar la secuencia
%|                        de sincronismo, es decir,
%|                        cruces por cero cuasi-equiespaciados.
%| 
%|    PARAMETROS DE ENTRADA:
%\       1.- I, Q    = dos muestras de la seal de entrada
%|       2.- L       = factor de sobremuestreo
%|       3.- MEMORIA = condiciones iniciales/finales de los distintos
%|                     sistemas involucrados
%|                   Fila 1 : [ Cond. Ini. Filtro de Lazo ]
%|                   Fila 2 : [ Cond. Ini. VCO            ]
%|                   Fila 3 : [ Cond. del Automata        ]
%|
%|     PARAMETROS DE SALIDA:
%|       1.- TRAMA   = secuencia de bits 
%|       2.- MEMORIA = condiciones finales del sistema
%|       3.- IQc     = seal IQ compensada
%|       4.- DECISOR = salida del decisor
%-------------------------------------------------------------------------
%|   Autor: Cesar Delgado
%|   Fecha: 19-Abril-2.004
%-------------------------------------------------------------------------

%#######################################################################################
% 0.- Definicin de Ctes.
%#######################################################################################
contMUESTRA  = 1;   % Contador de Muestras
MUESTRAS_BIT = 3;   % N muestras/bit
muestraANT   = 4;   % Muestra Anterior
ESTADO       = 5;   % Indica el estado del automata
BOD          = [1 1 0 0 1 1 0 0];
pFILTRO      = 1;
pVCO         = 2;
pBAUDIO      = 3;
%########################################################################################
% 1.- Autmata
%########################################################################################
trama        = [];
IQc          = [];
decisor      = []; 

memoria(pBAUDIO, contMUESTRA) = memoria(pBAUDIO, contMUESTRA) + 1;
memoria(pBAUDIO, MUESTRAS_BIT) = L;

switch memoria(pBAUDIO,ESTADO),
   %%%%%%%%%%%%%%%%%%%%%% DETECCION UMBRAL %%%%%%%%%%%%%%%%%%%%%%%
   case 0,                  
        [memoria(pBAUDIO,:)] = detectaUmbral(I,Q, memoria(pBAUDIO,:));
        
   %%%%%%%%%%%%%%%%%%%%%% CRUCES POR CERO %%%%%%%%%%%%%%%%%%%%%%%
   case 1,
        [decisor, IQc, memoria(pFILTRO:pVCO,:)] = ...
                        sincroFase(I,Q,memoria(pFILTRO:pVCO,:));
                    
        [memoria(pBAUDIO,:)] = crucesCero(I,Q, memoria(pBAUDIO,:));
       
   %%%%%%%%%%%%%% FASE DE SINCRONISMO DE MENSAJE %%%%%%%%%%%%%%%%
   case 3,
        %  1.- Proyectamos seal sobre una portadora unica 
         %                                        y Rectificamos
         %-------------------------------------------------------         
         [decisor, IQc, memoria(pFILTRO:pVCO,:)] = ...
                        sincroFase(I,Q,memoria(pFILTRO:pVCO,:));
                    
         %  2.- Esperamos primer BOD
         %---------------------------
         [memoria(pBAUDIO,:)] = sincroMsj2(decisor, memoria(pBAUDIO,:));         
         
         %   3.- Si pasamo a la fase de RX, 
         %          insertamos cabeceras SYNCRO y BOD.     
         %--------------------------------------------
        if memoria(pBAUDIO, ESTADO)==4,                     
           trama(1:2:100) = ones(1,50);
           trama = [trama 0 BOD];           
         end;   
         
    %%%%%%%%%%%%%%%% FASE DE RECEPCION DE TRAMA %%%%%%%%%%%%%%%%%%
    case 4,        
         %  1.- Proyectamos seal sobre una portadora unica 
         %                                        y Rectificamos
         %-------------------------------------------------------
        [decisor, IQc, memoria(pFILTRO:pVCO,:)] = ...
                        sincroFase(I,Q,memoria(pFILTRO:pVCO,:));
                   
        %  2.- Recibimos trama
         %--------------------
        [trama, memoria(pBAUDIO,:)] = rxTrama2(decisor, memoria(pBAUDIO,:));        
end;

Contact us at files@mathworks.com