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.

bpsk_mod.m
function [I,Q] = bpsk_mod(x,L,SNR, pulso, theta, phi)
%------------------------------------------------------------------------
%|  function bpsk_mod(x, L, SNR, pulso, theta, phi)
%------------------------------------------------------------------------
%|
%|    Funcion que implementa un generador de seales paso banda en
%|  fase y cuadratura. 
%| 
%|    Parametros de Entrada:
%|       1.- X = secuencia de bits
%|       2.- L = factor de sobremuestreo
%|       3.- SNR = relacion seal a ruido a la salida
%|       4.- PULSO = bandera, 0= pulso rectangular, 
%|                            1= filtro coseno alzado 
%|       5.- THETA = error de fase
%|       6.- PHI   = error de frecuencia
%|
%|   Salidas:
%|       1.- I = seal en fase (imaginaria compleja)
%|       2.- Q = seal en cuadratura (imaginaria pura)
%|
%|     NOTA: requiere Toolbox de Comunicaciones
%|
%-------------------------------------------------------------------------
%|   Autor: Cesar Delgado
%|   Fecha: 19-Abril-2.004
%-------------------------------------------------------------------------

% 1.- Secuencia de "1", "-1"
%----------------------------
x = 2*x-ones(1,length(x));

% 2.- Generador PAM
%-------------------
PAM = generaPAM(x,L);

% 2.- Filtrado Coseno Alzado
%---------------------------
if pulso,
    Linea = PAM; 
else
    h = rcosfir(0.6,[-3 3],L,1); 
    Linea  = filter (h,1,PAM);         
end;

Linea    = Linea ./ max(Linea);

% 3.- Agregamos ruido
%---------------------
Ptx       = std(Linea)^2;  % Varianza de la seal
sigma     = sqrt(Ptx/2)*10^(-SNR/20);
n_real    = sigma*(randn(1,length(Linea)));
n_imag    = sigma*(randn(1,length(Linea)));
Linea     = Linea + (n_real + j.*n_imag);

% 4.  Creamos I/Q agregando fase
%-------------------------------
IQ = Linea*exp(j*(theta+phi));
I = real(IQ);
Q = imag(IQ);





Contact us