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.

rxTrama2(linea, memoria)
function [trama, memoria] = rxTrama2(linea, memoria)
%------------------------------------------------------------------------
%|   function [trama, memoria] = rxTrama2(linea, memoria)
%------------------------------------------------------------------------
%|      Funcin que recibe promedia un conjunto de muestras
%|  asignndoles el valor "0" o "1".
%|
%|  Parmetros de entrada:
%|      1.- LINEA     = muestra de una seal de lnea de niveles TTL
%|      2.- MEMORIA   = vector fila de longitud mnima 16 o nFlancos, 
%|                      si ste supera los 16 flancos                       
%|
%|   Parmetros de Salida:
%|     1.- TRAMA       = bit resultante de la traduccin.
%|     2.- MEMORIA     = vector fila con las condiciones finales del reloj 
%-------------------------------------------------------------------------

%%%%%% Ctes.
contMUESTRA  = 1;   % Contador de Muestras
MUESTRAS_BIT = 3;
muestraANT   = 4;
valorUNO     = 6;
valorMUESTRA = 7;   % Suma de los voltajes de las muestras en 1 smbolo
trama        = [];

%  1.- Suma acumulada de la amplitud de todas muestras de 1 smbolo
%------------------------------------------------------------------
memoria(valorMUESTRA) = memoria(valorMUESTRA) + linea;
   
%  2.- Al final del smbolo estimamos si era un "0" o un "1"
%-----------------------------------------------------------
  % Detectamos flanco tras haber contado un nmero de muestras 
  % superior al 60% de las muestras que tiene 1 bit
flanco = ( (memoria(muestraANT)~=linea)    & ...
              ( memoria(contMUESTRA) > (memoria(MUESTRAS_BIT)*0.8) ) );

condicion = (memoria(contMUESTRA) >= memoria(MUESTRAS_BIT)) | flanco;

if condicion,  
   valorMedio = ceil(memoria(valorMUESTRA)/memoria(contMUESTRA));    
  % if (memoria(contMUESTRA) >= 0.8*memoria(MUESTRAS_BIT)),
      trama  = (valorMedio > 2);    
      if ~(memoria(valorUNO) > 0), % 0V ==> "1"
         trama = ~trama;
      end;                
      memoria(contMUESTRA) = 0;
      memoria(valorMUESTRA)= 0;      
      % else,      
   %   memoria(valorUNO) = ~memoria(valorUNO);
 %     memoria(valorMUESTRA)= linea*memoria(contMUESTRA);
 % end;   
end;      

 memoria(muestraANT)   = linea;  

Contact us at files@mathworks.com