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.

recuperaReloj(linea, memoria, primera, N)
function  [trama, memoria] = recuperaReloj(linea, memoria, primera, N)
%------------------------------------------------------------------------
%  [trama, memoria] = recuperaReloj(linea, memoria, primera, N)
%------------------------------------------------------------------------
%|    Funci�n que implementa la recuperaci�n de reloj mediante 
%|  detecci�n de flancos de bajada.
%|    Est� dise�ada para tratar una sola muestra, por lo que se deber� llamar
%|  dentro de un bucle. 
%|
%|    Entradas:
%|       1.- LINEA   = muestra de la se�al de l�nea (tren de pulsos TTL)
%|       2.- MEMORIA = vector fila con la memoria del reloj.
%|       3.- PRIMERA = indica si esta es la primera iteraci�n, es decir,
%|                     en memoria no hay ninguna muestra del pasado.
%|       4.- N       = n� de flancos usados para detectar sincronismo
%|                     Restricciones: N<=50, que es la long. de SYNCRO
%|
%|    Salida:
%|       1.- TRAMA    = vector de "0" y "1" con la se�al detectada
%-------------------------------------------------------------------------
%   Autor: Cesar Delgado
%   Fecha: 19-Abril-2.004
%-------------------------------------------------------------------------

%#######################################################################################
% 0.- Definici�n de Ctes.
%#######################################################################################
contMUESTRA  = 1;   % Contador de Muestras
muestraANT   = 4;   % Muestra Anterior
ESTADO       = 5;   % Banera: 0 = recuperaci�n sincronismo; 1 = recepci�n trama
trama        = [];
BOD          = [1 1 0 0 1 1 0 0];


%########################################################################################
% 1.- Aut�mata
%########################################################################################
memoria(contMUESTRA) = memoria(contMUESTRA) + 1; % Contador Muestras ++

if (~primera) & (~isempty(linea)),
   
   switch memoria(ESTADO),
      
  %%%%%%%%%%%%%%%%%%%%%%%%%%%% PERIODO RELOJ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   case 0,       
      memoria = periodoReloj(linea, N, memoria);      
      %break;
      
  %%%%%%%%%%%%%%%%%%%%%%%%% SINCRONISMO DE MENSAJE %%%%%%%%%%%%%%%%%%%%%%%%%
  case 3, 
      memoria = sincroMsj(linea, memoria);     
     
     %   Si pasamo a la fase de RX, insertamos cabeceras SYNCRO y BOD.     
     if memoria(ESTADO)==4,         
        trama(1:2:100) = ones(1,50);
        trama = [trama 0 BOD];    
     end;     
     %break;
      
% %%%%%%%%%%%%%%%%%%%%%%%%%%%% RECEPCI�N DE TRAMA %%%%%%%%%%%%%%%%%%%%%%%%%%%
   case 4,     
     [trama, memoria] = rxTrama(linea, memoria);  
     %break;
  end; % End del Switch
   
elseif primera, 
   memoria(muestraANT) = linea;
end;

%-------------------------------------------------------------------------
%    Los motivos por los que se conservan las cabeceras SYNCRO + BOD son:
%     a) Comprobaci�n entre las tramas del RX y TX, para verificar
%        errores y la repercusi�n de errores en las cabeceras
%     b) Desacoplar las funciones del nivel 2 de las del nivel 1
%-------------------------------------------------------------------------
  

Contact us at files@mathworks.com