Story Transcript
APOYOS DIDACTICOS PARA LA CLASE DE COMUNICACIONES CON MATLAB
por Sandra Ivonne Lara Sotelo
Presentado a la academia de Sistemas Digitales y Comunicaciones del Instituto de Ingeniería y Tecnología de La Universidad Autónoma de Ciudad Juárez para su evaluación
LA UNIVERSIDAD AUTÓNOMA DE CIUDAD JUÁREZ Marzo del 2010
Mtra. Alejandra Mendoza
___________________________________________
Presidente de la academia
Dr. Víctor Manuel Hinostroza Zubia Asesor
___________________________________________
Sandra Ivonne Lara Sotelo Alumno
___________________________________________
Justificación de la investigación:
Hasta ahora los métodos que se han utilizado para facilitar el aprendizaje de los alumnos en las clases de comunicaciones han sido simples. Actualmente la información que se tiene acerca del área de comunicaciones se imparte mediante un glosario definido, y para esclarecer las definiciones de estas materias los recursos son insuficientes. En esta investigación se da una breve información acerca de programas que pueden ser utilizados por el profesor en las clases de comunicaciones. Todo esto con el fin de que los alumnos tengan una clara idea de muchos de los conceptos en las clases.
La habilidad para usar herramientas tales como Matlab se convirtió rápidamente en un requisito para muchas actividades de Ingeniería. Este software es muy sencillo de utilizar y tiene muchas aplicaciones. Además cuenta con muchas librerías y herramientas que son útiles a la hora de resolver problemas matemáticos. Los profesores de comunicaciones impartirían su clase de manera más interpretativa para los alumnos con programas en donde pudieran simular cada uno de los conceptos de comunicaciones. Estos programas pueden emplearse no sólo para reforzar y visualizar conceptos de comunicaciones, sino también para resolver problemas y para el diseño avanzado [1].
Antecedentes: Hasta hace poco, la mayoría de los usuarios de Matlab eran personas que tenían conocimientos previos sobre lenguajes de programación como Fortran o C, y que
decidieron cambiarse a Matlab una vez que este software se hizo suficientemente popular [2]. En los últimos años, sin embargo, Matlab se enseña como el primer lenguaje, sobre todo si se trata de clases en donde se manejan conceptos de comunicaciones. Las clases de comunicaciones que se imparten en la universidad son: Comunicaciones I, Comunicaciones II y Comunicaciones Digitales. En estas clases se ha utilizado Matlab para graficar señales y hacer operaciones sencillas con ellas con el objetivo de identificar claramente como es la señal. Un ejemplo es el sumar dos señales y ver cuál es la señal resultante. En algunos programas se inicializa una frecuencia y una fase para luego introducirlas a una señal y percibirla en una gráfica. Pero más allá de esos programas sencillos, los demás conceptos de estas clases hasta ahora se explican en el pizarrón.
Existen muchas funciones o programas que nos ayudan en el conocimiento de las comunicaciones. En Matlab los comandos para realizar operaciones son muy sencillos, solo hay que poner el nombre del comando con sus respectivas entradas para que arroje un resultado. Por ejemplo, para realizar la correlación de dos señales solamente hay que introducir la función xcorr (x, y) y asignarla a una variable. También existen otras funciones como la de la convolución, Transformada de Fourier, Transformada de Laplace, etc.
Planteamiento del problema: Los profesores que imparten las materias de comunicaciones, en la mayoría de los casos cuando realizan gráficas u operaciones lo hacen en el pizarrón, esta por demás decir que esta manera la más explícita para los alumnos. Esto se debe a que los trazos no son exactos,
la precisión del profesor para dibujar no es buena, la gráfica es muy difícil de dibujar, el espacio para dibujar la gráfica no es suficiente, etc. Es por eso que en muchas ocasiones los profesores recurren a medios electrónicos para impartir su clase.
Matlab es el recurso más importante que utilizan los profesores de las clases de comunicaciones de la UACJ para resolver problemas. Pero cuando se utiliza Matlab se hacen operaciones muy sencillas, como por ejemplo la graficación de una señal dada. Cuando el profesor imparte su clase se apoya de un proyector para plasmar sus conocimientos a sus alumnos. Este medio es efectivo ya que se muestra la señal graficada de una manera muy precisa; La señal es clara debido a que la imagen es obtenida de algún programa de computadora; sin embargo, se necesitan programas en los que se vea cómo se va formando dicha señal dependiendo del concepto de comunicaciones que se esté enseñando.
Marco teórico: Matlab es una de las muchas sofisticadas herramientas de computación disponibles en el comercio para resolver problemas de matemáticas. Sus aplicaciones comprenden la mayoría de las áreas de ciencia e ingeniería [3]. Matlab es una abreviatura de Matrix Laboratory, laboratorio matricial. En muchas clases de ingeniería, la realización de cálculos con un programa de computación matemático como Matlab sustituye la programación de computadoras más tradicional. Matlab se escribió originalmente en Fortran y después se reescribió en C. Matlab es un instrumento muy útil al trabajar con matrices y gráficos.
Brinda una eficiente base de cálculo para un “laboratorio de sotware” donde se exploran los conceptos y se prueban los diseños de sistemas [4].
Para realizar un programa en Matlab los pasos son los siguientes: 1. Plantear el problema. Se tiene que tener una idea clara de que es lo que se quiere. 2. Describir las entradas y salidas. Se debe saber cuáles son los datos de los que queremos partir y su relación con las salidas y también las constantes que requiera el cálculo. Además es importante manejar bien las unidades que se van a utilizar. 3. Desarrollar algoritmo. Tener un algoritmo ayuda a aclarar y ordenar las ecuaciones que se utilizaran y cada uno de los pasos que se llevarán a cabo, luego reflejarlo en Matlab. 4. Resolver el problema. Este paso implica encontrar la solución al problema. 5. Probar la solución. Comparar los resultados obtenidos con los que se esperaban. El lenguaje que Matlab utiliza es de alto nivel. Cuenta con comandos de visualización en 2D y 3D así como numerosas instrucciones, funciones y librerías. Matlab crea archivos para manipulación con extensión .m, archivos para interfaz gráfica del usuario .gui, archivos gráficos .fig, además el usuario puede crear sus variables y funciones. El Simulink es una parte de Matlab que nos sirve para simular Sistemas Dinámicos No Lineales. Este simulador tiene Blocksets, que sirven para poder trabajar con procesamiento de señales y comunicaciones. El conjunto de herramientas para procesamiento de señales de Matlab tiene una gran variedad de funciones para generar señales, la mayor parte de las cuales requieren representación vectorial del tiempo t o n.
Objetivo general: Desarrollar e implementar materiales de apoyo didáctico en Matlab para las clases de comunicaciones.
Metodología Objetivos específicos: 1 Investigar bibliográfica sobre los temas de la clase de comunicaciones digitales 2 Practicar programación en Matlab 3 Realizar análisis de los programas que se van a implementar 4 Desarrollar algoritmos para los programas 5 Realizar los programas para cada una de las clases 6 Probar los programas en clase 7 Documentar el proyecto Metas: 1.1
Investigar un mínimo de 8 fuentes bibliográficas de y 8 fuentes electrónicas de información acerca de los temas de comunicaciones para el 20 de agosto.
2.1
Investigar por lo menos 3 manuales de Matlab en fuentes bibliográficas y electrónicas para el 20 de agosto.
3.1
Plantear los problemas basados en los temas de comunicaciones para los cuales se va a programar para el 27 de agosto.
4.1
Desarrollar algoritmos de todos los programas de comunicaciones para el 10 de septiembre.
5.1
Realizar los diagramas de flujo basados en los algoritmos para el 17 de septiembre.
7.1
Programar, verificar y depurar los problemas para el 5 de noviembre.
7.1
Documentar el proyecto para el 19 de noviembre.
Acciones: Meta 1.1 1.1.1 Investigar en Internet, revistas y libros 1.1.2 Investigar en biblioteca UACJ/ UTEP Meta 2.1 2.1.1
Investigar en Internet, libros y manuales
2.1.2
Investigar en biblioteca UACJ/UTEP
Meta 3.1 3.1.1
Definir cuáles van a ser los temas a programar
3.1.2
Definir datos de entrada y salida
Meta 4.1 4.1.1
Investigar en internet y libros
4.1.2
Investigar en biblioteca UACJ/UTEP
4.1.3
Diseñar el algoritmo para cada uno de los programas
Meta 5.1 5.1.1
Diseñar los diagramas de flujo basados en los algoritmos
Meta 6.1 7.1.1
Escribir el código de los programas
7.1.2
Depurar los programas
7.1.3
Correr los programas y verificar resultados
Meta 7.1 7.1.1. Acudir con el asesor para la revisión de los programas 7.1.2. Documentar la información y resultados obtenidos del proyecto Requerimientos: Meta 1.1 •
Computadora con Internet
•
Acceso a UACJ/UTEP
•
Apuntes de clases de comunicaciones
•
Computadora con Internet
•
Acceso a UACJ/UTEP
•
Anotaciones (libreta y lápiz)
•
Computadora
Meta 2.1
Meta 3.1
Meta 4.1 •
Computadora con Internet
•
Acceso a UACJ/UTEP
•
Anotaciones (libreta y lápiz)
•
Computadora
•
Anotaciones (libreta y lápiz)
•
Computadora
•
Anotaciones (libreta y lápiz)
•
Software Matlab 7.0
•
Computadora con Internet
•
Impresora
Meta 5.1
Meta 6.1
Meta 7.1
Plan de trabajo: A continuación se muestra un cronograma con las actividades a realizar antes mencionadas:
Cronograma de acciones Acciones Numero Acción 1.1.1 Acción 1.1.2 Acción 2.1.1 Acción 2.1.2 Acción 3.1.1 Acción 3.1.2 Acción 4.1.1 Acción 4.1.2 Acción 4.1.3
1
Agosto
Septiembre
Octubre
Noviembre
Diciembre
Semana
Semana
Semana
Semana
Semana
2
3
4
1
2
3
4 1
2
3
4
1
2
3
4
1
2
3
4
Acción 5.1.1 Acción 6.1.1 Acción 6.1.2 Acción 6.1.3 Acción 7.1.1 Acción 7.1.2
Referencias: [1] Ashok Ambardar. Procesamiento de Senales analógicas y digitales. Thomson. 2002. [2] Amos Gilat. Matlab una introducción con ejemplos prácticos. Reverté. 2005 [3] http://mat21.etsii.upm.es/ayudainf/aprendainf/Matlab70/matlab70primero.pdf, 26 febrero. [4] Simon Haykin, BarryVan Veen. Señales y Sistemas. Limusa wiley. 2004.
AYUDAS DIDÁCTICAS DE LAS CLASES DE COMUNICACIONES EN MATLAB
Por Sandra Ivonne Lara Sotelo
Presentado a la Academia de Sistemas Digitales y Comunicaciones Del Instituto de Ingeniería y Tecnología de La Universidad Autónoma de Ciudad Juárez Para obtener el título de
INGENIERO EN SISTEMAS DIGITALES Y COMUNICACIONES
UNIVERSIDAD AUTÓNOMA DE CIUDAD JUÁREZ Noviembre del 2010
UNIVERSIDAD AUTÓNOMA DE CIUDAD JUÁREZ
Instituto de Ingeniería y Tecnología
EVALUACiÓN DE EXAMEN
Fecha: 26 de Noviembre del 2010 Horario: 09:00 - 11 :00 HRS.
PROFESIONAL INTRACURRICULAR NIVEL: LICENCIATURA I TEMA:
"Apoyos didácticos para clase de comunicaciones con MATLAB "
l
La evaluación del examen profesional intracurricular consta de 4 partes:
(Desarrollado en 1 hora)
1°._ 2°_ 3°.4°._
Exposición por parte de los alumnos (máximo 20 minutos).
Réplica por parte del jurado.
Comentarios ylo recomendaciones.
Entrega de resultados.
Nombre del alumno: Sandra Ivonne Lara Sotelo
_-"Z",,--1-__
Calificación Maestro de la materia (30%)
3
mayor que
=
mayor o igual que
==
igual que
~=
distinto que
2.2.1 Operadores lógicos
6
Los operadores lógicos de Matlab son los siguientes: &&
and
||
or
~
negación lógica
2.3 Matrices Matlab está diseñado fundamentalmente para cálculo matricial. En Matlab se trabaja básicamente con solo un tipo de objeto, una matriz numérica rectangular con posibles entradas complejas; todas las variables son representadas con matrices. En algunos casos, matrices de una fila y una columna interpretadas como escalares, o matrices de una sola fila o una sola columna interpretadas como vectores. Como la mayoría de las calculadoras científicas, Matlab ofrece muchas importantes funciones para matemáticas, ingeniería y las ciencias. Además de funciones comunes, Matlab ofrece cientos de funciones especializadas y algoritmos que son útiles para resolver problemas específicos. Como en casi todos los lenguajes de programación, en Matlab las matrices y vectores son variables que tienen nombres. Para definir una matriz no hace falta establecer de antemano su tamaño. Matlab determina el número de filas y de columnas en función del número de elementos que se proporcionan (o se utilizan). Las matrices se definen por filas; los elementos de una misma fila están separados por blancos o comas, mientras que las filas están separadas por intro (Enter) o por caracteres punto y coma (;). Un ejemplo es el siguiente: A=[1 2 3; 4 5 6; 7 8 9] A=
1
2
3
4
5
6
7
7
8
9
Matlab dispone de varias formas de definir matrices. El introd ucirlas por teclado sólo es práctico en casos de pequeño tamaño y cuando no hay que repetir esa operación muchas veces. Matlab accede a los elementos de una matriz por medio de los índices de fila y de columna encerrados entre paréntesis y separados por una coma. Matlab cuenta con varias funciones y operaciones orientadas a definir con gran facilidad matrices de tipos particulares. 2.4 Definición de funciones Las funciones en Matlab son programas que toman las variables que se les pasan (variables de entrada), luego realiza cálculos y manipulaciones con ellas y devuelve los resultados (variables de salida). Estas funciones definidas se caracterizan porque la primera línea comienza por la palabra function, el formato es el siguiente: function [variables de salida] = nombredefunción(variables de entrada) Puede haber funciones sin valor de retorno y también sin argumentos. Los argumentos son los datos de la función y los valores de retorno son sus resultados. Si no hay valores de retorno se omiten los corchetes y el signo igual (=); si sólo hay un valor de retorno no hace falta poner corchetes. Tampoco hace falta poner paréntesis si no hay argumentos. En Matlab no se modifican los argumentos que recibe en la función, esta es una diferencia que presenta con C, C++ y Java. Los valores de retorno son los que mandan los resultados de una función. Estos valores pueden ser múltiples y matriciales. El número de argumentos y el de valores de retorno puedes ser fijos o no, esto depende de cómo el usuario llama a la función. Las variables definidas dentro de una función son variables locales, esto significa que son inaccesibles desde otras partes del programa y no interfieren con variables del
8
mismo nombre definidas en otras funciones o partes del programa. Estas variables pertenecen al propio espacio de trabajo de la función y no son vistas desde otros espacios de trabajo. Para que la función tenga acceso a variables que no han sido pasadas como argumentos es necesario declarar dichas variables como variables globales, tanto en el programa principal como en las distintas funciones que deben acceder a su valor. Los argumentos que recibe una función de Matlab se copian a variables locales si no son modificados por dicha función. Esto tiene importantes consecuencias en términos de eficiencia y ahorro de tiempo de cálculo. Sin embargo, si dentro de la función se realizan modificaciones sobre los argumentos recibidos, antes se sacan copias de dichos argumentos a variables locales y se modifican las copias. Los valores de retorno se calculan dentro de la función, pero en Matlab no hace falta calcular siempre todos los posibles valores de retorno de la función, sino sólo los que el usuario espera obtener en la sentencia de llamada a la función. En cualquier función existen dos variables definidas de modo automático, llamadas nargin y nargout, que representan respectivamente el número de argumentos y el número de valores de retorno con los que la función ha sido llamada. La ejecución de una función termina cuando se llega a su última sentencia ejecutable. La sentencia return se utiliza para forzar a que una función termine de ejecutarse y devuelva inmediatamente el control al entorno de llamada. Matlab dispone de otra forma de pasar a una función un número variable de argumentos por medio de la variable varargin, que es un vector de celdas (cell array). Un vector de celdas es un vector cuyos elementos son cada uno de ellos una variable de cualquier tipo. Esta variable recoge todos los argumentos a partir de una determinada posición. De igual forma, una función puede tener un número indeterminado de valores de retorno utilizando varargout, que es también un vector de celdas que agrupa los
9
últimos valores de retorno de la función. 2.5 Inte rfaz Gráfica de Usuario (GUI) Matlab Guide es un entorno de programación visual que ofrece Matlab para poder realizar y ejecutar programas de simulación, tiene las características básicas de todos los programas visuales como Visual Basic o Visual C++. El lenguaje más habitual para crear GUI’s es Java, ya que tiene la enorme ventaja de funcionar en cualquier máquina, sin embargo Java resulta muy lento para hacer cálculos eficientemente. En comparación con Java, Matlab es más poderoso al realizar cálculos grandes. La GUI consta de dos archivos: uno .m que contiene el código del programa, y otro .fig que es la parte gráfica. Las dos partes están unidas a través de las subrutinas de llamada (callback). La cadena de invocación es una cadena que consiste en un comando, un conjunto de órdenes o una llamada de función. En esta cadena se especifican todas las tareas de cómputo que deben ejecutarse al elegirse la opción. No siempre es necesario definir la propiedad callback, ya que algunos objetos no ejecutan ningún comando de Matlab. El archivo .m que se crea tiene una estructura predeterminada. Consta de un encabezado y el código correspondiente a las subrutinas. Este archivo es construido automáticamente por Matlab y las líneas de código que aparecen son las que crean la interfaz que aparece en el archivo .fig. El archivo de inicialización define los parámetros básicos de la interfaz y crea un conjunto de identificadores (handles) para cada uno de los objetos que vayan apareciendo sobre la interfaz. Cada uno de los objetos de Matlab tiene un identificador único. Algunos gráficos tienen muchos objetos, por lo tanto tienen múltiples handles. El objeto raíz (pantalla) es siempre único y su identificador es el cero. El identificador de las ventanas es un entero, que aparece en la barra de nombre de dicha ventana. Los identificadores de
10
otros elementos gráficos son números flotantes (float), que pueden ser obtenidos como valor de retorno y almacenados en variables de Matlab. El objeto más general de una GUI es la pantalla (screen). Este objeto es la raíz de todos los demás objetos y sólo puede haber un objeto pantalla. Una pantalla puede contener una o más ventanas (figures). A su vez cada una de las ventanas puede tener uno o más ejes de coordenadas (axes). Una ventana puede tener también controles (uicontrol) tales como botones, barras de desplazamiento, botones de selección o de opción, etc.) y menús (uimenu). Finalmente, los ejes pueden contener los seis tipos de elementos gráficos que permite Matlab: líneas (line), rectángulos (rectangle), polígonos (patches), superficies (surface), imágenes bitmap (image) y texto (text). Todos los valores de las propiedades de los elementos de Matlab (ej. color, etiqueta, valor, posición, texto, etc.) y los valores de las variables del programa se guardan en una estructura, los cuales son accedidos mediante un único y mismo puntero. Una estructura (struct) es una agrupación de datos de tipo diferente bajo un mismo nombre. Estos datos se llaman miembros (members) o campos (fields). En una GUI, el flujo de datos está controlado por las acciones en la interfaz. Los comandos para crear una interfaz con el usuario se escriben en un guión, la interfaz invoca el guión que se ejecute, mientras la interfa z del usuario permanece en la pantalla aunque no se haya completado la ejecución del guión. Cuando se interactúa con un control, el programa registra el valor de esa opción y ejecuta los comandos prescritos en la cadena de invocación. Al completarse la ejecución de las instrucciones de la cadena de invocación, el control vuelve a la interfaz para que pueda elegirse otra opción del menú. Este ciclo se repite hasta que se cierra la GUI. El control guarda un string que describe la acción a realizar cuando se invoca, puede consistir en un solo comando de Matlab o una secuencia de comandos, o en una llamada a una función [4].
11
Las Componentes principales de GUIDE son:
Barra de Menús: Es donde se encuentran las funcione s elementales de edición de GUI’s.
Paleta de Componentes: Contiene los controles (uicontrols) que se muestran en la GUI.
Barra de Herramientas: Es donde se encuentran los siguientes botones: o Alineación de Componentes (Alignment tool): esta opción permite alinear los componentes que se encuentra en el área de trabajo (Layout Area) de manera personalizada. o Propiedades del Inspector (Property Inspector): Contiene todas las propiedades de cada objeto en forma personalizada. o Navegador de Objetos (Object Browser): Muestra todos los objetos que se encuentran en la figura (en forma de árbol). o Editor de Menús (Menu Editor): El redactor de Menú crea menús de ventana y menús de contexto. o Editor de orden (Tab Order Editor): Es para editar el orden de los objetos de la GUI. o Editor de archivos M (M-File Editor): Despliega en pantalla el archivo .m.
Controles de la GUI Los controles de la interfaz con el usuario en Matlab se especifican con la orden uicontrol, y se localizan en la parte izquierda de la pantalla principal de la GUI, son los siguientes:
12
Figura 1. Controles de la GUI.
Menú desplegable (Popup Menu). Provee una lista de opciones.
Botones (Push Button). Invoca un evento inmediatamente.
Caja de listas (List Box). Muestra una lista deslizable.
Casilla de verificación (Check Box). Están diseñadas para realizar operaciones de encendido/apagado. Indican el estado de una opción o atributo.
Botón de radio (Radio Button). Indica una opción que puede ser seleccionada. Cuando sólo se usa un botón de radio, no existe ninguna diferencia funcional con respecto a una casilla de verificación. Los botones de radio en grupo son mutuamente exclusivos (es decir, si un botón esta encendido, todos los demás botones se apagan),
mientras que las casillas de verificación son
independientes entre sí.
Texto estático (Static Text). Muestra un string de texto en una caja.
Barra deslizadora (Slider). Usado para representar un rango de valores.
Texto editable (Text Edit). Permite al usuario teclear una cadena de entrada.
13
Panel de botones (Panel Button). Sirve para agrupar dispositivos.
Botón de palanca (Toggle Button). Genera una acción que indica un estado binario. (encendido o apagado).
Grupo de botones (Button Group) Permite exclusividad de selección con los radio button.
Active x. Permite crear aplicaciones exportables.
14
CAPÍTULO 3. Conceptos básicos de Comunicaciones. Los elementos de un sistema de comunicación son: Fuente de información. La fuente de información puede ser análoga, por ejemplo: voz o video o puede ser digital, por ejemplo: información binaria proveniente de una computadora. Codificación de fuente. La codificación de fuente es un proceso que convierte la información de la fuente a digital, si esta es análoga y además convierte esta información binaria a otro código, que requiere menos cantidad de bits por fracción de información. Codificación de canal. Esta codificación agrega información redundante a la salida de la codificación de fuente, para asegurar su integridad, corregir errores y a veces su seguridad. Modulador digital. La modulación realizada en esta parte se hace para adecuar la información (banda base) al medio que se use para su transmisión. (pasa-banda) Generalmente es una translación de frecuencia o una translación de nivel o ambas. Canal de comunicación. Medio físico sobre el cual se envía la información de transmisor a receptor. Este medio puede ser un cable, fibra óptica, el aire o un enlace satelital. De-modulador digital. Proceso inverso a la modulación, se hace una translación de frecuencia de pasa-banda a banda base. La salida del de-modulador es una aproximación de la información original. Decodificador de canal. Reconstruye la aproximación de la salida del de-modulador a la información original del modulador de canal, haciendo uso de la información redundante agregada en el modulador de canal del transmisor. Decodificador de fuente. Reconstrucción final de la información original de la fuente.
15
La diferencia entre la versión original de la fuente y la salida del decodificador de la fuente es una medida de la distorsión del sistema de comunicación. 3.1 Señales y sistemas Señales. Es una cantidad eléctrica que se define por una función que describe cómo se desarrolla una variable física en el tiempo. Las señales están definidas por tres características principales: amplitud, fase y frecuencia. La amplitud es el valor escalar instantáneo que se indica en unidades, normalmente Volts de la señal. La frecuencia es un valor que nos indica, asumiendo que una señal es periódica, el número de veces que el periodo se repite en un intervalo de tiempo, las unidades de frecuencia son Hertz. La fase es un valor que indica el valor instantáneo de la amplitud dentro del periodo de la señal. Clasificación de señales. Una señal puede ser aleatoria o determinística, puede ser periódica o no periódica, puede ser continua o puede ser discreta. Las señales aleatorias son en las que hay cierto grado de incertidumbre por su valor de amplitud en cualquier tiempo. Las señales determinísticas, son aquellas que no hay incertidumbre con respecto a su valor en cualquier tiempo. Las señales periódicas son aquellas que sus valores se repiten en un cierto periodo de tiempo. Las señales no periódicas no repiten sus valores en el tiempo. Las señales discretas son aquellas que tiene un rango de valores contable y cada uno de estos valores puede ser asignado a un número real. Las señales continuas tienen un rango de valores infinito y presentan cambios de valores que se pueden asignar a un número. Ejemplos de señales: Función Escalón Unitario. Es una función matemática que tiene como característica el tener un valor de 0 para todos los valores negativos de su argumento, y de 1 para todos los valores positivos de su argumento.
16
1 t 0 1 u (t ) t 0 2 0 t 0
Figura 3.1. Función Escalón unitario. Función Rampa. Es una señal que cambia constantemente con el tiempo.
t t 0 ramp(t ) u ( )d tu (t ) 0 t 0
Figura 3.2 Función Rampa.
Función Sinc. Tiene una singularidad evitable en cero, que generalmente se redefine específicamente como igual a 1.
sin c(t )
sen(t ) t
Figura 3.3. Función Sinc.
Función Seno. Es aquella que asocia a cada ángulo el valor del seno correspondiente.
17
y(t)=Asin(t)
Figura 3.4. Función Seno. Función Coseno. Aquella que asocia a cada ángulo el valor del coseno correspondiente.
y(t)=cos(t)
Figura 3.5. Función Coseno. Función Triangular. Presenta unas velocidades de subida y bajada (Slow Rate) constantes.
y(t)=
Figura 3.6. Función Triangular. Función Diente de Sierra.
Figura 3.7. Función Diente de sierra
18
Función Cuadrática.
Figura 3.8. Función Cuadrática. 3.2 Serie de Fourier La Serie de Fourier sirve para representar señales continuas periódicas por medio de una serie de componentes senoidales. Constituyen la herramienta matemática básica del análisis de Fourier empleado para analizar funciones periódicas a través de la descomposición de dicha función en una suma infinitesimal de funciones senoidales mucho más simples (como combinación de senos y cosenos con frecuencias enteras) [5]. El espectro de frecuencia de esta serie muestra las componentes sinusoidales que forman una señal de tiempo continuo dada. En general, el espectro de frecuencia es una función compleja de la variable de frecuencia y es usualmente especificada en términos de un espectro de amplitud y uno de fase. En el caso de señales periódicas, el espectro de frecuencia de la señal se puede generar mediante la representación de la señal como una suma de sinusoides, que se conoce como una Serie de Fourier. Esta denominación se conoce así en honor del físico francés Jean Baptiste Fourier (1768 – 1830). Cabe señalar que también se puede generar una representación del dominio de la frecuencia de una señal no periódica. Esta representación se define en términos de la Transformada de Fourier. En contraste con una señal periódica, los espectros de una señal no periódica consisten en una continuación de frecuencias. Se busca poner cualquier función x(t) como un sumatoria de senos y cosenos, esto es, como un sumatoria de
puesto que cualquier función senoidal se puede poner
19
en forma de exponencial compleja. Para una señal periódica definimos el desarrollo en serie de Fourier como:
A la vista de la exponencial compleja podemos observar que al variar los valores de k tenemos una función periódica con periodo:
Los coeficientes del desarrollo en serie de Fourier son:
Por lo tanto, la Serie de Fourier se define:
3.3 Transformada de Fourier Una característica clave de la teoría de las Series de Fourier de las señales periódicas es la definición de los espectros de amplitud y de fase de señales periódicas. Se sabe que el espectro de amplitud de salida es igual al producto del espectro de amplitud de la señal periódica de entrada por la función magnitud | H( ) | del sistema, donde y el espectro de la fase de la salida es igual a la suma del espectro de la fase de la señal periódica de entrada más la función de la fase L H( ) del sistema. La Transformada de Fourier se usa para representar una señal no periódica en tiempo
20
continuo como una superposición de señales senoidales complejas [6]. La Transformada de Fourier muestra una secuencia en la que se aumenta el periodo de una señal periódica. La Transformada rápida de Fourier es simplemente un algoritmo rápido para la evaluación numérica de integrales de Fourier y su importancia radica en la rapidez de cálculo conseguida, importante en otro tipo de aplicaciones: ecualización y filtrado en equipos de audio/vídeo en tiempo real, comunicaciones, etc. La diferencia de velocidad de cálculo entre la tradicional Transformada discreta y la FFT aumenta según aumenta el número de muestras a analizar. Sea x(t) una función continua por partes en el intervalo [-T,T] para todo T > 0 y tal que exista, la Transformada de Fourier se define como:
La Transformada F ( ) describe la señal x(t) como una función de la frecuencia senoidal
y se llama la representación de x(t), en el dominio de la frecuencia. Esta
ecuación convierte la señal en el dominio del tiempo, en su representación en el dominio de la frecuencia. Amplitud (Potencia)
Medición en el dominio del tiempo
Medición en el dominio de la frecuencia
Figura 3.9. Transformada de Fourier
21
Propiedades de la Transformada de Fourier Tabla 1. Propiedades de la Transformada de Fourier. Linealidad
a(x) + b(y) aX(jω) + bY(jω)
Translación en el tiempo
x(t-t0)
Translación en la frecuencia
e jt xt
Conjugación
x*(t)
X*(-j ω)
Inversión en el tiempo
x(-t)
X(-j ω)
Cambio de escala en tiempo y
x(at)
frecuencia Convolución
x(t)*y(t)
e jt0 X j x(j(ω-ω0))
1 j X a a
X(j ω)Y(j ω)
3.4 Correlación Una herramienta útil en análisis de señales y sistemas es la Correlación. La Correlación obtiene la información sobre las señales en base a promedios temporales y su transformada de Fourier permite obtener funciones de densidad espectral de energía o potencia, dependiendo de las características de las señales y sistemas bajo estudio. Las herramientas basadas en Correlación de señales y su Transformada de Fourier, son usadas en el análisis de procesos. La Correlación nos da una medida de la similitud entre dos señales. Es comparar las características de una señal conocida con las de una señal desconocida.
22
Autocorrelación.
Es la correlación de una señal consigo misma. Representa la
similitud entre una señal y ella misma desplazada. El máximo de una autocorrelación se obtiene cuando no hay desplazamiento (t = 0). La Autocorrelación se usa considerablemente en el análisis de señales. Es especialmente útil en la detección o reconocimiento de señales enmascaradas por ruido agregado. La Autocorrelación suele emplearse para encontrar periodos. La fórmula para realizar la autocorrelación de una señal x(t) es:
La Correlación cruzada implica el cambiar de puesto de una señal y multiplicarse por otra señal. La Correlación cruzada expresa que tanta similitud tienen dos señales de tiempo diferentes a(t) y b(t) para diferentes desplazamientos de tiempo. 3.5 Convolución La Convolución nos ayuda a determinar la respuesta que un sistema ejerce en una señal de entrada. Cualquier señal puede expresarse como una superposición de impulsos unitarios de diferentes amplitudes. Un sistema invariante en el tiempo no cambia su comportamiento con el tiempo, entonces la respuesta al impulso h(t) a una serie de impulsos desplazados d (t - t) se puede expresar como h(t - t). Cuando esos impulsos desplazados los afectamos por la amplitud de una señal f (t) podemos expresar una salida en términos de este impulso desplazado y la respuesta al impulso del sistema f1(t) [h(t) d (t- t )]= f1(t)h(t- t) =y1(t). Luego, podemos expresar la salida y (t) en términos de su respuesta al impuso y de su entrada si integramos todos los puntos de la función, así quedaría definida la “Integral de la Convolución para sistemas invariantes en el tiempo”.
23
Interpretación gráfica de la convolución. La interpretación gráfica de la convolución permite visualizar los resultados de las más abstractas operaciones matemáticas. Supóngase que se quiere hallar la convolución de dos funciones dadas f 1 (t) y f2 (t). Las operaciones que se efectúan se basan en la integral de la convolución: Primero se enumeran, paso a paso, las operaciones necesarias: 1. Reemplazar t por
en f 1 (t), quedando f ( ).
2. Reemplazar t por (- ) en f 2 (t). Esto hace girar a la función f 2 ( ) alrededor del eje vertical pasando por el origen del eje. 3. Trasladar todo el sistema de referencia de f (- ) en una cantidad t. Entonces, la traslación t es la diferencia entre el sistema de referencia móvil y el fijo. El origen del sistema móvil esta en
= t; el origen fijo, en
= 0. La función en el sistema móvil
representa f 2 ( t - ); la función en el sistema fijo, f 1 ( ). 4. En cualquier desplazamiento relativo entre los ejes de referencia, por ejemplo, t 0 , debe hallarse el área bajo el producto de las dos funciones. 5. Este procedimiento debe repetirse para diferentes valores t = t 0 desplazando progresivamente el sistema móvil y hallando los valores de la integral de convolución en esos valores de t. Para funciones continuas esto puede hacerse por integración directa. Para funciones continuas por tanto, el producto será continuo por tramos y deberá integrarse sobre cada sección continua. 6. Si el desplazamiento del sistema móvil es a lo largo del eje negativo izquierda), t es negativo. Si es sobre el eje positivo
(a la
(a la derecha), t es positivo.
3.6 Modulación y Demodulación Modulación es el proceso de preparar la señal para envió por un medio de transmisión,
24
este proceso se puede llevar a cabo en banda base, es decir la banda de frecuencias original de la señal o por medio de una translación de frecuencia se puede hacer en lo que se llama modulación pasa banda, en este caso existe una translación de frecuencia de una banda de frecuencias baja a una banda de frecuencias alta. La figura 3.10 muestra la operación de modulación y su contraparte, la de- modulación en la figura 3.11. En la modulación se pasa la señal de una banda base (baja frecuencia) a una pasa banda (alta frecuencia). En la demodulación se pasa la señal de una pasa banda (alta frecuencia) a una banda base (baja frecuencia). Típicamente la modulación se lleva a cabo modificando alguna de las características de las señales; amplitud, frecuencia o fase. Debido a este proceso, la señal de alta frecuencia denominada portadora, sufrirá la modificación de alguno de sus parámetros, siendo dicha modificación proporcional a la amplitud de la señal de baja frecuencia denominada moduladora. A la señal resultante de este proceso se la denomina señal modulada y la misma es la señal que se transmite.
Figura 3.10. Modulación de una señal La demodulación es el proceso inverso a la modulación.
Figura 3.11. Demodulación de una señal
25
3.6.1 Modulación en amplitud Modulación en amplitud es el proceso de cambiar la amplitud de una portadora de frecuencia relativamente alta de acuerdo a la amplitud de la señal modulante (información). Con la modulación en amplitud la información se imprime sobre la portadora en forma de cambios de amplitud. La onda modulante modula a la onda portadora tanto en sus partes positivas como negativas, es decir, produce una señal con dos bandas laterales. La señal modulada tendrá una amplitud que será igual al valor pico de la señal portadora más el valor instantáneo de la señal modulada. La señal modulada en amplitud es:
Tipos de modulación AM. Al modular en amplitud, el ancho de banda resultante es el doble del ancho de banda de la información original, debido a la generación de dos bandas laterales que desafortunadamente contienen la misma información cada una de ellas. Por lo tanto, se han desarrollado técnicas para reducir el ancho de banda necesario y de ahí han resultado varios tipos de modulación en amplitud, los cuales son los siguientes: Modulación en amplitud con doble banda lateral. (AM-DSB) Este es el tipo de modulación en la cual al hacer la multiplicación de las dos señales se generan las dos bandas laterales de igual tamaño. Modulación en amplitud con banda lateral suprimida. (AM-SSB)
26
Para evitar que se tenga que usar el doble de ancho de banda requerido se usa la modulación AM-SSB, en este tipo de modulación, por medio de un filtro se elimina una de las bandas laterales, después de la modulación y se usa una sola banda lateral, reduciendo por lo tanto el ancho de banda requerido. Modulación con banda lateral residual. (AM-VSSB) En este tipo de modulación se elimina solo parte de una de las bandas laterales, y se usa esa parte para modular información adicional. 3.6.2 Modulación en frecuencia La modulación en frecuencia se obtiene variando la frecuencia instantánea de la portadora en función de la información. En este caso la señal modulada mantendrá fija su amplitud y el parámetro de la señal portadora que variará es la frecuencia, y lo hace de acuerdo a cómo varíe la amplitud de la señal moduladora. La expresión matemática de la señal modulada es: Vp (t) = Vp sen[2π (f p + Δf sen(2 π fm t) ) t] Δf se denomina desviación de frecuencia y es el máximo cambio de frecuencia que puede experimentar la frecuencia de la señal portadora. A la variación total de frecuencia desde la más baja hasta la más alta, se le conoce como oscilación de portadora. 3.6.3 Modulación en fase En este tipo de modulación la amplitud de la portadora es constante y la característica que contiene la información es el ángulo de la fase instantánea de la señal portadora. La señal modulada es: V (t) = Vp cos[ 2π fp t + Β sen(2π fm t) ]
27
La diferencia que hay con la señal modulada en frecuencia es que en la modulación en fase, Β es independiente de la frecuencia. 3.7 Decibeles Es la décima parte del Bel, que es utilizado en sistemas de comunicación para medir la relación de dos magnitudes (eléctricas y acústicas). Es una unidad de medida adimensional y logarítmica. En sistemas de comunicación muy a menudo es necesario confrontar las relaciones entre las mediciones de varios niveles de señal y medir niveles exactos de señal a través de todo el sistema. Es deseable que los cálculos para determinar esas relaciones o cálculos exactos sean lo más simple posible para evitar la posibilidad de error. Para llevar a cabo esto se ha seleccionado un sistema de cálculo basado en el decibel (dB). El decibel es una cantidad que indica una relación en lugar de una cantidad en sí, por ejemplo, nos indica que una cantidad es 5 veces mayor que otra o que una cantidad es 10 veces mayor que otra. El dB es una relación entre dos cantidades que se miden con un mismo parámetro. Ej. Potencia o Voltaje. Cuando se consideran las condiciones normales en un sistema, se encuentra que una cantidad q1 es mayor que una cantidad q2 nos referimos a una ganancia de señal y cuando una cantidad q1 es menor a una cantidad q2 nos referimos a una pérdida de señal y como usamos valores logarítmicos (dB), un signo positivo indicará una ganancia y un signo negativo indicará una pérdida. El dB es usado en un sistema para representar solamente pérdida o ganancia. Dado que los niveles de señal en los sistemas de comunicación son muy pequeños y están representados por relaciones en lugar de cantidades fijas, se hace necesario encontrar una forma de representar estos valores. La representación en Decibeles es una manera sencilla y que abarca una amplia gama de valores en una cierta escala. Debido a esto se usan los valores en una escala logarítmica. Aunque esto parezca
28
complicado, es una manera sencilla de representar valores muy dispares y con una exactitud aceptable. Así un valor en Decibeles es una representación logarítmica de una relación de dos valores. Para expresar ganancia de potencia directamente se usa esta ecuación: Ganancia de potencia en dB =10 log10 En donde P1 es la potencia de la señal en la entrada del sistema, y P 2 la potencia a la salida del mismo. Para expresar ganancia de potencia en términos de voltaje y corriente se usan estas ecuaciones: Ganancia de voltaje en dB =20 log10 Ganancia de corriente en dB =20 log10 En donde V1 es el voltaje de la señal en la entrada del sistema, V2 el voltaje a la salida del mismo, I1 es la corriente de la señal en la entrada del sistema, y I2 la corriente a la salida del mismo. Otro estándar que se usa muy comúnmente es el de dBm. Esta señal de referencia para mediciones de señal representa una relación de una señal de un valor fijo de 1 miliWatt o 1 x 10-3 Watts y otra señal desconocida. dB =10 log10
29
CAPÍTULO 4. Modulación Digital La Modulación es la alteración sistemática de una onda portadora de acuerdo con el mensaje (señal modulada). En donde la señal de entrada es una señal digital binaria. 4.1 Muestreo Es el proceso de extraer una señal discreta de una señal en tiempo continuo. Sea x(t) una señal continua en el tiempo y sea el periodo de muestreo Ts > 0 un número fijo. A partir de x(t), la señal discreta: x(n)=x(nTs) Sí la señal es muestreada a una velocidad Fs (muestras/s) se obtiene que:
Teoría de muestreo. Si m(t) es una señal que tiene una banda de frecuencias limitada, tal que la frecuencia máxima de esta señal es f M. Si hacemos que los valores de m (t) sean validos solo a intervalos regulares separados por los tiempos Ts ≤ 1/2 f M, es decir, la señal es periódicamente muestreada cada Ts segundos. Entonces, las muestras m (nTs), donde n es un entero, determinan completamente la señal y la señal puede ser reconstruida con esas muestras sin ninguna distorsión. El tiempo Ts es llamado el tiempo de muestreo. El teorema muestreo indica que la velocidad de muestreo debe ser lo suficientemente rápida, de manera que al menos dos muestras sean tomadas en el periodo correspondiente al componente espectral de máxima frecuencia encontrada en la señal (velocidad Nyquist). 4.2 Modulación por amplitud de pulsos (PAM)
30
Describe la conversión de señales analógicas en señales de pulsos donde la amplitud del impulso indica la información analógica. Esta señal PAM (pulse-amplitude modulation) se puede convertir en una señal digital PCM (Pulse-code modulation) de banda base, la que a su vez se modula sobre una portadora de sistemas de comunicación digital pasa banda. Por consiguiente, el proceso de conversión analógica a PAM es el primer paso en la conversión de una forma de onda analógica en una señal PCM digital. El teorema de muestreo, permite reproducir una forma de onda analógica con valores de muestreo de dicha forma de onda y funciones ortogonales (senx/x). El objetivo de la señalización PAM es proporcionar otra forma de onda con apariencia de pulsos, y que aun así contenga la información que estaba presente en la forma de onda analógica.
Figura 3.12. Señal PAM Como se usan pulsos, se puede esperar que el ancho de banda de la forma de onda PAM sea más ancha que el de la forma de onda analógica. No obstante, los pulsos son más prácticos de utilizar en sistemas digitales. La velocidad de los pulsos f s, en el caso de PAM es la misma que la requerida por el teorema de muestreo, es decir, f s> 2B, donde B es la frecuencia más alta en la forma de onda analógica y 2B se llama tasa (relación) de Nyquist. Existen dos clases de señales PAM: PAM que utiliza muestreo natural (compuerta) y la PAM que utiliza muestreo instantáneo para producir un pulso de cresta plana. Las de cresta plana son más útiles para la conversión en PCM; sin embargo, las de muestreo son más fáciles de generar y usar en otras aplicaciones.
31
En la modulación de amplitud de pulsos, la amplitud de un tren de pulsos de ancho constante varía en proporción a los valores muestreados de la señal moduladora. Usualmente, los pulsos se toman a intervalos de tiempo equidistantes. 4.3 Tipos de Modulación Digital Modulación por amplitud (Amplitude Shift Keying ASK). Tipo de modulación en la cual una señal digital binaria, es representada con variaciones de amplitud, es decir un nivel v 1 (t) si la señal es cero y una señal v 2 (t) si la señal es uno. Modulación por frecuencia (Frequency Shift Keying FSK). Tipo de modulación en la cual una señal digital binaria, es representada con variaciones de frecue ncia, es decir una frecuencia f1 si la señal es cero y una frecuencia f2 si la señal es uno. Modulación por fase (Phase Shift Keying PSK). Tipo de modulación en la cual una señal digital binaria, es representada con variaciones de fase, es decir una fase θ 1 si la señal es cero y una fase θ 2 si la señal es uno. Modulación de amplitud en cuadratura (Quadrature Amplitude Modulation QAM). Se trata de un caso especial de PAM (Pulse Amplitude Modulation), es la superposición de dos portadoras en cuadratura moduladas en amplitud con la misma frecuencia pero desfasadas 900 . ASK
FSK
PSK
QAM
Figura 4.1. Tipos de Modulación Digital.
32
Diagrama de constelación Es un método de representar los estados de símbolo en un modem de paso de banda modulado de portadora en términos de su amplitud y fase. Típicamente, el eje horizontal se toma como referencia para los símbolos que están en fase con la portadora cos cuadratura, sen
ct
), y el eje vertical representa la componente de frecuencia en
ct).
Se utiliza para representar diferentes tipos de señales digitales.
La fase de la señal es representada por el ángulo alrededor del círculo y la amplitud por la distancia del origen al centro del círculo. 4.1 Modulación PSK PSK con múltiples valores (M-ary PSK) En BPSK se transmite cada bit individualmente, en QPSK se transmite un símbolo que representa 2 bits. Si continuamos con esta tendencia, se puede ampliar la cantidad de bits representados por un símbolo, es decir representar N bits con un símbolo, extendidos sobre el tiempo NTb y con 2N =M símbolos. Representando los símbolos con formas de onda de duración NT b = Ts y con diferencia de fase igual a 2π/M. PSK binaria (BPSK). En este tipo de modulación, la señal transmitida es una onda senoidal de amplitud fija A. Tiene una fase fija cuando la señal es un 1 y una fase 180° diferente cuando la señal es 0. PSK en cuadratura (QPSK). Esta forma de modulación genera una secuencia de símbolos, en lugar de una secuencia de bits, es decir, además de la fase se usan las señales de cuadratura sen(t) y cos(t), para la modulación. El cambio de fase y las señales de cuadratura nos dan la posibilidad de tener cuatro combinaciones de salida: la salida sen(t) con cambios de fase de ±180° y la salida cos(t) con cambios de fase de ±180°. Así como BPSK cambia la fase en 180°, QPSK lo hace en 90°. El desplazamiento de fase en cuadratura (QPSK) es una extensión del método de PSK simple. En QPSK la
33
señal puede tomar uno de los cuatro ángulos de fase posibles, mutuamente en cuadratura, cada uno corresponde a una condición de entrada de datos particular. Con el formato de datos NRZ (No Return to Zero), en el cual cada palabra es dividida en pares de bits en lugar de bits individuales, hay cuatro modos posibles de paridad binaria 1 y 0. Estos son: 00, 01, 10, 11. Cualquier palabra de información con un número par de bits puede ser representado por una combinación de estos pares de bits. Uno de los cuatro ángulos de fase es asignado a cada uno de estos pares de bits. La modulación QPSK utiliza cuatro señales senoidales, para codificar dígitos binarios. En el transmisor los dígitos binarios son tomados de a dos a la vez, instruyendo al modulador, cuál de las cuatro señales enviar (dependiendo de la forma de la constelación elegida). QPSK comparado con el BPSK ofrece el doble de bits de información por portadora de cambio de fase, encuentra amplia aplicación en sistemas de transmisión de datos de portadora- modulada de alta-velocidad. 8-PSK. Es casi idéntico a QPSK con la excepción que la fase de la forma de onda de la salida varía entre ocho posiciones. 16-PSK. Es una técnica de codificación M-ario, en donde M = 16; hay 16 diferentes fases de salida posibles. Un modulador de 16-PSK actúa en los datos que están entrando en grupos de 4 bits (24 = 16), llamados quadbits (bits en cuadratura). La fase de salida no cambia, hasta que 4 bits han sido introducidos al modulador.
a)
b)
Figura 4.2. Diagramas de constelación de PSK. a) BPSK. b) QPSK
34
4.2 Modulación QAM En QAM, los tonos son representados como la sumatoria de dos señales que están en fase o fuera de fase con respecto a un reloj. Estas señales son llamadas I (en fase) y Q (por cuadratura). 4-QAM. La modulación 4-QAM contiene 4 valores binarios: 00, 01, 10, 11. Los cuales corresponden a una determinada fase, el cambio de fase entre uno y otro es de 90°. 8-QAM. Los datos se dividen en grupos de 3 bits: 000 hasta 111. Los flujos de bits I, Q y C cada uno con una tasa de bits igual a un tercio de la tasa de datos que están entrando. Los bits I y Q determinan la polaridad de la señal PAM y el canal C determina la magnitud. Así como con el 8-PSK, los datos que están entrando se dividen en grupos de tres bits (tribits): los flujos de bits I, Q y C, cada uno con una tasa de bits igual a un tercio de la tasa de datos que están entrando. 16-QAM. Así como el 16-PSK, el 16-QAM es un sistema M-ario, en donde M= 16. Actúa sobre los datos de entrada en grupos de cuatro (24 = 16).
a)
b)
35
c)
d)
Figura 4.3. Diagramas de constelación de QAM. a) 4QAM. b) 8-QAM. c) 16-QAM. d) 32-QAM.
36
CAPÍTULO 5. Codificación para control de errores. 5.1 Fundamentos y definiciones La codificación de canal o codificación para control de errores: consiste en 'mapear' (añadir redundancia) a la secuencia de datos entrante en una secuencia de entrada al canal y realizar el 'mapeo' inverso a la salida del canal en una secuencia de datos tal que los efectos del ruido estén minimizados. La introducción de redundancia en la codificación del canal tiene como finalidad mejorar la fiabilidad de la transmisión. Proporción de error en bits (BER): se define como la relación entre el número de bits erróneos recibidos respecto al número total de bits transmitidos. Proporción residual de error: se define como la relación entre el número de bits erróneos no detectados sobre el total de bits emitidos. Mide la capacidad de detectar errores. Peso de Hamming: está representado por W(c) donde c es una palabra de código, y se define como el número de bits de esa palabra diferentes de cero. Distancia de Hamming: es la distancia entre dos palabras de código de igual longitud y se define como el número de bits (posición a posición) en los que se diferencian las dos palabras. Tipos de códigos: Códigos sistemáticos: aquellos códigos en los que la palabra de información aparece de forma explícita en la palabra codificada. Códigos no sistemáticos: aquellos códigos en los que la palabra de información no aparece de forma explícita en la palabra codificada. Códigos de bloque: (tienen el mismo significado que en el caso de la codificación de la fuente) aquellos códigos en los que todas las palabras tienen la misma longitud y la
37
codificación se hace de forma estática. Códigos lineales: aquellos en los que cualquier combinación lineal de palabras de código válida (por ejemplo la suma módulo 2) produce otra palabra válida. Códigos cíclicos: aquellos en los que cualquier desplazamiento cíclico de una palabra de código da lugar a otra palabra de código. Códigos de paridad: su funcionamiento se basa en añadir un bit a la secuencia a enviar de forma que el número de "1's" sea par o impar, dependiendo del tipo de paridad: - si la paridad es par, el número final de "1's" debe ser par. - si la paridad es impar, el número final de "1's" debe ser impar. Códigos: Denominemos S={S , S , S ... S } al conjunto de símbolos de un alfabeto dado. Se define un código como la correspondencia de todas las secuencias posibles de símbolos de S a secuencias de símbolos de algún otro alfabeto X={x , x , x ,...x }. S recibe el nombre de alfabeto fuente y X el de alfabeto código. Como esto es demasiado general para resultar de utilidad, será necesario acotar más esta definición. Y la primera propiedad de un código es que sea un código de bloque. Un código bloque es aquel que asigna cada uno de los símbolos del alfabeto fuente S a una secuencia fija de símbolos del alfabeto código X. Esas secuencias fijas reciben el nombre de palabras código. Un código bloque se denomina no singular si todas sus palabras son distintas. Códigos unívocamente decodificables: la extensión de orden n de un código bloque es la que hace corresponder los símbolos S con las palabras de código X, es el código bloque que hace corresponder las secuencias de símbolos de la fue nte (S ,S ....S ) con las secuencias de las palabras de código ( X , X ...X ). Es decir, la extensión de orden n de un código bloque es también un código bloque. Además, un código bloque es unívocamente decodificable si, y solamente sí, su extensión de orden n es no singular
38
para cualquier n finito. Con un código unívocamente decodificable nos aseguramos que dos secuencias cualesquiera de símbolos de la fuente de igual longitud dan lugar a secuencias de símbolos código distintas. Un código unívocamente decodificable se denomina instantáneo cuando es posible decodificar las palabras de una secuencia sin precisar el conocimiento de los símbolos siguientes. Distancia mínima de un código: se establece como la distancia de Hamming más pequeña entre dos combinaciones cualesquiera del código. Códigos detectores de error: Los códigos detectores están basados en no aprovechar todas las combinaciones posibles de ceros y unos para formar palabras pertenecientes al código. Así, si se produce algún error en la transmisión, la palabra resultante podría no pertenecer al código y de esta forma sabríamos que se ha producido un error. Para detectar el error en un dígito binario es condición necesaria que el código posea una distancia mínima estrictamente mayor que uno. Y la condición necesaria y suficiente para detectar un error en k dígitos binarios, es que la distancia mínima sea de k+1. Estos códigos se forman a partir de uno de distancia mínima uno o superior, al cual se le añade el denominado dígito de paridad (normalmente como dígito binario más significativo). Este dígito deberá tomar el valor apropiado (0 o 1) para que el número de unos de la combinación resultante sea par o impar dependiendo de si queremos construir un código de paridad par o un código de paridad impar. Códigos correctores de error: La condición necesaria y suficiente para que un código sea corrector de error en k dígitos binarios, es que su distancia mínima sea de 2k+1. 5.2 Códigos de bloque 5.2.1 Códigos de bloque lineales sistemáticos
39
Un código de bloque lineal sistemático será capaz de detectar X-1 bits erróneos, donde X viene dado por la distancia de Hamming mínima entre 2 palabras cualesquiera del código, y será capaz de corregir ( X-1)/2 bits erróneos. Estos códigos cumplen la siguiente propiedad: La suma módulo-2 de dos palabras del código da lugar a otra palabra de código. En la especificación de estos códigos se utiliza la siguiente notación ( n,k ): n es el tamaño de la palabra codificada k es el tamaño del mensaje original. Estos k bits se envían sin alteración. Los n-k bits restantes son los bits de paridad. Es la redundancia mediante la cual se detectan y corrigen los errores. La forma de una palabra de código de un código de bloque lineal sistemático es la siguiente: m0 m1 . . . m k-1 b0 b1 b2 . . . bn-k-1 Donde m0 .......................m k-1 son los bits del mensaje original y b0 .......................bnk-1
son los bits de paridad que se añaden como redundancia.
De esta forma, podemos expresar una palabra de código como: c0 c1 . . . cnk-1 cn-k . . . cn-1 El cálculo de los bits de paridad se realiza de la siguiente forma: bi = P0i m0 + P1i m1 + . . . + Pk-1i m k-1 Donde los Pij deben ser tales que la matriz generadora del código tenga filas independientes y las ecuaciones de paridad sean iguales.
40
Para realizar la codificación se utiliza una notación matricial. Consideraremos la palabra original, la palabra formada por los bits de paridad y la palabra de código como vectores: m = (m0 m1
. . . m k-1 )
b = (b0 b1
. . . bn-k-1 )
c = (c0 c1
. . . cn-1 )
También se utiliza la matriz de coeficientes:
P=
Para realizar la codificación se utiliza la matriz generadora: G = [ Ik,k | P ] Siendo Ik,k la matriz identidad de tamaño k * k. De esta forma podemos obtener cada palabra de código a partir de cada palabra de mensaje original realizando la siguiente multiplicación: c = m· G Para realizar la decodificación, en destino se recibe un vector (c) de tamaño n y lo que se puede hacer es repetir la operación realizada en la codificación: se toman los primeros k bits y se calcula la redundancia usando la matriz generadora y se comprueba si la redundancia obtenida es igual a la redundancia recibida. Otra opción más eficiente es la basada en el concepto de síndro me. En este proceso se utiliza la matriz de chequeo de paridad, que se define de la siguiente forma: H = [Pt | I]
41
H tiene la propiedad de que sólo las palabras de código verifican que al multiplicarlas por Ht el resultado es el vector nulo. Esta propiedad será utilizada para la detección y corrección de errores. A cada palabra que el receptor recibe a través del canal la denominaremos palabra recibida r. Una palabra recibida la podemos expresar como: r=c+e Donde c es la palabra de código enviada por el emisor y e es una palabra de error. Cada componente ei de la palabra de error vale 1 si hay un error en esa posición y 0 si no lo hay. El receptor para realizar la codificación utiliza la matriz H para calcular el vector de síndrome de error a partir de la palabra recibida. El vector de síndrome de error se obtiene de la siguiente forma: s = r · Ht El vector de síndrome tiene tantos elementos como bits de paridad se estén usando, y sólo depende de la secuencia de error y no de la palabra de código transmitida. Si en la transmisión no se ha producido un error, el síndrome es el vector nulo: s = r · Ht = 0 Si se ha producido un error la multiplicación de la palabra recibida por Ht nos da un vector que es igual a una de las filas de Ht . La posición que ocupa esa fila es la posición donde hay un error. Todas estas operaciones se hacen en módulo-2 (sin acarreo). 5.2.2 Código Hamming Un código de Hamming es un código de bloque lineal. Al igual que en los códigos de
42
bloque lineales sistemáticos, podemos denotar un código de Hamming mediante un par (n ,k). Sin embargo los valores de n y k deberán verificar una serie de condiciones: - n es la longitud de la palabra de código. - k es el número de bits de datos de la palabra original sin codificar. - el número de bits de paridad será m = n - k, pero deberá cumplirse la siguiente relación entre la longitud de la palabra de código y el número de bits de paridad: n = 2m - 1
con m >= 3
Según esto también se cumplirá la siguiente relación entre el número de bits de datos y el número de bits de paridad: k = 2m - m - 1 Por lo tanto, a cada palabra original se le añadirán unos bits de paridad para obtener la palabra de código, de forma que estos bits de paridad sirvan posteriormente para encontrar y corregir errores que se produzcan en la transmisión. Cada uno de los bits de paridad que añadimos a una palabra original va a afectar a unas determinadas posiciones de la nueva palabra de código, de forma que tomarán un valor adecuado para que se cumpla el criterio de paridad (par o impar) preestablecido en las sub-combinaciones afectadas por cada uno de estos bits de paridad. El siguiente paso consistirá en determinar a qué posiciones de los bits de las palabras de código afecta cada bit de paridad. Para ello, se construyen todas las combinaciones posibles con m bits de paridad y se interpreta cada una en binario natural. Cada bit de paridad va a afectar a aquellas posiciones en las que ese bit vale 1. Bit de paridad
Posiciones
b1 .................
1,3,5,7,..........
43
b2 .................
2,3,6,7,..........
... bm .................
2m, 2m+1 ,2m+2 ....
Por último se determina qué posiciones de cada palabra de código ocupará cada bit de paridad. Los bits de paridad se colocan en aquellas posiciones en las que no se vean afectados por otros bits de paridad. Estas posiciones serán: Bit de paridad
Posición
b1 ...................
20
b2 ...................
21
b3 ...................
22
..... De esta forma queda completado el proceso de construcción de un código de Hamming. En el proceso de decodificación, el receptor recibe una palabra de un código de Hamming, y deberá comprobar si es correcta o no, y en el caso de que no fuera correcta deberá comprobar en que bit se produjo el error y corregir ese error. Para comprobar si la palabra recibida es correcta, el receptor debe utilizar los bits de paridad de la palabra y hacer con ellos un control de paridad. Para realizar el control de paridad, se crea una palabra que tendrá un bit por cada uno de los bits de paridad utilizados. Cada uno de los bits de esta palabra toma el valor 0 o 1 dependiendo de si el número de unos de las posiciones de la palabra de código afectadas por su correspondiente bit de paridad cumplen o no el criterio de paridad establecido. Interpretando la combinación resultante en binario natural se tendrán dos
44
posibilidades: - que sea un 0, lo cual quiere decir que no se han producido errores en la transmisión. - que se corresponda a un número distinto de 0, lo cual quiere decir que durante la transmisión ha variado el bit situado en la posición indicada por ese número. Una vez obtenida la palabra de código correcta, basta con quitar los bits de paridad para obtener la palabra original enviada por el emisor. 5.3 Códigos Cíclicos Los códigos cíclicos son una subclase de los códigos de bloque lineales. Son fáciles de codificar y cumplen la propiedad de linealidad y la de propiedad de que cualquier desplazamiento cíclico de una palabra del código también pertenece al código. Al igual que en los códigos de bloque lineales sistemáticos y en los códigos de Hamming, se denota un código cíclico mediante un par (n,k), donde n es la longitud de las palabras de código y k es la longitud de una palabra original. Para el manejo de estos códigos se utiliza una notación polinomial, de forma que una palabra de código C = (c0 ......,cn-1 ) se interpreta como un polinomio, y cada uno de los bits de la palabra de código será uno de los coeficientes de este polinomio: C(x) = c0 + c1x + . . . + cn-1xn-1 A su vez, una palabra original m = (m0 ,......, mk-1 ) se interpreta como el polinomio: m(x) = m0 + m1x + . . . + mk-1xk-1 Para generar C(x) a partir de m(x) se usa el polinomio generador g(x) que es un factor de ( x + 1)n . Su grado es n-k. La obtención de la palabra codificada se hace de la siguiente forma: C(x) = m(x) · g(x)
45
Así se tiene que un código cíclico queda perfectamente determinado por su polinomio generador. Para realizar el control de errores se utiliza el polinomio de chequeo de paridad, que es un polinomio de grado k tal que: g(x) · H(x) = (x + 1)n Los pasos para hacer una codificación CRC son: 1) Expresar el mensaje en forma de cadena binaria 2) Escoger un polinomio divisor (polinomio generador) 3) Agregar al mensaje tantos ceros, como bits tenga el polinomio generador 4) Efectuar la división del mensaje entre el polinomio generador 5) Agregar el residuo de la división (checksum), al mensaje original 6) Tras la recepción, se divide la cadena recibida entre el polinomio generador, si la transmisión fue correcta el residuo de la división deberá ser cero. De no ser nulo el residuo, significa que hubo errores durante la transmisión. 5.4 Códigos convolucionales Se diferencian de los códigos de bloque en su forma estructural y las propiedades para corregir errores. Los códigos de bloque suelen tener limitada la capacidad de corrección de errores alrededor de 1 o 2 símbolos erróneos por palabra de código. Estos códigos son buenos para utilizar en canales con baja probabilidad de error. Los códigos convolucionales son adecuados para usar sobre canales con mucho ruido (alta probabilidad de error). Estos códigos son lineales, donde la suma de dos palabras de código cualesquiera también es una palabra de código. Y al contrario que con los códigos lineales, se prefieren los códigos no sistemáticos.
46
El sistema tiene memoria: la codificación actual depende de los datos que se envían ahora y que se enviaron en el pasado. Un código convolucional queda especificado por tres parámetros (n,k,m) : n es el número de bits de la palabra codificada. k es el número de bits de la palabra de datos. m es la memoria del código o longitud restringida. El código convolucional es generado introduciendo un bit de datos y dando una revolución completa al conmutador. Inicialmente se supone que los registros intermedios contienen ceros.
47
CAPÍTULO 6. Resultados 6.1 Serie de Fourier Es un programa que grafica una señal elegida por el usuario y la Serie de Fourier de una dicha señal con n armónicas, que son también introducidas por el usuario.
Figura 6.1a. Inicialización (Serie de Fourier). Este programa se implementó con una serie de comandos básicos de Matlab y operaciones para realizar la suma (de acuerdo a la fórmula) dentro de un ciclo for. El programa se implementa con un ciclo if para elegir la señal a calcular: si señal == 1 graficar parábola si señal == 2 graficar recta si señal == 3 graficar cuadrada si señal == 4 graficar triangular si señal == 5 graficar diente de sierra fin De acuerdo a la señal que se eligió, se hace el cá lculo de la suma de n armónicas mediante un ciclo for:
48
= valor calculado desde m=1 hasta n = valor calculado = valor calculado suma = suma+( (m)*cos(m*t))+( fin
(m)*sen(m*t))
El valor de suma será el valor de la serie de Fourier. Este valor se grafica con respecto al tiempo. 6.1.1 Ele mentos del programa
Figura 6.1b. Elementos del programa (Serie de Fourier). 1. n: armónicas de la Serie de Fourier. 2. Señal: es la señal a la cual se le grafica la Serie de Fourier. Las señales a elegir son: parábola, recta, cuadrada, triangular y diente de sierra. 3. Coeficientes de la Serie de Fourier: es donde se muestran los coeficientes de la Serie de Fourier calculados de acuerdo a la señal elegida. 4. Grafica de la Serie de Fourier: es donde se grafica la señal que representa la Serie de Fourier de acuerdo a n y la señal elegida. 6.1.2 Ejemplo Con la función y=t 2 , los valores de los coeficientes de Fourier son:
49
= = bn =
= π2 /3 =
(-1)n
=0
Figura 6.1c. Ejemplo (Serie de Fourier). 6.2 Transformada de Fourier Es un programa que grafica una señal elegida por el usuario y su Transformada de Fourier.
Figura 6.2a. Inicialización (Transformada de Fourier). El programa se implementa con ciclos if para elegir la señal a calcular: si señal == 1 graficar coseno si señal == 2
50
graficar diente de sierra si señal == 3 graficar sinc si señal == 4 graficar cuadrada si señal == 5 graficar exponencial si señal == 6 graficar impulso si señal == 7 graficar seno fin Después de elegir la señal a graficar, se calcula la Transformada de Fourier con la función fft: Transformada de Fourier= abs (fft (señal, puntos a graficar)) 6.2.1 Función fft (x, N) Es una función de Matlab que regresa la Transformada Discreta de Fourier (DFT) del vector x, realizada con el algoritmo de la transformada rápida de Fourier (FFT). “x” es un vector de números complejos ordenados desde k=0...N-1. La longitud del vector x debe ser una potencia de 2. “N” es el número de puntos con el que se hace la FFT. 6.2.2 Ele mentos del programa
Figura 6.2b. Elementos del programa (Transformada de Fourier).
51
1. Señal. Es donde se elige la señal a graficar. 2. Grafica de señal. Es donde se grafica la señal elegida. 3. Transformada de Fourier. Es donde se grafica la Transformada de Fourier de la señal elegida. 6.2.3 Ejemplo
Figura 6.2c. Ejemplo del programa (Transformada de Fourier). 6.3 Convolución y Correlación de señales Es un programa que grafica dos señales y la Convolución o Correlación de éstas.
Figura 6.3a. Inicialización (Convolución y Correlación).
52
En el programa se desarrollaron varias opciones para elegir el tipo, la operación y las señales a las que se grafica la Convolución o Correlación. Con ciclos if se selecciona el tipo de señal a elegir y la operación a realizar: si señal == señal CT mostrar en menú desplegable señales continuas en el tiempo si no mostrar en menú desplegable señales discretas en el tiempo fin si operación == Convolución gráfica == conv (x(t), h(t)) si no gráfica == xcorr (x(t), h(t)) fin Las opciones de señales que muestran los menús desplegables son: x(t) para señales continuas: x=t 0