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.

rxTrama2.m
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