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.

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