%------------------------------------------------------------------------
%| nivFisicoLab
%------------------------------------------------------------------------
%| Script que realiza las funciones del nivel fsico del Receptor:
%|
%|
%| Parametros Importantes:
%| 1.- MEMORIA = condiciones iniciales/finales de los distintos
%| sistemas involucrados
%| Fila 1 : [ Cond. Ini. Filtro de Lazo ]
%| Fila 2 : [ Cond. Ini. VCO ]
%| Fila 3 : [ Cond. del Automata ]
%-------------------------------------------------------------------------
%| Autor: Cesar Delgado
%| Fecha: 19-Abril-2.004
%-------------------------------------------------------------------------
fichero = {'test1.mat','test2.mat','test3.mat','test4.mat'};
fileIn = char(fichero(opcion));
if ~exist([ruta fileIn]),
uiwait(errordlg('ERROR: no se encuentra el fichero de Test - NivFisicoLab()'));
end;
%########################################################################
% SIMULACIN DE LA RECEPCIN
%########################################################################
%%%%%%% Carga de Fichero
load([ruta fileIn]);
lonSignal = length(I);
save([ruta 'paramTX.mat'],'lonSignal');
guardar(ruta,'InI.tx',I,2,1);
guardar(ruta,'InQ.tx',Q,2,1);
I = []; Q = [];
%%%%%%% Constantes
L = 10;
pFILTRO = 1; pIN = 2;
pVCO = 2; pOUT = 1;
pBAUDIO = 3;
ESTADO = 5;
% 1.- Situacin de reposo inicial
%--------------------------------
memoria = zeros(3,20);
trama = [];
IQc = [];
decisor = [];
primera = 1;
faseEstimada = [];
errorFase = [];
% 2.- Inicializacin de variables de bucle
%-----------------------------------------
primera = 1; % Comienza la trama?
load([ruta 'paramTX.mat'],'lonSignal');
avance = waitbar(0,'RECEPTOR: Recibiendo seal del Laboratorio(nivel Fsico)');
nMuestras = L*round((2^9)/L);% N de muestras a leer.
posicion = 1;
% 3.- Recuperamos los Bits
%-------------------------
while posicion>0,
% 3.1.- Cargamos informacion de los ficheros
I = cargar(ruta,'InI.tx',posicion, nMuestras, 2);
[Q,posicion] = cargar(ruta,'InQ.tx',posicion, nMuestras, 2);
% 3.2.- Recuperamos trama
for k= 1:length(I),
% 3.2.1.- Extraemos 1 bit de la trama
[aux, memoria, QIc, dec] = ...
sincroBaudio(I(1),Q(1), L, memoria);
trama = [trama aux];
% 3.2.2.- Guardamos seales utiles
% a partir del momento en que hay seal
if memoria(pBAUDIO, ESTADO)>0,
IQc = [IQc QIc];
decisor = [decisor dec];
faseEstimada = [faseEstimada,memoria(pVCO,pOUT)];
errorFase = [errorFase,memoria(pFILTRO,pIN)];
inPh = [inPh I(1)];
quad = [quad Q(1)];
else,
IQc = [];
decisor = [];
faseEstimada = [];
errorFase = [];
inPh = [];
quad = [];
end;
% 3.2.4.- Limpiamos entorno
QIc = []; aux = []; dec = []; I(1) = []; Q(1) = [];
end;
% 3.3.- Guardamos lo que llevamos
guardar(ruta , 'tramas.rx' , trama , fTRAMA , primera);
guardar(ruta , 'tramas.tx' , trama , fTRAMA , primera);
guardar(ruta , 'LineaI.tx' , inPh , fSIGNAL, primera);
guardar(ruta , 'LineaQ.tx' , quad , fSIGNAL, primera);
guardar(ruta , 'OutI.tx' , real(IQc) , fSIGNAL, primera);
guardar(ruta , 'OutQ.tx' , imag(IQc) , fSIGNAL, primera);
guardar(ruta , 'decisor.rx' , decisor , fSIGNAL, primera);
guardar(ruta , 'errorPLL.rx' , errorFase , fSIGNAL, primera);
guardar(ruta , 'faseEstimada.rx', faseEstimada, fSIGNAL, primera);
% 3.4- Inicializamos variables de bucle
primera = 0;
IQc = []; faseEstimada = []; errorFase = []; decisor=[]; trama = [];
inPh = []; quad = [];
waitbar(posicion/(8*lonSignal));
end;
% 4.- Limpiamos entorno
%------------------------
close(avance);
clear trama I Q IQc decisor errorFase k
clear faseEstimada avance primera memoria