%------------------------------------------------------------------------
%| 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;