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.

simBPSK.m
%------------------------------------------------------------------------
%|  	simBPSK     >-------> PRACTICA FINAL DEL LAB. TRAT. DIG. SE�ALES
%------------------------------------------------------------------------
%|      SIMULADOR DE COMUNICACIONES BPSK.
%|
%|       Da acceso a una interfaz grafica que permite emular la accion
%|  de un sistema de comunicaciones BPSK de baja tasa binaria.
%|
%|    Los parametros fs, Rb, fi estan a titulo informativo. Un cambio
%| de cualquiera de ellos supondria tener que reajustar todo el sistema
%| (ctes. de lazo del PLL, orden de los filtros, etc.), por lo que dejaria
%| de funcionar hasta que se encuentren los parametros adecuados para la
%| nueva situacion
%|
%|     TRANSMISOR:
%|        Nivel de Presentacion ===> Formateo de Texto en codigo Binario
%|        Nivel de Enlace       ===> CRC + Entrelazado
%|        Nivel Fisico          ===> Modulador IQ
%| 
%|     RECEPTOR:
%|        Nivel Fisico          ===> Demodulador BPSK con recuperacion 
%|                                    portadora mediante bucle 
%|                                    elevador al cuadrado
%|        Nivel de Enlace       ===> -CRC + Desentrelazado
%|        Nivel de Presentacion ===> Transformacion de Binario a Texto
%|
%|   NOTA DE IMPLEMENTACION:
%|     1.- Procesado muestra a muestra emulando la accion de un DSP:
%|          esto es, cada muestra pasa por todos los filtros, actualizando
%|          la memoria de cada uno de ellos para la siguiente muestra. 
%|              Este dise�o hace que el procesado sea lento.          
%|
%|     2.- Repeticion innecesaria de calculos: para mayor legibilidad de 
%|                                             codigo
%|
%|     3.- Concatenacion de filtros: cada funcion es un filtro (caja). Eso
%|           provoca un fortisimo acoplamiento dentro de cada modulo, al 
%|           ser una cadena de filtros con una estructura de datos y un
%|           objetivo comunes a todas las fcns. de cada modulo.
%|             La finalidad de este esquema es la compresion rapida de lo que 
%|           hace cada seccion de codigo (vision sistemica, tipo Simulink,
%|           pero con funciones en lugar de cajas, o sea, sin GUI).
%|
%|     4.- Coseno Alzado: provoca cambios de fase indeseados con la 
%|           consiguiente perdida de informacion. La siguiente mejora
%|           es la implementacion de un bucle de Costas para BPSK y QPSK.
%|
%|    Este codigo es util para introducirse el el procesado digital
%|  de se�ales (para eso me ha servido).
%------------------------------------------------------------------------
%|   Autor: Cesar Delgado
%|   Fecha: 19-Abril-2.004
%------------------------------------------------------------------------
clear all, clc 
set(0,'ShowHiddenHandles','On'); 
delete(get(0,'Children'));

%Creamos figura
%--------------
Texto = 'delete(figdiag); set(figura, ''Visible'',''On''); clear(''figdiag'');';
figdiag= figure('Units','Normalized',...
		'Position',[0.0525 0.2 0.87 0.6],...
		'Number','off',...
        'Name','Bienvenido a la Simulacion de un Sistema BPSK de bajo Regime Binario', ...
        'Menubar','none', ...           
        'Visible','Off', ...
        'Resize','Off',...
        'CloseRequestFcn', Texto ,...        
        'WindowButtonDownFcn', Texto,...        
        'KeyPressFcn', Texto);

%Ubicamos ejes en figura
%----------------------
axes('Units','Normalized',...
     'Position',[0 0 1 1]);
  
%Presentaci�n de imagen
%----------------------
%Importamos imagen *.jpg,junto con su mapa de colores
if exist('Ficheros','dir'),
    ruta = which('creaInterfaz.m');
    ruta(length(ruta)-31:length(ruta)) = [];
    ruta = [ruta 'Ficheros/'];    
    [x,map]=imread([ruta 'Imagenes/portada.jpg'],'jpg');
else
    Texto = {'ERROR: no se encuentra la ruta al programa. Posibles motivos:'; ... 
             '         1.- No ha incluido la ruta en el path del Matlab '; 
             '         2.- No ha creado directorio para los Ficheros ' ;
             '                   ---- SimBPSK.m ----              ';};

    uiwait(errordlg(Texto,'Simulador BPSK'));
    close all, clear all, clc
    error('ERROR EN RUTA: revise path del Matlab');    
end;


%Representamos imagen en figura, con su mapa de colores
image(x),colormap(map),axis off,hold on

%T�tulos sobre imagen
%--------------------
%T�tulo
figdiag = get(0,'CurrentFigure');
uicontrol(figdiag,'Style','text',...
	       'Units','normalized',...
           'String','SIMULADOR BPSK',...           
           'HorizontalAlignment', 'Left',...
           'FontWeight','normal',...
           'FontName','Arial Black',...
           'FontAngle','Italic',...
           'Fontweight','Bold',...
           'FontSize',25,...
           'Position',[.5 .8 .6 .2], ...
           'Foregroundcolor',[0 0 1], ...
           'Backgroundcolor',[1 1 1]);       
       

%Nombre del autor
uicontrol(figdiag,'Style','text',...
	       'Units','normalized',...
           'String','C�sar Delgado Gonz�lez',...          
           'HorizontalAlignment', 'Left',...
           'FontWeight','normal',...
           'FontName','Times New Roman',...
           'FontAngle','Italic',...
           'Fontweight','Bold',...
           'FontSize',14,...
           'Position',[.7 .78 .3 .1], ...
           'Foregroundcolor',[0 0 1], ...
           'Backgroundcolor',[1 1 1]);      
hold off

 % Lanzamos la Interfaz Grafica
 clear x map ruta Texto
 set(figdiag,'Visible','On' ,'WindowStyle','Modal');
 creaInterfaz;

Contact us