No BSD License  

Highlights from
BPSK Simulator for Low Rate Transmisions

image thumbnail

BPSK Simulator for Low Rate Transmisions

by

 

01 Jun 2004 (Updated )

BPSK Simulator for didactical purposes. Systemic coding style.

sincroBaudio.m
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