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.

periodoReloj.m
function memoria = periodoReloj(linea, nFlancos, memoria)

%------------------------------------------------------------------------
%|   function memoria = periodoReloj(linea, nFlancos, memoria)
%------------------------------------------------------------------------
%|      Funcin que recupera el periodo de Reloj del sistema. Est 
%|   ideada para procesar una muestra en cada llamada.
%|
%|       Mtodo de Recuperacin de Reloj: detecta 10 flancos consecutivos
%| (prescindiendo del primero de todos) y  promedia el nmero de muestras
%|  que hay en esos 10 flancos.    
%|
%|  Parmetros de entrada:
%|      1.- LINEA     = muestra de una seal de lnea de niveles TTL
%|      2.- N_FLANCOS = n de flancos empleados para detectar el reloj
%|      2.- MEMORIA   = vector fila de longitud mnima 16 o nFlancos, 
%|                      si ste supera los 16 flancos                       
%|
%|   Parmetros de Salida:
%|     1.- MUESTRAS_BIT= nmero de muestars que tiene un bit
%|     2.- MEMORIA     = vector fila con las condiciones finales del reloj 
%-------------------------------------------------------------------------
%|   Autor: Cesar Delgado
%|   Fecha: 19-Abril-2.004
%-------------------------------------------------------------------------

%%%%% Ctes.
contMUESTRA  = 1;   % Contador de Muestras
contFLANCOS  = 2;   % Contador de Flancos
MUESTRAS_BIT = 3;   % N muestras/bit
muestraANT   = 4;   % Muestra Anterior
ESTADO       = 5;   % Banera: 0 = recuperacin sincronismo; 1 = recepcin trama
valorMUESTRA = 7;   % Suma de los voltajes de las muestras en 1 smbolo
nRetardos    = 25;

%  1.- Detectamos Flanco de Bajada
%----------------------------------
flanco = (memoria(muestraANT) > linea);      
      
%  2.- Aumentamos contador de flancos
%------------------------------------
if flanco,
   memoria(contFLANCOS) = memoria(contFLANCOS) + 1;
   if (memoria(contFLANCOS)<nRetardos+1), memoria(contMUESTRA)=1; end;   
end;


%  3.- Si han llegado N alternancias "0"-"1" => Recuperamos sincronismo 
%-----------------------------------------------------------------------------
if (memoria(contFLANCOS) > (nFlancos+nRetardos+1))
   
    %%%% 3.1.- Promedio de Muestras / Smbolo
    muestrasBit  =  memoria(contMUESTRA);
    nBits        =  2*(memoria(contFLANCOS)-nRetardos);
    memoria(MUESTRAS_BIT) =  round(muestrasBit/nBits);        
     
    %%%% 3.2.- Inicializamos variables de estado         
    memoria(ESTADO)       = 3; % Pasamos a recibir la cabecera de sincronismo 
    memoria(contFLANCOS)  = 0;
    memoria(valorMUESTRA) = 0;
    memoria(contMUESTRA)  = 0;
end;
      
 %  4.- Guardamos muestra actual en memoria
 %-----------------------------------------            
 memoria(valorMUESTRA) = memoria(valorMUESTRA) + linea;
 memoria(muestraANT)   = linea;            
 %memoria(MUESTRAS_BIT) = 32;    

Contact us