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.

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