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.

nivEnlaceTX.m
%------------------------------------------------------------------------
%|  	nivEnlaceTX
%------------------------------------------------------------------------
%|      Script que contiene las funciones del nivel de enlace del TX:
%|         1.- Generacin CRC
%|         2.- Entrelazado
%|         3.- Encapsulado
%-------------------------------------------------------------------------
%|   Autor: Cesar Delgado
%|   Fecha: 19-Abril-2.004
%-------------------------------------------------------------------------

if ~exist([ruta 'info.tx']),
   uiwait(errordlg('ERROR EN TX: no se han aplicado los procedimientos del nivel de presentacion - NivEnlaceTX()'));
else,
   %  1.- Cargamos el fichero de informacin al completo
   %----------------------------------------------------
   info = cargar(ruta,'info.tx',1, inf, fTRAMA);
   lonInfo = length(info);
   
   %  2.- Calculamos nBits de Informacin/ paquete (sin CRC)
   %--------------------------------------------------------
   lonCRC  = floor(140*parametros(pCRC,pCODE)/parametros(pCRC,pTRAMO));
   
   %  3.- Simulacin de procedimientos del nivel de aplicacin
   %----------------------------------------------------------
   % >>> 3.1.- Inicializamos Variables del bucle
   
   cabecera = 1; % Primera Cabecera: SYNCRO BOD INFO
   if length(info)<=lonCRC,
      cabecera=3;      % Solo hay un paquete: SYNCRO BOD INFO EOD
      lonCRC = length(info);
   end;  
   
   primera = 1;
   contador  = 0;   
   avance = waitbar(contador, 'TRANSMISOR: aplicando procedimientos de nivel de enlace');
   
   while ~isempty(info),
      contador  = contador +1;
            
      % >>> 3.2.- Extraemos informacin para rellenar 1 trama
      paquete = info(1:lonCRC);      
      info(1:lonCRC) = [];
      
      % >>> 3.3.- Aplicamos cdigos de redundancia cclica
      paquete = generaCRC (paquete, parametros(pCRC,pTRAMO), ...
                                    parametros(pCRC,pCODE), ...                                            
                                    metodo);
                                 
                                 
      % >>> 3.4.- Entrelazamos
      [paquete] = entrelaza(paquete, parametros(pENTRE,pFILA), ...
                                     parametros(pENTRE,pCOL));
      
      % >>> 3.5.- Encapsulamos    
      paquete = encapsula(paquete,cabecera);
      
      % >>> 3.6.- Cabeceras a aplicar al siquiente paquete
      if length(info) <= lonCRC, % Informacin restante <= 1 paquete?
         cabecera = 2;  % Estamos en el ltimo paquete ===> BOD SYNCRO EOD
         lonCRC = length(info);
      else,
         cabecera = 0;  % Por defecto: BOD INFO   
      end;            
      
      % >>> 3.7.- Guardamos lo que llevamos hasta el momento
      guardar(ruta, 'tramas.tx', paquete, fTRAMA, primera);
      primera  = 0;      
      paquete = [];
      waitbar(140*contador/lonInfo)
   end;  
   close(avance); 
end;

Contact us