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.

divisorChap.m
pIN  = 1;  % Posicin en memoria de la entrada anterior
pOUT = 2;  % Posicin en memoria de la salida anterior
pMUESTRAS = 3; % Contador de muestras entre flancos
pFLANCOS  = 4; % Contador de flancos transcurridos
pMEDIO    = 5; % Nmero medio de muestras por flanco. 
% Sirve para evitar errores de fase en portadora

%nFlancos = 150;

% 1.- Divisin por 2
%-------------------
%>>>>>>>>>>>> 1.1.- Deteccin de flanco de subida
flanco = 0;

if (~primera) & (~isempty(memoria)),
   flanco = (memoria(pIN) < doble); % Entrada Anterior < Entrada Actual
else                                %   ==> Flanco de subida
    memoria(pFLANCOS) = 0;
end;                                 
%mitad = memoria(pOUT);

%>>>>>>>>>>> 1.2.- Si se detect flanco ==> Se conmuta salida 
%                                           de "0" a "1" o viceversa
if flanco,
   
   memoria(pFLANCOS) = memoria(pFLANCOS)+1;
   
   %%%% Fase de captura de nmero muestras medio por flanco
   %%%%%%%%  Conmutamos salida cada flanco detectado
   if (memoria(pFLANCOS)<nFlancos),  
      % Conmutamos salida
      if memoria(pOUT) == 0,
         mitad = 5;
      else
         mitad = 0;
      end;         
      memoria(pOUT) = mitad; % Salida actual
      
  %%%% Clculo del nmero medio de muestras / flanco
  elseif (memoria(pMEDIO) ==0),
      memoria(pMEDIO) = round(memoria(pMUESTRAS) / (2*nFlancos))-1;      
      if memoria(pOUT) == 0,
         mitad = 5;
      else
         mitad = 0;
      end;
      memoria(pOUT) = mitad; % Salida actual
      memoria(pMUESTRAS) = 0;

  %%%% Conmutamos salida cada pMEDIO muestras, siendo pMEDIO
  %%%%    el valor medio de muestras por flanco.    
   elseif (memoria(pMUESTRAS) >= memoria(pMEDIO)),      
      if memoria(pOUT) == 0,
         mitad = 5;
      else
         mitad = 0;         
      end;      
      memoria(pMUESTRAS) = 0;
      memoria(pOUT) = mitad; % Salida actual
   end;   
   flanco = 0;
      
%>>>>>>>> 1.3.- Si no se detect flanco, se conserva el valor anterior
else
   if primera | isempty(memoria),
      mitad = doble;
   else     
      mitad = memoria(pOUT);
   end;
end;

% 1.4.- Actualizacin de la memoria
memoria(pIN) = doble; % Entrada actual
memoria(pOUT) = mitad; % Salida Actual
memoria(pMUESTRAS) = memoria(pMUESTRAS)+1;

Contact us