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.

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 at files@mathworks.com