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.

crucesCero.m
function [memoria] = crucesCero(I,Q, memoria)
%------------------------------------------------------------------------
%|  function [memoria] = crucesCero(I,Q, memoria)
%------------------------------------------------------------------------
%|
%|    Funcion que implementa el estado inicial del automata 
%|  de sincronismo de baudio: fase de enganche.
%|
%|     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/2.- I, Q    = dos muestras de la seal de entrada
%|       3  .- MEMORIA = vector fila con las condiciones iniciales
%|                      del automata
%|                 
%|     PARAMETROS DE SALIDA:
%|       1.- MEMORIA = vector  fila con las condiciones finales 
%|                     del automata
%-------------------------------------------------------------------------
%|   Autor: Cesar Delgado
%|   Fecha: 19-Abril-2.004
%-------------------------------------------------------------------------

%%%% 0.- Definicion de Ctes.
contMUESTRA  = 1;   % Contador de Muestras
contCRUCES   = 2;   % Contador de Flancos
MUESTRAS_BIT = 3;   % N muestras/bit
muestraANT   = 4;   % Muestra Anterior
ESTADO       = 5;   % Estado del automata

% 1.- Deteccion de Cruces por Cero en seal I
%--------------------------------------------

%   1.1.- Muestra anterior de signo contrario a la actual
cruce = ((I>0) ~= memoria(muestraANT));

%   1.2.- Si hay cruce, se revisan posibles transiciones
if cruce,
    
    %  1.2.1.- Incremento contador de cruces por cero
    memoria(contCRUCES)= memoria(contCRUCES)+1;
    
    %  1.2.2 - No estamos en el primer cruce
    %                       Y
    %         Espaciamiento entre cruces 
    %         fuera del +/- 20% Muestras/Bit ===>
    % 
    % ==>  Pasamos al estado de deteccion de umbral              
    if memoria(contCRUCES) > 1 & ( ...
       (memoria(contMUESTRA) > 1.2*memoria(MUESTRAS_BIT)) | ...
       (memoria(contMUESTRA) < 0.8*memoria(MUESTRAS_BIT)) ),
            memoria(ESTADO) = 0;
            
    % 1.2.3.- Recibimos 15 cruces equiespaciados  ===>
    % =====> Pasamos a la recepccion del sincronismo
    %        de mensaje
    elseif  memoria(contCRUCES) > 5,
            memoria(ESTADO) = 3;            
    end;  
    cruce = 0;
    memoria(contMUESTRA) = 1;    
end;

% 2.-  Guardamos el signo de la muestra actual
%---------------------------------------------
memoria(muestraANT) = (I>0);

Contact us