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.

chapu.m

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%  VALIDACIN DE PARMETROS DE GENERA CRC
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

% 1.- Validacin de Parmetros de Entrada
%----------------------------------------
   % 1.1.- Nmero de parmetros de entrada
if nargin < 1      
   disp('ERROR: faltan parametros en generaCRC');   
elseif isempty(trama)
   disp('ERROR: trama vaca en generaCRC');
else   
   % 1.2.- Asignacin de valores por defecto en caso de omisin
   if nargin < 2      
      codigo = 4;
      tramo  = 7;
      metodo = 'hamming';
      validados = 0;
   elseif nargin < 3      
      tramo  = 7;
      metodo = 'hamming';
      validados = 0;
   elseif nargin < 4,               
      metodo = 'hamming';
      validados = 0;
   elseif nargin < 5,
      validados = 0;
   end;
   
    % 1.3.- Conversin a vector fila   
    tamano = size(trama);
    if tamano(1) > 1
         trama = trama(:,1); % Nos quedamos con 1 columna
         trama = trama';     % Convertimos a fila
    end
    
    % 1.4.- Se toman valores absolutos      
    codigo = abs(codigo);
    tramo  = abs(tramo);

    % 1.5.- Validacin de Parmetros
    if length(trama) < tramo
      disp ('ERROR: no se puede escoger un tramo de ms longitud que la propia trama en generaCRC');
    else
      if ~validados 
       [validados, metodo, tramo, codigo] = ... 
          validaParametrosCRC(metodo, tramo, codigo, 1);
    end;
    
    
    
    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%5
    %%%%%%%%%%%%%%  VALIDACIN DE PARMETROS DEL MODULADOR I-Q
    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    
    
    % 1.- Comprobacin de Parmetros
%-------------------------------
   % 1.1.- Numero de parametros introducidos
if nargin < 4
   disp ('ERROR: faltan parmetros en la funcin moduladorIQ');
else
   if nargin < 5      
      Rb      = 2400;
      RollOff = 0.5;
      QPSK    = 0;
      fase    = 0;
   elseif nargin < 6
      RollOff = 0.5;
      QPSK    = 0;      
      fase    = 0;
   elseif nargin < 7
      QPSK    = 0;
      fase    = 0;
   elseif nargin < 8
      fase    = 0;      
   end;
   
   % 1.2.- Trama se transforma a vector fila si no lo fuera
   Tamano = size(trama);
   if Tamano(1) > 1
      trama = trama(:,1); % Nos quedamos con la 1 columna
      trama = trama';     % Transformamos el vector fila en columna
   end;
   
   % 1.3.- Relacion entre frecuencias
   FS_FI = 1; % Constantes
   FI_RB = 2;    
   FS_RB = 3;
   
     % 1.3.1.-La relacion fi/Rb ha de ser un numero
     %        entero y mayor de 10
   relacion(FI_RB) = ceil(fi/Rb);   
   if relacion(FI_RB) < 2, 
      relacion(FI_RB) = 2;
   end;
   fi = relacion(FI_RB)*Rb;
   
     % 1.3.2.- La relacion fs/fi debera ser constante
     %         y mayor de 2
   relacion(FS_FI) = ceil(fs/Rb);
   if relacion(FS_FI) < 2
      relacion(FS_FI) = 4
   end;
   
   %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%555
   %%%%%%%%%%%%%% VALIDACIN DE PARMETROS DE DEMODULADOR I-Q
   %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   
     %  -- 1.1.- Valores por defecto
   if (nargin < 3),    % Reposo inicial por defecto
      memoria    = zeros(8,34); 
      N          = 20;
      parametros = zeros(4,3);
      pPLL    = 1;       
      pKv = 1;
      pWn = 2;
      pPsi = 3;
      parametros(pPLL, pKv) = 5e4;    % Hz/V
      parametros(pPLL, pWn) = 30.8e3; % rad/sg
      parametros(pPLL, pPsi) = 1/(sqrt(2));
   elseif (nargin < 4), 
      N = 20; 
      parametros = zeros(4,3);
      pPLL    = 1;       
      pKv = 1;
      pWn = 2;
      pPsi = 3;
      parametros(pPLL, pKv) = 5e4;    % Hz/V
      parametros(pPLL, pWn) = 30.8e3; % rad/sg
      parametros(pPLL, pPsi) = 1/(sqrt(2));   
   elseif (nargin < 5), % Parmetros del PLL por defecto
      if N>50, N=50; end;
      parametros = zeros(4,3);
      pPLL    = 1;       
      pKv = 1;
      pWn = 2;
      pPsi = 3;
      parametros(pPLL, pKv) = 5e4;    % Hz/V
      parametros(pPLL, pWn) = 30.8e3; % rad/sg
      parametros(pPLL, pPsi) = 1/(sqrt(2));
   else
      if isempty(memoria), memoria = zeros(8,34); end;
      if isempty(N), N=20; elseif N>50, N=50; end;
      if isempty(parametros),
            parametros = zeros(4,3);      
            pPLL    = 1; % Columna que ocupan los parmetros del PLL
            pKv = 1;
            pWn = 2;
            pPsi = 3;
            parametros(pPLL, pKv) = 5e4;    % Hz/V
            parametros(pPLL, pWn) = 30.8e3; % rad/sg
            parametros(pPLL, pPsi) = 1/(sqrt(2));           
         else
            aux = zeros(4,3)
            if (size(parametros,1) > 4), 
               parametros(5:size(parametros,1),:)= []; 
            end;
            if (size(parametros,2) > 3),
               parametros(:,3:size(parametros,2))= [];
            end;
            aux(1:size(parametros,1), 1:size(parametros,2)) = parametros;
            parametros=aux;
            clear aux;
         end;
   end;   
   
   %  -- 1.2.- Se transforma la entrada a vector fila
   if size(bandaFI,1) > 1, % Si tiene ms de una columna
      bandaFI = bandaFI(:,1); % nos quedamos con la 1 columna
      bandaFI = bandaFI';     % y trasponemos.
   end;

Contact us