www.pudn.com > demodula.rar > detectorFase.m, change:2006-02-02,size:2406b


function [DF, memoria] = detectorFase(PAM1, PAM2, memoria, primera) 
%------------------------------------------------------------------------ 
%|  function [DF, memoria] = detectorFase(PAM1, PAM2, memoria, primera) 
%------------------------------------------------------------------------ 
%|    Función simula la acción de un comparador de fase-fercuencia up-down 
%|  digital activado por flancos de bajada. Su margen dinámico es 2*pi 
%|   y espera señales TTL. 
%| 
%|     Está diseñada para filtrar una sola muestra y devolver 
%|  las condiciones finales. Se debe llamar dentro de un bucle. 
%|   
%|    NO REALIZA VALIDACIÓN DE LOS PARÁMETROS DE ENTRADA 
%| 
%|    Entradas: 
%|       1.- PAM1 =  muestra de una señal PAM. 
%|       2.- PAM2 =  muestra de la otra señal PAM. 
%|       3.- MEMORIA = vector de 3 muestras con el valor 
%|                     de las muestras actuales [PAM1 PAM3 OUT]. 
%|                     Sirve para la detección de flancos de bajada. 
%|       4.- PRIMERA: bandera: indica si se está en la 1º iteración 
%| 
%|     Salidas: 
%|       1.- DF       = muestra de salida tras la comparación 
%|       2.- MEMORIA  = vector de 3 muestras con las cond. finales 
%------------------------------------------------------------------------- 
%|   Autor: Cesar Delgado 
%|   Fecha: 19-Abril-2.004 
%------------------------------------------------------------------------- 
 
flanco = zeros(1,2); 
  
% 1.- Detección de Flanco 
%------------------------  
 if ~isempty(memoria) & ~primera 
      flanco(1) = (memoria(1) > PAM1); % Se ha detectado flanco de PAM1       
      flanco(2) = (memoria(2) > PAM2); % Se ha detectado flanco de PAM2       
 end;   
  
% 2.- Cálculo de muestra de salida 
%---------------------------------  
%   2.1.- Se ha detectado algún flanco 
if (flanco(1) | flanco(2))  
      if flanco(1), % Flanco de bajada UP 
          DF = 5;  
          flanco(1)=0; 
       end; 
       if flanco(2),  % Flanco de bajada DOWN 
          DF=0;  
          flanco(2)=0;     
       end;        
  %   2.2.- No hay ningún flanco => Salida = Salida anterior 
  else  
      if isempty(memoria) | primera 
         DF = 0; 
      else   
         DF = memoria(3); 
      end;      
   end;       
     
   % 3.- Actualización Memoria 
   %--------------------------  
   memoria(1)    = PAM1; 
   memoria(2)    = PAM2;       
   memoria(3)    = DF;