No BSD License  

Highlights from
BPSK Simulator for Low Rate Transmisions

image thumbnail
from BPSK Simulator for Low Rate Transmisions by César Delgado González
BPSK Simulator for didactical purposes. Systemic coding style.

Receptor(ruta, N, Bw, Orden, paramPLL)
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

Contact us at files@mathworks.com