?? recuperareloj.m
字號:
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
%-------------------------------------------------------------------------
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -