function Receptor(ruta, N, Bw, Orden, paramPLL)
%------------------------------------------------------------------------
%| Receptor(ruta, frec, nFlancos, Bw, Orden, paramPLL)
%------------------------------------------------------------------------
%| Funcin que implementa un receptor BPSK coherente con
%| recuperacin de portadora por bucle elevador al cuadrado.
%|
%| Entradas:
%| 1.- RUTA = cadena de caracteres la ruta del fichero de parmetros
%| del TX.
%| Valor por defecto: '.'
%| 2.- N_FLANCOS = n de alternancias "0" - "1" que han de considerarse
%| para la recuperacin del reloj.
%| Restricciones: < 50 (cabecera sincronismo)
%| Valor por defecto: 20.
%| 3.- BW = vetor fila: [ Bw Filtro BB, Bw filtro FI];
%| 4.- ORDEN = vector fila [Orden filtro FI, Orden filtro BB]
%| 5.- paramPLL = vector fila de 3 elemento con parmetros del paramPLL
%| paramPLL: [ Kv , Wn , Psi ]
%| Por defecto: [50 kHz/V, 38.2 krad/sg, 0.707]
%|
%| An no es viable la modificacin de parmetros del paramPLL
%|
%| NOTA: existe un fortsimo acoplamiento entre todas las funciones
%| involucradas en la demodulacin, ya que son llamadas para
%| ejecutar una determinada seccin de cdigo.
%-------------------------------------------------------------------------
% Autor: Cesar Delgado
% Fecha: 19-Abril-2.004
%-------------------------------------------------------------------------
%##########################################################################
% 1.- VALIDACIN DE PARMETROS DE ENTRADA
%##########################################################################
if nargin < 1,
% Kv(Hz/V) , wn (rad/sg) , psi
paramPLL = [ 5e4 , 30.8e3 , 1/(sqrt(2))];
Bw = [0.2 0.05]*fs;
N = 20;
ruta = '.';
Orden = [33, 33];
elseif nargin < 2,
% Kv(Hz/V) , wn (rad/sg) , psi
paramPLL = [ 5e4 , 30.8e3 , 1/(sqrt(2))];
Bw = [0.2 0.05]*fs;
N = 20;
Orden = [33, 33];
elseif nargin < 3,
% Kv(Hz/V) , wn (rad/sg) , psi
paramPLL = [ 5e4 , 30.8e3 , 1/(sqrt(2))];
Bw = [0.2 0.05]*fs;
if isempty(N), N = 20; end;
Orden = [33, 33];
elseif nargin < 4,
paramPLL = [ 5e4 , 30.8e3 , 1/(sqrt(2))];
if isempty(N), N = 20; end;
if isempty(Bw), Bw = [0.2 0.05]*fs;end;
if size(Bw,2)~=2, Bw = [0.2 0.05]*fs;, end;
Orden = [33, 33];
elseif nargin < 5,
% Kv(Hz/V) , wn (rad/sg) , psi
paramPLL = [ 5e4 , 30.8e3 , 1/(sqrt(2))];
if isempty(N), N = 20; end;
if isempty(Bw), Bw = [0.2 0.05]*fs;end;
if size(Bw,2)~=2, Bw = [0.2 0.05]*fs;, end;
if isempty(Orden), Orden = [33, 33]; end;
if size(Orden,2)~=2, Orden= [33, 33]*fs;, end;
elseif isempty(paramPLL),
% Kv(Hz/V) , wn (rad/sg) , psi
paramPLL = [ 5e4 , 30.8e3 , 1/(sqrt(2))];
if isempty(N), N = 20; end;
if isempty(Bw), Bw = [0.2 0.05]*fs;end;
if size(Bw,2)~=2, Bw = [0.2 0.05]*fs;, end;
if isempty(Orden), Orden = [33, 33]; end;
if size(Orden,2)~=2, Orden= [33, 33]*fs;, end;
elseif (length(paramPLL)~=3),
if size(paramPLL,1)>1, paramPLL = paramPLL'; end; % Transformamos a vector fila
% Kv(Hz/V) , wn (rad/sg) , psi
paramPLL = [ 5e4 , 30.8e3 , 1/(sqrt(2))];
disp ('WARNING: no se han comprendido bien los parmetros del paramPLL del Receptor');
disp (' Valores por defecto: Kv=50[kHz/V] wn=38.2[krad/sg] Psi=0.707');
if isempty(N), N = 20; end;
if isempty(Bw), Bw = [0.2 0.05]*fs;end;
if size(Bw,2)~=2, Bw = [0.2 0.05]*fs;, end;
if isempty(Orden), Orden = [33, 33]; end;
if size(Orden,2)~=2, Orden= [33, 33]*fs;, end;
end;
%##########################################################################
% 2.- CARGA DE PARMETROS DEL TX
%##########################################################################
%%%%%%%%%%%% Definicin de Ctes.
pGENERAL = 1; pFS = 1; pRB = 2;
pENTRE = 2; pFILA = 1; pCOL = 2;
pCRC = 3; pTRAMO = 1; pCODE = 2;
pIQ = 4; pFASE = 1; pFI = 2;
fINFO = 0; fTRAMA = 1; fSIGNAL = 2;
I = 1; Q = 2;
if exist([ruta 'paramTX.mat']),
load([ruta 'paramTX']); % Suponemos que ya vienen validados del TX.
else
disp('ERROR: no se encuentra el fichero de parmetros en el Receptor');
return;
end;
frec = [parametros(pGENERAL,pRB), ...
parametros(pIQ,pFI), ...
parametros(pGENERAL,pFS)];
L = frec(3)/frec(1); % fs/Rb: lo necesitamos para la extraccin de
% de la informacin del fichero, aunque
% la recuperacin de reloj lo calcula.
%---------------------------------------------
% La lectura del fichero es algo intrnseco
% de la simulacin, por eso usamos este dato.
% La recuperacin de reloj debe se capaz de
% de recuperar el periodo de Reloj, por eso
% se vuelve a calcular ah.
%zzzzzzzzzzz zzzzzzzzzzzzzzzzzzzzz zzzzzzzzzzzzzzzzzzz zzzzzzzzzzzzzzzzz
%##########################################################################
% 3.- NIVEL FSICO DEL RECEPTOR:
% a) Demodulacin
% b) Recuperacin de Reloj
%##########################################################################
nivFisicoRX;
%##########################################################################
% 4.- NIVEL ENLACE DEL RECEPTOR:
% a) Desentrelazado
% b) Recuperacin CRC (Cdigo de Redundancia Cclica)
%##########################################################################
nivEnlaceRX
%##########################################################################
% 5.- NIVEL PRESENTACIN DEL RECEPTOR:
% De binario a ASCII
%##########################################################################
nivPresenRX