No BSD License  

Highlights from
BPSK Simulator for Low Rate Transmisions

image thumbnail

BPSK Simulator for Low Rate Transmisions

by

 

01 Jun 2004 (Updated )

BPSK Simulator for didactical purposes. Systemic coding style.

nivEnlaceRX.m
%------------------------------------------------------------------------
%|  	nivEnlaceRX
%------------------------------------------------------------------------
%|      Script que contiene las funciones del nivel de enlace del RX:
%|         1.- Desencapsulado
%|         2.- Desentrelazado
%|         3.- Recuperacin CRC
%-------------------------------------------------------------------------
%|   Autor: Cesar Delgado
%|   Fecha: 19-Abril-2.004
%-------------------------------------------------------------------------

if ~exist([ruta 'tramas.rx']),
   uiwait(errordlg('ERROR EN RX: no se han aplicado los procedimientos de nivel fsico'));
else,
   %  1.- Cargamos el fichero de informacin al completo
   %----------------------------------------------------
   tramas = cargar(ruta,'tramas.rx',1, inf, fTRAMA);
   lonInfo  = length(tramas);
   
   %  2.- Calculamos nBits de Informacin/ paquete (sin CRC)
   %--------------------------------------------------------
   lonTrama  = 248; % 1 Trama: SYNCRO BOD INFO = 100 + 8 + 140
   
   %  3.- Simulacin de procedimientos del nivel de aplicacin
   %----------------------------------------------------------   
   cabecera = 1; % Primera Cabecera: SYNCRO BOD INFO
   if length(tramas)<=256,
      cabecera=3;      % Solo hay un paquete: SYNCRO BOD INFO EOD
      lonTrama = length(tramas);
   end; 
   
   primera = 1;
   contador = 1;
   avance = waitbar(0,'RECEPTOR: CRC+Entrelazado (nivel enlace)');
   
   while ~isempty(tramas),
      
      % >>> 2.1.- Extraemos informacin para rellenar 1 trama
      paquete = tramas(1:lonTrama);    
      tramas(1:lonTrama) = [];      
      
      % >>> 2.2.- Desencapsulamos    
      [paquete, errorCab]= desencapsula(paquete,cabecera);      
      
     % paquete
      if length(tramas) < 160, % Informacin restante <= 1 paquete?
         cabecera = 2;  % Estamos en el ltimo paquete ===> BOD INFO EOD
         lonTrama = length(tramas);          
      else,
         cabecera = 0;  % Por defecto: BOD INFO
         lonTrama = 148; 
      end;            

      
      % >>> 2.3.- Desentrelazamos
      [paquete] = desentrelaza(paquete, ...
                               parametros(pENTRE,pFILA),...
                               parametros(pENTRE,pCOL));
      
      % >>> 2.4.- Calculamos cdigos de redundancia cclica
      [paquete, errorCRC] = recuperaCRC (paquete, parametros(pCRC,pTRAMO), ...
                                                  parametros(pCRC,pCODE), ...
                                                  metodo);                                        
     
      
      % >>> 2.5.- Guardamos lo que llevamos hasta el momento
      guardar(ruta, 'info.rx', paquete, fTRAMA, primera);
      primera  = 0;            paquete  = [];      
      
      contador = contador + lonTrama;
      waitbar(contador/lonInfo, avance);      
   end;   
   close(avance)
end;

Contact us