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


function [mitad, memoria] = divisor(doble, memoria, primera) 
%------------------------------------------------------------------------ 
%|  function [mitad, memoria] = divisor(doble, memoria, primera) 
%------------------------------------------------------------------------ 
%|   Función que simula la acción de un divisor digital con niveles 
%| TTL, en base a un detector de flancos de subida. 
%| 
%|     Está diseñada para operar sobre sola muestra y devolver 
%|  las condiciones finales. Se debe llamar dentro de un bucle. 
%|     Haría falta filtrar la salida para quedarse con el fundamental 
%|  a fi. Es fácilmente adaptable a otros factores de división. 
%|   
%|    NO REALIZA VALIDACIÓN DE LOS PARÁMETROS DE ENTRADA 
%| 
%|    Entradas: 
%|       1.- DOBLE  =  vector fila con señal TTL a dividir. 
%|       2.- MEMORIA = vector fila con las condiciones a aplicar 
%|       3.- PRIMERA = indica si es la primera iteración del bucle. 
%| 
%|     Salidas: 
%|       1.- MITAD    = muestra de salida tras el filtrado 
%|       2.- MEMORIA  = vector con las cond. finales 
%------------------------------------------------------------------------- 
%|   Autor: Cesar Delgado 
%|   Fecha: 19-Abril-2.004 
%------------------------------------------------------------------------- 
pIN       = 1;  % Posición en memoria de la entrada anterior 
pFLANCOS  = 2; % Contador de flancos transcurridos 
 
 
% 1.- División por 2 
%------------------- 
%>>>>>>>>>>>> 1.1.- Detección de flanco de subida 
flanco = (memoria(pIN) < doble); % Entrada Anterior < Entrada Actual 
                                 %   ==> Flanco de subida 
                                                                
 
%>>>>>>>>>>>> 1.2.- Si hay flanco, conmutamos salida 
if (memoria(pFLANCOS)==0), memoria(pFLANCOS) = 1; end; 
 
if (flanco), 
   memoria(pFLANCOS) = -memoria(pFLANCOS); 
end; 
 
%>>>>>>>>>>>> 1.3.- Cálculo de la salida (niveles TTL) 
mitad = (memoria(pFLANCOS)>0)*5; 
 
%>>>>>>>>>>>> 1.4.- Almacenamos en memoria muestra actual 
memoria(pIN) = doble;