www.pudn.com > demodula.rar > divisor.m
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;