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.

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 at files@mathworks.com