www.pudn.com > demodula.rar > periodoReloj.m
function memoria = periodoReloj(linea, nFlancos, memoria)
%------------------------------------------------------------------------
%| function memoria = periodoReloj(linea, nFlancos, memoria)
%------------------------------------------------------------------------
%| Función que recupera el periodo de Reloj del sistema. Está
%| ideada para procesar una muestra en cada llamada.
%|
%| Método de Recuperación de Reloj: detecta 10 flancos consecutivos
%| (prescindiendo del primero de todos) y promedia el número de muestras
%| que hay en esos 10 flancos.
%|
%| Parámetros de entrada:
%| 1.- LINEA = muestra de una señal de línea de niveles TTL
%| 2.- N_FLANCOS = nº de flancos empleados para detectar el reloj
%| 2.- MEMORIA = vector fila de longitud mínima 16 o nFlancos,
%| si éste supera los 16 flancos
%|
%| Parámetros de Salida:
%| 1.- MUESTRAS_BIT= número de muestars que tiene un bit
%| 2.- MEMORIA = vector fila con las condiciones finales del reloj
%-------------------------------------------------------------------------
%| Autor: Cesar Delgado
%| Fecha: 19-Abril-2.004
%-------------------------------------------------------------------------
%%%%% Ctes.
contMUESTRA = 1; % Contador de Muestras
contFLANCOS = 2; % Contador de Flancos
MUESTRAS_BIT = 3; % Nº muestras/bit
muestraANT = 4; % Muestra Anterior
ESTADO = 5; % Banera: 0 = recuperación sincronismo; 1 = recepción trama
valorMUESTRA = 7; % Suma de los voltajes de las muestras en 1 símbolo
nRetardos = 25;
% 1.- Detectamos Flanco de Bajada
%----------------------------------
flanco = (memoria(muestraANT) > linea);
% 2.- Aumentamos contador de flancos
%------------------------------------
if flanco,
memoria(contFLANCOS) = memoria(contFLANCOS) + 1;
if (memoria(contFLANCOS) Recuperamos sincronismo
%-----------------------------------------------------------------------------
if (memoria(contFLANCOS) > (nFlancos+nRetardos+1))
%%%% 3.1.- Promedio de Muestras / Símbolo
muestrasBit = memoria(contMUESTRA);
nBits = 2*(memoria(contFLANCOS)-nRetardos);
memoria(MUESTRAS_BIT) = round(muestrasBit/nBits);
%%%% 3.2.- Inicializamos variables de estado
memoria(ESTADO) = 3; % Pasamos a recibir la cabecera de sincronismo
memoria(contFLANCOS) = 0;
memoria(valorMUESTRA) = 0;
memoria(contMUESTRA) = 0;
end;
% 4.- Guardamos muestra actual en memoria
%-----------------------------------------
memoria(valorMUESTRA) = memoria(valorMUESTRA) + linea;
memoria(muestraANT) = linea;
%memoria(MUESTRAS_BIT) = 32;