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.

periodoReloj(linea, nFlancos, memoria)
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 at files@mathworks.com