Universidad de Costa Rica Facultad de Ingeniería Escuela de Ingeniería Eléctrica IE – 0502 Proyecto Eléctrico Diseño e implementación de un laboratorio virtual en DSP para comunicaciones usando Matlab y Simulink Por: José Gabriel Fernández Carazo Ciudad Universitaria Rodrigo Facio Julio del 2007 Diseño e implementación de un laboratorio virtual en DSP para Comunicaciones usando Matlab y Simulink Por: José Gabriel Fernández Carazo Sometido a la Escuela de Ingeniería Eléctrica de la Facultad de Ingeniería de la Universidad de Costa Rica como requisito parcial para optar por el grado de: BACHILLER EN INGENIERÍA ELÉCTRICA Aprobado por el Tribunal: _________________________________ Ing. Jorge Romero Chacón Profesor Guía _________________________________ Ing. Víctor Hugo Chacón Profesor lector _________________________________ Ing. Lucía Acuña Avendaño Profesora lectora ii DEDICATORIA Este proyecto se lo dedico primero y sobre todo a Dios por la vida, por la disposición y energía que ha hecho crecer en mí y que me ha permitido llegar hasta este nivel. A mi familia, razón importante para buscar siempre una superación intelectual. A mi madre por el consistente apoyo, paciencia y motivación para siempre buscar obtener nuevos logros. Y porque su sola presencia es una razón para seguir adelante. iii RECONOCIMIENTOS Al profesor Jorge Romero por su confianza, paciencia, consejos, apoyo bibliográfico, aportes y guía en la elaboración de este trabajo, así como el tiempo brindado para discutir las dudas y avances. A todas las personas que han tenido que ver con mi educación moral y profesional, ya que en estos momentos tiene sentido todo el conocimiento y sabiduría que me han transmitido. A mis amigos, compañeros de carrera y a todas las personas que de una u otra forma han influenciado mi manera de pensar y que de alguna manera han tenido que ver con el camino profesional que he elegido. A dos grandes amigas Joselyn Ovares por su compañía incondicional e interés en mi avance en todo el transcurso del desarrollo de este proyecto y Jennifer Soto por su apoyo y motivación para seguir adelante en los momentos difíciles. iv ÍNDICE GENERAL ÍNDICE DE FIGURAS.................................................................................. ix ÍNDICE DE TABLAS.................................................................................... xi NOMENCLATURA...................................................................................... xii RESUMEN .................................................................................................... xiii CAPÍTULO 1: Introducción ...........................................................................1 1.1 Objetivos ................................................................................................................ 1 1.1.1 Objetivo general............................................................................................. 1 1.1.2 Objetivos específicos ..................................................................................... 1 1.2 Justificación del tema............................................................................................. 1 1.3 Problema a resolver................................................................................................ 2 1.4 Metodología ........................................................................................................... 3 CAPÍTULO 2: Desarrollo teórico...................................................................4 2.1 Introducción al procesamiento digital de señales .................................................. 4 2.2 Tipos de señales ..................................................................................................... 5 2.3 Representación frecuencial del dominio................................................................ 8 2.4 Filtros analógicos y digitales ............................................................................... 12 2.4.1 Filtros analógicos ......................................................................................... 12 2.4.2 Filtros digitales............................................................................................. 13 2.5 Nota teórica laboratorio de filtros digitales ......................................................... 14 2.5.1 Suma convolución y respuesta en frecuencia para tiempo discreto............. 14 2.5.2 Filtros de respuesta de duración finita al impulso (FIR).............................. 16 2.5.2.1 Estructura en forma directa de un filtro FIR................................................ 16 2.5.2.2 Métodos para el diseño de filtros FIR.......................................................... 18 2.5.3 Filtros de respuesta de duración infinita al impulso (IIR) ........................... 18 2.5.3.1 Estructura en forma directa de un filtro IIR................................................. 19 2.5.4 Transformación bilineal ............................................................................... 24 2.6 Nota teórica laboratorio de FFT........................................................................... 32 2.6.1 Muestreo en tiempo discreto utilizando la transformada de Fourier ........... 32 2.6.2 La transformada discreta de Fourier y su inversa ........................................ 33 2.6.3 La transformada rápida de Fourier............................................................... 34 2.6.4 Uso de la FFT para determinar la densidad espectral de potencia............... 41 v 2.7 Nota teórica laboratorio de modulación AM ....................................................... 44 2.7.1 Descripción de la modulación de amplitud (AM)........................................ 44 2.7.1.1 Espectro de una señal AM ........................................................................... 46 2.7.2 Demodulación de una señal AM capturando la envolvente......................... 48 2.7.2.1 Demodulación de señales AM utilizando la ley cuadrática ......................... 48 2.8 Nota teórica laboratorio de modulación DSBSC-AM ......................................... 50 2.8.1 Descripción matemática de una señal DSBSC-AM..................................... 50 2.8.2 El receptor coherente ideal........................................................................... 51 2.8.3 Lazo de Costas: técnica práctica para demodulación coherente .................. 54 2.9 Nota teórica laboratorio de modulación SSB....................................................... 60 2.9.1 Moduladores SSB ........................................................................................ 60 2.9.2 Demodulación coherente de señales SSB .................................................... 63 2.9.3 Desplazamiento en frecuencia ..................................................................... 66 2.10 Nota teórica laboratorio de modulación FM........................................................ 68 2.10.1 Descripción de la modulación FM............................................................... 68 2.10.1.1 Modulación FM de un tono simple.......................................................... 70 2.10.1.2 Ancho de banda de una señal FM ............................................................ 71 2.10.2 Demodulación FM: discriminador en frecuencia ........................................ 72 2.10.2.1 Discriminador FM utilizando un detector de envolvente ........................ 73 2.10.2.2 Discriminador FM utilizando la envolvente compleja............................. 74 2.10.3 Demodulación FM usando un PLL.............................................................. 75 2.11 Nota teórica laboratorio de modulación PAM ..................................................... 78 2.11.1 Descripción de la modulación PAM ............................................................ 78 2.11.2 Criterio de Nyquist para no tener ISI........................................................... 82 2.11.3 Diagramas de ojo ......................................................................................... 83 2.11.4 Recuperación de la frecuencia del tren de pulsos ........................................ 86 2.12 Nota teórica laboratorio de modulación QAM .................................................... 88 2.12.1 Transmisor QAM básico.............................................................................. 88 2.12.2 Modulador QAM utilizando filtros conformadores pasabandas.................. 92 CAPÍTULO 3: Laboratorios .........................................................................95 3.1 Laboratorio de filtros digitales............................................................................. 96 3.1.1 Filtros digitales FIR ..................................................................................... 98 3.1.2 Filtros digitales IIR ...................................................................................... 98 3.1.3 Filtrado en SIMULINK.............................................................................. 100 3.1.3 Cuestionario ............................................................................................... 101 3.2 Laboratorio de FFT ............................................................................................ 102 3.2.1 Cálculo de la FFT....................................................................................... 103 3.2.2 Analizador de espectro de frecuencia en SIMULINK............................... 104 3.2.3 Cuestionario ............................................................................................... 105 3.3 Laboratorio de modulación AM......................................................................... 106 3.3.1 Modulación AM......................................................................................... 107 3.3.2 Detector de envolvente (Ley Cuadrática) .................................................. 108 vi 3.3.3 Cuestionario ............................................................................................... 110 3.4 Laboratorio de modulación DSBSC-AM........................................................... 111 3.4.1 Modulación DSBSC-AM........................................................................... 112 3.4.2 Modulación y demodulación AM utilizando SIMULINK......................... 113 3.4.3 Cuestionario ............................................................................................... 113 3.5 Laboratorio de modulación SSB........................................................................ 114 3.5.1 Modulación SSB-AM ................................................................................ 114 3.5.2 Demodulación SSB-AM ............................................................................ 115 3.5.3 Modulación y demodulación SSB–AM en SIMULINK............................ 116 3.5.4 Cuestionario ............................................................................................... 117 3.6 Laboratorio de modulación FM ......................................................................... 118 3.6.1 Modulación FM ......................................................................................... 118 3.6.2 Modulación y demodulación FM utilizando SIMULINK ......................... 120 3.6.3 Cuestionario ............................................................................................... 121 3.7 Laboratorio de modulación PAM ...................................................................... 122 3.7.1 Modulación y demodulación PAM en MATLAB ..................................... 123 3.7.2 Modulación y demodulación PAM en SIMULINK................................... 125 3.7.3 Cuestionario ............................................................................................... 126 3.8 Laboratorio de modulación QAM...................................................................... 127 3.8.1 Modulación y demodulación QAM ........................................................... 129 3.8.2 Modulación y demodulación QAM con SIMULINK................................ 130 3.8.2 Cuestionario ............................................................................................... 131 CAPÍTULO 4: Conclusiones y recomendaciones .....................................132 4.1 4.2 Conclusiones ...................................................................................................... 132 Recomendaciones .............................................................................................. 134 BIBLIOGRAFÍA ..........................................................................................135 APÉNDICES.................................................................................................137 APÉNDICE A: Código fuente de los ejercicios de simulación en MATLAB .............. 137 A.1 Código fuente laboratorio de filtros digitales ................................................ 137 A.2 Código fuente laboratorio de FFT.................................................................. 152 A.3 Código fuente laboratorio de modulación AM .............................................. 157 A.4 Código fuente laboratorio de modulación DSBSC-AM ................................ 167 A.5 Código fuente laboratorio de modulación SSB-AM...................................... 172 A.6 Código fuente laboratorio de modulación FM............................................... 182 A.7 Código fuente laboratorio de modulación PAM............................................ 189 A.8 Código fuente laboratorio de modulación QAM ........................................... 196 APÉNDICE B: Diagramas de bloques de los ejercicios de simulación en SIMULINK204 B.1 Simulación: laboratorio de filtros digitales.................................................... 204 B.2 Simulación: laboratorio de FFT ..................................................................... 205 B.3 Simulación: laboratorio de modulación AM.................................................. 206 vii B.4 B.5 B.6 B.7 B.8 Simulación: laboratorio de modulación DSBSC-AM.................................... 207 Simulación: laboratorio de modulación SSB-AM ......................................... 208 Simulación: laboratorio de modulación FM .................................................. 209 Simulación: laboratorio de modulación PAM ............................................... 210 Simulación: laboratorio de modulación QAM............................................... 211 viii ÍNDICE DE FIGURAS Figura 2.1 Tipos de señales: (a) Señal continua en el tiempo sin cuantificar, (b) señal discreta en el tiempo sin cuantificar................................................................................... 7 Figura 2.2 Tipos de señales: (a) Señal continua en el tiempo cuantificada, (b) señal discreta en el tiempo cuantificada...................................................................................... 8 Figura 2.3 Representación en el dominio del tiempo de la señal periódica dada por la ecuación (2.3-1). .............................................................................................................. 10 Figura 2.4 Representación en el dominio de la frecuencia de la señal periódica de la ecuación (2.3-1). (a) Espectro de Magnitud, (b) Espectro de Fase.................................. 10 Figura 2.5 Diagrama de bloques de la estructura en forma directa de un filtro FIR ....... 17 Figura 2.6 Primer paso de la estructura en forma directa tipo 1 de un filtro IIR............. 20 Figura 2.7 Diagrama de bloques de la estructura en forma directa tipo 1 de un filtro IIR .......................................................................................................................................... 21 Figura 2.8 Diagrama de bloques de la estructura en forma directa tipo 2 de un filtro IIR .......................................................................................................................................... 23 Figura 2.9 Mapeo del plano s al plano s’ ......................................................................... 26 Figura 2.10 Mapeo de Ω a ω por medio de la transformación bilineal. .......................... 27 Figura 2.11 Descripción del efecto de la transformación bilineal de Hc( jΩ) a H'(ω)..... 29 Figura 2.12 Esquema de Mariposa del algoritmo FFT de diezmado en el tiempo. ......... 37 Figura 2.13 Primera etapa del algoritmo FFT de diezmado en el tiempo........................ 37 Figura 2.14 Primera etapa del algoritmo FFT de diezmado en frecuencia...................... 40 Figura 2.15 Espectro de una señal AM............................................................................ 47 Figura 2.16 Detector de envolvente (Ley Cuadrática)..................................................... 49 Figura 2.17 Diagrama de bloques de un Receptor Coherente Ideal ................................ 52 Figura 2.18 Espectro de una señal DSBSC-AM .............................................................. 53 Figura 2.19 Diagrama de bloques del demodulador de lazo Costas ................................ 54 Figura 2.20 Diagrama de bloques del Lazo Costas linealizado ....................................... 59 Figura 2.21 Diagrama de bloques de la modulación SSB ............................................... 61 Figura 2.22 Modulador SSB utilizando la transformada de Hilbert ................................ 63 Figura 2.23 Modulación FM ............................................................................................ 71 Figura 2.24 Diagrama de bloques elemental de un discriminador de frecuencia ............ 73 Figura 2.25 Discriminador en tiempo discreto usando la envolvente compleja .............. 75 Figura 2.26 Demodulador FM con PLL en tiempo discreto............................................ 76 Figura 2.27 Modelo linearizado del PLL......................................................................... 77 Figura 2.28 Modulación PAM ......................................................................................... 78 Figura 2.29 Diagrama de bloques de un sistema de comunicación PAM ....................... 79 Figura 2.30 Señal binaria antes del muestreador ............................................................. 84 Figura 2.31 Diagrama de ojos para la señal de la figura 2.30.......................................... 85 Figura 2.32 Diagrama de bloques del sistema de recuperación de frecuencia ................ 87 ix Figura 2.33 Diagrama de bloques de un transmisor QAM básico................................... 89 Figura 2.34 Constelaciones QAM.................................................................................... 90 Figura 2.35 Representación de un modulador QAM en términos de señales complejas. 92 Figura 2.36 Modulador QAM utilizando un filtro conformador pasabanda.................... 93 Figura 2.37 Diagrama de bloques expandido del nuevo modulador QAM ..................... 94 Figura 3.1 Respuesta en frecuencia de un filtro pasobajo ............................................... 96 Figura 3.3 Diagrama del principio básico de modulación AM...................................... 106 Figura 3.4 Detector de envolvente de Ley Cuadrática................................................... 110 Figura 3.5 Diagrama del principio básico de demodulación AM.................................. 111 Figura 3.6 Modulador SSB ............................................................................................ 114 x ÍNDICE DE TABLAS Tabla 2.1 Parámetros de una señal obtenidos a partir de la ecuación 2.3-1 ...................... 9 Tabla 3.1 Funciones más comunes para el diseño de filtros digitales en MATLAB....... 97 Tabla 3.2 Funciones utilizadas en MATLAB para el cálculo de la FFT. ...................... 102 Tabla 3.3 Funciones de MATLAB para modulación y demodulación AM .................. 106 Tabla 3.4 Funciones de MATLAB para modulación y demodulación PAM ................ 123 Tabla 3.5 Funciones de MATLAB para la modulación y demodulación QAM............ 128 xi NOMENCLATURA AM Modulación de amplitud (Amplitude Modulation) DFT Transformada discreta de Fourier (Discrete Fourier Transform) DSBSC-AM Modulación de amplitud de doble banda lateral con portadora suprimida (Double Sideband Suppressed Carrier Amplitude Modulation) DSP Procesamiento digital de señales (Digital Signal Processing) FFT Transformada rápida de Fourier (Fast Fourier Transform) FIR Respuesta de duración finita al impulse (Finite duration Impulse Response) FM Modulación en frecuencia (Frequency Modulation) IDFT Transformada Discreta de Fourier Inversa (Inverse Discrete Fourier Transform) IIR Respuesta de duración infinita al impulse (Infinite duration Impulse Response) LSB Banda lateral inferior (Low Sideband) LSI Integración a gran escala (Large Scale Integration) MSI Integración a media escala (Medium Scale Integration) PLL Circuito de lazo por enganche de fase (Phase Locked Loop) QAM Modulación de amplitud en cuadratura (Quadrature Amplitude Modulation) SSB-AM Modulación de amplitud de banda lateral única (Single Sideband Amplitude Modulation) USB Banda lateral superior (Upper Sideband) VLSI Integración a muy gran escala (Very Large Scale Integration) xii RESUMEN La Escuela de Ingeniería Eléctrica de la Universidad de Costa Rica tiene gran interés en el Procesamiento Digital de Señales, y por eso se ha decidido desarrollar una serie de prácticas de simulación en los apartados que envuelve la ciencia del procesamiento digital de señales para los sistemas de comunicación. Primero se presenta una investigación teórica de las técnicas de simulación utilizadas en los sistemas de comunicación. Esta investigación teórica permite reforzar y entender con claridad los conceptos básicos detrás de la ciencia de las comunicaciones. Segundo se presentan los enunciados de las prácticas para los temas presentados en el marco teórico. Se inicia con una práctica sencilla de filtros digitales, luego una para evaluar los conceptos de la transformada discreta de Fourier utilizando la transformada rápida de Fourier, le siguen las prácticas de modulación AM completa, DSBSC-AM, SSBAM y FM, después las prácticas de modulación digital PAM y QAM. Por último, se muestra el código fuente generado para la solución de los ejercicios de simulación en MATLAB planteados en cada una de las prácticas de laboratorio, así como los diagramas de bloques de los ejercicios de simulación en SIMULINK planteados para cada una de ellas. xiii CAPÍTULO 1: Introducción 1.1 Objetivos 1.1.1 Objetivo general Preparar y generar prácticas para una simulación previa a la ejecución de experimentos que emplearían tarjetas construidas para realizar procesamiento digital de señales. 1.1.2 Objetivos específicos Preparación del manual de prácticas para simulación. Diseño de prácticas adicionales en el área de comunicaciones digitales. Introducción de nuevas técnicas de simulación en el área de sistemas de comunicaciones digitales. 1.2 Justificación del tema El gran avance de la ciencia y la ingeniería, en el desarrollo de circuitos integrados, microprocesadores y computadoras en los últimos 30 años, ha generado un gran interés en el estudio del Procesamiento Digital de Señales (DSP, acrónimo para la frase en inglés Digital Signal Processing). Este tema de estudio se ha vuelto tan indispensable que ha sido aplicado a muchas disciplinas tanto en ingeniería como economía y desde la astronomía hasta la biología molecular. 1 Es por eso que este es un tema de estudio de gran interés para la Escuela de Ingeniería Eléctrica de la Universidad de Costa Rica, y por eso se ha decidido desarrollar una serie de prácticas de simulación en los apartados que envuelve la ciencia del procesamiento digital de señales, las cuales se realizarán de forma previa a un laboratorio en el cual se pondrán en práctica todos los conocimientos adquiridos en el curso de Procesamiento Digital de Señales que imparte dicha Escuela, con tarjetas de programación de microprocesadores diseñados para el tratamiento digital de señales. 1.3 Problema a resolver El problema a resolver, es el de realizar el manual de prácticas para simulación utilizando MATLAB y SIMULINK. Este deberá abarcar los temas más importantes en el área del procesamiento digital de señales, como por ejemplo el diseño de filtros digitales, análisis del espectro de una señal digital aplicando la transformada discreta de Fourier, modulación y demodulación AM, modulación y demodulación FM, detección de errores de transmisión; y estos tan solo para mencionar algunos, los demás se deben determinar por medio de la investigación teórica. Las prácticas incluirán una nota teórica, un procedimiento detallado de los ejercicios que se deben realizar, y por último tendrán un cuestionario para evaluar todos los conceptos que en el experimento se incluyan. 2 1.4 Metodología La metodología propuesta describe la manera en la cual va a transcurrir el proceso de investigación hasta alcanzar la meta establecida por medio de los objetivos anteriormente descritos. Primeramente se debe elaborar un marco teórico, incluyendo una breve introducción al DSP, seguido de los temas más importantes en el procesamiento digital de señales, los cuales son la nota teórica de cada una de las prácticas que se pretenden generar. Esta investigación teórica se debe realizar con la revisión, obtención, extracción y recopilación de literatura proveniente de libros, revistas, artículos, bibliotecas e Internet. El siguiente paso es el desarrollo de los ejercicios incluidos en las prácticas de simulación, las cuales se deben plantear y solucionar con la ayuda de MATLAB y SIMULINK, las cuales son dos herramientas informáticas muy poderosas y de gran importancia para el desarrollo de sistemas de procesamiento digital de señales. Por último se evalúa cada una de las prácticas por medio de un análisis de resultados y el procedimiento efectuado para cada una de ellas. 3 CAPÍTULO 2: Desarrollo teórico 2.1 Introducción al procesamiento digital de señales El acelerado desarrollo de circuitos integrados, comenzando con la integración a media escala (MSI, medium scale integration), luego con la integración a gran escala (LSI, large scale integration) y por último, hoy en día, con la integración a muy gran escala (VLSI, very large scale integration) de circuitos electrónicos integrados ha estimulado el desarrollo de ordenadores digitales más pequeños, rápidos, y baratos y de hardware de propósito general. Con estos circuitos digitales, se ha hecho posible construir sistemas digitales altamente sofisticados, capaces de realizar funciones y tareas para un procesamiento de señal digital que normalmente eran demasiado difíciles y/o caras con circuitería o sistemas de procesamiento de señales analógicas. A través del DSP, se han desarrollado hoy en día, sofisticados sistemas de comunicación, nació el Internet, se ha podido obtener valiosa información acerca del cosmos a partir de las señales astronómicas, las señales sísmicas pueden ser analizadas para determinar la magnitud de un terremoto o para predecir la estabilidad de un volcán, las imágenes o fotografías por computador pueden ser ahora mejoradas, entre muchas otras cosas más. 4 2.2 Tipos de señales1 Las señales se pueden encontrar en la mayoría de los campos de la ciencia y la ingeniería, así como en la astronomía, acústica, biología, comunicaciones, sismología, telemetría, y economía, tan solo como para nombrar algunos. Las señales naturalmente provienen de los procesos físicos o son hechas por la humanidad. Las señales astronómicas pueden ser generadas por explosiones celestes llamadas supernovas o por una estrella pulsante, mientras las señales sísmicas son manifestaciones de terremotos o de volcanes que están en actividad. Las señales en biología son producidas por el cerebro o el corazón, por los delfines o las ballenas para comunicarse entre ellas, o por un murciélago para poder volar en la oscuridad o para encontrar alimento. Por otra parte, las señales hechas por la humanidad son producidas en procesos tecnológicos, tales como las que existen en las computadoras, telefonía y sistemas de radar, o el Internet. Son muchas las razones por las que existe un gran interés en las señales. Los astrónomos pueden obtener información muy importante de las estrellas, tal como su composición química, pueden determinar el tamaño y la densidad de una estrella pulsante de acuerdo a la frecuencia de radiación de esta. Los sismólogos pueden determinar la magnitud y el lugar de origen de un terremoto, al igual que un vulcanólogo puede predecir cuando un volcán estará en erupción. Los cardiólogos pueden diagnosticar la condición del corazón, al mirar los patrones o alteraciones de los tejidos a través de un electrocardiograma. Se puede difundir información a través del Internet, ayudar a los 1 Proakis, J. G. “Tratamiento digital de señales”. Tercera Edición, Prentice Hall, Madrid, España, 1998. 5 aviones a aterrizar en condiciones climáticas muy malas y de poca visibilidad, o advertir a los pilotos de la distancia entre un objeto y los aviones para evitar colisiones. Entonces, con todo lo que se ha dicho anteriormente se puede decir que una señal es una cantidad física que varía con el tiempo, el espacio o cualquier otra variable o variables independientes. Las señales se pueden clasificar como: • Señales continuas en el tiempo (analógicas) • Señales discretas en el tiempo (digitales) Una señal continua en el tiempo está definida para todos los valores del tiempo desde el inicio hasta el final en un intervalo de tiempo dado, por ejemplo la señal acústica producida por un delfín. Una señal discreta en el tiempo está definida como una señal con valores en ciertos instantes del tiempo, los cuales pueden ser cada milisegundo, segundo, minuto, hora o día, por ejemplo las gotas de lluvia como función del tiempo. Matemáticamente, las señales analógicas se describen como funciones continuas de variable continua, donde el dominio es un intervalo de valores (t1, t2), donde − ∞ < t1 y t2 < ∞ , la cual está representada en la figura 2.1a. De forma similar una señal discreta puede ser representada por una función x(nT ) , donde T es el período entre los valores discretos adyacentes de la función y n es un integrador del intervalo (n1, n2) donde − ∞ < n1 y n2 < ∞ , tal y como se muestra en la figura 2.1b. Las señales de tiempo discreto a menudo son generadas a partir de una señal continua por medio de un proceso de muestreo. En 6 particular, tenemos f s = 1 T , la cual es conocida como la frecuencia de muestreo. Las señales también se pueden clasificar como: • Sin cuantificar • Cuantificada Una señal sin cuantificar puede tomar cualquier valor en un intervalo, mientras que una señal cuantificada sólo puede tomar valores discretos, usualmente de igual longitud de separación. La figura 2.2a y 2.2b muestra respectivamente, a una señal cuantificada continua en el tiempo y una señal cuantificada discreta en el tiempo. (a) (b) Figura 2.1 Tipos de señales: (a) Señal continua en el tiempo sin cuantificar, (b) señal discreta en el tiempo sin cuantificar 7 (a) (b) Figura 2.2 Tipos de señales: (a) Señal continua en el tiempo cuantificada, (b) señal discreta en el tiempo cuantificada 2.3 Representación frecuencial del dominio1 Las señales la mayoría del tiempo son representadas por funciones en el dominio del tiempo. Pero en algunas situaciones es de gran utilidad representar las señales con funciones en el dominio de la frecuencia, por ejemplo un señal continua en el tiempo compuesta por la sumatoria de las componentes sinusoidales, tal como 9 x(t ) = ∑ Ak sin (ωk t + φk ) (2.3-1) k =1 puede ser descrita completamente por dos series, A(ω ) = { Ak : ω = ωk para k = 1,2,3,K,9} (2.3-2) y 1 Antoniou, A. “Digital Signal Processing: Signals, Systems and Filters”. Primera edición, McGraw Hill, New York, Estados Unidos, 2006. 8 φ (ω ) = {φk : ω = ωk para k = 1,2,3,K,9} (2.3-3) las cuales representan las magnitudes y las fases de las componentes sinusoidales presentes en la señal. A las series A(ω ) y φ (ω ) se les conoce respectivamente como el espectro de magnitud y el espectro de fase de la señal. Por ejemplo, si A(ω ) y φ (ω ) en la ecuación 2.3-1, tomaran los valores dados en la tabla 2.1 asociados con cierto valor de frecuencia, x(t ) puede ser representada en el dominio del tiempo, tal y como se muestra en la figura 2.3 y en el dominio de la frecuencia en las figuras 2.4a y b. Tabla 2.1 Parámetros de una señal obtenidos a partir de la ecuación 2.3-1 k ωk Ak 1 1 0.6154 0.0579 2 2 0.7919 0.3529 3 3 0.9218 -0.8132 4 4 0.7382 0.0099 5 5 0.1763 0.1389 6 6 0.4057 -0.2028 7 7 0.9355 0.1987 8 8 0.9169 -0.6038 9 9 0.4103 -0.2722 9 φk Figura 2.3 Representación en el dominio del tiempo de la señal periódica dada por la ecuación (2.3-1). Figura 2.4 Representación en el dominio de la frecuencia de la señal periódica de la ecuación (2.3-1). (a) Espectro de Magnitud, (b) Espectro de Fase. 10 La utilidad de representar una señal en el dominio de la frecuencia, se puede apreciar al comparar el dominio del tiempo con el dominio de la frecuencia al analizar la figura 2.4. La representación en el dominio del tiempo muestra una señal ruidosa y periódica. Lo cual implica que ésta señal está compuesta por la suma de componentes periódicos. Por otro lado, la representación en el dominio de la frecuencia, provee una descripción detallada y significativa de cada una de los componentes en frecuencia, y de los aportes en magnitud y fase de cada uno de los componentes presentes en la secuencia. La representación propuesta en la ecuación 2.3, se conoce como la Serie de Fourier de una señal x(t ) y se obtiene como consecuencia, que las series de Fourier para una señal periódica son la única manera para obtener una representación espectral de una señal. Los científicos, matemáticos e ingenieros han ideado una gran variedad de herramientas matemáticas, las cuales pueden ser usadas para representar diferentes tipos de señales de forma espectral. Otras herramientas matemáticas, además de las Series de Fourier, son la Transformada de Fourier, la cual se aplica tanto a señales periódicas o no periódicas continuas en el tiempo; la Transformada Z, la cual se utiliza para señales no periódicas discretas en el tiempo; y la Transformada Discreta de Fourier, la cual es la más adecuada para señales periódicas discretas en el tiempo. Cada una de estas herramientas será retomada en los siguientes apartados. 11 2.4 Filtros analógicos y digitales1 El término filtro se utiliza comúnmente para describir un dispositivo que discrimina, según algún atributo de los objetos que se aplican a su entrada, aquello que pasa a su través. Por ejemplo, un filtro de aire permite que el aire pase a su través, evitando que las partículas de polvo presentes en el aire lo atraviesen. El filtrado se emplea en el procesamiento digital de señales de diferentes maneras, por ejemplo, en la eliminación de ruido indeseable de señales deseadas, en la conformación espectral para ecualización de canales de comunicaciones, en la detección de señales en radar, sonar y comunicaciones, en los análisis espectrales de señales, etc. 2.4.1 Filtros analógicos Los filtros eléctricos, desde que fueron inventados, han hecho posible el gran desarrollo de las telecomunicaciones. Originalmente los filtros analógicos fueron inventados para ser usados para receptores de radio y sistemas telefónicos para comunicar personas a larga distancia, convirtiéndose de esta manera en elementos importantes en todos los tipos de sistemas de comunicación. Con el desarrollo de filtros en los últimos años, estos se pueden clasificar según su función, su gama de frecuencias o según su tecnología y de acuerdo, con los elementos que los componen. Algunos tipos de filtros analógicos son los siguientes: 1 Antoniou, A. “Digital Signal Processing: Signals, Systems and Filters”. Primera edición, McGraw Hill, New York, Estados Unidos, 2006. 12 • Filtros pasivos RLC • Filtros de capacitores conmutados • Filtros activos RC discretos • Filtros de microondas • Filtros activos RC integrados 2.4.2 Filtros digitales En general, un filtro digital es un sistema que recibe de entrada una señal de tiempo discreto y produce de salida una señal de tiempo discreto, pero modificada en cierta forma ya sea en magnitud o en frecuencia. Con el rápido avance en la tecnología de los circuitos integrados, el desarrollo de tecnologías digitales hizo que se construyeran sistemas más versátiles y de muy bajo costo. El desarrollo de filtros digitales sigue creciendo día con día, y por ello se tiene los siguientes ejemplos: • • Filtros adaptativos recursivos • Filtros multidimensionales • Filtros de abanico • Filtros Multitasa • Filtros bidimensionales Filtros recursivos y no Estos filtros digitales hoy en día, pueden ser implementados en lenguajes como MATLAB o C++. 13 2.5 Nota teórica laboratorio de filtros digitales 1 El objetivo es aprender como implementar las técnicas de filtrado para señales de tiempo discreto, usualmente utilizadas en el curso de Procesamiento Digital de Señales. 2.5.1 Suma convolución y respuesta en frecuencia para tiempo discreto La salida y[n] de un sistema lineal e invariante en el tiempo se puede expresar como la suma convolución de la entrada x[n] con su respuesta al impulso h[n] , por medio de la siguiente ecuación: ∞ y[n] = ∑ x[k ] ⋅ h[n − k ] = k = −∞ ∞ ∑ h[k ] ⋅ x[n − k ] (2.5-1) k = −∞ La transformada z de la convolución de dos señales es igual a la multiplicación de las transformadas de cada una: Y ( z) = ∞ ∑ y[n]z −n = X ( z) ⋅ H ( z) (2.5-2) n = −∞ donde H ( z) = ∞ ∑ h[n]z − n y X ( z) = ∞ ∑ x[n]z −n (2.5-3) n = −∞ n = −∞ 1 Tretter, S. A. “Communication System Design Using DSP Algorithms”. Primera Edición, Kluwer Academic / Plenum Publishers, New York, Estados Unidos, 2003. 14 De acuerdo con la ecuación 2.5-1, la salida es y[n] = ∞ ∑ h[k ] ⋅ Ce ω j ( n − k )T ∞ = Ce jωnT k = −∞ ∑ h[k ] ⋅ e − jωkT k = −∞ = x[n]H ( z ) z = e jωT (2.5-4) Por tanto, la salida tiene forma sinusoidal a la misma frecuencia que la entrada, pero con su amplitud dada a partir del número complejo. H * (ω ) = H ( z ) z = e jωT (2.5-5) La expresión H * (ω ) se le conoce como la respuesta en frecuencia del sistema. La expresión A(ω ) = H * (ω ) se le conoce como la amplitud de la respuesta del sistema y el ángulo θ (ω ) = arg H * (ω ) se le conoce como la respuesta de fase del sistema. Estas funciones todas están en función de ω con un período ωs = 2π T . En coordenadas polares la respuesta en frecuencia se ve así H * (ω ) = A(ω )e jθ (ω ) (2.5-6) Entonces, de acuerdo con la ecuación 2.5-4, la salida puede ser expresada como y[n] = CA(ω )e j[ωnT +θ (ω )] (2.5-7) Cuando la entrada es una señal sinusoidal real, por ejemplo x[n] = C cos(ωnT + φ ) = ℜe{Ce jφ e jωnT } (2.5-8) La salida es de la siguiente manera y[n] = ℜe{H * (ω )Ce jφ e jωnT } = CA(ω ) cos[ωnT + θ (ω ) + φ ] 15 (2.5-9) En otras palabras, el sistema modifica la magnitud de la señal sinusoidal de entrada por medio de la amplitud de la respuesta y varía su fase a través de la fase de la respuesta en frecuencia, lo que constituye la idea básica del filtrado digital. 2.5.2 Filtros de respuesta de duración finita al impulso (FIR) FIR es un acrónimo en inglés para Finite Impulse Response o Respuesta finita al impulso. Se trata de un filtro, en el cual si la entrada es una señal impulso, la salida tendrá un número finito de términos no nulos. Los filtros FIR tienen la gran ventaja de que pueden diseñarse para ser de fase lineal, lo cual hace que presenten ciertas propiedades en la simetría de los coeficientes. Este tipo de filtros tiene especial interés en aplicaciones de audio. Estos filtros tienen todos los polos en el origen, por lo que son estables. Los ceros se presentan en pares de recíprocos si el filtro se diseña para tener fase lineal. Una de sus desventajas es de necesitar un orden mayor respecto a los filtros IIR para cumplir las mismas características. Esto se traduce en un mayor gasto computacional. 2.5.2.1 Estructura en forma directa de un filtro FIR La realización de la estructura en forma directa se deriva directamente de la ecuación 2.5-1, cuando la respuesta al impulso es idénticamente a cero fuera del intervalo de valores siguientes {0, 1,2,…, N-1}, de esta manera la suma convolución esta dada por: 16 N −1 y[n] = ∑ h[k ] ⋅ x[n − k ] = k =0 n ∑ x[k ] ⋅ h[n − k ] (2.5-10) k = n − N +1 Un filtro de este tipo se le conoce como un filtro de respuesta finita al impulso de N-etapas (FIR), filtro no recursivo, filtro transversal, o moving average filter (filtro de combinación lineal ponderada). El diagrama de bloques para la realización de la estructura en forma directa para construir filtros FIR se muestra en la figura 2.5. Consiste en una línea de retardos representada por la cadena de bloques llamados z-1 y una serie de divisiones que salen de la línea de retardo, las cuales son muestras de la respuesta al impulso. Figura 2.5 Diagrama de bloques de la estructura en forma directa de un filtro FIR 17 2.5.2.2 Métodos para el diseño de filtros FIR Hay tres métodos básicos para diseñar este tipo de filtros: • Método de las ventanas. Las más habituales son: • Ventana rectangular • Ventana de Barlett • Ventana de Von Hann • Ventana de Hamming • Ventana de Blackman • Ventana de Kaiser • Muestreo en frecuencia • Rizado constante (Aproximación de Chebyshev y algoritmo de intercambio de Remez). 2.5.3 Filtros de respuesta de duración infinita al impulso (IIR) Un filtro con respuesta al impulso, h(n), que tiene duración infinita es conocido como un filtro IIR, h(n) es la suma de varios exponenciales. En el dominio de la transformada z, H(z), se conoce como la función de transferencia, y es una función racional de z. Es la razón de dos polinomios de grado finito, tal y como se muestra en la siguiente función racional, H ( z) = b0 + b1 z −1 + b2 z −2 + L + bN z − N B( z ) = −1 −2 −M 1 + a0 + a1 z + a2 z + L + aM z A( z ) 18 (2.5-11) 2.5.3.1 Estructura en forma directa de un filtro IIR La función de transferencia racional dada por la ecuación 2.5-11, se puede obtener de diferentes maneras. Una de ellas, es por medio de la estructura en forma directa. La razón de las transformadas z entre la salida y la entrada del filtro esta dada por Y ( z) B( z ) = H ( z) = X ( z) A( z ) (2.5-12) De la expresión anterior obtenemos, M N ⎛ ⎞ Y ( z ) ⋅ A( z ) = X ( z ) ⋅ B( z ) o Y ( z )⎜1 + ∑ ak z − k ⎟ = X ( z )∑ bk z − k k =0 ⎝ k =1 ⎠ (2.5-13) Despejando para Y(z) N M k =0 k =1 Y ( z ) = ∑ bk X ( z ) z − k − ∑ ak Y ( z ) z − k (2.5-14) La ecuación en diferencias es el equivalente en el dominio del tiempo N M k =0 k =1 y[n] = ∑ bk x[n − k ] − ∑ ak y[n − k ] (2.5-15) La ecuación anterior muestra cómo construir un filtro a partir de las N entradas y M salidas pasadas. Un filtro implementado de esta manera se le conoce como un filtro recursivo, dado que las salidas pasadas son utilizadas para calcular la salida actual. Se le llama de forma directa porque los coeficientes en la función de transferencia aparecen en la ecuación en diferencias. 19 Y ( z) = X ( z) B( z ) = V ( z ) B( z ) A( z ) (2.5-16) donde V ( z) = X ( z) 1 A( z ) (2.5-17) La expresión anterior se muestra en la siguiente figura Figura 2.6 Primer paso de la estructura en forma directa tipo 1 de un filtro IIR La Señal intermedia v[n] puede ser obtenida a partir de la estructura de forma directa M v[n] = x[n] − ∑ ak v[n − k ] (2.5-18) k =1 luego, la salida puede estar representada por N y[n] = ∑ bk v[n − k ] (2.5-19) k =0 Un diagrama de bloques para las ecuaciones 2.5-18, 2.5-19 se muestra en la siguiente figura, donde se asume que M=N. Este tipo de estructuras requieren menos 20 capacidad y se les conoce como estructura en forma directa tipo 1 y forma directa tipo 2 respectivamente. Figura 2.7 Diagrama de bloques de la estructura en forma directa tipo 1 de un filtro IIR Los elementos s1[n],….,sN[n], son variables de estado para el filtro. La salida actual y el siguiente estado pueden ser obtenidos a partir de la entrada y estado actual. La siguiente secuencia de pasos puede ser utilizada para obtener las salidas y los estados del filtro: 21 Paso1: Calculo de v[n] M v[n] = x[n] − ∑ ak v[n − k ] k =1 Paso 2: Calculo de la salida y[n] N y[n] = b0v[n] + ∑ bk sk [n] k =1 Paso 3: Actualizar las variables de estado s N [n + 1] = s N −1[n] s N −1[n + 1] = sN − 2 [n] M s2 [n + 1] = s1[n] s1[n + 1] = v[n] Otra estructura, es la de forma directa tipo 2, la cual se puede obtener de la ecuación 2.5-13. Para simplificar, sea M=N. N Y ( z ) = b0 X ( z ) + ∑ [bk X ( z ) − akY ( z )]z − k (2.5-20) k =1 Un diagrama de bloques que representa la expresión anterior se muestra en la figura siguiente. 22 Figura 2.8 Diagrama de bloques de la estructura en forma directa tipo 2 de un filtro IIR La secuencia de pasos siguiente es para obtener las salidas y para actualizar sus variables de estado de este tipo de estructura. Paso1: Cálculo de la salida y[n] y[n] = b0 x[n] + s1[n] 23 Paso 2: Actualizar las variables de estado s1[n + 1] = b1 x[n] − a1 y[n] + s2 [n] s2 [n + 1] = b2 x[n] − a2 y[n] + s3[n] M s N −1[n + 1] = bN −1 x[n] − aN −1 y[n] + s N [n] s N [n + 1] = bN x[n] − aN y[n] 2.5.4 Transformación bilineal1 El diseño de filtros digitales a partir de filtros analógicos es un campo maduro y bien desarrollado, así que en la mayoría de las veces es de gran utilidad diseñar un filtro digital en el dominio analógico y luego este se convierte al dominio digital. Un filtro analógico se puede describir por su función de transferencia M H a (s) = B( s) = A( s ) ∑β s k ∑α s k k =0 N k =0 k (2.5-21) k donde {α k } y {β k } son los coeficientes del filtro, o por su respuesta al impulso, que se relaciona con Ha(s) mediante la transformada de Laplace H a (s ) = ∫ h(t )e − st dt ∞ −∞ 1 (2.5-22) Proakis, J. G. “Tratamiento digital de señales”. Tercera Edición, Prentice Hall, Madrid, España, 1998. Jackson, L. B. “Digital filters and Signal Processing”. Tercera Edición, Boston: Kluwer Academic Publishers, Estados Unidos, 1996. 24 También, el filtro analógico que tiene la función de transferencia racional, H(s) dada en (2.5-21), se puede describir mediante la ecuación diferencial lineal con coeficientes lineales constantes d k y (t ) M d k x(t ) αk = ∑ βk ∑ dt k dt k k =0 k =0 N (2.5-23) donde x(t) denota la señal de entrada e y(t) denota la salida del filtro. Cada una de estas tres caracterizaciones equivalentes de un filtro analógico conduce a métodos alternativos para convertir el filtro al dominio digital. Recuérdese que un sistema analógico lineal invariante en el tiempo con función de transferencia H(s) es estable si todos sus polos se encuentran en la mitad izquierda del plano s. Consecuentemente, si la técnica de conversión es efectiva debería tener las siguientes propiedades deseables: • El eje jΩ en el plano s debería corresponderse a la circunferencia unidad en el plano z. Así, habrá una relación directa entre las dos variables de frecuencia en los dos dominios. • El semiplano izquierdo del plano s se debería corresponder con el interior de la circunferencia unidad en el plano z. Así, un filtro analógico estable se convertirá en un filtro digital estable. Uno de estos métodos es la correspondencia del plano s al plano z, denominada transformación bilineal, que soluciona ciertas limitaciones que poseen otros métodos. La transformación bilineal es una correspondencia conformadora que transforma el eje jΩ en 25 la circunferencia unidad del plano z sólo una vez, evitando el solapamiento de componentes de frecuencia. Además, todos los puntos en el semiplano izquierdo s se corresponden con el interior de la circunferencia unidad en el plano z y todos los puntos en el semiplano derecho de s se corresponden con puntos fuera de la circunferencia unidad del plano z. De esta manera se necesita una transformación de s a s’, la cual contenga todo el plano s dentro del intervalo − π T ≤ Im(s ' ) ≤ π T , luego para transformarlo al plano z utilizando z = e s 'T . La transformación del plano s al plano s’ está descrita en la figura 2.9 y esta dada por s' = 2 ⎛ sT ⎞ tan −1 ⎜ ⎟ T ⎝ 2 ⎠ (2.5-24) Figura 2.9 Mapeo del plano s al plano s’ Ahora para ver el efecto de esta transformada es mejor pasar al eje jΩ. Sustituyendo s=jΩ y s’=jΩ en (2.5-24), se obtiene Ω' = 2 ⎛ ΩT ⎞ tan −1 ⎜ ⎟ T ⎝ 2 ⎠ 26 (2.5-25) O equivalentemente, ⎛ ΩT ⎞ ⎟ ⎝ 2 ⎠ ω = 2 tan −1 ⎜ (2.5-26) Por tanto, el eje Ω esta completamente contenido en el intervalo (-π, π) para ω. También se puede notar que la relación entre ω y Ω no es lineal, pero es aproximadamente lineal para valores pequeños de ω ≈ ΩT , tal y como se muestra en la figura 2.10. Figura 2.10 Mapeo de Ω a ω por medio de la transformación bilineal. Ahora, la transformación del plano s al plano z se obtiene invirtiendo (2.5-24), así s= 2 ⎛ s'T ⎞ tanh⎜ ⎟ T ⎝ 2 ⎠ (2.5-27) Luego a partir de z = e s 'T se obtiene s ' = (1 T )ln z y sustituyendo en (2.5-27), se obtiene 27 s= 2 ⎛ ln z ⎞ tanh⎜ ⎟ T ⎝ 2 ⎠ (2.5-28) Recordando que: tanh x = e x − e − x 1 − e −2 x = y aplicándolo a la ecuación (2.5-28), se obtiene e x + e− x 1 + e− 2 x 2 ⎛ 1 − z −1 ⎞ ⎟ s = ⎜⎜ T ⎝ 1 + z −1 ⎟⎠ (2.5-29) Por tanto, el diseño en tiempo discreto de un filtro se obtiene a partir del diseño en tiempo continuo a través de la transformada bilineal. H ( z ) = H c ( s) 2 ⎛ 1− z − 1 S= ⎜ T ⎜⎝ 1+ z −1 ⎞ ⎟ ⎟ ⎠ (2.5-30) Se puede notar que la transformada bilineal es invertible, es decir hay una transformada inversa que se deriva a partir de (2.5-29) T s 2 z= T 1− s 2 1+ (2.5-31) La relación no-lineal que existe entre Ω y ω dada por la ecuación (2.5-26) se le conoce como distorsión en frecuencia. De esta manera el efecto en H’(ω) relativo a Hc(jΩ) se obtiene a partir de (2.5-30) H ' (ω ) = H c ( jΩ) 28 Ω= 2 ⎛ω ⎞ tan ⎜ ⎟ T ⎝2⎠ (2.5-32) La relación es descrita en la siguiente figura Figura 2.11 Descripción del efecto de la transformación bilineal de Hc( jΩ) a H'(ω). De la figura anterior se puede notar que a partir de esta transformación Hc(jΩ) se comprime en frecuencia, pero a pesar de esto, las características de Hc(jΩ) se mantienen en H’(ω). Esta propiedad es la característica más importante de la transformada bilineal. 29 Para diseñar filtros utilizando la transformación bilineal se utiliza el siguiente procedimiento: Distorsión en Frecuencia: se calculan los valores de Ωc y Ωr correspondientes a los valores especificados de ωc y ωr a partir de Ω= 2 ⎛ω ⎞ tan⎜ ⎟ T ⎝2⎠ (2.5-33) Diseño en tiempo continuo: a partir de los valores de Ωc, Ωr, δ1, δ2, y N, se obtiene las ceros y polos del filtro analógico. Transformación de los ceros y polos: utilizando la ecuación (2.5-36) los ceros σm y polos sk se transforman en zm y pk. Poniendo Hc(jΩ) en términos de sus polos y ceros de la siguiente manera ∏ H ( s) = K ∏ Mc m =1 N c (s − σ m ) ( s − sk ) k =1 (2.5-34) Y aplicando la transformada bilineal se produce ( H ( z ) = b0 1 + z ) −1 N − M c 30 ∏ ∏ Mc m =1 N (1 − zm z −1 ) (1 − pk z −1 ) k =1 (2.5-35) donde T σm 2 zm = T 1− σm 2 T sk 2 pk = T 1 − sk 2 1+ 1+ y (2.5-36) Calcular b0: se calcula el coeficiente de ganancia b0 igualando las ganancias de H (1) = H c (0) o las ganancias de otras frecuencias equivalentes. Por último se obtiene la función de transferencia del sistema H(z) la cual está dada por (2.5-35). 31 2.6 Nota teórica laboratorio de FFT1 El objetivo es repasar y utilizar algunas técnicas importantes en el procesamiento digital de señales. Prácticamente sería construir un analizador del espectro utilizando la Transformada Rápida de Fourier (FFT, acrónimo en inglés de Fast Fourier Transform). 2.6.1 Muestreo en tiempo discreto utilizando la transformada de Fourier Suponga que una señal continua en el tiempo, es muestreada con un período T o una frecuencia de muestreo de ωs = 2π T para obtener una señal discreta en el tiempo x[n]=x(nT). Se define en tiempo discreto la Transformada de Fourier de x[n] como la siguiente expresión, X (ω ) = ∞ ∑ x[n] ⋅ e − jωnT (2.6-1) n = −∞ La transformada Z de la señal se obtiene sustituyendo por z = e jωT . Nótese que X (ω ) tiene un período ωs , puesto que la sumatoria es una serie de Fourier. La señal discreta de Fourier puede ser determinada en tiempo discreto a partir de la transformada de Fourier, por 1 Tretter, S. A. “Communication System Design Using DSP Algorithms”. Primera Edición, Kluwer Academic / Plenum Publishers, New York, Estados Unidos, 2003. 32 ws x[n] = 2 1 ωs ∫ X (ω ) ⋅ e − jωnT dω (2.6-2) ws 2 Así, x[n] puede ser considerada como la suma de ondas sinusoidales muestreadas en un intervalo de frecuencias continuas, de acuerdo al ancho de banda según Nyquist − ωs 2 < ω < ωs 2 con amplitudes complejas dadas por X(ω). De esta manera X(ω) se le puede llamar como el espectro de frecuencia de la señal. 2.6.2 La transformada discreta de Fourier y su inversa Sea x[n] una señal la cual es cero para valores de n que no estén en el siguiente intervalo {0, 1, 2,…., N-1}. Sea X(ω) en tiempo discreto la transformada de Fourier de x[n], la cual se definió en el punto 2.6.1. Entonces, la Transformada Discreta de Fourier (DFT, acrónimo en inglés de Discrete Fourier Transform) de x[n], se define como N −1 X k = X (kωs N ) = ∑ x[n] e −j 2π nk N para k = 0, 1,.…, N-1 (2.6-3) n =0 La DFT es simplemente la serie de N muestras de X(ω) tomadas a diferentes valores de frecuencia dadas por ωs N dentro del intervalo de Nyquist. Los valores originales de la señal se pueden obtener utilizando la Transformada Discreta Inversa de Fourier (IDFT, acrónimo en inglés de Inverse Discrete Fourier Transform), dada por la siguiente fórmula 33 1 x[n] = N N −1 ∑X k =0 k e j 2π nk N para k = 0, 1,.…, N-1 (2.6-4) 2.6.3 La transformada rápida de Fourier1 La transformada discreta de Fourier (DFT) juega un papel importante en el análisis, el diseño y la realización de algoritmos y sistemas de procesamiento digital de señales. Una de las razones por las que el análisis en Fourier es de una amplia importancia en el procesamiento digital de señales es debido a la existencia de un algoritmo eficiente para calcular la DFT. Este algoritmo se le denomina como la Transformada Rápida de Fourier (FFT). La FFT elimina información redundante que existe en la DFT, ya que esta explota las propiedades de periodicidad y simetría del factor de fase WN. Estas propiedades son: k+ WN W N 2 k+N N = −WNk =W k N Simetría (2.6-5) Periodicidad Existen básicamente dos tipos de algoritmos FFT: • Diezmado en el tiempo • Diezmado en frecuencia 1 Proakis, J. G. “Tratamiento digital de señales”, Tercera edición, Prentice Hall, Madrid España, 1998. Tretter, S. A. “Communication System Design Using DSP Algorithms”, Primera edición, Kluwer Academic / Plenum Publishers, New York, Estados Unidos, 2003. 34 Estos algoritmos son de gran utilidad debido a que si se realiza el cálculo directo de la DFT o IDFT dadas por (2.6-3) y (2.6-4), esto supone realizar N multiplicaciones complejas y N − 1 sumas complejas. En consecuencia, para calcular los N valores de de DFT necesitamos N 2 multiplicaciones complejas y N 2 − N sumas complejas. Por otra parte el cálculo utilizando estos algoritmos reduce el número de sumas complejas a N log 2 N . De manera para valores de N muy grandes es de gran importancia utilizar la FFT en lugar de calcular directamente la DFT. El algoritmo de diezmado en el tiempo es uno de los algoritmos mas utilizados en la actualidad, este se presenta a continuación. Para simplificar la notación, sea WN = e − j 2π N , de esta manera de (2.6-3) obtengo Xk = N −1 ∑ x[n] e −j 2π nk N n=0 N −1 = ∑ x[n]WNnk (2.6-6) n=0 Este algoritmo asume que N = 2v . Luego se separa la sumatoria en dos sumatorias, cuando n es par y otra cuando n es impar. Xk = N −1 2 ∑ x[2n] W n=0 2 nk N N −1 2 + ∑ x[2n + 1] WN( 2 n +1) k para k = 0, 1, K , N − 1 (2.6-7) n=0 Ahora sea, a [n] = x[2n] b [n] = x[2n + 1] para n = 0, 1, K , 35 N −1 2 (2.6-8) Se puede notar que WN2 = WN 2 . Por tanto, (2.6-7) puede escribirse como Xk = N −1 2 ∑ a[n] W nk N /2 n=0 N −1 2 + WNk ∑ b[n] WNnk/ 2 para k = 0, 1, K , N − 1 (2.6-9) n=0 y definiendo Ak y Bk de la siguiente manera Ak = Bk = N −1 2 ∑ a[n] W nk N /2 n=0 N −1 2 para n = 0, 1, K , N − 1 (2.6-10) ∑ b[n] W n=0 nk N /2 De esta manera (2.6-9) se puede escribir como X k = Ak + WNk Bk para n = 0, 1, K , N − 1 (2.6-11) El siguiente paso muestra las ecuaciones claves para la FFT de diezmado en el tiempo. Primero se nota que WNN / 2 = −1 . Luego, la ecuación anterior se puede separar en dos nuevas ecuaciones, X k = Ak + WNk Bk X k+ N 2 = Ak − WNk Bk para n = 0, 1, K , N −1 2 (2.6-12) El cálculo básico de las dos ecuaciones anteriores se muestra en la siguiente figura, al cual se le denomina Mariposa, dado que el diagrama de flujo recuerda a una mariposa. 36 Figura 2.12 Esquema de Mariposa del algoritmo FFT de diezmado en el tiempo. Un diagrama de flujo para un cálculo completo de la primera etapa de este algoritmo con N = 8, se muestra en la siguiente figura. Figura 2.13 Primera etapa del algoritmo FFT de diezmado en el tiempo. 37 Otro algoritmo para el cálculo de la FFT importante, denominado algoritmo de diezmado en frecuencia. Esto implica un almacenamiento por columnas de la secuencia de datos de entrada. Para deducir el algoritmo se empieza dividiendo la ecuación (2.6-6) en dos sumatorias, una de las cuales contiene los primeros N 2 puntos de datos y el otro los últimos N 2 puntos de datos. Así se obtiene Xk = Xk = N −1 2 ∑ x[n]WNkn + n=0 N −1 ∑ x[n]W N 2 n= N −1 2 ∑ x[n]W kn N n=0 kn N N Nk 2 −1 2 N N n= 2 +W (2.6-13) ⎡ ∑ x ⎢⎣n + N ⎤ kn WN 2 ⎥⎦ kN Dado que WN 2 = (− 1) , la expresión (2.6-13) puede reescribirse como k N Nk 2 −1 2 N N n= 2 ⎧ ∑ ⎨ x[n] + (− 1) Xk = W k ⎩ N⎤⎫ ⎡ x ⎢n + ⎥ ⎬WNkn 2⎦⎭ ⎣ (2.6-14) Ahora se diezma X k en las muestras pares e impares. De esta manera, se obtiene X 2k = N −1 2 ⎧ ⎡ ∑ ⎨ x[n] + x ⎢⎣n + n=0 ⎩ N ⎤ ⎫ kn ⎬W N 2 ⎥⎦ ⎭ 2 para k = 0, 1,K, N −1 2 (2.6-15) y X 2 k +1 = N −1 2 ⎧ ⎡ ∑ ⎨ x[n] − x ⎢⎣n + n=0 ⎩ N ⎤ ⎫ kn kn ⎬W N W N 2 ⎥⎦ ⎭ 2 2 38 para k = 0, 1,K, N −1 2 (2.6-16) Donde se recurre al hecho de que WN2 = W N . Si se definen las secuencias de 2 N 2 puntos g1 (n ) y g 2 (n ) como N⎤ ⎡ g1 [n] = x[n] + x ⎢n + ⎥ 2⎦ ⎣ ⎧ N ⎤⎫ ⎡ g 2 [n] = ⎨ x[n] − x ⎢n + ⎥ ⎬WNn 2 ⎦⎭ ⎣ ⎩ (2.6-17) N para n = 0, 1, 2,K , − 1 2 Entonces X 2k = N −1 2 ∑ g [n]W n =0 X 2 k +1 = 1 N −1 2 kn N 2 ∑ g [n]W n=0 2 (2.6-18) kn N 2 El cálculo de las secuencias g1 [n] y g 2 [n ] según (2.6-17) y el uso de estas secuencias para el cálculo de la DFT de N 2 puntos se muestra en la figura 2.14. Este procedimiento computacional puede repetirse diezmando la DFT de N 2 puntos para X 2 k y X 2 k +1 . Consecuentemente, el cálculo de la DFT de N puntos por medio del algoritmo para la FFT de diezmado en frecuencia, requiere (N 2)log 2 N multiplicaciones complejas y N log 2 N sumas complejas, igual que el algoritmo de diezmado en tiempo. 39 Un diagrama de flujo para un cálculo completo de la primera etapa de este algoritmo con N = 8, se muestra en la siguiente figura. Figura 2.14 Primera etapa del algoritmo FFT de diezmado en frecuencia Se puede observar que el cálculo básico en esta figura es la mariposa mostrada en la figura 2.12 40 2.6.4 Uso de la FFT para determinar la densidad espectral de potencia1 Hay señales de energía finita que tienen transformada de Fourier y están caracterizadas en el dominio espectral por su densidad espectral de energía. Por otro lado, la clase importante de señales caracterizadas como procesos aleatorios estacionarios no tienen energía finita y, por lo tanto, no tienen transformada de Fourier. Tales señales están caracterizadas por la densidad espectral de potencia, ya que tienen potencia media finita. Un método para estimar la densidad espectral de frecuencia está basado en usar una función llamada periodograma. Esta función de una secuencia de N puntos y[n] esta definida por I N (ω ) = 1 2 Y (ω ) N (2.6-19) donde N −1 Y (ω ) = ∑ y[n] e − jωnT (2.6-20) n=0 es en tiempo discreto la transformada de Fourier de y[n]. Se puede demostrar que la transformada inversa del periodograma es iguala a la función de autocorrelación ⎧1 ⎪ R(n ) = ⎨ N ⎪0 ⎩ N −1 ∑ y[n + k ] y[k ] para n ≤ N −1 k =0 (2.6-21) cualquier otro valor 1 Proakis, J. G. “Tratamiento digital de señales”, Tercera edición, Prentice Hall, Madrid España, 1998. Tretter, S. A. “Communication System Design Using DSP Algorithms”, Primera edición, Kluwer Academic / Plenum Publishers, New York, Estados Unidos, 2003. 41 La variable, n, en la función de autocorrelación se le conoce como el retardo. Para un retardo cero R(0 ) = 1 N N −1 ∑ y[k ] 2 = k =0 1 ωs / 2 ω 2 ∫−ω s /2 I N (ω ) dω (2.6-22) es la potencia promedio de la secuencia de puntos. Esta relación justifica el uso de la autocorrelación promediada en el tiempo, como la interpretación del periodograma como una función que muestra como la potencia se distribuye en el dominio de la frecuencia. A simple vista, se puede asumir que conforme aumenta N, el periodograma se vuelve una mejor forma de estimar la densidad espectral de potencia para procesos aleatorios estacionarios. Sin embargo, esto no es cierto. Conforme N aumenta, el periodograma tiende a oscilar más y más rápidamente. Una solución a este problema es promediar los periodogramas de diferentes segmentos de la secuencia de N puntos. Sea x[n] una secuencia de duración M = LN y la ventana L para cada uno de los segmentos. ⎧h[n] x[n + kL] yk [n] = ⎨ ⎩0 para n = 0, 1,..., N − 1 cualquier otro (2.6-23) donde h[n] es la función de la ventana deseada. El periodograma obtenido del segmento ventaneado está dado por I N , k (ω ) . Así, la densidad espectral de potencia se determina ahora por ) 1 L −1 S = ∑ I N , k (ω ) L k =0 42 (2.6-24) Cuando los segmentos de puntos son estadísticamente independientes, el promedio de L segmentos reduce la varianza en un factor de L. Además los segmentos de datos se pueden ir solapando a ciertos porcentajes para intentar mejorar las ganancias de la estimación. 43 2.7 Nota teórica laboratorio de modulación AM1 El objetivo es examinar un método muy común de transmitir información conocido como modulación de amplitud (AM, acrónimo en inglés de Amplitude Modulation), y a su vez conocer como se utiliza para procesar señales digitales. 2.7.1 Descripción de la modulación de amplitud (AM) Las señales de información deben ser transportadas entre un transmisor y un receptor sobre alguna forma de medio de transmisión. Sin embargo, las señales de información pocas veces encuentran una forma adecuada para la transmisión. La modulación se define como el proceso de transformar información de su forma original a una forma más adecuada para la transmisión. El propósito es transformar una señal m(t) en otra señal s(t). Este proceso debe ser reversible, de tal manera que se pueda recuperar la señal m(t) a partir de la señal s(t) en el receptor. La señal m(t) es la señal en banda base que se va a transmitir. Puede ser representada tanto en forma temporal como en forma de espectro de frecuencias. La modulación recurre a una nueva señal auxiliar de frecuencia f0. Esta frecuencia f0 recibe el nombre de frecuencia portadora o frecuencia central. Evidentemente la frecuencia f0 se elige de forma que se encuentre en la banda de paso del canal de transmisión. La señal que será transmitida s(t), es la señal llamada portadora a la frecuencia f0. 1 Tretter, S. A. “Communication System Design Using DSP Algorithms”. Primera Edición, Kluwer Academic / Plenum Publishers, New York, Estados Unidos, 2003. 44 Una señal AM está descrita por s (t ) = Ac [1 + ka m(t )]cos ωct (2.7-1) c (t ) = Ac cos ωct (2.7-2) donde es llamada la onda portadora de amplitud Ac y frecuencia f c = ωc (2π ) Hz. La frecuencia portadora, fc, es relativamente alta de acuerdo con la amplitud de la señal modulante (señal original). El parámetro k a es una constante positiva llamada índice de modulación del modulador. La señal e(t ) = Ac 1 + k a m(t ) (2.7-3) se le conoce como la envolvente de s(t). Cuando fc es relativamente alta de acuerdo al ancho de banda de m(t), la envolvente es una señal suavizada que pasa por los picos positivos de s(t) y puede ser vista al modular la amplitud de la onda portadora relativa a m(t). En general, en radiodifusión AM, k a m(t ) es ajustado de la siguiente manera 1 + ka m(t ) ≥ 0 para todo t (2.7-4) Para este caso la envolvente es e(t ) = Ac [1 + k a m(t )] 45 (2.7-5) Entonces m(t) se puede obtener a partir de la envolvente, a los receptores que poseen esta propiedad se les conoce como demoduladores no coherentes, porque no se generan frecuencias en el receptor o las frecuencias utilizadas para la demodulación son completamente independientes de la frecuencia o fase de la onda portadora del transmisor. 2.7.1.1 Espectro de una señal AM Suponga que la señal de banda base m(t) tiene como transformada de Fourier M (ω ) y M (ω ) = 0 para ω ≥ W . Es una señal pasobajo con frecuencia de corte W. La transformada de Fourier de la señal transmitida s(t), es S (ω ) = Acπ δ (ω + ωc ) + Acπ δ (ω − ωc ) + Ac A ka M (ω + ωc ) + c ka M (ω − ωc ) 2 2 (2.7-6) En la expresión anterior se identifican señales de cuatro frecuencias diferentes, dos de amplitud π Ac y frecuencia ωc y − ωc , que corresponde a la portadora y cuya amplitud y frecuencia no dependen de la señal moduladora. Las otras dos señales tienen frecuencias (ω + ωc ) y (ω − ωc ) , separadas por debajo y arriba de la portadora por ω, cada una de amplitud Ac k a 2 . Para frecuencias positivas la parte del espectro por encima de ωc y para frecuencias negativas la parte del espectro por debajo de -ωc se denomina banda lateral superior (USB, acrónimo en inglés de Upper Side Band) y para frecuencias positivas la parte del espectro por debajo de ωc y para frecuencias negativas la parte del espectro por encima de -ωc se 46 denomina banda lateral inferior (LSB, acrónimo en inglés para Lower Side Band). La condición ωc > W asegura que las bandas laterales inferiores (la positiva y la negativa) no se solapen. Para frecuencias positivas, la componente frecuencial superior es (ωc + W ) y la inferior (ωc − W ) . La diferencia entre ambas define el ancho de banda de transmisión de la señal AM que se representa mediante Br y viene dado por la siguiente ecuación Br = 2W Figura 2.15 Espectro de una señal AM 47 (2.7-7) 2.7.2 Demodulación de una señal AM capturando la envolvente Un circuito análogo, muy simple y conocido como detector de envolvente es usado comúnmente en los radios para demodular señales AM. Este circuito esta implementado por un diodo, capacitores y resistencias, es un seguidor de picos de la onda AM. Existen dos métodos para la detección de la envolvente de gran importancia en el procesamiento digital de señales. El primer método se conoce como ley cuadrática y el segundo método utiliza la transformación de Hilbert para crear algo llamado la envolvente compleja. 2.7.2.1 Demodulación de señales AM utilizando la ley cuadrática El diagrama de bloques de la ley cuadrática se muestra en la figura 2.16. La entrada s(t) tiene la forma de una señal AM dada por (2.7-1). Se asume que la señal banda base es una señal pasobajo con frecuencia de corte W. El primer bloque da como resultado s 2 (t ) = Ac2 [1 + ka m(t )] cos 2 ωct = 0.5 Ac2 [1 + k a m(t )] + 0.5 Ac2 [1 + ka m(t )] cos 2 2ωct 2 2 2 (2.7-8) El primer término del lado derecho de la ecuación es una señal pasobajo excepto que la frecuencia de corte se aumentó en 2W. El segundo término tiene un espectro centrado en ± 2ωc . Para frecuencias positivas, este espectro se encuentra dentro del intervalo (2ωc − 2W , 2ωc + 2W ) . Para que el detector funcione correctamente, los espectros de estos dos términos no deben solaparse. Esto se logra si 2W < 2ωc − 2W 48 or ωc > 2W (2.7-9) De acuerdo a lo anterior, la señal AM tiene la banda lateral con una frecuencia de corte de 2(ωc + W ) . Por consiguiente, la entrada s(t) debe ser muestreada a una tasa de al menos 4(ωc + W ) para prevenir pérdidas y el filtro pasobajo H(ω) debe operar con muestras tomadas de la tasa de muestreo de s2(t). La salida del filtro pasobajo tiene su banda lateral en el ancho de banda Nyquist de corte 2W . Figura 2.16 Detector de envolvente (Ley Cuadrática) El filtro H(ω) es un filtro pasobajo ideal con una frecuencia de corte 2W de manera que su salida es 0.5 Ac2 [1 + ka m(t )] . La caja final del diagrama de bloques del detector se 2 encarga de obtener la raíz cuadrada de la salida del filtro y da como resultado una señal que es proporcional a m(t) con un nivel DC. En muchos casos, la señal que se desea transmitir no tiene componentes de espectro cerca de la frecuencia cero y el nivel DC puede ser eliminado utilizando un filtro pasoalto. 49 2.8 Nota teórica laboratorio de modulación DSBSC-AM1 Puesto que es indispensable que en el receptor se reinserte la portadora exactamente a la misma frecuencia y fase de la portadora utilizada para modular la señal en el transmisor, en el receptor sólo sería necesaria una muestra o piloto de esa portadora, de nivel suficiente para sincronizar o enganchar la frecuencia de un oscilador local. En estas condiciones, no es necesario transmitir la portadora con toda su potencia y basta, como se mencionó con transmitir sólo una muestra de ella. Esto hace posible transmitir la señal modulada en amplitud sólo con la potencia requerida para la señal de información y permite reducir de manera importante la potencia del transmisor con la consiguiente reducción del costo de operación. Este razonamiento da lugar a la posibilidad de transmitir sólo las dos bandas laterales con, o sin un piloto de la portadora. Si no se transmite este piloto, la complejidad del receptor aumenta ya que el oscilador local no tiene una referencia precisa para sincronizarse, aunque es posible, a expensas de circuitos más complejos. A este tipo de modulación se le conoce como modulación de amplitud con portadora suprimida de doble banda lateral (DSBSC-AM, acrónimo en inglés para double-sideband suppressed-carrier amplitude modulation). 2.8.1 Descripción matemática de una señal DSBSC-AM Sea m(t) la señal que se desea transmitir. La señal DSBSC-AM obtenida a partir de m(t) es 1 Tretter, S. A. “Communication System Design Using DSP Algorithms”. Primera Edición, Kluwer Academic / Plenum Publishers, New York, Estados Unidos, 2003. 50 s (t ) = Ac m(t )cos ωct (2.8-1) Esta es la misma señal AM excepto que con la componente sinusoidal de la portadora eliminada. Usualmente la señal m(t) que se transmite posee valores positivos y negativos que no pueden ser recuperados por medio de un detector de envolvente. Un método de demodulación llamado demodulación coherente es utilizado para este caso de señales. Luego la transformada de Fourier de s(t) es S (ω ) = 0.5 Ac M (ω − ωc ) + 0.5 Ac M (ω + ωc ) (2.8-2) De la ecuación anterior se puede notar que es el mismo espectro de una señal AM pero sin el valor discreto de la frecuencia de la portadora. Tal y como se muestra en la figura 2.18, en este caso el proceso de modulación simplemente traslada la señal moduladora a las frecuencias ± ωc . Se tienen las dos bandas laterales sin portadora. En este caso el ancho de banda de la señal moduladora es B = 2W y la eficiencia en potencia η = 1 . La parte del espectro para ω > ωc se le conoce como banda lateral superior (USB, acrónimo en inglés de Upper Sideband) y la parte del espectro para ω < ωc se le conoce como la banda lateral inferior (LSB, acrónimo en inglés para Lower Sideband). 2.8.2 El receptor coherente ideal El diagrama de bloques de un receptor coherente ideal se muestra en la figura 2.17. Primero la señal recibida se pasa a través de un filtro pasabanda centrado a la frecuencia de 51 la portadora de tal manera que pase la señal DSBSC y elimine el ruido. La salida del filtro pasabanda luego es multiplicado por una réplica de la onda portadora. Esta replica es generada por un dispositivo llamado oscilador local (LO, acrónimo en inglés para Local Oscilator). Suponiendo una señal sin ruido, el producto de esa multiplicación es s1 (t ) = 2s (t )cos ωct = 2 Ac m(t )cos 2 ωct = Ac m(t ) + Ac m(t )cos 2ωct (2.8-3) El dispositivo que es capaz de obtener el resultado anterior se le conoce como modulador balanceado. Figura 2.17 Diagrama de bloques de un Receptor Coherente Ideal La transformada de Fourier de la salida del modulador balanceado es S1 (ω ) = Ac M (ω ) + 0.5 Ac M (ω + 2ωc ) + 0.5 Ac M (ω − 2ωc ) (2.8-4) y se muestra en la figura 2.18(c). El primer término a mano derecha de la ecuación (2.8-3) es proporcional a la señal transmitida. El segundo término tiene los componentes del espectro centrados alrededor de − 2ωc y 2ωc , los cuales se pueden ver en S1 (ω ) . Las 52 altas frecuencias no deseadas son eliminadas finalmente por el filtro pasobajo con frecuencia de corte W. Figura 2.18 Espectro de una señal DSBSC-AM 53 2.8.3 Lazo de Costas: técnica práctica para demodulación coherente Un receptor debe tener un perfecto conocimiento de la frecuencia de portadora y la fase de la señal DSBSC-AM, para lograr una demodulación coherente exacta. Sin embargo, estos parámetros pueden ser estimados con certeza por el receptor por medio de dispositivos llamados circuito de lazo por enganche de fase (PLL, acrónimo en inglés de phase-locked loops), y así poder obtener una demodulación coherente. Un método para obtener un sistema receptor adecuado para demodular señales DSBSC-AM se denomina lazo de costas, el cual es una modificación de un tipo de PLL. Un esquema de dicho receptor se puede ver en la figura 2.19. Esta forma está particularmente diseñada para aplicaciones de DSP, por tanto las señales que se muestran son señales discretas con un período de muestreo T. Figura 2.19 Diagrama de bloques del demodulador de lazo Costas 54 En general, la señal después de pasar por el filtro pasabanda tiene la forma s (nT ) = Ac m(nT )cos(ωc nT + θ1 ) (2.8-5) donde ωc es frecuencia nominal de la portadora y θ1 es una constante o un cambio muy lento de fase. Cuando existe una diferencia en frecuencia entre la frecuencia nominal y las frecuencias de la portadora, ya sea por una mala calibración en el transmisor o el oscilador local del receptor, θ1 toma la forma θ1 = ∆ω nT + γ (2.8-6) donde ∆ω es la diferencia en frecuencia y γ es una constante de fase. El primer paso de este sistema, es formar la envolvente compleja ) s+ (nT ) = s(nT ) + js (nT ) = Ac m(nT )e j (ω c nT +θ1 ) (2.8-7) Las líneas sólidas y punteadas paralelas en la figura 2.19 representan señales complejas, donde las líneas sólidas corresponden a la parte real y las líneas punteadas a la parte imaginaria. El sistema genera un ángulo estimado φ (nT ) de la señal recibida, el cual puede ser expresado como φ (nT ) = ωc nT + θ 2 (nT ) (2.8-8) Este ángulo es luego pasado por el bloque con el exponencial complejo para dar lugar a la señal del oscilador local e − jφ (nT ) . 55 La señal del oscilador local es multiplicada por la envolvente compleja dando como resultado c(nT ) = s+ (nT )e − jφ (nT ) = Ac m(nT )e j [θ1 −θ 2 (nT )] (2.8-9) Esta señal es separada en su parte real e imaginaria, tal y como se muestra { } ) c1 (nT ) = ℜe s+ (nT )e − jφ (nT ) = s(nT )cos φ (nT ) + s (nT )sin φ (nT ) c1 (nT ) = Ac m(nT ) cos[θ1 − θ 2 (nT )] { (2.8-10) } ) c2 (nT ) = ℑm s+ (nT )e − jφ (nT ) = s (nT )cos φ (nT ) − s(nT )sin φ (nT ) c2 (nT ) = Ac m(nT ) sin[θ1 − θ 2 (nT )] Se dice que el lazo está enganchado cuando el error de fase θ1 − θ 2 se mantenga pequeño. Cuando el error es exactamente cero, la señal inicial demodulada aparecerá en el punto llamado m1(nT) del diagrama de bloques, de esta manera c1 (nT ) = m1 (nT ) y c2 (nT ) = 0 . Luego cuando se multiplica la parte real por la parte imaginaria se obtiene q(nT ) = c1 (nT )c2 (nT ) = Ac2 m 2 (nT ) cos[θ1 − θ 2 (nT )]sin[θ1 − θ 2 (nT )] q(nT ) = 0.5 Ac2 m 2 (nT )sin{2[θ1 − θ 2 (nT )]} (2.8-11) Se puede notar que cuando θ1 y θ2 difieren en menos de 90 grados, q (nT ) tiene el mismo signo del error de fase, el cual indica en cual dirección la fase local que determina θ2 se puede cambiar para reducir el error de fase hasta tender a cero. Cuando el lazo está 56 enganchado, el ángulo de aproximación sin x ≈ x puede ser utilizado para aproximar con exactitud a q (nT ) q (nT ) ≈ Ac2 m 2 (nT )[θ1 − θ 2 (nT )] para θ1 − θ 2 (nT ) << 1 (2.8-12) En el diagrama de la figura 2.19, los bloques siguientes son el lazo encargado de determinar la fase de la señal recibida, por medio de la siguiente ecuación φ ((n + 1)T ) = φ (nT ) + ωcT + α q(nT ) + σ (nT ) (2.8-13) donde σ (nT ) = β q(nT ) + σ ((n − 1)T ) (2.8-14) luego α y β son pequeñas constantes positivas, normalmente β < α / 50 . La idea básica detrás de estas ecuaciones es que en cada nuevo instante de muestreo el lazo de fase determina si ha sido incrementada la fase al compararlo con la fase de la portadora para cada una de las muestras ωcT , más un pequeño término de corrección α q (nT ) estrictamente proporcional al error de fase. También se puede notar que cuando q (nT ) = 0 para todo n, φ (nT ) es una función lineal φ (nT ) = ωc nT + φ (0) (2.8-15) la cual tiene una pendiente igual al valor de la frecuencia portadora nominal. ( El bloque acumulador β 1 − z −1 ) le permite obtener al lazo el valor de la fase de entrada θ1 (nT ) , la cual es una función lineal. La fase de entrada tiene esta forma lineal, 57 cuando existe una diferencia en frecuencia entre las frecuencias de la señal recibida y la portadora. Este bloque junto con los demás bloques introduce un polo de segundo orden en z = 1 en el lazo abierto el cual es equivalente a un adelanto doble en el dominio del tiempo. El lazo Costas es un sistema no lineal y variante en el tiempo debido a los términos sin ( ) y m 2 (nT ) presentes en q (nT ) . Debido a esto, el sistema no puede ser caracterizado por una función de transferencia. Sin embargo, cuando m(nT ) es un proceso estacionario y el lazo está enganchado, se puede aproximar con exactitud un sistema lineal e invariante en el tiempo usando la aproximación (2.8-12) y reemplazando m 2 (nT ) por cierto valor constante. Al hacer este reemplazo se justifica el hecho de que los lazos de filtrado actúen como filtros pasobajos en q (nT ) . Entonces sea { } k1 = Ac2 E m 2 (nT ) (2.8-16) y una aproximación de q (nT ) por q(nT ) ≈ k1[θ1 − θ 2 (nT )] (2.8-17) Con estas ecuaciones aproximadas se puede representar el lazo linealizado en la figura 2.20. La función de transferencia ahora se puede obtener, y es la siguiente ⎛ ⎞ α k1 (α + β )⎜⎜1 − z −1 ⎟⎟ Θ (z ) ⎝ α +β ⎠ H (z ) = 2 = Θ1 ( z ) 1 − [2 − k1 (α + β )]z −1 + (1 − k1α )z − 2 58 (2.8-18) La respuesta en frecuencia se puede obtener por medio de z = e jωT y tiene la forma de un filtro pasobajo muy estrecho para valores pequeños de α y β. La ganancia en lazo cerrado con frecuencia igual a cero es H (1) = 1 . Figura 2.20 Diagrama de bloques del Lazo Costas linealizado 59 2.9 Nota teórica laboratorio de modulación SSB1 Los tipos de modulación AM y DSBSC-AM no utilizan eficientemente el espectro de frecuencia. Al analizar el espectro se encuentra que aún hay redundancia ya que las dos bandas alrededor de la frecuencia de corte son simétricas. El objetivo es demostrar que una señal puede ser transmitida tan solo utilizando una de las dos bandas, ya sea la banda inferior o la banda superior, y por tanto utiliza tan solo la mitad del ancho de banda respecto a AM y DSBSC-AM. Este tipo de modulación se le conoce como modulación de banda lateral única (SSB, acrónimo en inglés para Single Sideband). Este método de modulación es utilizado extensamente en los sistemas de comunicaciones. 2.9.1 Moduladores SSB Un modulador SSB se muestra en la figura 2.21. Sea m(t) la señal de banda base que se desea transmitir con una frecuencia de corte W, la cual es menor a la frecuencia de la portadora ωc . La primera etapa de modelo genera una señal DSBSC-AM a(t ) = Ac m(t )cos ωct (2.9-1) a la cual se le aplica la transformada de Fourier A(ω ) = 0.5 Ac M (ω − ωc ) + 0.5 Ac M (ω + ωc ) (2.9-2) y está centrada alrededor de la frecuencia portadora ωc . 1 Tretter, S. A. “Communication System Design Using DSP Algorithms”. Primera Edición, Kluwer Academic / Plenum Publishers, New York, Estados Unidos, 2003. 60 Luego la señal DSBSC-AM se pasa a través de un filtro H (ω ) que elimina o selecciona una de las bandas laterales. La banda lateral superior se selecciona utilizando un filtro pasoalto ideal ⎧1 H sup (ω ) = ⎨ ⎩0 para ω > ωc cualquier otro (2.9-3) y la banda lateral inferior se selecciona utilizando un filtro pasobajo ideal ⎧1 H inf (ω ) = ⎨ ⎩0 para ω < ωc cualquier otro (2.9-4) Figura 2.21 Diagrama de bloques de la modulación SSB Al utilizar alguno de estos dos filtros se obtiene una señal SSB, la cual puede ser expresada en términos de la señal banda base m(t ) y su transformada Hilbert m̂(t ) , tal y como se muestra a continuación. La señal SSB tiene la siguiente transformada de Fourier S + (ω ) = 2S (ω )u (ω ) = 2 A(ω ) H (ω )u (ω ) = Ac M (ω − ωc )H (ω ) (2.9-5) y la transformada de la envolvente compleja es Sˆ (ω ) = S + (ω + ωc ) = Ac M (ω )H (ω + ωc ) 61 (2.9-6) para el caso de la banda lateral superior. Sustituyendo H sup (ω ) por H (ω ) en la ecuación (2.9-6), se puede notar que Sˆ (ω ) = Ac M (ω )u (ω ) = 0.5 Ac M (ω )(1 + sign ω ) Sˆ (ω ) = 0.5 Ac M (ω )[1 + j (− j sign ω )] = 0.5 Ac M (ω ) + j 0.5 Ac Mˆ (ω ) (2.9-7) Entonces la envolvente compleja es ~ s (t ) = 0.5 Ac [m(t ) + jmˆ (t )] (2.9-8) Por consiguiente la señal SSB puede expresarse como { } s (t ) = ℜe ~ s (t )e jω c t = 0.5 Ac m(t )cos ωct − 0.5 Ac mˆ (t )senωct (2.9-9) Similarmente para el caso de la banda lateral inferior, al seguir el mismo desarrollo se obtiene Sˆ (ω ) = Ac M (ω )u (− ω ) = 0.5 Ac M (ω )(1 − sign ω ) Sˆ (ω ) = 0.5 Ac M (ω )[1 − j (− j sign ω )] = 0.5 Ac M (ω ) − j 0.5 Ac Mˆ (ω ) (2.9-10) Por consiguiente, la envolvente compleja ~ s (t ) = 0.5 Ac [m(t ) − jmˆ (t )] (2.9-11) De esta manera la correspondiente señal SSB es { } s (t ) = ℜe ~ s (t )e jω c t = 0.5 Ac m(t )cos ωct + 0.5 Ac mˆ (t )senωct (2.9-12) A partir de las ecuaciones (2.9-9) y (2.9-12) se puede obtener la estructura del modulador SSB mostrado en la figura 2.22. 62 Figura 2.22 Modulador SSB utilizando la transformada de Hilbert 2.9.2 Demodulación coherente de señales SSB Para demodular señales SSB, existe una técnica conocida, la cual consiste en multiplicar la señal por una réplica de la señal portadora. Al multiplicar la ecuación (2.9-9) o (2.9-12) por 2 cos ωct se obtiene b(t ) = Ac m(t )cos 2 ωct m Ac m(t )sin ωct cos ωct b(t ) = 0.5 Ac m(t ) + 0.5 Ac m(t )cos 2ωct m 0.5 Ac mˆ (t )sin 2ωct (2.9-13) El primer término del lado derecho de la ecuación anterior es proporcional a la señal que desea transmitir. El segundo y tercer término tienen un espectro centrado en 2ωc y pueden ser removidos haciendo pasar la señal b(t ) a través un filtro pasobajo con una frecuencia de corte W. El efecto en el dominio de la frecuencia, al multiplicar por cos ωct en el dominio del tiempo, es mover el espectro S (ω ) hacia la derecha y hacia la izquierda 63 por ωc . De esta manera se trasladan las bandas laterales ± ωc alrededor de la frecuencia de m(t ) , con ello se forma M (ω ) con el término deseado y también traslada las bandas laterales ± 2ωc , las cuales son los términos removidos por el filtro pasobajo. Este demodulador posee el mismo diagrama de bloques de la figura 2.21, excepto que en lugar de la señal a transmitir m(t ) se pone la señal recibida s (t ) y el bloque H (ω ) por un filtro pasobajo. En la práctica, a la entrada de este sistema se coloca un filtro pasabanda para eliminar ruido que se adhiere a la señal modulada. Otra forma para demodular señales SSB está basado en la utilización de la transformada de Hilbert. El primer paso es tomar la transformada de Hilbert de la señal recibida s (t ) . Usando la ecuación (2.9-8) y (2.9-11), se obtiene s+ (t ) = s (t ) + jsˆ(t ) = ~ s (t )e jω c t = 0.5 Ac [ m(t ) ± jmˆ (t )]e jω c t (2.9-14) en donde el signo positivo es para el caso de la banda lateral superior y el negativo es para el caso de la banda lateral inferior. Ahora al multiplicar la expresión por e − jω c t se genera la envolvente compleja sˆ(t ) = s+ (t )e − jω c t = 0.5 Ac [ m(t ) ± jmˆ (t )] (2.9-15) En el dominio del tiempo esto significa que la transformada de (2.9-14) se traslada a una frecuencia más baja que la frecuencia de m(t ) . Por último, al tomar la parte real de la señal compleja se tiene que 64 { } 0.5 Ac m(t ) = ℜe s+ (t )e − jω c t = ℜe{[s(t ) + jsˆ(t )][cos ωct − jsenωct ]} 0.5 Ac m(t ) = s(t )cos ωct + sˆ(t )senωct (2.9-16) la cual es proporcional a la señal transmitida. Este demodulador usa la transformada de Hilbert pero no necesita un etapa de filtrado que elimine términos de la frecuencia portadora. El diagrama de bloques para este demodulador es el mismo que se muestra en la figura 2.22 cuando se cambia m(t ) por s (t ) , las amplitudes del seno y el coseno igual a 1, y el signo positivo se usa en el sumador de la salida. Estos dos tipos de demoduladores suponen que el receptor tiene perfecto conocimiento de la frecuencia y fase de la portadora. Desafortunadamente, esta información no se puede obtener como en el caso del lazo de Costas porque la señal SSB contiene una componente en cuadratura no deseada mˆ (t )senωct . Esta componente corresponde a una distorsión de fase. Un error de fase en el oscilador local da lugar a una distorsión de fase donde cada componente frecuencial de la señal m(t ) sufre un desfase constante a la salida del demodulador. Este desfase no suele ser un problema en el caso de señales de voz debido que el oído suele ser relativamente insensible a la distorsión de fase. En el caso de señales musicales o señales de video, la distorsión de fase es un error no tolerable. 65 2.9.3 Desplazamiento en frecuencia En sistemas de comunicaciones en la mayoría de las veces para no decir todas, el espectro de una señal pasabanda es desplazado de una frecuencia central a otra. Una razón para esto colocar el espectro de la señal en cierto canal de transmisión. Otra razón es para corregir las distorsiones en frecuencia causadas por los osciladores al estar mal calibrados. Es un hecho que la operación básica que se realiza en la modulación SSB es una forma de traslación en frecuencia. La idea de traslación en frecuencia descrita para SSB puede generalizarse de la siguiente forma. Sea s (t ) una señal pasabanda cuyo espectro está centrado en una portadora de frecuencia ω0 . El requerimiento es trasladar o desplazar en frecuencia el espectro hacia arriba de forma que la frecuencia de la portadora es cambiada de ω0 a otra superior ω1 = ω0 + ∆ω . Primero tenemos que s+ (t ) = s (t ) + jsˆ(t ) (2.9-17) S + (ω ) = 2S (ω ) u (ω ) (2.9-18) la transformada de Fourier es El siguiente paso es multiplicar (2.9-17) por e j∆ω t para obtener r+ (t ) = s+ (t )e j∆ω t = [s (t ) + jsˆ(t )][cos ∆ω t + jsen∆ω t ] y su transformada es 66 (2.9-19) R+ (ω ) = S + (ω − ∆ω ) (2.9-20) Al hacer lo anterior se desplaza el espectro original hacia la derecha por ∆ω y se mueve desde ω0 hasta la frecuencia ω1 . Al tomar la parte real de r+ (t ) se obtiene la señal transmitida r (t ) = s(t )cos ∆ωt − sˆ(t )sen∆ωt (2.9-21) La parte real de r+ (t ) también puede ser expresada como r (t ) = [r+ (t ) + r+ (t )] 2 (2.9-22) Entonces su transformada de Fourier es [ ] R(ω ) = R+ (ω ) + R+ (ω ) 2 R(ω ) = S (ω − ∆ω )u (ω − ∆ω ) + S (− ω − ∆ω )u (− ω − ∆ω ) (2.9-23) La figura 2.22 también es el diagrama de bloques para el desplazamiento en frecuencia: se cambia m(t ) por s (t ) , la frecuencia ωc se reemplaza por ∆ω , 0.5 Ac por 1, y el signo negativo se usa en el sumador del que se obtiene la salida. Esto porque el desplazamiento en frecuencia es funcionalmente lo mismo que un modulador de banda lateral superior nada más que con la apropiada frecuencia portadora. 67 2.10 Nota teórica laboratorio de modulación FM Modulación en Frecuencia (FM, acrónimo en inglés para Frequency Modulation) fue inventada y comercializada después de AM. Fue utilizada en un principio por la radiodifusión para crear canales radiofónicos. Su principal ventaja radica en que al sistema FM apenas le afectan las interferencias y descargas estáticas. El objetivo es estudiar la teoría básica de modulación y demodulación FM. 2.10.1 Descripción de la modulación FM1 En una señal se pueden variar tres propiedades: la amplitud, la frecuencia y la fase. El proceso de modulación consiste en variar algunos de estos parámetros en la señal portadora, de acuerdo a la señal que se desea modular. La modulación en frecuencia consiste en variar la frecuencia de la señal portadora. La modulación FM es inmune a las no linealidades. Las no linealidades en este caso generan ondas moduladas con portadoras múltiplos de la original. Esta característica hace a FM útil en aquellos sistemas de transmisión de alta potencia ya que el uso de amplificadores permite altos rendimientos. Una señal FM es generada utilizando la señal de banda base para cambiar la frecuencia instantánea de la señal portadora pero sin cambiar su amplitud. La frecuencia instantánea de una señal sinusoidal cosθ (t ) está definida por 1 Tretter, S. A. “Communication System Design Using DSP Algorithms”. Primera Edición, Kluwer Academic / Plenum Publishers, New York, Estados Unidos, 2003. 68 ω (t ) = d θ (t ) dt (2.10-1) Esta definición se justifica al observar que cuando θ (t ) = ωct , su derivada es ωc la cual es la frecuencia de cos ωct . La frecuencia instantánea de una señal FM con frecuencia portadora ωc está relacionada con la señal de banda base m(t ) por la ecuación ω (t ) = ωc + kω m(t ) (2.10-2) donde kω es una constante positiva conocida como sensibilidad frecuencial. Un oscilador al cual se le puede controlar su frecuencia por su entrada m(t ) , se le conoce como oscilador controlado por voltaje. Suponiendo que el valor de la fase de una señal FM es 0 en t = 0 , θ (t ) = ∫ ω (τ ) dτ = ωct + θ m (t ) t 0 (2.10-3) donde θ m (t ) = kω ∫ m(τ ) dτ t 0 (2.10-4) es la desviación de fase de la señal portadora causada por m(t ) . Por último la señal FM generada a partir de m(t ) es s (t ) = Ac cos[ωct + θ m (t )] (2.10-5) Un aproximación en tiempo discreto para una señal FM se puede obtener reemplazando la integral por una sumatoria en (2.10-3), de esta manera tenemos 69 n −1 θ (nT ) = ∑ ω (kT )T = ωc nT + θ m (nT ) (2.10-6) k =0 donde n −1 θ m (nT ) = kωT ∑ m(kT ) (2.10-7) k =0 La fase de la portadora se puede calcular a partir de la siguiente ecuación recursiva θ (nT ) = θ ((n − 1)T ) + ωcT + kωTm((n − 1)T ) (2.10-8) La señal muestreada FM resultante sería s (nT ) = Ac cosθ (nT ) 2.10.1.1 (2.10-9) Modulación FM de un tono simple Una expresión sencilla para la transformada de Fourier de una señal FM en términos de la transformada de señal de banda base parecida a la de AM, no existe. Sin embargo, en el caso especial cuando la señal de banda base es m(t ) = Am cos ωmt , se pueden obtener resultados muy interesantes. A este caso especial se le conoce como modulación FM de un tono simple. La señal FM que se obtiene para m(t ) es ⎞ ⎛ k A s (t ) = Ac cos⎜⎜ ωc + ω m sin ωmt ⎟⎟ ωm ⎠ ⎝ 70 (2.10-10) De la expresión anterior se define un parámetro conocido como índice de modulación de frecuencia y está dado por β= kω Am ωm = máxima desviación de frecuencia frecuencia de modulación (2.10-11) A continuación se muestra en la siguiente figura el efecto de modulación FM Figura 2.23 Modulación FM 2.10.1.2 Ancho de banda de una señal FM Dado que la portadora en FM es la suma de todas las componentes espectrales de la señal FM, dicha suma da como resultado una señal de amplitud constante. En otras palabras, la portadora en FM puede considerarse como la señal compleja total. Debido a 71 estas razones la cantidad de bandas laterales es infinita, por tanto es imposible obtener una expresión para el ancho de banda de una señal FM. El ancho de banda depende de la forma de la señal de banda base y la máxima desviación en frecuencia. Esta relación de desviación está dada por la ecuación (2.10-11). El ancho de banda de la señal modulada, bajo estas condiciones está dado por: BT = 2(∆f + f m ) Hz (2.10-12) En la ecuación anterior, ∆f es la máxima desviación en frecuencia y f m es la máxima frecuencia a la cual la señal de banda base tiene una componente. La expresión anterior se conoce como regla de Carson. Esta regla proporciona el ancho de banda de la señal modulada en frecuencia con razonable exactitud cuando el índice de modulación es mucho mayor a 1, pero falla cuando es cercano o menor a 1. 2.10.2 Demodulación FM: discriminador en frecuencia Los demoduladores de FM físicamente son circuitos dependientes de la frecuencia que producen un voltaje de salida que es directamente proporcional a la frecuencia instantánea en su entrada ( Vsalida = K ∆f , en donde K está en voltios por Hertz y es la función de transferencia para el demodulador, ∆f es la diferencia, entre la frecuencia de entrada y la frecuencia central del demodulador). Se usan varios circuitos para demodular las señales de FM. Los más comunes son el detector de pendiente, discriminador de Foster-Seeley, detector de relación, demodulador de PLL y detector en cuadratura. El 72 detector de pendiente, discriminador de Foster-Seeley y el detector de relación son todos formas de discriminadores de frecuencia de circuito sintonizado. Los discriminadores de frecuencia de circuito sintonizado se convierten de FM a AM y después demodulan la envolvente de AM con detectores de picos convencionales. La figura 2.24 muestra el diagrama de un discriminador muy sencillo. Figura 2.24 Diagrama de bloques elemental de un discriminador de frecuencia 2.10.2.1 Discriminador FM utilizando un detector de envolvente Este tipo de discriminador es el más sencillo. La figura 2.24 muestra el diagrama de bloques, en el cual se puede notar una primera etapa donde se debe implementar un filtro diferenciador ideal en lugar del filtro pasabanda y la segunda etapa es un detector de envolvente, bajo la suposición de que la entrada al diferenciador es una señal FM de amplitud constante. Ahora suponemos lo siguiente, cuando θ m (t ) es suficientemente pequeño y la banda limitada, entonces cosθ m (t ) y sin θ m (t ) son señales de banda limitada con frecuencias de corte menores ωc , se puede demostrar que s+ (t ) = s (t ) + jsˆ(t ) = Ac e j [ω c t +θ m (t )] Al calcular el ángulo, de la expresión anterior se obtiene 73 (2.10-13) ϕ (t ) = arctan[sˆ(t ) s(t )] = ωct + θ m (t ) (2.10-14) Al derivar la expresión anterior se obtiene d ϕ (t ) = dt s(t ) d d sˆ(t ) − sˆ(t ) s (t ) dt dt = ωc + kω m(t ) 2 2 s (t ) + sˆ (t ) (2.10-15) Del resultado anterior se puede notar que se trata de la frecuencia instantánea. 2.10.2.2 Discriminador FM utilizando la envolvente compleja La envolvente compleja de una señal FM es dada por ~ s (t ) = s+ (t )e − jω c t = sI (t ) + jsQ (t ) = Ac e jθ m (t ) (2.10-16) Al calcular el ángulo de la expresión anterior se obtiene ϕ~(t ) = arctan[sQ (t ) sI (t )] = θ m (t ) (2.10-17) Al derivar la expresión anterior se obtiene d ~ ϕ (t ) = dt sI (t ) d d sQ (t ) − sQ (t ) sI (t ) dt dt = kω m(t ) 2 2 sI (t ) + sQ (t ) El resultado anterior es proporcional a la señal banda base. La siguiente figura muestra como implementar este discriminador. 74 (2.10-18) Figura 2.25 Discriminador en tiempo discreto usando la envolvente compleja1 2.10.3 Demodulación FM usando un PLL Desde el desarrollo de los circuitos integrados lineales LSI, la demodulación FM puede lograrse muy fácilmente con un PLL. Aunque la operación de un PLL es bastante complicada, la operación de un demodulador PLL de FM, es probablemente, la más sencilla y fácil de entender. La figura 2.26 muestra el diagrama de bloques de un demodulador FM. Las líneas sólidas y las líneas punteadas representan la parte real y la parte imaginaria de una señal. 1 Tretter, S. A. “Communication System Design Using DSP Algorithms”. Primera Edición, Kluwer Academic / Plenum Publishers, New York, Estados Unidos, 2003. 75 Primero se toma la señal FM y se le aplica la transformada de Hilbert para obtener la envolvente compleja que contiene la información transmitida, luego se pasa a través de un detector de fase el cual consigue calcular la diferencia de fase entre la señal FM y la salida del VCO. Luego esta señal se pasa por un filtro que permite obtener la frecuencia de la señal portadora, a esto se le conoce como enganche de frecuencia. Figura 2.26 Demodulador FM con PLL en tiempo discreto1 Un demodulador de frecuencia de PLL no requiere de circuitos sintonizados y automáticamente compensa los cambios en la frecuencia de la portadora debido a la estabilidad en el oscilador de transmisión. 1 Tretter, S. A. “Communication System Design Using DSP Algorithms”. Primera Edición, Kluwer Academic / Plenum Publishers, New York, Estados Unidos, 2003. 76 Después que el enganche de frecuencia ha ocurrido, el VCO encontraría los cambios en la frecuencia en la señal de entrada, manteniendo un error de fase en la entrada del comparador de fase. Por tanto, si la entrada es una señal FM y la frecuencia natural VCO es igual a la frecuencia central de la señal de entrada, el voltaje de corrección se produce a la salida del comparador de fase y alimenta de nuevo a la entrada de VCO, siendo proporcional a la desviación de frecuencia, por tanto es la señal demodulada. Este sistema es no lineal debido a las características del detector de fase. Pero si se ignoran las discontinuidades de la función arcotangente la cual se encarga de obtener la diferencia en fase, este sistema se puede representar como un sistema lineal tal y como se muestra en la siguiente figura. Figura 2.27 Modelo linearizado del PLL 77 2.11 Nota teórica laboratorio de modulación PAM1 En la transmisión digital de datos existen varios métodos para lograr transferir datos digitales por el medio en que se desea, uno de ellos es la modulación por amplitud de pulsos (PAM, acrónimo en inglés para Pulse Amplitud Modulation). El objetivo es dar a conocer este tipo de modulación de gran importancia para el procesamiento digital de señales. 2.11.1 Descripción de la modulación PAM En la modulación PAM, la información es transmitida en símbolos de valores discretos, uniformemente espaciados por intervalos de tiempo. La señal portadora es un tren periódico de pulsos rectangulares separados a la misma distancia uno de otro. La siguiente figura muestra una representación de este tipo de modulación Figura 2.28 Modulación PAM 1 Tretter, S. A. “Communication System Design Using DSP Algorithms”. Primera Edición, Kluwer Academic / Plenum Publishers, New York, Estados Unidos, 2003. 78 Figura 2.29 Diagrama de bloques de un sistema de comunicación PAM El diagrama de bloques de un sistema PAM se muestra en la figura 2.29. El transmisor de entrada d i es una secuencia de datos binarios con una velocidad de transmisión de Rd bits/segundo . Estos bits de entrada son puestos dentro de palabras de tamaño J-bit por medio de un convertidor de serie a paralelo y se les asigna un valor de la 79 secuencia de símbolos an , los cuales son seleccionados de un alfabeto de M = 2 J niveles de voltaje. Estos símbolos son generados por una frecuencia f s = Rd J símbolos/segundo y el intervalo entre un símbolo y otro está dado por T = 1 f s . Los niveles están espaciados por 2d con M posibles valores l i = d (2i − 1) para i = − M M + 1, ...., 0, ...., 2 2 (2.11-1) De lo anterior, se puede notar que el nivel mínimo es − (M − 1)d y el nivel máximo es (M − 1)d . El tren de pulsos está representado por un tren de impulsos de Dirac s* (t ) = ∞ ∑ a δ (t − kT ) k = −∞ k (2.11-2) El bloque Modulador de Impulso genera este tren de impulsos. Luego este se pasa por un bloque de filtrado con respuesta al impulso gT (t ) el cual limita la banda de la señal al ancho de banda del canal. El resultado de este filtrado es s (t ) = ∞ ∑ a g (t − kT ) k k = −∞ T (2.11-3) El canal se modela como un filtro lineal e invariante en el tiempo con una respuesta en frecuencia C (ω ) , seguido de la suma de la componente de ruido introducida por el canal. En el receptor, la salida del canal r(t) primero se pasa por un filtro que se encarga de eliminar el ruido que no pertenece a la señal. 80 La combinación del filtro transmisor, el canal y el filtro receptor, se le conoce como filtro conformador, y da como resultado la siguiente respuesta en frecuencia G (ω ) = GT (ω )C (ω )GR (ω ) (2.11-4) y su respuesta al impulso es g (t ) = gT (t ) ∗ c(t ) ∗ g R (t ) = F −1{G (ω )} (2.11-5) Luego a la salida del filtro receptor se obtiene x(t ) = ∞ ∑ a g (t − kT ) + υ (t ) ∗ g (t ) k = −∞ k T R (2.11-6) Ahora se supone que el ruido es cero y la respuesta al impulso combinada es cero en los instantes nT excepto para n = 0 donde esta es 1, entonces tenemos ⎧1 para n = 0 g (nT ) = δ n , 0 = ⎨ ⎩0 cualquier otro valor (2.11-7) Una respuesta al impulso con esta propiedad se dice que no tiene interferencia entre símbolos (ISI, acrónimo en inglés para InterSymbol Interference). Con estas suposiciones, se puede notar a partir de (2.11-6) que las muestras tomadas cada nT tiempo de la salida del filtro receptor se reduce a x(nT ) = an , esta expresión es exactamente la secuencia de símbolos transmitida. Es usual que cuando se diseñan los filtros de transmisión y recepción, estos combinen sus efectos de manera que se forme un único filtro sin interferencia entre símbolos bajo la suposición de que la respuesta en frecuencia del canal sea constante en todo el ancho de banda de la señal, así no se introduce distorsión. 81 En algunas circunstancias, la respuesta en frecuencia del canal no se conoce con exactitud y puede que sea lento. El ecualizador adaptivo es un filtro que automáticamente compensa las características no lineales del canal. Además este se encarga de corregir ciertas muestras, dándole el valor ideal que le corresponde. La salida del ecualizador es cuantificada a la tasa de velocidad de muestreo y se le otorga a cada muestra el valor que le corresponde. Luego la salida del cuantificador se convierte en una palabra binaria de J-bit y transformada de nuevo en una salida de secuencia serial. 2.11.2 Criterio de Nyquist para no tener ISI A partir de la ecuación (2.11-7) se establece el criterio para no tener ISI en términos de la respuesta al impulso g (nT ) del filtro conformador de la señal de banda base y está dada por g (nT ) = 1 2π ∫ ∞ −∞ G (ω )e jωnT dω (2.11-8) Sea ωs = 2πf s = 2π T . La integral de (2.11-8) puede ser calculada si se fracciona el eje ω en una serie de intervalos muy pequeños. ω ⎛ ωs ⎞ − kωs , s − kωs ⎟ para k = −∞, ....., ∞ ⎜− 2 ⎝ 2 ⎠ 82 Y tomando la sumatoria de estos intervalos, da como resultado la siguiente expresión ωs ∞ 1 g (nT ) = ∑ ω k = −∞ s − kω s 2 − ∫ ω s 2 − kω s ωs ∞ 1 1 G (ω )e jωnT dω = ∑ T k = −∞ ω s 2 − ∫ω 1 G (ω − kωs )e j (ω − kω s )nT dω (2.11-9) T s 2 Se puede notar que e − jknω s T = e − kn 2π = 1 y al tomar la suma dentro de la integral nos da ωs g (nT ) = 2 1 ωs − ∫ω G (ω )e * jωnT dω (2.11-10) s 2 donde G * (ω ) = 1 ∞ ∑ G(ω − kωs ) T k = −∞ (2.11-11) La función G*(w) se le conoce en la teoría del procesamiento digital de señales como solapamiento o envolvente del espectro. El criterio (2.11-7) para no tener ISI se satisface si y solo si G*(w)=1. 2.11.3 Diagramas de ojo1 Una herramienta práctica para el estudio de la calidad de un sistema PAM es el Diagrama de Ojo, que permite observar el efecto de distorsión ISI y el ruido. Un diagrama 1 Universidad de Valladolid. Marcos Martín Fernández. http://www.lpi.tel.uva.es/lpi/dld/tts/tema6.pdf 83 de ojo se forma al aplicar la señal recibida y filtrada antes del muestreador a las placas de deflexión vertical de un osciloscopio y una señal con forma de dientes de sierra a la tasa de señalización en sincronismo con la señal recibida a las placas de deflexión horizontal. De esta manera todos los símbolos se superponen en la pantalla del osciloscopio en un único período de símbolo, la imagen que se forma por su similitud con el ojo humano se le denomina diagrama de ojo. La figura 2.30 muestra el ejemplo de una señal binaria recibida (los primeros 8 bits) y filtrada para un canal que introduce ruido y distorsión. En la figura 2.31 se puede ver un diagrama de ojo (para 160 bits). El analizar este diagrama va a permitir determinar ciertas características de la señal como el mejor instante de muestreo y la sensibilidad frente a errores de temporización. Figura 2.30 Señal binaria antes del muestreador 84 Figura 2.31 Diagrama de ojos para la señal de la figura 2.30 Un diagrama de ojos va a proporcionar mucha información práctica que caracteriza a un sistema PAM. Los parámetros asociados más interesantes de un diagrama de ojos se mencionan a continuación: El ancho de la apertura del ojo indica el intervalo de tiempo durante el que se puede muestrear sin error. Por tanto el mejor instante de muestreo corresponde al momento en que la apertura del ojo es mayor. La pendiente de la zona interior del ojo determina la sensibilidad frente a errores de temporización. 85 El margen del ruido para un símbolo en el instante de muestreo esta definido por la altura del ojo. Si el efecto conjunto del ruido y la ISI es muy grande, la traza superior e inferior del ojo se cruzan, dando como resultado que el ojo se cierre. Cuando esto ocurre es imposible evitar errores, por lo que se dice que el sistema no es inmune frente a estos fenómenos de distorsión. 2.11.4 Recuperación de la frecuencia del tren de pulsos En típicos sistemas PAM, el receptor es razonablemente bueno, pero no perfecto, al reconocer la frecuencia del transmisor. Por esta razón debe establecer su propia frecuencia y estar en fase con la señal del receptor para mantener la frecuencia de muestreo. A continuación se presenta un método para recuperar la frecuencia de muestreo de la señal transmitida, particularmente para sistemas de banda limitada. El diagrama de bloques del recuperador de frecuencia se muestra en la figura 2.32. La salida x(t ) del filtro receptor primero se pasa a través de un prefiltro con una respuesta en frecuencia B (ω ) . El prefiltro usualmente es un filtro pasabanda centrado en f s 2 , a la mitad del valor de la frecuencia del tren de pulsos. La combinación del filtro conformador y el prefiltro, da como resultado la siguiente respuesta en frecuencia y respuesta al impulso G1 (ω ) = G (ω )B (ω ) y 86 g1 (t ) = g (t ) ∗ b(t ) (2.11-12) De esta manera la salida del prefiltro es q(t ) = ∞ ∑ a g (t − kT ) k = −∞ k (2.11-13) 1 Luego la salida del prefiltro se pasa a través de un potenciador cuya salida es p (t ) = q 2 (t ) = ∞ ∞ ∑ ∑ a a g (t − kT )g (t − mT ) k = −∞ m = −∞ k m 1 1 (2.11-14) La salida del potenciador se pasa a través de un filtro pasabanda de banda estrecha H (ω ) , para el que su frecuencia central es f s . La salida z (t ) tiene la forma de una función sinusoidal con la frecuencia original con una pequeña variación en amplitud y fase. Luego esta señal se pasa a través de un PLL para obtener una señal estable con frecuencia f s . Figura 2.32 Diagrama de bloques del sistema de recuperación de frecuencia 87 2.12 Nota teórica laboratorio de modulación QAM1 La Modulación de Amplitud en Cuadratura (QAM, acrónimo en inglés para Quadrature Amplitude Modulation) es una modulación digital en la que el mensaje está contenido tanto en la amplitud como en la fase de la señal transmitida. La importancia de este sistema de modulación se debe a la gran cantidad de aplicaciones asociadas a ella. Es empleada en multitud de sistemas de transmisión de televisión, microondas y satélite. También es empleada por módems para velocidades superiores a los 2400 bps (por ejemplo V.22 bis y V.32). Es la base de modulación TCM (acrónimo en inglés para trellis coded modulation), que consigue velocidades de transmisión muy elevadas combinando la modulación con la codificación de canal. 2.12.1 Transmisor QAM básico El diagrama de bloques de un transmisor QAM básico se muestra en la figura 2.33. Los datos d i serie de entrada, generados a velocidad Ri bps se agrupan mediante un convertidor serie a paralelo, formando palabras de J bits que pasarán al módulo de mapeo de estas palabras. Este módulo se encarga de seleccionar un símbolo de entre los M = 2 J posibles símbolos, ubicados sobre un espacio bidimensional. A la salida, los símbolos se producen por tanto a una velocidad de f s = Rd J símbolos por segundo o baudios. 1 Tretter, S. A. “Communication System Design Using DSP Algorithms”. Primera Edición, Kluwer Academic / Plenum Publishers, New York, Estados Unidos, 2003. 88 Figura 2.33 Diagrama de bloques de un transmisor QAM básico Los símbolos a transmitir son números complejos que representaremos como ck = ak + jbk . Así, el alfabeto lo forman el conjunto de números complejos que podremos transmitir. Este alfabeto se puede representar en el plano complejo, formando la constelación de la modulación. En la siguiente gráfica se presentan diferentes constelaciones posibles 89 Figura 2.34 Constelaciones QAM A continuación, los símbolos se introducen en los moduladores de impulsos, uno para cada componente, obteniendo las señales: a* (t ) = ∞ ∑ a δ (t − kT ) k k = −∞ (2.12-1) y b* (t ) = ∞ ∑ b δ (t − kT ) k = −∞ k (2.12-2) Estas dos señales se pasan a través de los filtros de transmisión a(t ) = ∞ ∑ a g (t − kT ) k = −∞ k y 90 T (2.12-3) b(t ) = ∞ ∑ b g (t − kT ) k = −∞ k (2.12-4) T La función gT (t ) corresponde al filtro de transmisión y es de tipo pasobajo. En una implementación discreta, los filtros actúan como filtros interpoladores, produciendo L muestras por cada símbolo de entrada, de forma que la frecuencia de trabajo de los filtros será de Lfs. La señal QAM se obtiene modulando en DSBSC-AM estas señales s (t ) = a(t )cos ωct − b(t )senωct (2.12-5) Así, a (t ) es la componente en fase de la señal QAM y b(t ) la componente en cuadratura. El equivalente pasobajo de la señal QAM, tomando como frecuencia de referencia fc será ~ s (t ) = a(t ) + jb(t ) = ∞ ∞ ∑ ak gT (t − kT ) + j ∑ bk gT (t − kT ) k = −∞ ~ s (t ) = ∞ ∑ (a k = −∞ k k = −∞ + jbk )gT (t − kT ) = ∞ ∑ c g (t − kT ) k = −∞ k (2.12-6) T La señal analítica es ⎡ ∞ ⎤ s+ (t ) = ⎢ ∑ ck gT (t − kT )⎥ e jω c t ⎣k = −∞ ⎦ (2.12-7) En donde la señal QAM transmitida se puede expresar como s (t ) = ℜe{s+ (t )} (2.12-8) Por tanto, el modulador QAM puede ser representado de forma esquemática, por el siguiente diagrama de bloques mostrado en la figura 2.35. 91 Figura 2.35 Representación de un modulador QAM en términos de señales complejas Se puede observar que, en el esquema de modulación propuesto se obtiene primero la señal pasobajo que se modula más tarde en DSBSC-AM. 2.12.2 Modulador QAM utilizando filtros conformadores pasabandas Otra alternativa para la implementación del transmisor QAM puede conseguirse modificando la ecuación (2.12-7) de la siguiente manera ( ) ∞ ⎡ ∞ ⎤ jω c t s+ (t ) = ⎢ ∑ ck gT (t − kT )⎥ e = ∑ ck e jωc kT gT (t − kT )e jω c (t − kT ) k = −∞ ⎣k = −∞ ⎦ (2.12-9) donde gT (t ) es la respuesta al impulso del filtro conformador. Ahora sea h(t ) = gT (t )e jω c t = hI (t ) + jhQ (t ) (2.12-10) donde hI (t ) = gT (t ) cos ωc t y hQ (t ) = gT (t )senωc t (2.12-11) Este filtro es un filtro pasabanda con respuesta en frecuencia H (ω ) = GT (ω − ωc ) . También, sea ck′ = ck e jω c kT = ak′ + jbk′ 92 (2.12-12) donde { } (2.12-13) { } (2.12-14) ak′ = ℜe ck e jω c kT = ak cos ωc kT − bk senωc kT y bk′ = ℑm ck e jω c kT = ak senωc kT + bk cos ωc kT Sustituyendo estas definiciones en la ecuación (2.12-9), da como resultado s+ (t ) = ∞ ∑ c′ h(t − kT ) k = −∞ (2.12-15) k Luego s (t ) = ℜe{s+ (t )} = ∞ ∑ a′ h (t − kT ) − b′ h (t − kT ) k = −∞ k I k Q (2.12-16) Un diagrama de bloques para el modulador en términos de las señales complejas se muestra en la figura 2.36. Y el diagrama de bloques que representa a la ecuación (2.12-16), se muestra en la figura 2.37. Figura 2.36 Modulador QAM utilizando un filtro conformador pasabanda 93 Figura 2.37 Diagrama de bloques expandido del nuevo modulador QAM En este último esquema, tanto los símbolos como los filtros son pasabanda, a diferencia del esquema inicial en el que las señales se conformaban en banda base, y la traslación espectral se produce en la última etapa. Los filtros conformadores de pulsos hI (t ) y hQ (t ) son también interpoladores igual que en el esquema anterior. Estos producen L muestras por cada símbolo. Si comparamos este esquema de modulador QAM con el esquema inicial, éste hace L multiplicaciones complejas menos por período de símbolo que el anterior, ya que el modulador de producto, trabaja con la señal a ritmo de símbolo, mientras que en el caso anterior, debía de realizar la multiplicación a razón de L por cada símbolo. 94 CAPÍTULO 3: Laboratorios En este capítulo se describen las prácticas de cada uno de los temas desarrollados en el capítulo anterior. Cada práctica consta de dos partes: • Simulación, utilizando MATLAB y SIMULINK. • Cuestionario de preguntas específicas. La parte de simulación es necesaria para repasar los conocimientos adquiridos durante el curso de procesamiento digital de señales. Asimismo, el estudiante será capaz de aplicar estos conocimientos en la solución de los ejercicios propuestos. Después el estudiante deberá analizar cada uno de los resultados obtenidos y obtener sus propias conclusiones. Por último se presenta un cuestionario para reforzar los conceptos que se presentan en el desarrollo del laboratorio. 95 3.1 Laboratorio de filtros digitales Los filtros ideales definidos como ⎧constante H (ω ) = ⎨ ⎩0 para ω < ωo (banda de paso) para ω > ωo (banda de rechazo) no son físicamente realizables ya que no son causales, sin embargo es posible diseñar filtros causales que pueden aproximarse a los ideales con tanta precisión como sea necesaria. Estos filtros causales presentarán rizado tanto en la banda de paso como en la banda de rechazo, por lo general .Por otro lado, la transición de frecuencia entre ambas bandas no se realizará de forma abrupta. La figura muestra las características indicadas Figura 3.1 Respuesta en frecuencia de un filtro pasobajo 96 En MATLAB existen varias funciones que ayudan al diseño de un filtro indicando sus características. Para el diseño de filtros del tipo IIR o FIR se utilizan frecuentemente las funciones que se muestran a continuación: Tabla 3.1 Funciones más comunes para el diseño de filtros digitales en MATLAB Filtro Digital Tipo Función en MATLAB [b,a] = besself(n,Wn,options) Bessel (solo análogo) [z,p,k] = besself(n,Wn,options) [A,B,C,D] = besself(n,Wn,options) [b,a] = butter(n,Wn,options) Butterworth [z,p,k] = butter(n,Wn,options) [A,B,C,D] = butter(n,Wn,options) [b,a] = cheby1(n,Rp,Wn,options) IIR Chebyshev Tipo I [z,p,k] = cheby1(n,Rp,Wn,options) [A,B,C,D] = cheby1(n,Rp,Wn,options) [b,a] = cheby2(n,Rs,Wn,options) Chebyshev Tipo II [z,p,k] = cheby2(n,Rs,Wn,options) [A,B,C,D] = cheby2(n,Rs,Wn,options) [b,a] = ellip(n,Rp,Rs,Wn,options) Elíptico [z,p,k] = ellip(n,Rp,Rs,Wn,options) [A,B,C,D] = ellip(n,Rp,Rs,Wn,options) FIR Ventana b = fir1(n,Wn,'ftype',window) b = fir2(n,f,m,npt,window) Para conocer bien el uso de estas funciones se debe consultar la herramienta de ayuda de MATLAB. 97 3.1.1 Filtros digitales FIR Resuelva los siguientes ejercicios: 1. Diseñe un filtro pasabanda de respuesta finita al impulso (FIR) de orden 8, suponiendo una frecuencia de muestreo de 8 kHz. Las frecuencias de paso están situadas en 1200 y 2000 Hz. Utilice la función “fir1”. 2. Obtenga la respuesta en frecuencia del filtro anterior pero para un orden de 16, 32, 64 y compare con el resultado anterior. Grafique las respuestas en frecuencia en una misma gráfica y comente sus resultados. 3. Considere una señal de entrada formada por la suma de tres señales sinusoidales de frecuencia 720, 1440, 3000 Hz y amplitud A1 = 7 , A2 = 3 y A3 = 15 respectivamente. Grafique la salida del filtro y comente sus resultados. 4. Repita los puntos (1), (2) y (3) utilizando una función ventana de Kaiser. 5. Repita los puntos (1), (2) y (3) utilizando una función ventana de Barlett. 3.1.2 Filtros digitales IIR Resuelva cada paso del siguiente procedimiento: 1. Diseñe un filtro digital IIR basado en el prototipo de un filtro elíptico pasobajo con frecuencia de corte en 300 Hz, una atenuación máxima en la banda de paso de 0.5 dB y una atenuación mínima en la banda de rechazo de 80 dB, suponiendo que la señal de entrada será muestreada a una 98 frecuencia de 8000Hz. En MATLAB utilice la función “ellip” para implementar el filtro. 2. Grafique la respuesta en frecuencia del filtro anterior utilizando la función “freqz” (ver ayuda de MATLAB). 3. Considere que la señal de entrada está formada por la suma de dos señales sinusoidales de frecuencia 180 y 720 Hz respectivamente. Usando la función “filter”, grafique la salida del filtro y determine que sucede. 4. Estudiar la dependencia del filtro de los parámetros de orden, atenuación mínima y máxima, pero manteniendo la frecuencia de corte y modificando alguno de los parámetros anteriores. Utilice al menos 3 valores diferentes para cada uno y grafique los resultados. 5. Diseñe un filtro digital pasabanda Chebyshev Tipo I de orden 6 con frecuencia de paso de 300 y 500 Hz, suponiendo que la señal de entrada será muestreada a una frecuencia de 8000 Hz. Grafique la respuesta en frecuencia del filtro. 6. Considere una señal de entrada formada por la suma de tres señales sinusoidales de frecuencia 120, 400, 680 Hz respectivamente. Grafique la salida del filtro y explique que sucede. 7. Diseñe un filtro digital rechaza banda de orden 6 con frecuencias de rechazo entre 300 y 500 Hz, suponiendo que la señal de entrada será muestreada a una frecuencia de 8000 Hz. Grafique la respuesta en frecuencia del filtro. 99 8. Repita el punto 6. 9. Diseñe un filtro pasabanda de respuesta infinita al impulso (IIR), basado en el prototipo de un filtro elíptico analógico pasobajo. Use una frecuencia de muestreo de 8 kHz. La banda lateral inferior del filtro debe estar entre 0 hasta 400 Hz, la banda central del filtro pasabanda debe estar entre 1000 hasta 2500 Hz y la banda lateral superior del filtro debe ser de 3500 hasta 4000 Hz. La atenuación máxima en la banda de paso del filtro no debe ser mayor que 0.3 dB y la atenuación mínima en la banda de rechazo de al menos 40 dB. Utilice las funciones de MATLAB para la conversión de filtros. 3.1.3 Filtrado en SIMULINK 1. Considere la señal del punto (3) de la sección 3.1.1. Se desea filtrar esa señal y se quiere dejar pasar solo la señal con frecuencia de 1440 Hz. Utilice el bloque llamado “Sine Wave” de la librería “Sources” en SIMULINK para generar cada una de las señales que componen la señal principal, luego utilice un bloque de punto de suma “Sum” y una de estas señales para formar una señal con tres componentes en frecuencia. Luego utilice el bloque “Zero-Order Hold” para muestrear la señal debe configurarlo para una frecuencia de muestreo de 8 KHz. 2. Ahora utilice el bloque “Digital Filter Design” de la librería “Filtering / Filter Designs” y con este bloque genere con la ayuda de la herramienta “FDATool” 100 un filtro FIR de orden 64 de ventana Hamming con una banda de paso entre 1200 Hz y 2000 Hz. Luego coloque en la entrada de este filtro la señal muestreada y coloque un “Scope” para poder ver la salida del filtro y compruebe que se han suprimido las componentes de 720 Hz y 3000 Hz. 3. Nuevamente utilizando el bloque de filtros digitales genere el filtro del punto (5) de la sección 3.1.2. Implemente la señal del punto (6) de la sección 3.1.2. Utilice el filtro que hizo y pase la señal a través de este y explique que sucede. 4. Repita el punto anterior pero para el filtro del punto (7) de la sección 3.1.2. 3.1.3 Cuestionario 1. ¿Cómo se define un filtro IIR? ¿Cómo se define un filtro FIR? Mencione tres diferencias entre estos dos tipos de filtros. 2. ¿Qué es la transformación bilineal y para qué se utiliza? 3. Investigue si existen otros métodos de transformación para pasar de un filtro analógico a uno digital. 101 3.2 Laboratorio de FFT El algoritmo de la FFT es una manera eficiente de calcular la DFT. Una primera aproximación al cálculo de la DFT requeriría la suma compleja de N multiplicaciones complejas para cada una de las salidas. En total, N 2 multiplicaciones complejas y N 2 sumas complejas para realizar una DFT de N puntos. Lo que consigue el algoritmo FFT es simplificar enormemente el cálculo de la DFT introduciendo “atajos” matemáticos para reducir drásticamente el número de operaciones. En MATLAB se tienen las siguientes funciones para estimar la FFT de una secuencia de entrada. Tabla 3.2 Funciones utilizadas en MATLAB para el cálculo de la FFT. Función en MATLAB Descripción Obtiene la FFT del vector x. “X” es un vector de números complejos ordenados desde k = 0, 1,…, N-1. Se recomienda que Y = fft(x) la longitud del vector x sea una potencia de 2. Lo que no se Y = fft(x,N) recomienda es que la longitud de x sea un número primo. Otra opción de la FFT es especificar el número de puntos con el que se quiere hacer la FFT. X= ifft(Y,N) Obtiene la FFT inversa del vector x. También se puede X= ifft(Y,N) especificar el número de puntos N con el que se quiere hacer la 102 IFFT. Reordena el vector Y en orden creciente de frecuencia. Si “Y” Y = fftshift(Y) es el vector resultante de hacer una FFT, utilizando esta función reordenamos los puntos en función de la frecuencia. 3.2.1 Cálculo de la FFT Para probar y extender los conocimientos en la FFT, lleve a cabo las siguientes tareas 1. Sea la secuencia x[n] = cos(0.25πn ) + cos(0.5πn ) + cos(0.52πn ) . Calcular la DFT utilizando la función de MATLAB fft(x, N). Sea L la longitud de la secuencia x[n] de 256 muestras. Probar con diferentes valores de número de muestras N, tales como 16, 32, 64, 128, 256, 512, 1024. Indique a partir de que valor de N son distinguibles las tres frecuencias de la señal de entrada. 2. Describir lo que sucede en el espectro de frecuencia, si una secuencia de entrada de L = 100 muestras de x[n] se rellena con ceros hasta N = 200. Comente sus resultados. 3. Calcule la inversa de la FFT obtenida a partir de la señal rellenada con ceros, utilizando la función de MATLAB ifft(X) para recuperar la señal en el dominio del tiempo. 103 4. Usando la FFT, se desea estudiar las componentes en frecuencia de una señal conformada por la suma de las siguientes señales x1 (t ) = 0.0472 cos(2π (200)t + 1.5077 ) x2 (t ) = 0.1362 cos(2π (400)t + 1.8769) x3 (t ) = 0.4884 cos(2π (500)t − 0.1852) x4 (t ) = 0.2942 cos(2π (1600)t − 1.4488) x5 (t ) = 0.1223 cos(2π (1700)t ) De esta manera para la señal mencionada se debe determinar 5. • ¿Cuál es su frecuencia fundamental? • ¿Qué frecuencia de muestreo debe usarse? • Valor adecuado de N para obtener suficiente precisión de frecuencias. • Grafique la magnitud y la fase de la señal en el dominio de la frecuencia. Calcule la inversa de la FFT obtenida a partir de la señal del punto (4) utilizando la función de MATLAB ifft(X) para recuperar la señal en el dominio del tiempo. 3.2.2 Analizador de espectro de frecuencia en SIMULINK Un analizador de espectro es un sistema que permite obtener las frecuencias que están presentes en una señal discreta. SIMULINK tiene un bloque para analizar el espectro de una señal, este bloque se llama “Spectrum Scope”. Este bloque recibe a su entrada una señal discreta y devuelve como resultado una gráfica donde se muestra el espectro en frecuencia de la señal de entrada. 104 1. Genere una señal de entrada compuesta de las siguientes señales x1[n] = 12sen(2π (1500 )n ) x2 [n] = 1.25 cos(2π (1200)n) + 3.75 cos(2π (175)n) + 2.15 cos(2π (2325)n) Y obtenga el espectro en frecuencia de esta señal utilizando el bloque mencionado anteriormente. 2. Implemente un filtro FIR pasobajo utilizando una ventana Hamming, con una frecuencia de corte de 1000 Hz de orden 36. 3. Implemente un filtro FIR pasabanda utilizando una ventana Kaiser, con una banda de paso entre 1200 y 2000 Hz de orden 36. 4. Implemente un filtro FIR pasoalto utilizando una ventana Hamming, con una frecuencia de corte de 2000 Hz de orden 36. 5. Para cada uno de los filtros coloque a la entrada la señal compuesta y obtenga el espectro en frecuencia para la salida de cada filtro. 3.2.3 Cuestionario 1. ¿Explique en que consiste los dos algoritmos básicos para la FFT, diezmado en el tiempo y diezmado en frecuencia? 2. Investigue en que consisten los fenómenos en frecuencia conocidos como “aliasing” y “leakage”. 105 3.3 Laboratorio de modulación AM Entre los primeros moduladores empleados se encuentra la modulación de amplitud. La necesidad más importante para modular señales es el desplazamiento de los componentes en frecuencia de una señal para poder transmitirla por un canal de comunicación donde se transmiten otras señales. La siguiente figura presenta el principio básico de la modulación AM Figura 3.3 Diagrama del principio básico de modulación AM MATLAB tiene varias funciones para modular y demodular, estas funciones se muestran en la siguiente tabla. Tabla 3.3 Funciones de MATLAB para modulación y demodulación AM Función en MATLAB Descripción Esta función modula una señal de entrada x y = modulate(x,fc,fs,'method') con una frecuencia portadora fc y una [y,t] = modulate(x,fc,fs) frecuencia de muestreo f s , “am” se usa en 106 lugar de 'method'. También se puede obtener el vector de tiempo interno que utiliza la función “modulate” para hacer los cálculos. La función “demod” demodula la señal modulada obtenida por la función “modulate” para obtener la señal original. Demodula la x = demod(y,fc,fs,'method') señal con una frecuencia portadora f c y una frecuencia de muestreo f s , “am” se usa en lugar de 'method'. 3.3.1 Modulación AM 1. Utilice las funciones mostradas en la tabla 3.3 para la modulación y demodulación de una señal coseno, conocida para este tipo de modulación como tono de prueba. Las funciones de la tabla 3.3 utilizan un índice de modulación de m = 1 . La frecuencia de la portadora es 10 veces la frecuencia de la señal a modular con una amplitud igual a 1, en este caso la señal a modular está dada por tono = 5 cos(2π (10 )t ) 2. Obtenga las gráficas de la señal a modular, la señal modulada, la señal demodulada, así como el espectro en magnitud y el espectro de fase en frecuencia de las tres señales. 107 3. Ahora desarrolle un código en MATLAB para implementar la función “modulate”. Varíe la amplitud de la señal a modular y la señal portadora, de tal modo que se obtenga un índice de modulación m < 1 , otro índice m = 1 y por último m > 1 . 4. Compare la señal inicial obtenida con la señal modulada para los tres casos. Comente y explique que ocurre en cada uno. 5. En la mayoría de los casos, cuando se modula una señal el canal de transmisión introduce a la señal modulada otra señal pequeña pero que sin duda distorsiona la señal original, esta señal se le conoce popularmente como ruido en el canal. Repita los puntos del (1) al (2) pero esta vez introduciendo ruido al canal de transmisión. Utilice la herramienta de ayuda de MATLAB para generar una señal de valores aleatorios de cierta amplitud la cual será su ruido. Comente y compare sus resultados con los obtenidos en el punto (2). 3.3.2 Detector de envolvente (Ley Cuadrática) 1. Implemente el detector de envolvente de Ley Cuadrática que se muestra en la figura 3.4. Utilice una frecuencia de muestreo de 8 KHz, una frecuencia de 2 KHz para la señal portadora y una frecuencia de 200 Hz para la señal a modular m(t ) . Utilice un filtro FIR pasobajo con una función ventana Hamming para H (ω ) con un orden suficiente para 108 suprimir las componentes no deseadas alrededor de 2 f c con una atenuación de al menos 40 dB. Suponga que m(t ) no tiene componentes espectrales menores a los 50 Hz y elimine el nivel DC a la salida del bloque de raíz cuadrada utilizando un filtro pasoalto con la siguiente función de transferencia. G(z ) = 1 + c ⎛ 1 − z −1 ⎞ ⎜ ⎟ 2 ⎜⎝ 1 − cz −1 ⎟⎠ donde c es una constante ligeramente menor a 1. Grafique la respuesta de magnitud en frecuencia y fase de este filtro para diferentes valores de c para seleccionar un valor para que el filtro funcione de forma apropiada. 2. Grafique la señal modulada y la salida del detector de envolvente. Obtenga el espectro de magnitud y el espectro de fase en frecuencia de ambas señales. Comente sus resultados. 3. En SIMULINK implemente el detector de la figura 3.4 y explique en forma detallada su funcionamiento. Para ello utilice el bloque “Math Function” para simular el bloque que eleva al cuadrado la señal de entrada y el bloque que obtiene la raíz cuadrada de la señal a la salida del filtro pasobajo. El filtro pasobajo genérelo con el bloque “Digital Filter Design”. Para el filtro pasoalto utilice el bloque “Discrete Filter”. Luego obtenga el espectro de la señal a modular y la salida del filtro paso alto. Mantenga los parámetros del punto (1). Comente sus resultados 109 Figura 3.4 Detector de envolvente de Ley Cuadrática 3.3.3 Cuestionario 1. Investigar en que consiste el índice de modulación y cuáles son sus efectos. 2. ¿Qué efecto produce el ruido del canal de comunicación en la modulación de amplitud? 3. Mencione y explique cuáles son algunas de las ventajas y desventajas que tiene la modulación AM. 110 3.4 Laboratorio de modulación DSBSC-AM La modulación AM completa incluye la transmisión de las componentes en frecuencia tanto de la portadora como de la señal a modular. Este tipo de modulación desperdicia más del 80% de la potencia al transmitir la portadora con toda su potencia además de dos bandas laterales, aunque una de las cuales resulta innecesaria para la recuperación de la información completa en banda base. Puesto que es indispensable que en el receptor se reinserte la portadora exactamente a la misma frecuencia y fase de la portadora utilizada para modular la señal en el transmisor, en el receptor sólo sería necesaria una muestra o piloto de esa portadora. En estas condiciones, no es necesario transmitir la portadora con toda su potencia y basta, como se mencionó con transmitir sólo una muestra de ella. Este razonamiento da lugar a la posibilidad de transmitir sólo las dos bandas laterales con, o sin un piloto de la portadora. La siguiente figura muestra el principio básico de la demodulación para modulación por doble banda lateral sin portadora donde H (ωm ) es un filtro FIR pasobajo con una frecuencia de corte dos veces la frecuencia de la señal original. Figura 3.5 Diagrama del principio básico de demodulación AM 111 En MATLAB para modular y demodular con doble banda lateral con portadora suprimida, se utiliza las funciones “modulate” y “demod”, cambiando la palabra “method” por la opción “amdsb-sc”. 3.4.1 Modulación DSBSC-AM 1. Utilizando MATLAB y basado en la figura 3.5 demodule una señal utilizando modulación DSBSC que ha sido modulada por una señal portadora con una frecuencia de 200 Hz. La señal a modular es la siguiente m(t ) = 10e −0.5t sin (2π (20)t ) 2. Grafique la señal a modular, la señal modulada y la demodulada. Grafique la salida del filtro. 3. Obtenga el espectro de magnitud en frecuencia de la señal antes de pasar por el filtro y después de pasar por este. 4. Compare la señal inicial con la obtenida luego de la modulación y demodulación de la misma y comente sus resultados. 5. Ahora utilizando las funciones “modulate” y “demod” de MATLAB module y demodule la señal del punto (1). 6. Grafique la señal modulada y la demodulada y compare con la señal original. Obtenga además el espectro de magnitud en frecuencia de ambas señales. 112 7. Compare los resultados del punto (6) con los obtenidos en el punto (2). 3.4.2 Modulación y demodulación AM utilizando SIMULINK 1. Con ayuda de la herramienta SIMULINK de MATLAB, implemente el modelo de simulación DSBSC-AM de la sección 3.4.1 y el modelo básico de demodulación de la figura 3.5. Para generar la señal a modular de la sección 3.4.1, utilice los bloques “Sine Wave”, “Clock” y “Fcn”. El tercer bloque es para generar una señal basado en una función y el segundo es la variable para generar la señal deseada. Utilice el bloque “Digital Filter Design” para generar el filtro pasobajo. 2. Muestre la señal a modular, la señal modulada y la señal demodulada. 3. Obtenga el espectro en frecuencia de estas señales utilizando el bloque “Spectrum Scope”. 3.4.3 Cuestionario 1. ¿Cuáles son las ventajas de utilizar este tipo de modulación de doble banda lateral con portadora suprimida (DSBSC-AM)? 2. ¿Por qué se utiliza un PLL para implementar un demodulador coherente cuando se usa este tipo de modulación DSBSC-AM? 113 3.5 Laboratorio de modulación SSB Los tipos de modulación AM y DSBSC-AM no utilizan eficientemente el espectro de frecuencia. Al analizar el espectro se encuentra que aún hay redundancia ya que las dos bandas alrededor de la frecuencia de corte son simétricas. El objetivo de la modulación SSB es utilizar eficientemente el espectro, transmitiendo una señal utilizando una de las dos bandas alrededor de la frecuencia de corte, ya sea la banda inferior o la banda superior, pues ambas son simétricas. Por tanto, utiliza tan solo la mitad del ancho de banda con respecto a AM y DSBSC-AM. La figura siguiente muestra un tipo de modulador SSB, que utiliza una señal modulada con DSBSC-AM y una etapa de filtrado. Figura 3.6 Modulador SSB 3.5.1 Modulación SSB-AM 1. En MATLAB, con base en el modulador de la figura 3.6, implemente este tipo de modulación SSB, tanto para la banda superior como la inferior. Utilice una señal portadora con frecuencia de 2 KHz y de amplitud Ap = 1 . Utilice un filtro con un ancho en la pendiente de rechazo menor a 2 veces la frecuencia de la señal a modular. Para seleccionar la banda 114 lateral superior se utiliza un filtro paso alto con una frecuencia de corte mayor a la frecuencia de la portadora ⎧1 H sup (ω ) = ⎨ ⎩0 ω > ωc para cualquier otro Para seleccionar la banda inferior se utiliza un filtro pasobajo con una frecuencia de corte menor a la frecuencia de la portadora ⎧1 H inf (ω ) = ⎨ ⎩0 2. Pruebe su procedimiento ω < ωc para cualquier otro para la siguiente señal de entrada m(t ) = Am cos(2π 600t ) con Am = 0.5 . 3. Grafique las señales generadas por el modulador y la señal de entrada. También grafique la respuesta en frecuencia y fase de los filtros utilizados. 4. Obtenga el espectro de magnitud en frecuencia para las señales generadas por el modulador y la señal de entrada. Comente sus resultados. 3.5.2 Demodulación SSB-AM 1. Debe implementar un demodulador SSB. Este demodulador posee el mismo diagrama de bloques de la figura 3.6, excepto que en lugar de la señal a transmitir m(t ) se pone la señal recibida s (t ) y el bloque H (ω ) se 115 reemplaza por un filtro pasobajo con una frecuencia de corte de tal manera que deje pasar la señal original. 2. Una vez que tenga listo el procedimiento para demodular, pruebe con la señal modulada que obtuvo en el punto (2) de la sección 3.5.1. 3. Grafique y compare la salida del demodulador con la señal original, para así poder comprobar si el procedimiento es efectivo. Grafique la respuesta en frecuencia del filtro paso bajo. 4. Obtenga el espectro de magnitud en frecuencia para las señales demoduladas y comente sus resultados. 3.5.3 Modulación y demodulación SSB–AM en SIMULINK 1. En SIMULINK implemente este modulador SSB y repita el ejercicio. Utilice los bloques “Sine Wave” para generar la señal a modular del punto (6) y la señal portadora del punto (1) de la sección 3.5.1. Multiplique estas señales, luego utilice el bloque “Digital Filter Design” para simular los filtros selectores de las bandas laterales y así generar la señal SSBAM. 2. Obtenga el espectro en frecuencia con el bloque “Spectrum Scope” para la señal a modular y la señal SSB-AM de banda lateral inferior y superior. 116 3. Luego implemente el procedimiento para demodular la señal SSB-AM para recuperar la señal original, tal y como se indicó en el punto (1) de la sección 3.5.2. 4. Obtenga el espectro de frecuencia de estas señales y compare con el espectro de la señal original. 3.5.4 Cuestionario 1. ¿Cuáles son las ventajas y desventajas de utilizar la modulación SSB? 2. Mencione y explique al menos dos métodos diferentes al del laboratorio que existen para modular una señal SSB. 3. Investigar cuáles otros métodos para demodular señales SSB existen. Explique detalladamente cada uno. 117 3.6 Laboratorio de modulación FM La modulación en frecuencia consiste en hacer variar la frecuencia de la portadora en función de la señal moduladora. Estas variaciones han de ser proporcionales a la amplitud de la señal a transmitir. Un modulador de FM debe tener las siguientes características: • La frecuencia de la señal de salida no será siempre la de la portadora. • Si la señal a modular tiene un valor de cero en su amplitud, en la salida tendremos una señal de frecuencia igual a la portadora. • Si la señal a modular tiene un valor positivo en su amplitud, en la salida se tendrá una señal de frecuencia proporcional superior a la de la portadora. • Si la señal a modular tiene un valor negativo en su amplitud, en la salida se tendrá una señal de frecuencia proporcional inferior a la de la portadora. • La frecuencia de la señal a modular no afecta a la variación de frecuencia de la señal modulada, únicamente influye en la velocidad a la que se produce la variación. 3.6.1 Modulación FM 1. Implemente la modulación de frecuencia de un tono simple en MATLAB. Utilice un índice de modulación β = 5 . La frecuencia de la señal a modular es de 100 Hz y la frecuencia de la señal portadora es de 1 KHz. 118 Utilice una frecuencia de muestreo de 80 KHz. La señal a modular es m(t ) = Am cos ωmt . La señal modulada es la siguiente ⎛ ⎞ k A s (t ) = Ac cos⎜⎜ ωc + ω m sin ωmt ⎟⎟ ωm ⎝ ⎠ Calcule una valor adecuado de kω y Am para que el valor de beta sea 5. 2. Grafique la señal a modular y la señal modulada (señal FM generada). Comente sus resultados. 3. Determine el espectro de frecuencia en magnitud y fase de la señal modulada. Compruebe que la señal FM posee muchas componentes en frecuencia y que la magnitud de componente de la señal portadora tiende a cero. 4. Utilizando la función “modulate” de MATLAB y cambiando la palabra “method” por “fm” module la señal m(t ) = Am cos ωmt con una frecuencia de 100 Hz y la portadora con una frecuencia de 1 KHz. Cuando se utiliza la opción “fm” se debe agregar una constante llamada “opt” esta representa el índice de modulación, pruebe con 0.04. 5. Grafique la señal a modular y la señal modulada con “modulate”. 6. Utilizando “modulate” varíe el valor de la constante “opt”. Puede utilizar tres valores diferentes entre 0 y 1. 7. Grafique estas tres señales FM generadas y observe lo que sucede cuando el índice de modulación es modificado. 119 8. Ahora utilizando “demod” demodule las señales obtenidas en los puntos (6) y (7). Utilice “fm” en lugar de la palabra “method”. 9. Grafique las señales demoduladas para cada índice de modulación probado y compare con la señal original la cual es la señal a modular. Comente sus resultados. 10. Obtenga el espectro en frecuencia de magnitud y fase para cada una las señales obtenidas en el punto (8). 3.6.2 Modulación y demodulación FM utilizando SIMULINK 1. Como introducción a la modulación y demodulación FM, SIMULINK tiene dos bloques específicos para simular una señal FM y otro para recuperar la señal original a partir una señal FM. Estos bloques se llaman “FM Modulator Paseband” y “FM Demodulator Passband”. Utilice estos bloques para modular la señal del punto (1) de la sección 3.6.1. La herramienta de ayuda de MATLAB tiene la información necesaria para utilizar correctamente estos bloques. 2. Utilice nuevamente el bloque “Sine Wave” para generar la señal a modular. La señal que se obtiene después del bloque demodulador pásela a través de un filtro IIR pasobajo Chebyshev Tipo I con una frecuencia de corte que permita el paso de la frecuencia central de la señal original y justifique el porque de su escogencia. 120 3. Obtenga la grafica de la señal a modular, la señal FM y la señal demodulada. También represente el espectro de frecuencia para cada una de estas señales utilizando el bloque “Spectrum Scope”. 3.6.3 Cuestionario 1. ¿Por qué la magnitud de la componente en frecuencia de la portadora tiende a cero? 2. Investigue, ¿qué es el índice de modulación en frecuencia y cuál es su efecto cuando se usa modulación FM? ¿Cómo debe ser este para que la señal se pueda reconstruir bien? 3. ¿Cuáles son las ventajas y desventajas de utilizar la modulación FM? 121 3.7 Laboratorio de modulación PAM En la modulación PAM, la información es transmitida en símbolos de valores discretos, uniformemente espaciados por intervalos de tiempo. La señal portadora es un tren periódico de pulsos rectangulares separados a la misma distancia uno de otro. La amplitud de los pulsos es proporcional al valor instantáneo de las muestras de una señal continua. Una señal PAM se puede representar por la siguiente ecuación s (t ) = ∞ ∑ [1 + k m(nT )]g (t − nT ) a n = −∞ s s Donde s (t ) > 0 para todo valor de n, m(nTs ) es la muestra de la señal a modular m(t ) , ka es la sensibilidad en amplitud y g (t ) es la forma del pulso o cuantificador. La tasa de muestreo debe ser mayor que dos veces la frecuencia máxima de la señal moduladora m(t ) de acuerdo con el teorema de muestreo. MATLAB tiene una función para simular este tipo de modulación, esta función es “pammod” y tiene otra función que demodula una señal PAM, “pamdemod” las cuales se muestran en la siguiente tabla. 122 Tabla 3.4 Funciones de MATLAB para modulación y demodulación PAM Función en MATLAB Descripción La salida de esta función es la envolvente compleja de una señal “x” al ser modulada utilizando modulación PAM. y = pammod(x,M) “M” es la cantidad de niveles de cuantificación y = pammod(x,M,ini_phase) de la señal, la cual debe estar dada en valores enteros positivos. La segunda opción “ini_phase” especifica en radianes la fase inicial de la señal modulada. Esta función demodula la envolvente compleja de z = pamdemod(y,M) una señal PAM. Los niveles de cuantificación es la variable “M”. z = pamdemod(y,M,ini_phase) La segunda opción “ini_phase” especifica en radianes la fase inicial de la señal PAM. 3.7.1 Modulación y demodulación PAM en MATLAB 1. Para conocer el efecto de la modulación de amplitud de pulso module la siguiente señal y = 10 cos(4πt ) , utilice una frecuencia de muestreo de 1000 Hz y obtenga mil muestras. En MATLAB con la ayuda de la función “square”, cree un tren de pulsos con ciclo de trabajo de un 25% y 123 una frecuencia de 30 Hz, esto para apreciar este fenómeno. Añada un nivel DC a la señal original y multiplique esta por el tren de pulsos. 2. Grafique la señal a modular, el tren de pulsos y la señal modulada. También obtenga y grafique el espectro en magnitud y fase de la señal a modular y la señal modulada. 3. Para poder utilizar las funciones de la tabla 3.4 se necesita que la señal esté antes cuantificada en niveles de valores enteros positivos. Para no tener problemas con estas funciones utilizaremos la función “quantiz” que nos permite cuantificar una señal a los niveles o símbolos que queramos en este caso enteros positivos. Para ello emplee el siguiente código y explique detalladamente lo que sucede. partition = [0,1,3]; codebook = [-1,0.5,2,3]; samp = [-2.4,-1,-0.2,0,0.2,1,1.2,1.9,2,2.9,3,3.5,5]; [index,quantized] = quantiz(samp,partition,codebook); index quantized 4. Utilice el método anterior para cuantificar esta señal m(t ) = Am sin (2πf mt ) con una frecuencia central f m = 100 Hz y Am = 15 . Debe utilizar una frecuencia de muestreo de f muestreo = 4 KHz y obtenga 200 muestras. Recuerde que “M” debe ser una potencia de 2 suficiente para generar los niveles de cuantificación de la señal cuantificada, pero antes de 124 cuantificar debe añadir un nivel DC a la señal muestreada suficiente para que no haya niveles de valores negativos. 5. Module por medio de modulación PAM utilizando la función “pammod” la señal cuantificada en el punto (4). 6. Grafique la señal a modular, la señal cuantificada y la señal modulada. Grafique la señal cuantificada utilizando tanto la función “plot” como la función “stem”. 7. Demodule la señal PAM generada en el punto (5) utilizando la función “pamdemod”. Grafique la señal demodulada y compare con la señal original. Comente sus resultados 8. Obtenga el espectro de frecuencia en magnitud y fase de la señal modulada y la señal demodulada. 9. Obtenga el diagrama de ojo de la señal demodulada utilizando la función “eyediagram” y comente sus resultados. 3.7.2 Modulación y demodulación PAM en SIMULINK 1. Para modulación y demodulación PAM existen los siguientes bloques en SIMULINK “M-PAM Modulator Baseband” y “M-PAM Demodulator Baseband”. Estos se pueden configurar para recibir enteros positivos o una trama de bits. Para simular un pequeño sistema PAM entonces se necesita generar primero de forma aleatoria cierta cantidad de 32 125 elementos utilizando el bloque “Random Integer Generator”. Utilice una frecuencia de muestreo de 1000 Hz. Luego convierta esta señal a bits con el siguiente bloque “Integer to Bit Converter”. Después module y demodule esta señal utilizando los bloques para simulación PAM que se encuentran en la librería “Digital Baseband Modulation”. 2. Utilice la herramienta de ayuda de MATLAB para utilizar correctamente estos bloques. 3. Obtenga la señal a modular, la señal modulada y la señal demodulada. Compare la señal reconstruida con la señal original. 4. Obtenga un diagrama de ojo de la señal demodulada con el bloque “Discrete Time Eye Diagram Scope” para 8 muestras por símbolo. 5. Se recomienda utilizar un tiempo de simulación de 30 segundos para apreciar con claridad lo que esta sucediendo. Comente sus resultados. 3.7.3 Cuestionario 1. ¿Qué es el fenómeno de Interferencia entre símbolos (ISI)? 2. ¿Qué es un diagrama de ojo? ¿Cuál es su importancia en el análisis de sistemas de comunicaciones digitales? 3. ¿Cuáles son las ventajas y desventajas de la modulación PAM? 126 3.8 Laboratorio de modulación QAM La modulación de amplitud en cuadratura o QAM es una modulación digital en la que el mensaje está contenido tanto en la amplitud como la fase de la señal transmitida. Se basa en la transmisión de dos mensajes independientes por un único camino. Esto se consigue modulando una misma portadora, desfasada 90º entre uno y otro mensaje. Esto supone la formación de dos canales ortogonales en el mismo ancho de banda, con lo cual se mejora la eficiencia de ancho de banda. La modulación QAM es un esquema un tanto riguroso. Un pequeño error en la fase o la frecuencia de la portadora en el demodulador no solo resulta en pérdida o distorsión de las señales sino interferencia entre ambos canales. La modulación QAM es utilizada en las transmisiones de televisión en color para multiplexar las señales de crominancia, que portan la información acerca del color. En este caso, la sincronización se logra por la inserción periódica de una muestra de la señal portadora. MATLAB tiene una función para simular este tipo de modulación, esta función es “qammod” y tiene otra función que sirve para demodular una señal QAM “qamdemod”, estas funciones se muestran en la siguiente tabla. 127 Tabla 3.5 Funciones de MATLAB para la modulación y demodulación QAM Función en MATLAB Descripción La salida de esta función es la envolvente compleja de una señal “x” al ser modulada utilizando modulación QAM. “M” es la cantidad de niveles de cuantificación y = qammod(x,M) de la señal, la cual debe estar dada en valores y = qammod(x,M,ini_phase) enteros positivos en potencia de 2. La señal obtenida es una constelación de forma rectangular o en cruz. La segunda opción “ini_phase” especifica en radianes la fase inicial de la señal modulada Esta función demodula la envolvente compleja de una señal QAM. “M” es la cantidad de niveles de cuantificación z = qamdemod(y,M) de la señal, la cual debe estar dada en valores z = qamdemod(y,M,ini_phase) enteros positivos en potencia de 2. La segunda opción “ini_phase” especifica en radianes la fase inicial de la señal modulada 128 3.8.1 Modulación y demodulación QAM 1. Se desea modular una señal formada por las siguientes señales m1 (t ) = Am sen(2πf1t ) m2 (t ) = Am sen(2πf 2t ) Donde Am = 7 , f1 = 180 Hz y f 2 = 25 Hz. Utilice una frecuencia de muestreo de f muestreo = 4 KHz y obtenga 200 muestras. Cuantifique la señal muestreada a niveles enteros positivos. 2. Grafique la señal a modular y la señal cuantificada (utilice tanto “plot” como “stem”). 3. Module la señal cuantificada en el punto (1) utilizando la función “qammod” y grafique la señal modulada en cuadratura y fase. 4. Suponga que a la señal se le añade ruido en el canal de transmisión. El canal contiene ruido gausiano o AWGN. Este ruido se genera con el siguiente código, utilícelo y explique. k=log2(M); EbNo = 10; %dB snr = EbNo + 10*log10(k) - 10*log10(1); ynoisy = awgn(ytx,snr,'measured'); 5. Utilice la función “scatterplot” para mostrar la constelación de la señal QAM antes y después de que se le añada el ruido gausiano. Comente sus resultados. 129 6. Luego demodule la señal con y sin ruido utilizando la función “qamdemod”. Grafique ambas señales demoduladas y compare con la señal original. Comente sus resultados. 7. Por último obtenga el espectro de frecuencia en magnitud y fase de la señal a modular, la señal modulada y demodulada, ambas con y sin ruido. Comente sus resultados. 3.8.2 Modulación y demodulación QAM con SIMULINK 1. Para modulación y demodulación QAM existen los siguientes bloques en SIMULINK “Rectangular QAM Modulator Baseband” y “Rectangular QAM Demodulator Baseband”. Estos se pueden configurar para recibir enteros positivos o una trama de bits. Para simular un pequeño sistema QAM entonces se necesita generar primero de forma aleatoria cierta cantidad de 32 elementos utilizando el bloque “Random Integer Generator”. Utilice una frecuencia de muestreo de 1000 Hz. Después module y demodule esta señal utilizando los bloques para simulación QAM que se encuentran en la librería “Digital Baseband Modulation”. 2. Para simular un canal de transmisión con ruido utilice el bloque llamado “AWGN Channel”. Modifique sus propiedades y utilice en la “Mode” la opción “Signal to noise ratio (SNR)”. Utilice este bloque con un SNR de 130 10 dB. A la entrada de este bloque debe ir la señal QAM generada y la salida debe ir a la entrada del demodulador. 3. Utilice la herramienta de ayuda de MATLAB para utilizar correctamente estos bloques. 4. Obtenga la señal a modular, la señal modulada con y sin ruido y la señal demodulada. Compare la señal reconstruida con la señal original. 5. Obtenga un diagrama de constelación de la señal demodulada con el bloque “Discrete Time Scatter Plot Scope” para 32 muestras por símbolo. 6. Se recomienda utilizar un tiempo de simulación de al menos 100 segundos para apreciar con claridad lo que esta sucediendo. Comente sus resultados. 3.8.2 Cuestionario 1. ¿Cuáles son las ventajas y desventajas de la modulación QAM? 2. ¿En qué consiste un canal de transmisión que añade ruido blanco gausiano (AWGN acrónimo en inglés para Additive White Gaussian Noise)? ¿Qué es el SNR y el BER? 3. ¿Cuál es la importancia de evaluar un sistema de comunicación digital con un canal de este tipo? 4. Investigue en qué consiste el estándar de transmisión V22bis para sistemas de comunicación digital. 131 CAPÍTULO 4: Conclusiones y recomendaciones 4.1 Conclusiones MATLAB Y SIMULINK son dos herramientas muy poderosas con las cuales se hace posible la simulación de sistemas de comunicación tanto analógicos como digitales. Se demostró que con estas dos herramientas se puede obtener una aproximación excelente para el estudio de los conceptos básicos en el comportamiento de los sistemas de comunicación. Al desarrollar prácticas de simulación en sistemas de comunicaciones tanto analógicos como digitales, se logra dar un enfoque práctico a los conceptos planteados en el curso de Procesamiento Digital de Señales, mediante la simulación de señales en el dominio del tiempo, así como en el dominio de la frecuencia al evaluar conceptos como muestreo, cuantificación, filtrado, densidad espectral, modulación analógica y digital, por mencionar algunos de los más comunes. Se consigue aprender los conceptos de como implementar las técnicas de filtrado para señales de tiempo discreto usualmente utilizadas en el curso de procesamiento digital de señales por medio del laboratorio de filtros digitales. El laboratorio de FFT permite conocer y utilizar una técnica importante en el análisis espectral de señales discretas. Este laboratorio ayudó a implementar un analizador de espectro utilizando la Transformada Rápida de Fourier (FFT), el cual fue de gran ayuda para los laboratorios siguientes. 132 Se examinó un método muy común para transmitir información conocido como modulación AM. Se analizó el espectro de frecuencia una señal AM con y sin ruido, esto en laboratorio de modulación AM. Con el laboratorio de modulación DSBSC-AM se consigue introducir al estudiante a una técnica de modulación AM que permite transmitir la señal modulada en amplitud sólo con la potencia requerida para la señal de información. El laboratorio de modulación SSB-AM permite conocer otra técnica de modulación AM la cual utiliza la mitad del ancho de banda al utilizar eficientemente el espectro en frecuencia. También se pudo demostrar que se puede recuperar la señal original a pesar de que solo se transmita la mitad de esta. Se pudo estudiar la teoría básica de modulación y demodulación FM por medio de las ecuaciones que MATLAB presenta para este tipo de modulación. Analizar el espectro de frecuencia de una señal FM por medio del laboratorio de modulación FM. El laboratorio de modulación PAM da a conocer el principio básico de la modulación por amplitud de pulsos la cual es de gran importancia en el procesamiento digital de señales. Se introduce el concepto de una herramienta llamada diagrama de ojo que permite analizar la calidad de una señal PAM. El último laboratorio de modulación QAM da a conocer otro método de modulación digital que permite transmitir parte de la señal tanto en amplitud como en fase. Se introduce el concepto de los diagramas de constelación que permite analizar una señal QAM con y sin ruido. 133 Con la preparación de las prácticas de simulación se fortalecen los conceptos que existen alrededor de los sistemas de comunicación, los cuales son de gran importancia hoy en día, donde los medios y técnicas de comunicación son necesarias para casi todas las tareas cotidianas de muchas personas alrededor del mundo. Estas prácticas de simulación permitirán al estudiante no sólo familiarizarse con la teoría durante sus estudios, sino que le permitirá tener una idea más clara del comportamiento y las técnicas utilizadas en los sistemas de comunicación. 4.2 Recomendaciones Las prácticas planteadas deben estar acompañadas de una base teórica. Esto debido a que las técnicas de comunicación utilizadas en los sistemas de comunicación se mejoran día a día. El estudiante debe sacar el tiempo para investigar como se deben utilizar las funciones que MATLAB ofrece para el procesamiento de señales. Este tiempo debe ser contemplado por el profesor dentro del lapso de entrega de su informe de resultados para cada práctica. MATLAB 7.0.1 es la versión en la que se basa la realización de los ejercicios de simulación por lo que algunas de las funciones y bloques de SIMULINK mencionados para la simulación de modulaciones es posible que no aparezcan en versiones anteriores a esta. 134 BIBLIOGRAFÍA A continuación se presenta las referencias bibliográficas consultadas para la elaboración de este proyecto. Libros: 1. Antoniou, A. “Digital Signal Processing: Signals, Systems and Filters”, Primera edición, McGraw-Hill, New York, Estados Unidos, 2006. 2. Tretter, S. A. “Communication System Design Using DSP Algorithms”, Primera edición, Kluwer Academic / Plenum Publishers, New York, Estados Unidos, 2003. 3. Jackson, L. B. “Digital filters and Signal Processing”, Tercera edición, Boston: Kluwer Academic Publishers, Estados Unidos, 1996. 4. Stanley, W. D. “Digital Signal Processing”, Segunda edición, Reston Publishing Company, Inc., Estados Unidos, 1984. 5. Alkin, O. “Digital Signal Processing: A Laboratory Approach Using PC-DSP”, Primera edición, Prentice Hall, Estados Unidos, 1994. 6. Proakis, J. G. “Tratamiento digital de señales”, Tercera edición, Prentice Hall, Madrid, España, 1998. 7. Bildstein, P. “Filtros Activos”, Primera edición, Marcombo Boixareu Editores, España, 1977. 8. Johnson, D. E. “Rapid Practical Designs of Active Filters”, Primera edición, John Wiley & Sons, Inc., Estados Unidos, 1975. 135 Páginas web: 9. Universidad de Valladolid. Marcos Martínez Fernández, MMF. “Modulación analógica y digital de Pulsos”, http://www.lpi.tel.uva.es/lpi/dld/tts/tema5.pdf 10. Universidad de Valladolid. Marcos Martínez Fernández, MMF. “Transmisión digital en banda base”, http://www.lpi.tel.uva.es/lpi/dld/tts/tema6.pdf 11. Universidad de Valladolid. Marcos Martínez Fernández, MMF. “Transmisión digital paso banda”, http://www.lpi.tel.uva.es/lpi/dld/tts/tema7.pdf 136 APÉNDICES APÉNDICE A: Código fuente de los ejercicios de simulación en MATLAB A.1 Código fuente laboratorio de filtros digitales %************************************************************************ %LABORATORIO DE FILTROS DIGITALES %************************************************************************ %************************************************************************ %REALIZADO POR: José Gabriel Fernández Carazo % A21941 % Escuela de Ingeniería Eléctrica % Facultad de Ingeniería % Universidad de Costa Rica %************************************************************************ %Ultima modificación: Julio del 2007. %************************************************************************ %************************************************************************ %Se limpia el workspace de MATLAB y las variables en uso. clc; clear; %************************************************************************ %************************************************************************ %FILTROS DIGITALES IIR %************************************************************************ %Punto (1) %************************************************************************ fm=8000; %Frecuencia de muestreo %Parámetros del filtro N=[8 16 32 64]; Wn=[1200 2000]/(fm/2); L=length(N); M=zeros(N(L)+1,L); %Orden del filtro %Frecuencias de corte %Matriz de ceros para guardar los %coeficientes del filtro para cada orden 137 for i=1:L ventana=window(@hamming,N(i)+1); %Cálculo de la función ventana %Hamming B=fir1(N(i),Wn,'bandpass',ventana); %Cálculo de los coeficientes del %filtro for j=1:length(B) M(j,i)=B(j); end end %************************************************************************ %************************************************************************ %Punto (2) %************************************************************************ %Cálculo de la respuesta en frecuencia Npuntos=256; %Puntos a calcular de la respuesta en frecuencia H=zeros(Npuntos,L); %Matriz de ceros para guardar la respuesta en %frecuencia del filtro segun el orden for k=1:L [H1,W]=freqz(M(:,k),1,Npuntos); H(:,k)=H1; end %Visualización de la respuesta en frecuencia figure(1) subplot(2,1,1); plot(W/pi,20*log10(abs(H))); title('Respuesta en magnitud del filtro Hamming'); xlabel('\omega en unidades de \pi'); ylabel('Magnitud (dB)'); legend('N=8','N=16','N=32','N=64'); grid on; subplot(2,1,2); plot(W/pi,unwrap(angle(H))); title('Respuesta de fase del filtro'); xlabel('\omega en unidades de \pi'); ylabel('Fase (rads)'); legend('N=8','N=16','N=32','N=64'); grid on; %************************************************************************ %************************************************************************ %Punto (3) %************************************************************************ L_medio=200; %Mitad de la cantidad de muestras a recolectar fm=8000; %Frecuencia de muestreo treq=2*L_medio/fm; %Tiempo requerido para recolectar las muestras t=0:1/(fm-1):treq; %Vector de muestras a recolectar 138 %Señal de entrada xin1=7*sin(2*pi*720*t); xin2=3*sin(2*pi*1440*t); xin3=15*sin(2*pi*3000*t); x_in=xin1+xin2+xin3; %Gráficas de las señales que conforman la señal de entrada figure(2) subplot(3,1,1); plot(t,xin1); title('Señal con frecuencia de 720 Hz'); xlabel('Tiempo (segundos)'); ylabel('Amplitud'); grid on; subplot(3,1,2); plot(t,xin2); title('Señal con frecuencia de 1840 Hz'); xlabel('Tiempo (segundos)'); ylabel('Amplitud'); grid on; subplot(3,1,3); plot(t,xin3); title('Señal con frecuencia de 3000 Hz'); xlabel('Tiempo (segundos)'); ylabel('Amplitud'); grid on; figure(3) plot(t,x_in); title('Señal de entrada'); xlabel('Tiempo (segundos)'); ylabel('Amplitud'); %Filtrando fil=zeros(length(x_in),L); %Se crea una matriz para guardar las %salidas de cada filtro for i=1:L h1=filter(M(:,i),1,x_in); fil(:,i)=h1; end %Se grafican las salidas de los filtros figure(4) subplot(4,1,1); plot(t,fil(:,1)); txtp1=strcat('Salida del filtro Hamming de orden N=',num2str(N(1))); title(txtp1); xlabel('Tiempo (segundos)'); 139 ylabel('Amplitud'); grid on; subplot(4,1,2); plot(t,fil(:,2)); txtp2=strcat('Salida del filtro Hamming de orden N=',num2str(N(2))); title(txtp2); xlabel('Tiempo (segundos)'); ylabel('Amplitud'); grid on; subplot(4,1,3); plot(t,fil(:,3)); txtp3=strcat('Salida del filtro Hamming de orden N=',num2str(N(3))); title(txtp3); xlabel('Tiempo (segundos)'); ylabel('Amplitud'); grid on; subplot(4,1,4); plot(t,fil(:,4)); txtp4=strcat('Salida del filtro Hamming de orden N=',num2str(N(4))); title(txtp4); xlabel('Tiempo (segundos)'); ylabel('Amplitud'); grid on; %************************************************************************ %************************************************************************ %Punto (4) %************************************************************************ M=zeros(N(L)+1,L); %Matriz de ceros para guardar los %coeficientes del filtro para cada orden for i=1:L ventana=window(@kaiser,N(i)+1); %Cálculo de la función ventana %Hamming B=fir1(N(i),Wn,'bandpass',ventana); %Cálculo de los coeficientes %del filtro for j=1:length(B) M(j,i)=B(j); end end %Cálculo de la respuesta en frecuencia H=zeros(Npuntos,L); %Matriz de ceros para guardar la respuesta en %frecuencia del filtro segun el orden for k=1:L [H1,W]=freqz(M(:,k),1,Npuntos); H(:,k)=H1; end 140 % Visualización de la respuesta en frecuencia figure(5) subplot(2,1,1); plot(W/pi,20*log10(abs(H))); title('Respuesta en magnitud del filtro Kaiser'); xlabel('\omega en unidades de \pi'); ylabel('Magnitud (dB)'); legend('N=8','N=16','N=32','N=64'); grid on; subplot(2,1,2); plot(W/pi,unwrap(angle(H))); title('Respuesta de fase del filtro'); xlabel('\omega en unidades de \pi'); ylabel('Fase (rads)'); legend('N=8','N=16','N=32','N=64'); grid on; %Filtrando fil=zeros(length(x_in),L); for i=1:L h1=filter(M(:,i),1,x_in); fil(:,i)=h1; end %Se grafican las salidas de los filtros figure(6) subplot(4,1,1); plot(t,fil(:,1)); txtp1=strcat('Salida del filtro Kaiser de orden N=',num2str(N(1))); title(txtp1); xlabel('Tiempo (segundos)'); ylabel('Amplitud'); grid on; subplot(4,1,2); plot(t,fil(:,2)); txtp2=strcat('Salida del filtro Kaiser de orden N=',num2str(N(2))); title(txtp2); xlabel('Tiempo (segundos)'); ylabel('Amplitud'); grid on; subplot(4,1,3); plot(t,fil(:,3)); txtp3=strcat('Salida del filtro Kaiser de orden N=',num2str(N(3))); title(txtp3); xlabel('Tiempo (segundos)'); ylabel('Amplitud'); grid on; 141 subplot(4,1,4); plot(t,fil(:,4)); txtp4=strcat('Salida del filtro Kaiser de orden N=',num2str(N(4))); title(txtp4); xlabel('Tiempo (segundos)'); ylabel('Amplitud'); grid on; %************************************************************************ %************************************************************************ %Punto (5) %************************************************************************ M=zeros(N(L)+1,L); %Matriz de ceros para guardar los %coeficientes del filtro para cada orden for i=1:L ventana=window(@barthannwin,N(i)+1); %Cálculo de la función ventana %Hamming B=fir1(N(i),Wn,'bandpass',ventana); %Cálculo de los coeficientes %del filtro for j=1:length(B) M(j,i)=B(j); end end %Cálculo de la respuesta en frecuencia H=zeros(Npuntos,L); %Matriz de ceros para guardar la respuesta en %frecuencia del filtro segun el orden for k=1:L [H1,W]=freqz(M(:,k),1,Npuntos); H(:,k)=H1; end % Visualización de la respuesta en frecuencia figure(7) subplot(2,1,1); plot(W/pi,20*log10(abs(H))); title('Respuesta en magnitud del filtro Bartlett'); xlabel('\omega en unidades de \pi'); ylabel('Magnitud (dB)'); legend('N=8','N=16','N=32','N=64'); grid on; subplot(2,1,2); plot(W/pi,unwrap(angle(H))); title('Respuesta de fase del filtro'); xlabel('\omega en unidades de \pi'); ylabel('Fase (rads)'); legend('N=8','N=16','N=32','N=64'); grid on; 142 %Filtrando fil=zeros(length(x_in),L); for i=1:L h1=filter(M(:,i),1,x_in); fil(:,i)=h1; end %Se grafican las salidas de los filtros figure(8) subplot(4,1,1); plot(t,fil(:,1)); txtp1=strcat('Salida del filtro Bartlett de orden N=',num2str(N(1))); title(txtp1); xlabel('Tiempo (segundos)'); ylabel('Amplitud'); grid on; subplot(4,1,2); plot(t,fil(:,2)); txtp2=strcat('Salida del filtro Bartlett de orden N=',num2str(N(2))); title(txtp2); xlabel('Tiempo (segundos)'); ylabel('Amplitud'); grid on; subplot(4,1,3); plot(t,fil(:,3)); txtp3=strcat('Salida del filtro Bartlett de orden N=',num2str(N(3))); title(txtp3); xlabel('Tiempo (segundos)'); ylabel('Amplitud'); grid on; subplot(4,1,4); plot(t,fil(:,4)); txtp4=strcat('Salida del filtro Bartlett de orden N=',num2str(N(4))); title(txtp4); xlabel('Tiempo (segundos)'); ylabel('Amplitud'); grid on; %************************************************************************ %************************************************************************ %FILTROS DIGITALES IIR %************************************************************************ %Punto (1) %************************************************************************ fm=8000; %Frecuencia de muestreo %Parámetros del filtro N2=8; %Orden del filtro 143 [b,a]=ellip(N2,0.5,80,300/(fm/2),'low'); %Cálculo de los coeficientes de %un filtro IIR tipo elíptico %************************************************************************ %************************************************************************ %Punto (2) %************************************************************************ [H,f]=freqz(b,a,2048,fm); %Respuesta en frecuencia %Se grafican los resultados figure(9) subplot(2,1,1); plot(f,20*log10(abs(H))); axis([0 2500 -200 0]); title('Respuesta en magnitud del filtro'); xlabel('Frecuencia (Hz)'); ylabel('Magnitud (dB)'); txtp5=strcat('N=',num2str(N2)); legend(txtp5); grid on; subplot(2,1,2); plot(f,unwrap(angle(H))*180/pi); axis([0 2500 -600 200]); xlabel('Frecuencia (Hz)'); ylabel('Fase (º)'); txtp6=strcat('N=',num2str(N2)); legend(txtp6); grid on; %************************************************************************ %************************************************************************ %Punto (3) %************************************************************************ L_medio=200; %Mitad de la cantidad de muestras a recolectar treq=2*L_medio/fm; %Tiempo requerido para recolectar las muestras t=0:1/(fm-1):treq; %Vector de muestras a recolectar %Señal de entrada xin1=sin(2*pi*180*t); xin2=sin(2*pi*720*t); x_in=xin1+xin2; figure(10) subplot(3,1,1); plot(t,xin1); title('Señal con frecuencia de 180 Hz'); xlabel('Tiempo (segundos)'); ylabel('Amplitud'); grid on; 144 subplot(3,1,2); plot(t,xin2); title('Señal con frecuencia de 720 Hz'); xlabel('Tiempo (segundos)'); ylabel('Amplitud'); grid on; subplot(3,1,3); plot(t,x_in); title('Señal de entrada'); xlabel('Tiempo (segundos)'); ylabel('Amplitud'); grid on; %Filtrando h=filter(b,a,x_in); figure(11) plot(t,h,t,x_in,':'); title('Salida del filtro'); xlabel('Tiempo (segundos)'); ylabel('Amplitud'); legend('Salida del filtro','Señal de entrada'); grid on; %************************************************************************ %************************************************************************ %Punto (4) %************************************************************************ %Parámetros del filtro Ns=[8 12 16]; %Variación del orden Amax=[20 60 120]; Amin=[0.1 0.3 0.9]; L=length(Ns); B=zeros(Ns(L)+1,L); A=zeros(Ns(L)+1,L); %Cálculo de los coeficientes de un filtro IIR tipo elíptico for i=1:L [b,a]=ellip(Ns(i),0.3,60,300/(fm/2),'low'); for j=1:length(b) B(j,i)=b(j); end for j=1:length(a) A(j,i)=a(j); end end %Respuesta en frecuencia Hf=zeros(2048,L); 145 F=zeros(2048,L); for k=1:L [H,f]=freqz(B(:,k),A(:,k),2048,fm); Hf(:,k)=H; F(:,k)=f; end %Se grafica la respuesta en frecuencia de cada uno de los filtros figure(12); subplot(2,1,1); plot(F,20*log10(abs(Hf)+eps)); title('Respuesta de magnitud del filtro Amin=0.3 dB, Amax=60 dB'); xlabel('Frecuencia (Hz)'); ylabel('Magnitud (dB)'); legend('N=8','N=12','N=16'); grid on; subplot(2,1,2); plot(F,unwrap(angle(Hf))*180/pi); title('Respuesta de fase del filtro Amin=0.3 dB, Amax=60 dB'); xlabel('Frecuencia (Hz)'); ylabel('Fase (º)'); legend('N=8','N=12','N=16'); grid on; %Cálculo de los coeficientes de un filtro IIR tipo elíptico B=zeros(Ns(L)+1,L); A=zeros(Ns(L)+1,L); for i=1:L [b,a]=ellip(Ns(1),Amin(i),60,300/(fm/2),'low'); for j=1:length(b) B(j,i)=b(j); end for j=1:length(a) A(j,i)=a(j); end end %Respuesta en frecuencia Hf=zeros(2048,L); F=zeros(2048,L); for k=1:L [H,f]=freqz(B(:,k),A(:,k),2048,fm); Hf(:,k)=H; F(:,k)=f; end %Se grafica la respuesta en frecuencia de cada uno de los filtros figure(13); subplot(2,1,1); plot(F,20*log10(abs(Hf)+eps)); 146 title('Respuesta de magnitud del filtro N=8, Amax=60 dB'); xlabel('Frecuencia (Hz)'); ylabel('Magnitud (dB)'); legend('Amin=0.1','Amin=0.3','Amin=0.9'); grid on; subplot(2,1,2); plot(F,unwrap(angle(Hf))*180/pi); title('Respuesta de fase del filtro N=8, Amax=60 dB'); xlabel('Frecuencia (Hz)'); ylabel('Fase (º)'); legend('N=8','N=12','N=16'); grid on; %Cálculo de los coeficientes de un filtro IIR tipo elíptico B=zeros(Ns(L)+1,L); A=zeros(Ns(L)+1,L); for i=1:L [b,a]=ellip(Ns(1),0.3,Amax(i),300/(fm/2),'low'); for j=1:length(b) B(j,i)=b(j); %Se guardan uno a uno los coeficientes end for j=1:length(a) A(j,i)=a(j); %Se guardan uno a uno los coeficientes end end %Respuesta en frecuencia Hf=zeros(2048,L); F=zeros(2048,L); for k=1:L [H,f]=freqz(B(:,k),A(:,k),2048,fm); Hf(:,k)=H; F(:,k)=f; end %Se grafica la respuesta en frecuencia de cada uno de los filtros figure(14); subplot(2,1,1); plot(F,20*log10(abs(Hf)+eps)); title('Respuesta de magnitud del filtro N=8, Amin=0.3 dB'); xlabel('Frecuencia (Hz)'); ylabel('Magnitud (dB)'); legend('Amax=20','Amax=60','Amax=120'); grid on; subplot(2,1,2); plot(F,unwrap(angle(Hf))*180/pi); title('Respuesta de fase del filtro N=8, Amax=0.3 dB'); xlabel('Frecuencia (Hz)'); 147 ylabel('Fase (º)'); legend('Amax=20','Amax=60','Amax=120'); grid on; %************************************************************************ %************************************************************************ %Punto (5) %************************************************************************ fm=8000; %Frecuencia de muestreo %Parámetros del filtro N=6; wn=[300 500]; %Orden del filtro %Cálculo de los coeficientes de un filtro IIR tipo eliptico [b1,a1]=cheby1(N,0.5,wn/(fm/2)); %Respuesta en frecuencia [H,f]=freqz(b1,a1,2048,fm); %Se grafican los resultados figure(15); subplot(2,1,1); plot(f,20*log10(abs(H))); title('Respuesta de magnitud del filtro IIR pasabanda, Chebyshev Tipo I'); xlabel('Frecuencia (Hz)'); ylabel('Magnitud (dB)'); grid on; subplot(2,1,2); plot(f,unwrap(angle(H))*180/pi); title('Respuesta de fase del filtro IIR pasabanda, Chebyshev Tipo I'); xlabel('Frecuencia (Hz)'); ylabel('Fase (º)'); grid on; %************************************************************************ %************************************************************************ %Punto (6) %************************************************************************ L_medio=200; %Mitad de la cantidad de muestras a recolectar treq=2*L_medio/fm; %Tiempo requerido para recolectar las muestras t=0:1/(fm-1):treq; %Vector de muestras a recolectar %Señal de entrada xin1=sin(2*pi*120*t); xin2=sin(2*pi*400*t); xin3=sin(2*pi*680*t); 148 x_in=xin1+xin2+xin3; %Filtrando h=filter(b1,a1,x_in); %Se grafica la salida del filtro figure(16) plot(t,h,t,x_in,':') title('Salida del filtro'); xlabel('Tiempo (segundos)'); ylabel('Amplitud'); legend('Salida del filtro','Señal de entrada'); grid on; %************************************************************************ %************************************************************************ %Punto (7) %************************************************************************ fm=8000; %Frecuencia de muestreo %Parámetros del filtro N=6; wn=[300 500]; [b2,a2]=cheby1(N,0.5,wn/(fm/2),'stop'); [H,f]=freqz(b2,a2,2048,fm); %Orden del filtro %Cálculo de los coeficientes de %un filtro IIR tipo elíptico %Respuesta en frecuencia %Se grafican los resultados figure(18); subplot(2,1,1); plot(f,20*log10(abs(H))); title('Respuesta de magnitud del filtro IIR rechazabanda, Chebyshev Tipo I'); xlabel('Frecuencia (Hz)'); ylabel('Magnitud (dB)'); grid on; subplot(2,1,2); plot(f,unwrap(angle(H))*180/pi); title('Respuesta de fase del filtro IIR rechazabanda, Chebyshev Tipo I'); xlabel('Frecuencia (Hz)'); ylabel('Fase (º)'); grid on; %************************************************************************ 149 %************************************************************************ %Punto (8) %************************************************************************ %Filtrando h=filter(b2,a2,x_in); figure(19) plot(t,h,t,x_in,':') title('Salida del filtro'); xlabel('Tiempo (segundos)'); ylabel('Amplitud'); legend('Salida del filtro','Señal de entrada'); grid on; %************************************************************************ %************************************************************************ %Punto (9) %************************************************************************ %Frecuencia de muestreo fm=8000; %Frecuencias de la banda de paso del filtro pasabanda wn=[1310 2120]/(fm/2); %Parámetros del filtro W=[2500 2600]/(fm/2); Wp=W(1); Ws=W(2); R=[0.3 40]; Rp=R(1); Rs=R(2); %Cálculo del orden del filtro [n,Wn] = ellipord(Wp,Ws,Rp,Rs,'s'); %Cálculo de los coeficientes de un filtro analógico tipo elíptico o cauer [numa,dena]=ellip(n,Rp,Rs,Wn*(fm/2)*2*pi,'low','s'); %Respuesta en frecuencia del filtro analógico [H1,f1]=freqs(numa,dena,fm); %Utilizando la transformación bilineal se pasa de un filtro analógico a *un filtro digital [numd,dend] = bilinear(numa,dena,fm,1000); %Ahora se hace una transformación espectral pasando de un filtro pasobajo *a un filtro pasabanda [b2,a2]=iirlp2bp(numd,dend,0.3,wn); %Respuesta en frecuencia del filtro IIR basado en un filtro analógico %pasobajo elíptico. [H2,f2]=freqz(b2,a2,2048,fm); 150 %Se grafican los resultados figure(20) subplot(3,1,1); plot(f1/(2*pi),20*log10(abs(H1))); title('Respuesta de magnitud del filtro pasobajo, Elíptico'); xlabel('Frecuencia (Hz)'); ylabel('Magnitud (dB)'); grid on; subplot(3,1,2); plot(f2,20*log10(abs(H2))); title('Respuesta de magnitud del filtro pasabanda IIR'); xlabel('Frecuencia normalizada (\omega en unidades de \pi)'); ylabel('Magnitud (dB)'); grid on; subplot(3,1,3); plot(f2/(fm/2),unwrap(angle(H2))*180/pi); title('Respuesta de fase del filtro pasabanda IIR'); xlabel('Frecuencia normalizada (\omega en unidades de \pi)'); ylabel('Fase (º)'); grid on; %************************************************************************ 151 A.2 Código fuente laboratorio de FFT %************************************************************************ %LABORATORIO DE FFT %************************************************************************ %************************************************************************ %REALIZADO POR: José Gabriel Fernández Carazo % A21941 % Escuela de Ingeniería Eléctrica % Facultad de Ingeniería % Universidad de Costa Rica %************************************************************************ %Ultima modificación: Julio del 2007. %************************************************************************ %************************************************************************ %Se limpia el workspace de MATLAB y las variables en uso. clc; clear; %************************************************************************ %************************************************************************ %CALCULO DE LA FFT %************************************************************************ %Punto (1) %************************************************************************ L_medio=128; %Mitad de la cantidad de muestras a recolectar Nfft=[16 32 64 128 256 512 1024];%Cantidad de puntos para calcular la FFT fmax=1/2; %Frecuencia máxima presente en la señal fn=2*fmax; %Frecuencia de muestreo según Nyquist treq=2*L_medio/fn; %Tiempo requerido para recolectar las muestras fs=((2*L_medio-1)/treq); %División de tiempo para recolectar las muestras n=0:1/fs:treq; %Vector de muestras a recolectar %Se define la secuencia de entrada xin=cos(2*pi*1/8*n)+cos(2*pi*1/4*n)+cos(2*pi*13/50*n); L=length(Nfft); for i=1:L %Cálculo de la DFT utilzando la FFT Y=fft(xin,Nfft(i)); %FFT de Nfft puntos para la secuencia xin Y1=fftshift(Y); %Reordenamiento de los valores de la FFT norm=max(abs(Y1)); %Para normalizar el espectro en magnitud 152 %Vector de frecuencias M=Nfft(i)/2; faux(M+1:Nfft(i))=0:M-1; faux(1:M)=-M:-1; f=fn*faux/(Nfft(i)); %Vector de frecuencias desordenado %Vector de frecuencias ordenado %Vector de frecuencias normalizado %Graficas de las espectros en frecuencias de las señales obtenidas figure; subplot(3,1,1); plot(n,xin); axis([0 treq -3 3]); title('Señal de entrada original'); xlabel('Tiempo (segundos)'); ylabel('Amplitud'); txtp=strcat('f muestreo = ',num2str(fn),' Hz'); legend(txtp); grid on; subplot(3,1,2); plot(f,abs(Y1)); title('Espectro continuo en magnitud de la señal de entrada'); xlabel('Frecuencia (Hz)'); ylabel('Magnitud |FFT|'); txtp=strcat('NFFT = ',num2str(Nfft(i)),' puntos'); legend(txtp); grid on; subplot(3,1,3); stem(f,abs(Y1)/norm,'r'); title('Espectro discreto en magnitud de la señal de entrada'); xlabel('Frecuencia (Hz)'); ylabel('Magnitud normalizada |FFT|'); txtp=strcat('NFFT = ',num2str(Nfft(i)),' puntos'); legend(txtp); grid on; end %************************************************************************ %************************************************************************ %Punto (2) %************************************************************************ Nfft2=128; %Cantidad de puntos para calcular la FFT L2_medio=50; %Cantidad de muestras de la secuencia de entrada t=0:L2_medio-1; %Vector de muestras a recolectar t2=0:L2_medio*4-1; t2n=0:Nfft2-1; fmax2=1/2; %Frecuencia máxima presente en la señal fn2=2*fmax2; %Frecuencia de muestreo según Nyquist treq2=2*L2_medio/fn2; %Tiempo requerido para recolectar las muestras fs2=((2*L2_medio-1)/treq2);%División de tiempo para recolectar muestras t=0:1/fs2:treq2; %Vector de muestras a recolectar 153 %Se define la secuencia de entrada x2=cos(2*pi*1/8*t)+cos(2*pi*1/4*t)+cos(2*pi*13/50*t); ceros=zeros(100,1); %Se define el vector de ceros de relleno ceros=ceros'; %Se traspone para unirlo al vector muestras xnew=cat(2,x2,ceros); %Vector de entrada relleno con ceros hasta 128 %Cálculo de la DFT utilzando la FFT Y2=fft(xnew,Nfft2); %FFT de Nfft puntos para la secuencia xnew Y3=fftshift(Y2); %Reordenamiento de los valores de la FFT norm2=max(abs(Y3)); %Para normalizar el espectro en magnitud %Vector de frecuencias M1=Nfft2/2; faux1(M1+1:Nfft2)=0:M1-1; faux1(1:M1)=-M1:-1; f1=fn*faux1/(Nfft2); %Vector de frecuencias desordenado %Vector de frecuencias ordenado %Vector de frecuencias normalizado %Graficas de las espectros en frecuencias de las señales obtenidas figure(8); subplot(3,1,1); plot(t2,xnew); axis([0 L2_medio*4 -3 3]); title('Señal de entrada rellenada con ceros'); xlabel('Tiempo (segundos)'); ylabel('Amplitud'); txtp2=strcat('f muestreo = ',num2str(fn2),' Hz'); legend(txtp2); grid on; subplot(3,1,2); plot(f1,abs(Y3)); title('Espectro continuo en magnitud de la señal de entrada'); xlabel('Frecuencia (Hz)'); ylabel('Magnitud |FFT|'); grid on; subplot(3,1,3); stem(f1,abs(Y3)/norm2,'r'); title('Espectro discreto en magnitud de la señal de entrada'); xlabel('Frecuencia (Hz)'); ylabel('Magnitud normalizada |FFT|'); grid on; %************************************************************************ %************************************************************************ %Punto (3) %************************************************************************ %Recuperando la señal original a partir de la FFT inversa x_recup=ifftshift(Y3); %Se cancela el efecto de ordenar los %componentes en frecuencia x_recup=ifft(x_recup); %Se aplica la FFT inversa en la señal 154 %Se grafican los resultados y se comprueba que se recupero la señal figure(9); subplot(2,1,1); plot(t2,xnew,'-b'); axis([0 L2_medio*4 -3 3]); title('Señal de entrada recuperada'); xlabel('Tiempo (segundos)'); ylabel('Amplitud'); grid on; subplot(2,1,2); plot(t2n,x_recup,'-r'); axis([0 L2_medio*4 -3 3]); title('Señal de entrada recuperada'); xlabel('Tiempo (segundos)'); ylabel('Amplitud'); grid on; %************************************************************************ %************************************************************************ %Punto (4) %************************************************************************ L3_medio=1000; %Mitad de la cantidad de muestras a recolectar Nfft3=256; %Cantidad de puntos para calcular la FFT fmax3=2000; %Frecuencia máxima presente en la señal fn3=2*fmax3; %Frecuencia de muestreo según Nyquist treq3=2*L3_medio/fn3; %Tiempo requerido para recolectar las muestras fs3=((2*L3_medio-1)/treq3);%División de tiempo para recolectar muestras t3=0:1/fs3:treq3; %Vector de muestras a recolectar %Se definen las señales x1=0.04742*cos(2*pi*200*t3+1.5077); x2=0.1362*cos(2*pi*400*t3+1.8769); x3=0.4884*cos(2*pi*500*t3-0.1852); x4=0.4884*cos(2*pi*1600*t3-1.4488); x5=0.1223*cos(2*pi*1700*t3); %Se define la señal compuesta por las señales anteriores xtotal=x1+x2+x3+x4+x5; %Cálculo de la DFT utilzando Y4=fft(xtotal,Nfft3); Y5=fftshift(Y4); norm=max(abs(Y5)); Yf=unwrap(angle(Y5)); %Vector de frecuencias M3=Nfft3/2; faux3(M3+1:Nfft3)=0:M3-1; faux3(1:M3)=-M3:-1; f3=fn3*faux3/(Nfft3); la FFT %FFT de Nfft puntos para la secuencia xtotal %Reordenamiento de los valores de la FFT %Para normalizar el espectro en magnitud %Cálculo de las componentes de fase %Vector de frecuencias desordenado %Vector de frecuencias ordenado %Vector de frecuencias normalizado 155 %Graficas de las espectros en frecuencias de las señales obtenidas figure(10); subplot(3,1,1); plot(t3,xtotal); axis([0 treq3 -3 3]); title('Señal de entrada original'); xlabel('Tiempo (segundos)'); ylabel('Amplitud'); txtp3=strcat('f muestreo = ',num2str(fn3),' Hz'); legend(txtp3); grid on; subplot(3,1,2); plot(f3,abs(Y5)); title('Espectro continuo en magnitud de la señal de entrada'); xlabel('Frecuencia (Hz)'); ylabel('Magnitud |FFT|'); grid on; subplot(3,1,3); plot(f3,Yf,'b'); title('Espectro continuo de fase de la señal de entrada'); xlabel('Frecuencia (Hz)'); ylabel('Fase (rad)'); grid on; figure(11); subplot(2,1,1); stem(f3,abs(Y5)/norm,'r'); title('Espectro discreto en magnitud de la señal de entrada'); xlabel('Frecuencia (Hz)'); ylabel('Magnitud normalizada |FFT|'); grid on; subplot(2,1,2); stem(f3,Yf,'m'); title('Espectro discreto de fase de la señal de entrada'); xlabel('Frecuencia (Hz)'); ylabel('Fase (rad)'); grid on; %************************************************************************ 156 A.3 Código fuente laboratorio de modulación AM %************************************************************************ %LABORATORIO DE MODULACION AM %************************************************************************ %************************************************************************ %REALIZADO POR: José Gabriel Fernández Carazo % A21941 % Escuela de Ingeniería Eléctrica % Facultad de Ingeniería % Universidad de Costa Rica %************************************************************************ %Ultima modificación: Julio del 2007. %************************************************************************ %************************************************************************ %Se limpia el workspace de MATLAB y las variables en uso. clc; clear; %************************************************************************ %************************************************************************ %MODULACION AM %************************************************************************ %Punto (1) %************************************************************************ %Modulación en amplitud de un tono de prueba L_medio=1000; %Mitad de la cantidad de muestras a recolectar fm=1000; %Frecuencia de muestreo treq=2*L_medio/fm; %Tiempo requerido para recolectar las muestras t=0:1/(fm-1):treq; %Vector de muestras a recolectar %Señal mensaje (tono): fs=fm; ftono=10; wtono=2*pi*ftono; mtono=1.6*cos(wtono*t); %Frecuencia de muestreo %Frecuencia de la señal a modular %Frecuencia en rads/s %Señal a modular %Señal modulada (AM) fc=100; s=modulate(mtono,fc,fs,'am'); %Frecuencia de la señal portadora %Señal modulada %Demodulación (AM) mreconst = demod(s,fc,fs,'am'); %************************************************************************ 157 %************************************************************************ %Punto (2) %************************************************************************ %Gráfica de la señal tono de prueba figure(1) subplot(3,1,1); plot(t,mtono); title('Señal tono de prueba'); xlabel('Tiempo (segundos)'); ylabel('Amplitud'); txt=strcat('f muestreo =',num2str(fs),' Hz'); legend(txt); grid on; %Gráfica de la señal modulada subplot(3,1,2) plot(t,s); title('Señal modulada'); xlabel('Tiempo (segundos)'); ylabel('Amplitud'); txt=strcat('f muestreo =',num2str(fs),' Hz'); legend(txt); axis([0 treq/4 -2 2]); grid on; %Gráfica de la señal demodulada subplot(3,1,3); plot(t,mreconst); title('Señal reconstruida'); xlabel('Tiempo (segundos)'); ylabel('Amplitud'); axis([0 treq -3 3]); txt=strcat('f muestreo =',num2str(fs),' Hz'); legend(txt); grid on; %Cálculo de la DFT utilzando la FFT Nfft=1024; Y=fft(s,Nfft); %FFT de Nfft puntos para la señal s Y2=fftshift(Y); %Reordenamiento de los valores de la FFT norm=max(abs(Y2)); %Para normalizar el espectro en magnitud Yf=unwrap(angle(Y2)); %Cálculo de las componentes de fase de la señal %Vector de frecuencias M=Nfft/2; faux(M+1:Nfft)=0:M-1; faux(1:M)=-M:-1; f=fm*faux/(Nfft); %Vector de frecuencias desordenado %Vector de frecuencias ordenado %Vector de frecuencias normalizado %Se grafican los resultados obtenidos figure(2) 158 subplot(2,1,1); plot(f,abs(Y2)/norm); title('Espectro continuo en magnitud de la señal modulada'); xlabel('Frecuencia (Hz)'); ylabel('Magnitud normalizada |FFT|'); grid on; subplot(2,1,2); plot(f,Yf,'b'); title('Espectro continuo de fase de la señal modulada'); xlabel('Frecuencia (Hz)'); ylabel('Fase (rads)'); grid on; %Cálculo de la DFT utilzando la Ytono=fft(mtono,Nfft); Y2tono=fftshift(Ytono); norm1=max(abs(Y2tono)); Yftono=unwrap(angle(Y2tono)); FFT de la señal tono de prueba %FFT de Nfft puntos para la señal mtono %Reordenamiento de los valores de la FFT %Para normalizar el espectro en magnitud %Cálculo de las componentes de fase %Cálculo de la DFT utilzando la FFT de la señal reconstruida Yreconst=fft(mreconst,Nfft); %FFT de Nfft puntos para la señal mtono Y2reconst=fftshift(Yreconst); %Reordenamiento de los valores de la FFT norm2=max(abs(Y2reconst)); %Para normalizar el espectro en magnitud Yfreconst=unwrap(angle(Y2reconst)); %Cálculo de las componentes de fase %Se grafican los resultados figure(3) subplot(2,1,1); plot(f,abs(Y2tono)/norm1,f,abs(Y2reconst)/norm2); title('Espectro continuo en magnitud'); xlabel('Frecuencia (Hz)'); ylabel('Magnitud normalizada |FFT|'); legend('Señal tono de prueba','Señal reconstruida'); grid on; subplot(2,1,2); plot(f,Yftono,f,Yfreconst); title('Espectro continuo de fase'); xlabel('Frecuencia (Hz)'); ylabel('Fase (rads)'); legend('Señal tono de prueba','Señal reconstruida'); grid on; %************************************************************************ %************************************************************************ %Punto (3) y (4) %************************************************************************ L_medio=2000; %Mitad de la cantidad de muestras a recolectar fm=1000; %Frecuencia de muestreo treq=2*L_medio/fm; %Tiempo requerido para recolectar las muestras 159 t=0:1/(fm-1):treq; %Vector de muestras a recolectar Ap=5; indmod=[0.45 1 2.6]; ka=0.5; %Amplitud de la portadora %Indice de modulación %Indice de sensibilidad %Modulación para cada uno de los diferentes índices de modulación L=length(indmod); for i=1:L Am1=indmod(i)/ka; fym=5; fyc=10*fym; %Señal a modular ym=Am1*cos(2*pi*fym*t); %Señal portadora yc=Ap*cos(2*pi*fyc*t); %señal modulada ys=(1+ka*ym).*yc; ysmax=max(abs(ys)); %Se grafican los resultados figure(4); if i==1 subplot(3,1,1); plot(t,real(ys)); title('Señal AM con índice de modulación m<1'); xlabel('Tiempo (segundos)'); ylabel('Amplitud'); axis([0 treq/4 -(ysmax+1) ysmax+1]); grid on; end if i==2 subplot(3,1,2); plot(t,real(ys)); title('Señal AM con índice de modulación m=1'); xlabel('Tiempo (segundos)'); ylabel('Amplitud'); axis([0 treq/4 -(ysmax+1) ysmax+1]); grid on; end if i==3 subplot(3,1,3); plot(t,real(ys)); title('Señal AM con índice de modulación m>1'); xlabel('Tiempo (segundos)'); ylabel('Amplitud'); axis([0 treq/4 -(ysmax+1) ysmax+1]); grid on; 160 end figure(5); if i==1 subplot(4,1,1); plot(t,yc); title('Señal portadora'); xlabel('Tiempo (segundos)'); ylabel('Amplitud'); axis([0 treq/4 -Ap Ap]); txtp=strcat('fc=',num2str(fyc)); legend(txtp); grid on; m<1'); subplot(4,1,2); plot(t,ym); title('Señal a modular para obtener un índice de modulación xlabel('Tiempo (segundos)'); ylabel('Amplitud'); txtp=strcat('Amplitud media=',num2str(Am1)); legend(txtp); grid on; end if i==2 subplot(4,1,3); plot(t,ym); title('Señal a modular para obtener un índice de modulación m=1'); xlabel('Tiempo (segundos)'); ylabel('Amplitud'); txtp=strcat('Amplitud media=',num2str(Am1)); legend(txtp); grid on; end if i==3 subplot(4,1,4); plot(t,ym); title('Señal a modular para obtener un índice de modulación m>1'); xlabel('Tiempo (segundos)'); ylabel('Amplitud'); txtp=strcat('Amplitud media=',num2str(Am1)); legend(txtp); grid on; end end %************************************************************************ 161 %************************************************************************ %Punto (5) %************************************************************************ %Modulación de una señal con ruido utilzando las funciones "modulate" y %"demod" L_medio=1000; fm=1000; treq=2*L_medio/fm; t=0:1/(fm-1):treq; %Mitad de la cantidad de muestras a recolectar %Frecuencia de muestreo %Tiempo requerido para recolectar las muestras %Vector de muestras a recolectar %Señal modulada (AM) fc=100; s=modulate(mtono,fc,fs,'am'); %Frecuencia de la señal portadora %Señal modulada % Portadora fc=50; % Señal mensaje fs=fm; m=15*sin(10*pi*t)+10*sin(20*pi*t); % Señal modulada g=modulate(m,fc,fs,'am'); % Ruido g_ruido=g+8*randn(1,length(g)); % Señal reconstruida m_reconst=demod(g,fc,fs,'am'); figure(6); subplot(3,1,1); plot(t,m); title('Señal a modular'); xlabel('Tiempo (segundos)'); ylabel('Amplitud'); txtp=strcat('fmuestreo=',num2str(fm)); legend(txtp); grid on; subplot(3,1,2); plot(t,g_ruido); title('Señal modulada con ruido adherido en el canal de transmisión'); xlabel('Tiempo (segundos)'); ylabel('Amplitud'); txtp=strcat('fmuestreo=',num2str(fm)); legend(txtp); grid on; 162 subplot(3,1,3); plot(t,m_reconst,t,m); title('Señal reconstruida o demodulada'); xlabel('Tiempo (segundos)'); ylabel('Amplitud'); legend('Señal demodulada o reconstruida','Señal original'); grid on; %************************************************************************ %************************************************************************ %DETECTOR DE ENVOLVENTE (LEY CUADRATICA) %************************************************************************ %Punto (1) %************************************************************************ L_medio=2000; %Mitad de la cantidad de muestras a recolectar fm=8000; %Frecuencia de muestreo treq=2*L_medio/fm; %Tiempo requerido para recolectar las muestras t=0:1/(fm-1):treq; %Vector de muestras a recolectar Ap=5; indmod=1; ka=0.5; %Amplitud de la portadora %Indice de modulación %Indice de sensibilidad Am1=indmod/ka; fym=200; fyc=10*fym; %Amplitud de la señal a modular %Frecuencia de la señal a modular %Frecuencia de la portadora 10 veces la %Frecuencia de la señal a modular %Señal a modular ym=Am1*cos(2*pi*fym*t); %Señal portadora yc=Ap*cos(2*pi*fyc*t); %señal modulada ys=(1+ka*ym).*yc; ysmax=max(abs(ys)); %Se eleva al cuadrado ys2=ys.^2; %Se pasa por un filtro pasobajo b1=fir1(128,fym/(fm/2),'low'); h=filter(b1,1,ys2); %Se le saca la raíz cuadrada y=sqrt(h); [H f]=freqz(b1,1,2048,fm); 163 %Se pasa por un filtro pasoalto para eliminar la componente DC c=[0.2 0.5 0.7 0.89 0.98]; L2=length(c); Hm=zeros(2048,L2); fil=zeros(length(y),L2); for i=1:L2; b3=[1+c(i) -(1+c(i))]; a3=[2 -2*c(i)]; h3=filter(b3,a3,y); fil(:,i)=h3; [H3 f3]=freqz(b3,a3,2048,fm); Hm(:,i)=H3; end %se grafican los resultados figure(7) subplot(3,1,1); [AX,H1,H2]=plotyy(f,20*log10(abs(H)+eps),f,unwrap(angle(H)),'plot'); set(get(AX(1),'Ylabel'),'String','Magnitud (dB)') set(get(AX(2),'Ylabel'),'String','Fase (rads)') set(AX(1),'YGrid','on'); set(AX(2),'YGrid','on'); title('Respuesta en magnitud y fase de un filtro FIR pasobajo N=64'); xlabel('Frecuencia (Hz)'); ylabel('Magnitud (dB)'); grid on; subplot(3,1,2); plot(f3,20*log10(abs(Hm)+eps)); title('Respuesta en magnitud de un filtro digital pasoalto'); xlabel('Frecuencia (Hz)'); ylabel('Magnitud (dB)'); legend('c=0.2','c=0.5','c=0.7','c=0.89','c=0.98'); ylim([-350 50]); xlim([0 350]) grid on; subplot(3,1,3); plot(f3,unwrap(angle(Hm))); title('Respuesta de fase de un filtro digital pasoalto'); xlabel('Frecuencia (Hz)'); ylabel('Fase(rads)'); legend('c=0.2','c=0.5','c=0.7','c=0.89','c=0.98'); grid on; c=0.92; b3=[1+c -(1+c)]; a3=[2 -2*c]; h3=filter(b3,a3,y); 164 figure(8) subplot(2,1,1); plot(t,ys); title('Señal modulada'); xlabel('Tiempo (segundos)'); ylabel('Amplitud'); axis([0 treq/4 -(ysmax+1) ysmax+1]); grid on; subplot(2,1,2); plot(t,real(h3)); title('Salida del filtro pasoalto (señal demodulada utilizando un detector de envolvente de Ley Cuadrática'); xlabel('Tiempo (segundos)'); ylabel('Amplitud'); axis([0 treq/4 -max(abs(h3)) max(abs(h3))]); grid on; %Cálculo de la DFT utilzando la FFT Nfft=2048; Y=fft(ym,Nfft); %FFT de Nfft puntos para la señal de entrada Y2=fftshift(Y); %Reordenamiento de los valores de la FFT norm2=max(abs(Y2)); %Para normalizar el espectro en magnitud %Vector de frecuencias M1=Nfft/2; faux1(M1+1:Nfft)=0:M1-1; faux1(1:M1)=-M1:-1; f1=fm*faux1/(Nfft); %Vector de frecuencias desordenado %Vector de frecuencias ordenado %Vector de frecuencias normalizado Y3=fft(h3,Nfft); %FFT de Nfft puntos para la salida del filtro pasoalto Y4=fftshift(Y3); %Reordenamiento de los valores de la FFT norm4=max(abs(Y4)); %Para normalizar el espectro en magnitud %Vector de frecuencias M1=Nfft/2; faux1(M1+1:Nfft)=0:M1-1; faux1(1:M1)=-M1:-1; f2=fm*faux1/(Nfft); %Vector de frecuencias desordenado %Vector de frecuencias ordenado %Vector de frecuencias normalizado figure(9) subplot(2,1,1); plot(f1,abs(Y2)/norm2); title('Espectro continuo en magnitud de la señal de entrada'); xlabel('Frecuencia (Hz)'); ylabel('Magnitud normalizada |FFT|'); txt=strcat('Nfft=',num2str(Nfft),' puntos'); legend(txt); grid on; 165 subplot(2,1,2); plot(f2,abs(Y4)/norm4); title('Espectro continuo en magnitud de la salida del filtro pasoalto'); xlabel('Frecuencia (Hz)'); ylabel('Magnitud normalizada |FFT|'); txt=strcat('Nfft=',num2str(Nfft),' puntos'); legend(txt); grid on; %************************************************************************ 166 A.4 Código fuente laboratorio de modulación DSBSC-AM %************************************************************************ %LABORATORIO DE MODULACION DSBSC-AM %************************************************************************ %************************************************************************ %REALIZADO POR: José Gabriel Fernández Carazo % A21941 % Escuela de Ingeniería Eléctrica % Facultad de Ingeniería % Universidad de Costa Rica %************************************************************************ %Ultima modificación: Julio del 2007. %************************************************************************ %************************************************************************ %Se limpia el workspace de MATLAB y las variables en uso. clc; clear; %************************************************************************ %************************************************************************ %MODULACION DSBSC-AM %************************************************************************ %Punto (1) %************************************************************************ %Modulación en amplitud de doble banda lateral con portadora suprimida L_medio=10000; %Mitad de la cantidad de muestras a recolectar fm=8000; %Frecuencia de muestreo treq=2*L_medio/fm; %Tiempo requerido para recolectar las muestras t=0:1/(fm-1):treq; %Vector de muestras a recolectar %Señal a demodular fmt=20; mt=10*sin(2*pi*fmt*t).*exp(-0.5*t); %mt=1+0.4*cos(2*pi*fmt*t); fc=200; yc=cos(2*pi*fc*t); %Señal DSBSC-AM s1=mt.*yc; %Se inicia la etapa de demodulación s2=s1.*(2*yc); 167 %Se pasa por un filtro pasobajo para obtener la señal demodulada b1=fir1(70,2*fmt/(fm/2),'low'); h=filter(b1,1,s2); %Se calcula la respuesta en frecuencia del filtro [H f]=freqz(b1,1,2048,fm); %************************************************************************ %************************************************************************ %Punto (2) %************************************************************************ %Se grafican los resultados figure(1) subplot(3,1,1) plot(t,mt); title('Señal a modular'); xlabel('Tiempo (segundos)'); ylabel('Amplitud'); ylim([-15 15]); grid on; subplot(3,1,2) plot(t,s1); title('Señal modulada (Señal DSBSC-AM)'); xlabel('Tiempo (segundos)'); ylabel('Amplitud'); xlim([0 treq/4]); grid on; subplot(3,1,3) plot(t,h); title('Señal demodulada'); xlabel('Tiempo (segundos)'); ylabel('Amplitud'); ylim([-15 15]); grid on; figure(2) subplot(2,1,1) plot(f,20*log10(abs(H)+eps)); title('Respuesta en magnitud de un filtro FIR pasobajo N=70'); xlabel('Frecuencia (Hz)'); ylabel('Magnitud (dB)'); grid on; subplot(2,1,2) plot(f,unwrap(angle(H))); title('Respuesta de fase de un filtro FIR pasobajo N=70'); xlabel('Frecuencia (Hz)'); ylabel('Magnitud (dB)'); grid on; 168 %************************************************************************ %************************************************************************ %Punto (3) %************************************************************************ %Cálculo de la DFT utilzando la FFT Nfft=2048; Y=fft(s2,Nfft); %FFT de Nfft puntos para la entrada del filtro Y2=fftshift(Y); %Reordenamiento de los valores de la FFT norm2=max(abs(Y2)); %Para normalizar el espectro en magnitud %Vector de frecuencias M1=Nfft/2; faux1(M1+1:Nfft)=0:M1-1; faux1(1:M1)=-M1:-1; f1=fm*faux1/(Nfft); %Vector de frecuencias desordenado %Vector de frecuencias ordenado %Vector de frecuencias normalizado Y3=fft(h,Nfft); %FFT de Nfft puntos para la salida del filtro pasobajo Y4=fftshift(Y3); %Reordenamiento de los valores de la FFT norm2=max(abs(Y4)); %Para normalizar el espectro en magnitud %Vector de frecuencias M1=Nfft/2; faux1(M1+1:Nfft)=0:M1-1; faux1(1:M1)=-M1:-1; f2=fm*faux1/(Nfft); %Vector de frecuencias desordenado %Vector de frecuencias ordenado %Vector de frecuencias normalizado figure(3) subplot(2,1,1); plot(f1,abs(Y2)/max(abs(Y2))); title('Espectro continuo en magnitud de la señal de entrada al filtro'); xlabel('Frecuencia (Hz)'); ylabel('Magnitud normalizada |FFT|'); txt=strcat('Nfft=',num2str(Nfft),' puntos'); legend(txt); xlim([-1000 1000]); grid on; subplot(2,1,2); plot(f2,abs(Y4)/max(abs(Y4))); title('Espectro continuo en magnitud de la señal de salida del filtro'); xlabel('Frecuencia (Hz)'); ylabel('Magnitud normalizada |FFT|'); txt=strcat('Nfft=',num2str(Nfft),' puntos'); legend(txt); xlim([-1000 1000]); grid on; %************************************************************************ 169 %************************************************************************ %Punto (5) %************************************************************************ %Señal modulada (AM) s3=modulate(mt,fc,fm,'amdsb-sc'); %Señal modulada %Demodulación (AM) mreconst = 2*demod(s3,fc,fm,'amdsb-sc'); %************************************************************************ %************************************************************************ %Punto (6) %************************************************************************ figure(4) subplot(2,1,1); plot(t,s3); title('Señal modulada utilizando la función "modulate"'); xlabel('Tiempo (segundos)'); ylabel('Amplitud'); grid on; subplot(2,1,2); plot(t,mreconst); title('Señal demodulada utilizando la función "demod"'); xlabel('Tiempo (segundos)'); ylabel('Amplitud'); grid on; %Cálculo de la DFT utilzando la FFT Nfft=2048; Y=fft(s3,Nfft); %FFT de Nfft puntos para la señal modulada Y2=fftshift(Y); %Reordenamiento de los valores de la FFT norm2=max(abs(Y2)); %Para normalizar el espectro en magnitud %Vector de frecuencias M1=Nfft/2; faux1(M1+1:Nfft)=0:M1-1; faux1(1:M1)=-M1:-1; f1=fm*faux1/(Nfft); %Vector de frecuencias desordenado %Vector de frecuencias ordenado %Vector de frecuencias normalizado Y3=fft(mreconst,Nfft); Y4=fftshift(Y3); norm2=max(abs(Y4)); %FFT de Nfft puntos para la señal reconstruida %Reordenamiento de los valores de la FFT %Para normalizar el espectro en magnitud %Vector de frecuencias M1=Nfft/2; faux1(M1+1:Nfft)=0:M1-1; faux1(1:M1)=-M1:-1; f2=fm*faux1/(Nfft); %Vector de frecuencias desordenado %Vector de frecuencias ordenado %Vector de frecuencias normalizado 170 figure(5) subplot(2,1,1); plot(f1,abs(Y2)/max(abs(Y2))); title('Espectro continuo en magnitud de la señal modulada con "modulate"'); xlabel('Frecuencia (Hz)'); ylabel('Magnitud normalizada |FFT|'); txt=strcat('Nfft=',num2str(Nfft),' puntos'); legend(txt); xlim([-1000 1000]); grid on; subplot(2,1,2); plot(f2,abs(Y4)/max(abs(Y4))); title('Espectro continuo en magnitud de la señal demodulada con "demod"'); xlabel('Frecuencia (Hz)'); ylabel('Magnitud normalizada |FFT|'); txt=strcat('Nfft=',num2str(Nfft),' puntos'); legend(txt); xlim([-1000 1000]); grid on; %************************************************************************ 171 A.5 Código fuente laboratorio de modulación SSB-AM %************************************************************************ %LABORATORIO DE MODULACION SSB-AM %************************************************************************ %************************************************************************ %REALIZADO POR: José Gabriel Fernández Carazo % A21941 % Escuela de Ingeniería Eléctrica % Facultad de Ingeniería % Universidad de Costa Rica %************************************************************************ %Ultima modificación: Julio del 2007. %************************************************************************ %************************************************************************ %Se limpia el workspace de MATLAB y las variables en uso. clc; clear; %************************************************************************ %************************************************************************ %MODULACION SSB-AM %************************************************************************ %Punto (1) y (2) %************************************************************************ %Modulación en amplitud de banda lateral con portadora suprimida Nfft=1024; %Cantidad de puntos a calcular para la FFT L_medio=500; %Mitad de la cantidad de muestras a recolectar fm=8000; %Frecuencia de muestreo treq=2*L_medio/fm; %Tiempo requerido para recolectar muestras fs=((2*L_medio-1)/treq); %División de tiempo para recolectar muestras t=0:1/fs:treq; %Vector de muestras a recolectar %Vector de frecuencias para los espectros en frecuencia M=Nfft/2; faux(M+1:Nfft)=0:M-1; %Vector de frecuencias desordenado faux(1:M)=-M:-1; %Vector de frecuencias ordenado f=fm*faux/(Nfft); %Vector de frecuencias normalizado %Parámetros de las señales a utilizar fc=2000; %Frecuencia de la portadora Ap=2; %Amplitud de la portadora Am=0.5; %Amplitud de la señal a modular fmt=600; %Frecuencia de la señal a modular 172 %Señal a modular mt=Am*cos(2*pi*fmt*t); %Señal portadora yc=Ap*sin(2*pi*fc*t); %Se crea una señal DSBSC-AM at=mt.*yc; %MODULACION SSB UTILIZANDO LA BANDA LATERAL INFERIOR %Se pasa por un filtro pasobajo con frecuencia de corte igual a la %portadora para dejar pasar solo las señales con frecuencias menores a la %frecuencia de la portadora w=fc; %Frecuencia de corte del filtro paso bajo N1=64; %Orden del filtro b1=fir1(N1,w/(fm/2),'low'); %Diseño del filtro h1=filter(b1,1,at); %Se filtra la señal %Se calcula la respuesta en frecuencia del filtro [H1 f1]=freqz(b1,1,2048,fm); %MODULACION SSB UTILIZANDO LA BANDA LATERAL SUPERIOR %Se pasa por un filtro pasoalto con frecuencia de corte igual a la %portadora para dejar pasar solo las señales con frecuencias mayores a la %frecuencia de la portadora w=fc; %Frecuencia de corte del filtro paso bajo N2=64; b2=fir1(N2,w/(fm/2),'high'); %Diseño del filtro h2=filter(b2,1,at); %Se filtra la señal %Se calcula la respuesta en frecuencia del filtro [H2 f2]=freqz(b2,1,2048,fm); %************************************************************************ %************************************************************************ %Punto (3) %************************************************************************ %Se grafican las señales producidas por el generador figure(1) subplot(3,1,1); plot(t,mt); axis([0 treq -1 1]); txt=strcat('Señal a modular con una frecuencia de ',num2str(fmt),' Hz'); title(txt); xlabel('Tiempo (segundos)'); ylabel('Amplitud'); txt=strcat('fmuestreo=',num2str(fs),' Hz'); legend(txt); grid on; 173 subplot(3,1,2); plot(t,yc); xlim([0 treq/2]); txt=strcat('Señal portadora con una frecuencia de ',num2str(fc),' Hz'); title(txt); xlabel('Tiempo (segundos)'); ylabel('Amplitud'); txt=strcat('fmuestreo=',num2str(fs),' Hz'); legend(txt); grid on; subplot(3,1,3); plot(t,at); axis([0 treq/2 -1 1]); title('Señal DSBSC-AM generada'); xlabel('Tiempo (segundos)'); ylabel('Amplitud'); txt=strcat('fmuestreo=',num2str(fs),' Hz'); legend(txt); grid on; %Respuesta en frecuencia de los filtros pasobajo y paso alto figure(2) subplot(2,1,1) plot(f1,20*log10(abs(H1)+eps),'-m'); txt=strcat('Respuesta en magnitud de un filtro FIR pasobajo N= ',num2str(N1)); title(txt); xlabel('Frecuencia (Hz)'); ylabel('Magnitud (dB)'); txt=strcat('Frecuencia de corte ',num2str(w),' Hz'); legend(txt); grid on; subplot(2,1,2) plot(f1,unwrap(angle(H1)),'-m'); txt=strcat('Respuesta de fase de un filtro FIR pasobajo N= ',num2str(N1)); title(txt); xlabel('Frecuencia (Hz)'); ylabel('Magnitud (dB)'); txt=strcat('Frecuencia de corte ',num2str(w),' Hz'); legend(txt); grid on; figure(3) subplot(2,1,1) plot(f2,20*log10(abs(H2)+eps),'-r'); txt=strcat('Respuesta en magnitud de un filtro FIR pasoalto N= ',num2str(N2)); title(txt); 174 xlabel('Frecuencia (Hz)'); ylabel('Magnitud (dB)'); txt=strcat('Frecuencia de corte ',num2str(w),' Hz'); legend(txt); grid on; subplot(2,1,2) plot(f2,unwrap(angle(H2)),'-r'); txt=strcat('Respuesta de fase de un filtro FIR pasoalto N= ',num2str(N2)); title(txt); xlabel('Frecuencia (Hz)'); ylabel('Magnitud (dB)'); txt=strcat('Frecuencia de corte ',num2str(w),' Hz'); legend(txt); grid on; %Señales después de pasar por los filtros pasobajo y pasoalto figure(4) subplot(3,1,1); plot(t,at); xlim([0 treq/2]); title('Señal DSBSC-AM generada'); xlabel('Tiempo (segundos)'); ylabel('Amplitud'); txt=strcat('fmuestreo=',num2str(fs),' Hz'); legend(txt); grid on; subplot(3,1,2); plot(t,h1,'-m'); xlim([0 treq/2]); title('Salida del filtro pasobajo selector de la banda lateral inferior'); xlabel('Tiempo (segundos)'); ylabel('Amplitud'); legend('SSB banda lateral inferior'); grid on; subplot(3,1,3); plot(t,h2,'-r'); xlim([0 treq/2]); title('Salida del filtro pasobajo selector de la banda lateral superior'); xlabel('Tiempo (segundos)'); ylabel('Amplitud'); legend('SSB banda lateral superior'); grid on; %************************************************************************ 175 %************************************************************************ %Punto (4) %************************************************************************ %CALCULO DE LOS ESPECTROS %Cálculo de la DFT utilzando la FFT para la señal DSBSC-AM Y1=fft(at,Nfft); %FFT de Nfft puntos Y1=fftshift(Y1); %Reordenamiento de los valores de la FFT norm1=max(abs(Y1)); %Para normalizar el espectro en magnitud Yf1=unwrap(angle(Y1)); %Cálculo de las componentes de fase %Cálculo de la DFT utilzando la FFT para la salida del filtro pasobajo %selector de la banda lateral inferior Y2=fft(h1,Nfft); %FFT de Nfft puntos Y2=fftshift(Y2); %Reordenamiento de los valores de la FFT norm2=max(abs(Y2)); %Para normalizar el espectro en magnitud Yf2=unwrap(angle(Y2)); %Cálculo de las componentes de fase %Cálculo de la DFT utilzando la FFT para la salida del filtro pasoalto Y3=fft(h2,Nfft); %FFT de Nfft puntos Y3=fftshift(Y3); %Reordenamiento de los valores de la FFT norm3=max(abs(Y3)); %Para normalizar el espectro en magnitud Yf3=unwrap(angle(Y3)); %Cálculo de las componentes de fase %Espectros de frecuencia de las señales figure(5) subplot(3,1,1); plot(f,abs(Y1)/norm1) title('Espectro continuo en magnitud de la señal de entrada'); xlabel('Frecuencia (Hz)'); ylabel('Magnitud normalizada |FFT|'); txt=strcat('Nfft=',num2str(Nfft),' puntos'); legend(txt); grid on; subplot(3,1,2); plot(f,abs(Y2)/norm2,'-m'); title('Espectro continuo en magnitud de la señal SSB de banda lateral inferior'); xlabel('Frecuencia (Hz)'); ylabel('Magnitud normalizada |FFT|'); txt=strcat('Nfft=',num2str(Nfft),' puntos'); legend(txt); grid on; subplot(3,1,3); plot(f,abs(Y3)/norm3,'-r'); title('Espectro continuo en magnitud de la señal SSB de banda lateral superior'); xlabel('Frecuencia (Hz)'); ylabel('Magnitud normalizada |FFT|'); txt=strcat('Nfft=',num2str(Nfft),' puntos'); 176 legend(txt); grid on; figure(6) subplot(3,1,1); plot(f,Yf1); title('Espectro continuo de fase de la señal de entrada'); xlabel('Frecuencia (Hz)'); ylabel('Fase (rads)'); txt=strcat('Nfft=',num2str(Nfft),' puntos'); legend(txt); grid on; subplot(3,1,2); plot(f,Yf2,'-m'); title('Espectro continuo de fase de la señal SSB de banda lateral inferior'); xlabel('Frecuencia (Hz)'); ylabel('Fase (rads)'); txt=strcat('Nfft=',num2str(Nfft),' puntos'); legend(txt); grid on; subplot(3,1,3); plot(f,Yf3,'-r'); title('Espectro continuo de fase de la señal SSB de banda lateral superior'); xlabel('Frecuencia (Hz)'); ylabel('Fase (rads)'); txt=strcat('Nfft=',num2str(Nfft),' puntos'); legend(txt); grid on; %************************************************************************ %************************************************************************ %DEMODULACION SSB-AM %************************************************************************ %Punto (1) y (2) %************************************************************************ %Se implementa el modulador de la figura 3.7 del laboratorio %DEMODULACION SSB DE BANDA LATERAL INFERIOR mssbinf=h1; %Se modula la señal por la portadora nuevamente a2t=mssbinf.*yc; %Luego esta señal se pasa por un filtro pasobajo con una frecuencia de %corte de tal manera que deje pasar la señal original N3=64; b3=fir1(N3,fmt/(fm/2),'low'); 177 h3=filter(b3,1,a2t); %Se calcula la respuesta en frecuencia del filtro [H3 f3]=freqz(b3,1,2048,fm); %DEMODULACION SSB DE BANDA LATERAL SUPERIOR mssbsup=h2; %Se modula la señal por la portadora nuevamente a3t=mssbsup.*yc; %Luego esta señal se pasa por un filtro pasobajo con una frecuencia de %corte de tal manera que deje pasar la señal original h4=filter(b3,1,a3t); %************************************************************************ %************************************************************************ %Punto (3) %************************************************************************ figure(7) subplot(3,1,1); plot(t,mt); axis([0 treq/2 -1 1]); txt=strcat('Señal a modular con una frecuencia de ',num2str(fmt),' Hz'); title(txt); xlabel('Tiempo (segundos)'); ylabel('Amplitud'); txt=strcat('fmuestreo=',num2str(fs),' Hz'); legend(txt); grid on; subplot(3,1,2); plot(t,h3); xlim([0 treq/2]); title('Señal reconstruida a partir de una señal SSB de banda lateral inferior'); xlabel('Tiempo (segundos)'); ylabel('Amplitud'); legend('Señal reconstruida por SSB inferior'); grid on; subplot(3,1,3); plot(t,h4); xlim([0 treq/2]); title('Señal reconstruida a partir de una señal SSB de banda lateral superior'); xlabel('Tiempo (segundos)'); ylabel('Amplitud'); legend('Señal reconstruida por SSB superior'); grid on; 178 %Respuesta en frecuencia de los filtros pasobajo y paso alto figure(8) subplot(2,1,1) plot(f3,20*log10(abs(H3)+eps),'-m'); txt=strcat('Respuesta en magnitud de un filtro FIR pasobajo N= ',num2str(N3)); title(txt); xlabel('Frecuencia (Hz)'); ylabel('Magnitud (dB)'); txt=strcat('Frecuencia de corte ',num2str(fmt),' Hz'); legend(txt); grid on; subplot(2,1,2) plot(f3,unwrap(angle(H3)),'-m'); txt=strcat('Respuesta de fase de un filtro FIR pasobajo N= ',num2str(N3)); title(txt); xlabel('Frecuencia (Hz)'); ylabel('Magnitud (dB)'); txt=strcat('Frecuencia de corte ',num2str(fmt),' Hz'); legend(txt); grid on; %************************************************************************ %************************************************************************ %Punto (4) %************************************************************************ %CALCULO DE LOS ESPECTROS %Cálculo de la DFT utilzando la FFT para la señal a modular Y4=fft(mt,Nfft); %FFT de Nfft puntos para la señal "mt" Y4=fftshift(Y4); %Reordenamiento de los valores de la FFT norm4=max(abs(Y4)); %Para normalizar el espectro en magnitud Yf4=unwrap(angle(Y4)); %Cálculo de las componentes de fase %Cálculo de la DFT utilzando la FFT para la salida del filtro pasobajo %selector de la banda lateral inferior Y5=fft(h3,Nfft); %FFT de Nfft puntos Y5=fftshift(Y5); %Reordenamiento de los valores de la FFT norm5=max(abs(Y5)); %Para normalizar el espectro en magnitud Yf5=unwrap(angle(Y5)); %Cálculo de las componentes de fase %Cálculo de la DFT utilzando la FFT para la señal DSBSC-AM Y6=fft(h4,Nfft); %FFT de Nfft puntos Y6=fftshift(Y6); %Reordenamiento de los valores de la FFT norm6=max(abs(Y6)); %Para normalizar el espectro en magnitud Yf6=unwrap(angle(Y6)); %Cálculo de las componentes de fase 179 %Espectros de frecuencia de las señales figure(9) subplot(3,1,1) plot(f,abs(Y4)/norm4) title('Espectro continuo en magnitud de la señal de entrada'); xlabel('Frecuencia (Hz)'); ylabel('Magnitud normalizada |FFT|'); txt=strcat('Nfft=',num2str(Nfft),' puntos'); legend(txt); grid on; subplot(3,1,2) plot(f,abs(Y5)/norm5,'-m') title('Espectro continuo en magnitud de la señal por demodulación SSB de banda lateral inferior'); xlabel('Frecuencia (Hz)'); ylabel('Magnitud normalizada |FFT|'); txt=strcat('Nfft=',num2str(Nfft),' puntos'); legend(txt); grid on; subplot(3,1,3) plot(f,abs(Y6)/norm6,'-r') title('Espectro continuo en magnitud de la señal por demodulación SSB de banda lateral superior'); xlabel('Frecuencia (Hz)'); ylabel('Magnitud normalizada |FFT|'); txt=strcat('Nfft=',num2str(Nfft),' puntos'); legend(txt); grid on; figure(10) subplot(3,1,1); plot(f,Yf4); title('Espectro continuo de fase de la señal de entrada'); xlabel('Frecuencia (Hz)'); ylabel('Fase (rads)'); txt=strcat('Nfft=',num2str(Nfft),' puntos'); legend(txt); grid on; subplot(3,1,2); plot(f,Yf5,'-m'); title('Espectro continuo de fase de la señal SSB de banda lateral inferior'); xlabel('Frecuencia (Hz)'); ylabel('Fase (rads)'); txt=strcat('Nfft=',num2str(Nfft),' puntos'); legend(txt); grid on; 180 subplot(3,1,3); plot(f,Yf6,'-r'); title('Espectro continuo de fase de la señal SSB de banda lateral superior'); xlabel('Frecuencia (Hz)'); ylabel('Fase (rads)'); txt=strcat('Nfft=',num2str(Nfft),' puntos'); legend(txt); grid on; %************************************************************************ 181 A.6 Código fuente laboratorio de modulación FM %************************************************************************ %LABORATORIO DE MODULACION FM %************************************************************************ %************************************************************************ %REALIZADO POR: José Gabriel Fernández Carazo % A21941 % Escuela de Ingeniería Eléctrica % Facultad de Ingeniería % Universidad de Costa Rica %************************************************************************ %Ultima modificación: Julio del 2007. %************************************************************************ %************************************************************************ %Se limpia el workspace de MATLAB y las variables en uso. clc; clear; %************************************************************************ %************************************************************************ %MODULACION FM %************************************************************************ %Punto (1) %************************************************************************ L_medio=1000; %Mitad de la cantidad de muestras a recolectar Nfft=2048; %Cantidad de puntos para calcular la FFT fm=80000; %Frecuencia de muesreo según Nyquist treq=2*L_medio/fm; %Tiempo requerido para recolectar L muestras fs=((2*L_medio-1)/treq); %División de tiempo para recolectar L muestras n=0:1/fs:treq; %Vector de muestras a recolectar t1=0:length(n)-1; %Vector en cantidad de muestras recolectadas %Vector de frecuencias para los espectros en frecuencia M=Nfft/2; faux(M+1:Nfft)=0:M-1; %Vector de frecuencias desordenado faux(1:M)=-M:-1; %Vector de frecuencias ordenado f=fm*faux/(Nfft); %Vector de frecuencias normalizado %Se genera la señal a modular Am=1; %Amplitud de la señal a modular wm=2*pi*100; %Frecuencia de la señal a modular phi=0; %Fase de la señal a modular mt=Am*cos(wm*n+phi); %Señal a modular 182 %Parametros necesarios para la modulación FM beta=5; %Indice de modulación kw=beta*wm/Am; %Desviación de frecuencia phi=-pi/2; %Se desfasa la señal mt1=Am*cos(wm*n+phi); %Se utiliza la señal original para generar el desf=beta*mt1; %Desfase de la portadora %Se genera la señal FM Ac=1; %Amplitud de la señal portadora wc=2*pi*1000; %Frecuencia de la señal portadora st=Ac*cos(wc*n+desf); %Señal FM %************************************************************************ %************************************************************************ %Punto (2) %************************************************************************ %Se grafican la señal a modular y la señal FM figure(1); subplot(2,1,1); plot(t1,mt); title('Señal de entrada original'); xlabel('Tiempo (Cantidad de muestras)'); ylabel('m(t)'); txtp=strcat('fn = ',num2str(fs),' Hz'); legend(txtp); grid on; subplot(2,1,2); plot(t1,st); title('Señal FM generada a partir de m(t)'); xlabel('Tiempo (Cantidad de muestras)'); ylabel('s(t)'); txtp=strcat('fn = ',num2str(fs),' Hz'); legend(txtp); grid on; %************************************************************************ %************************************************************************ %Punto (3) %************************************************************************ %CALCULO DE LOS ESPECTROS %Cálculo de la DFT utilzando la FFT para la señal FM Y1=fft(st,Nfft); %FFT de Nfft puntos para la señal FM Y1=fftshift(Y1); %Reordenamiento de los valores de la FFT norm1=max(abs(Y1)); %Para normalizar el espectro en magnitud Yf1=unwrap(angle(Y1)); %Cálculo de las componentes de fase de la señal figure(2) %subplot(3,1,1) plot(f,abs(Y1)/norm1); 183 title('Espectro continuo en magnitud de la señal de entrada'); xlabel('Frecuencia (Hz)'); ylabel('Magnitud normalizada |FFT|'); txt=strcat('Nfft=',num2str(Nfft),' puntos'); legend(txt); xlim([-1*10000 1*10000]); grid on; %************************************************************************ %************************************************************************ %Punto (4) %************************************************************************ %Modulación FM utilizando "modulate" %Se utiliza la misma señal del punto (1) %Señal modulada (FM) indk=0.039; gfm = modulate(mt,wc/(2*pi),fm,'fm',indk); %************************************************************************ %************************************************************************ %Punto (5) %************************************************************************ %Representación gráfica de las señales figure(3); subplot(2,1,1); plot(n,mt); txt=strcat('Señal a modular m(t) (f=',num2str(wm/(2*pi)),' Hz)'); title(txt); xlabel('Tiempo (segundos)'); ylabel('m(t)'); txt=strcat('fn = ',num2str(fs),' Hz'); legend(txt); grid on; subplot(2,1,2); plot(n,gfm); txt1=strcat('Señal FM generada a partir de m(t) (\beta = ',num2str(beta),' fc= ',num2str(wc/(2*pi)),' Hz)'); title(txt1); xlabel('Tiempo (segundos)'); ylabel('s(t)'); txt2=strcat('fn = ',num2str(fs),' Hz'); legend(txt2); grid on; %************************************************************************ %************************************************************************ %Punto (6) %************************************************************************ %Modulación FM utilizando "modulate" para difrentes índices de modulación %Se utiliza la misma señal del punto (1) 184 %Señal modulada (FM) indk=[0.1 0.09 0.5]; gfm1 = modulate(mt,wc/(2*pi),fm,'fm',indk(1)); gfm2 = modulate(mt,wc/(2*pi),fm,'fm',indk(2)); gfm3 = modulate(mt,wc/(2*pi),fm,'fm',indk(3)); %************************************************************************ %************************************************************************ %Punto (7) %************************************************************************ %Representación gráfica de las señales figure(4); subplot(3,1,1); plot(n,gfm1); xlim([0 treq/2]); txt1=strcat('Señal FM generada utilizando "modulate" (con opt= ',num2str(indk(1)),')'); title(txt1); xlabel('Tiempo (segundos)'); ylabel('m(t)'); txt=strcat('fn = ',num2str(fs),' Hz'); legend(txt); grid on; subplot(3,1,2); plot(n,gfm2); txt1=strcat('Señal FM generada utilizando "modulate" (con opt= ',num2str(indk(2)),')'); title(txt1); xlabel('Tiempo (segundos)'); ylabel('s(t)'); txt2=strcat('fn = ',num2str(fs),' Hz'); legend(txt2); grid on; subplot(3,1,3); plot(n,gfm3); xlim([0 treq/2]); txt1=strcat('Señal FM generada utilizando "modulate" (con opt= ',num2str(indk(3)),')'); title(txt1); xlabel('Tiempo (segundos)'); ylabel('s(t)'); txt2=strcat('fn = ',num2str(fs),' Hz'); legend(txt2); grid on; %************************************************************************ 185 %************************************************************************ %Punto (8) %************************************************************************ %Demodulación FM utilizando la función "demod" rmt=27*demod(st,wc/(2*pi),fm,'fm'); rmt1=5*demod(gfm1,wc/(2*pi),fm,'fm'); rmt2=5*demod(gfm2,wc/(2*pi),fm,'fm'); rmt3=5*demod(gfm3,wc/(2*pi),fm,'fm'); %************************************************************************ %************************************************************************ %Punto (9) %************************************************************************ %Representación gráfica de las señales figure(5); subplot(4,1,1); plot(n,rmt,n,mt); txt1=strcat('Señal reconstruida utilizando "demod" (con opt= ',num2str(0.039),')'); title(txt1); xlabel('Tiempo (segundos)'); ylabel('Amplitud'); legend('Señal reconstruida','Señal original'); grid on; subplot(4,1,2); plot(n,rmt1,n,mt); txt1=strcat('Señal reconstruida utilizando "demod" (con opt= ',num2str(indk(1)),')'); title(txt1); xlabel('Tiempo (segundos)'); ylabel('Amplitud'); legend('Señal reconstruida','Señal original'); grid on; subplot(4,1,3); plot(n,rmt2,n,mt); txt1=strcat('Señal reconstruida utilizando "demod" (con opt= ',num2str(indk(2)),')'); title(txt1); xlabel('Tiempo (segundos)'); ylabel('Amplitud'); legend('Señal reconstruida','Señal original'); grid on; 186 subplot(4,1,4); plot(n,rmt3,n,mt); txt1=strcat('Señal reconstruida utilizando "demod" (con opt= ',num2str(indk(3)),')'); title(txt1); xlabel('Tiempo (segundos)'); ylabel('Amplitud'); legend('Señal reconstruida','Señal original'); grid on; %************************************************************************ %************************************************************************ %Punto (10) %************************************************************************ %CALCULO DE LOS ESPECTROS %Cálculo de la DFT utilzando la FFT para la señal gfm1 Y2=fft(gfm1,Nfft); %FFT de Nfft puntos para la señal FM Y2=fftshift(Y2); %Reordenamiento de los valores de la FFT norm2=max(abs(Y2)); %Para normalizar el espectro en magnitud Yf2=unwrap(angle(Y2)); %Cálculo de las componentes de fase de la señal %Cálculo de la DFT utilzando la FFT para la señal gfm2 Y3=fft(gfm2,Nfft); %FFT de Nfft puntos para la señal FM Y3=fftshift(Y3); %Reordenamiento de los valores de la FFT norm3=max(abs(Y3)); %Para normalizar el espectro en magnitud Yf3=unwrap(angle(Y3)); %Cálculo de las componentes de fase de la señal %Cálculo de la DFT utilzando la FFT para la señal gfm3 Y4=fft(gfm3,Nfft); %FFT de Nfft puntos para la señal FM Y4=fftshift(Y4); %Reordenamiento de los valores de la FFT norm4=max(abs(Y4)); %Para normalizar el espectro en magnitud Yf4=unwrap(angle(Y4)); %Cálculo de las componentes de fase de la señal %se grafican los espectros en frecuencia para cada señal figure(6) subplot(3,1,1) plot(f,abs(Y2)/norm2); txt=strcat('Espectro continuo en magnitud de la señal FM (con opt=',num2str(indk(1)),')'); title(txt); xlabel('Frecuencia (Hz)'); ylabel('Magnitud normalizada |FFT|'); txt=strcat('Nfft=',num2str(Nfft),' puntos'); legend(txt); xlim([-1*10000 1*10000]); grid on; 187 subplot(3,1,2) plot(f,abs(Y3)/norm3); txt=strcat('Espectro continuo en magnitud de la señal FM (con opt=',num2str(indk(2)),')'); title(txt); xlabel('Frecuencia (Hz)'); ylabel('Magnitud normalizada |FFT|'); txt=strcat('Nfft=',num2str(Nfft),' puntos'); legend(txt); xlim([-1*10000 1*10000]); grid on; subplot(3,1,3) plot(f,abs(Y4)/norm4); txt=strcat('Espectro continuo en magnitud de la señal FM (con opt=',num2str(indk(3)),')'); title(txt); xlabel('Frecuencia (Hz)'); ylabel('Magnitud normalizada |FFT|'); txt=strcat('Nfft=',num2str(Nfft),' puntos'); legend(txt); xlim([-1*10000 1*10000]); grid on; %************************************************************************ 188 A.7 Código fuente laboratorio de modulación PAM %************************************************************************ %LABORATORIO DE MODULACION PAM %************************************************************************ %************************************************************************ %REALIZADO POR: José Gabriel Fernández Carazo % A21941 % Escuela de Ingeniería Eléctrica % Facultad de Ingeniería % Universidad de Costa Rica %************************************************************************ %Ultima modificación: Julio del 2007. %************************************************************************ %************************************************************************ %Se limpia el workspace de MATLAB y las variables en uso. clc; clear; %************************************************************************ %************************************************************************ %MODULACION Y DEMODULACION PAM %************************************************************************ %Punto (1) %************************************************************************ L_medio=500; %Mitad de la cantidad de muestras a recolectar Nfft=2048; %Cantidad de puntos para calcular la FFT fm=1000; %Frecuencia de muesreo según Nyquist treq=2*L_medio/fm; %Tiempo requerido para recolectar L muestras fs=((2*L_medio-1)/treq); %División de tiempo para recolectar L muestras n=0:1/fs:treq; %Vector de muestras a recolectar num_n=0:length(n)-1; %Vector en cantidad de muestras recolectadas %Vector de frecuencias para los espectros en frecuencia M=Nfft/2; faux(M+1:Nfft)=0:M-1; %Vector de frecuencias desordenado faux(1:M)=-M:-1; %Vector de frecuencias ordenado f=fm*faux/(Nfft); %Vector de frecuencias normalizado %Señal a modular Am=10; wm=4*pi; ym=Am*cos(wm*n); %Luego se añade un nivel DC a la señal anterior ymdc=ym+max(abs(ym)); 189 %Tren de pulsos o cuantificador pulsos=(square(2*pi*30*n,25)+1)/2; %Luego se obtiene la señal modulada por amplitud de pulsos spam=ymdc.*pulsos; %************************************************************************ %************************************************************************ %Punto (2) %************************************************************************ %Se grafican los resultados figure(1) subplot(3,1,1); plot(n,ym); title('Señal a modular'); xlabel('Tiempo (segundos)'); ylabel('m(t)'); txt=strcat('fmuestreo= ',num2str(fm),' Hz'); legend(txt); grid on; subplot(3,1,2); plot(n,pulsos); title('Tren de pulsos o cuantificador'); xlabel('Tiempo (segundos)'); ylabel('g(t)'); txt=strcat('fmuestreo= ',num2str(fm),' Hz'); legend(txt); grid on; subplot(3,1,3) plot(n,spam); title('Señal modulada empleando modulación por amplitud de pulsos'); xlabel('Tiempo (segundos)'); ylabel('s(t)'); txt=strcat('fmuestreo= ',num2str(fm),' Hz'); legend(txt); grid on; %Cálculo de la DFT utilzando la FFT para la señal a modular Y1=fft(ym,Nfft); %FFT de Nfft puntos Y1=fftshift(Y1); %Reordenamiento de los valores de la FFT norm1=max(abs(Y1)); %Para normalizar el espectro en magnitud Yf1=unwrap(angle(Y1)); %Cálculo de las componentes de fase de la señal %Cálculo de la DFT utilzando la FFT para la señal modulada Y2=fft(spam,Nfft); %FFT de Nfft puntos Y2=fftshift(Y2); %Reordenamiento de los valores de la FFT norm2=max(abs(Y2)); %Para normalizar el espectro en magnitud Yf2=unwrap(angle(Y2)); %Cálculo de las componentes de fase de la señal 190 %Grafica del espectro de frecuencia de la señal a modular figure(2) subplot(2,1,1); plot(f,abs(Y1)/norm1); title('Espectro continuo en magnitud de la señal a modular'); xlabel('Frecuencia (Hz)'); ylabel('Magnitud normalizada |FFT|'); txt=strcat('Nfft=',num2str(Nfft),' puntos'); legend(txt); xlim([-50 50]); grid on; subplot(2,1,2); plot(f,Yf1); title('Espectro continuo de fase de la señal a modular'); xlabel('Frecuencia (Hz)'); ylabel('Magnitud normalizada |FFT|'); txt=strcat('Nfft=',num2str(Nfft),' puntos'); legend(txt); xlim([-50 50]); grid on; %Grafica del espectro de frecuencia de la señal modulada figure(3) subplot(2,1,1); plot(f,abs(Y2)/norm2); title('Espectro continuo en magnitud de la señal modulada'); xlabel('Frecuencia (Hz)'); ylabel('Magnitud normalizada |FFT|'); txt=strcat('Nfft=',num2str(Nfft),' puntos'); legend(txt); grid on; subplot(2,1,2); plot(f,Yf2); title('Espectro continuo de fase de la señal a modulada'); xlabel('Frecuencia (Hz)'); ylabel('Magnitud normalizada |FFT|'); txt=strcat('Nfft=',num2str(Nfft),' puntos'); legend(txt); grid on; %************************************************************************ %************************************************************************ %Punto (3) %************************************************************************ %Ejemplo simple de cuantificación partition = [0,1,3]; %Criterio de evaluación de muestras codebook = [-1,0.5,2,3]; %Niveles de cuantifficación o símbolos samp = [-2.4,-1,-0.2,0,0.2,1,1.2,1.9,2,2.9,3,3.5,5]; %Muestras 191 [index,quantized] = quantiz(samp,partition,codebook); %Cuantificador index %Muestra el nivel otorgado quantized %Muestras cuantificadas %************************************************************************ %************************************************************************ %Punto (4) %************************************************************************ L_medio=200; %Mitad de la cantidad de muestras a recolectar Nfft=2048; %Cantidad de puntos para calcular la FFT fm=4000; %Frecuencia de muesreo según Nyquist treq=2*L_medio/fm; %Tiempo requerido para recolectar L muestras fs=((2*L_medio-1)/treq); %División de tiempo para recolectar L muestras n1=0:1/fs:treq; %Vector de muestras a recolectar %Muestreo de la señal a modular Am=15; wm=2*pi*100; ym1=Am*sin(wm*n1); %Se añade un nivel DC suficiente para no tener valores negativos ym1dc=ym1+max(abs(ym1)); %CUANTIFICACION %Se define la partición a=round(max(ym1dc)); particion = [0:1:a-1]; simbolos = [0:1:a]; %La longitud de la partición debe ser una %unidad menor que le codebook %Niveles de cuantioficación o símbolos %Cuantificación [intervalos,sencuant] = quantiz(ym1dc,particion,simbolos); %************************************************************************ %************************************************************************ %Punto (5) %************************************************************************ %Modualción PAM utilizando pammod b=[4 8 16 32 64 128 256 512]; %Niveles en potencia de 2 L=length(b); %Búsqueda del M apropiado dependiendo de la amplitud de la señal una vez %cuantificada M=0; %Inicialización de M i=1; while M==0 if b(i)>a M=b(i) end i=i+1; end 192 %Modulación PAM spam1=pammod(sencuant,M); %************************************************************************ %************************************************************************ %Punto (6) %************************************************************************ %se grafican los resultados figure(4) subplot(3,1,1); plot(n1,ym1); title('Señal a modular'); xlabel('Tiempo (segundos)'); ylabel('m(t)'); txt=strcat('fmuestreo= ',num2str(fm),' Hz'); legend(txt); xlim([0 treq/3]) grid on; subplot(3,1,2); plot(n1,sencuant,'-xb'); hold on; stem(n1,sencuant,'.c'); hold off; title('Señal muestreada y cuantificada'); xlabel('Tiempo (segundos)'); ylabel('Amplitud'); txt=strcat('fmuestreo= ',num2str(fm),' Hz'); legend(txt); xlim([0 treq/3]); grid on; subplot(3,1,3); plot(n1,real(spam1),'m'); txt=strcat('Señal modulada mediante la función "pammod". M=',num2str(M),' símbolos.'); title(txt); xlabel('Tiempo (segundos)'); ylabel('Amplitud'); txt=strcat('fmuestreo= ',num2str(fm),' Hz'); legend(txt); xlim([0 treq/3]); grid on; %************************************************************************ %************************************************************************ %Punto (7) %************************************************************************ %Demodulación utilizando pamdemod z=pamdemod(spam1,M); 193 %Se recupera la señal original eliminando el nivel DC z1=z-max(abs(ym1)); %se grafican los resultados figure(5) subplot(2,1,1) plot(n1,ym1) title('Señal original'); xlabel('Tiempo (segundos)'); ylabel('Amplitud'); txt=strcat('fmuestreo= ',num2str(fm),' Hz'); legend(txt); xlim([0 treq/3]); grid on; subplot(2,1,2) plot(n1,z1,n1,ym1,':r') title('Señal demodulada'); xlabel('Tiempo (segundos)'); ylabel('Amplitud'); legend('Señal reconstruida','Señal original'); xlim([0 treq/3]); grid on; %************************************************************************ %************************************************************************ %Punto (8) %************************************************************************ %Cálculo de la DFT utilzando la FFT para la señal modulada Y3=fft(spam1,Nfft); %FFT de Nfft puntos Y3=fftshift(Y3); %Reordenamiento de los valores de la FFT norm3=max(abs(Y3)); %Para normalizar el espectro en magnitud Yf3=unwrap(angle(Y3)); %Cálculo de las componentes de fase de la señal figure(6) subplot(2,1,1); plot(f,abs(Y3)/norm3); title('Espectro continuo en magnitud de la señal modulada'); xlabel('Frecuencia (Hz)'); ylabel('Magnitud normalizada |FFT|'); txt=strcat('Nfft=',num2str(Nfft),' puntos'); legend(txt); grid on; subplot(2,1,2); plot(f,Yf3,'m'); title('Espectro continuo de fase de la señal a modulada'); xlabel('Frecuencia (Hz)'); ylabel('Magnitud normalizada |FFT|'); 194 txt=strcat('Nfft=',num2str(Nfft),' puntos'); legend(txt); grid on; %Cálculo de la DFT utilzando la FFT para la señal demodulada Y4=fft(z1,Nfft); %FFT de Nfft puntos Y4=fftshift(Y4); %Reordenamiento de los valores de la FFT norm4=max(abs(Y4)); %Para normalizar el espectro en magnitud Yf4=unwrap(angle(Y4)); %Cálculo de las componentes de fase de la señal figure(7) subplot(2,1,1); plot(f,abs(Y4)/norm3); title('Espectro continuo en magnitud de la señal demodulada'); xlabel('Frecuencia (Hz)'); ylabel('Magnitud normalizada |FFT|'); txt=strcat('Nfft=',num2str(Nfft),' puntos'); legend(txt); grid on; subplot(2,1,2); plot(f,Yf4,'m'); title('Espectro continuo de fase de la señal a demodulada'); xlabel('Frecuencia (Hz)'); ylabel('Magnitud normalizada |FFT|'); txt=strcat('Nfft=',num2str(Nfft),' puntos'); legend(txt); grid on; %************************************************************************ %************************************************************************ %Punto (9) %************************************************************************ %Se obtiene un diagrama de ojo utilizando la función eyediagram eyediagram(real(spam1),M); title('Diagrama de Ojo para la señal PAM'); xlabel('Tiempo (s)'); ylabel('Amplitud'); grid on; %************************************************************************ 195 A.8 Código fuente laboratorio de modulación QAM %************************************************************************ %LABORATORIO DE MODULACION QAM %************************************************************************ %************************************************************************ %REALIZADO POR: José Gabriel Fernández Carazo % A21941 % Escuela de Ingeniería Eléctrica % Facultad de Ingeniería % Universidad de Costa Rica %************************************************************************ %Ultima modificación: Junio del 2007. %************************************************************************ %************************************************************************ %Se limpia el workspace de MATLAB y las variables en uso. clc; clear; %************************************************************************ %************************************************************************ %MODULACION QAM %************************************************************************ %Punto (1) %************************************************************************ %Variables iniciales L_medio=200; %Mitad de la cantidad de muestras a recolectar Nfft=2048; %Cantidad de puntos para calcular la FFT fm=4000; %Frecuencia de muesreo según Nyquist treq=2*L_medio/fm; %Tiempo requerido para recolectar L muestras fs=((2*L_medio-1)/treq); %División de tiempo para recolectar L muestras n1=0:1/fs:treq; %Vector de muestras a recolectar %Muestreo de la señal a modular Am=7; wm1=2*pi*180; wm2=2*pi*25; ym1=Am*sin(wm1*n1); ym2=Am*sin(wm2*n1); ymt=ym1+ym2; %Se añade un nivel DC suficiente para no tener valores negativos ymtdc=ymt+max(abs(ymt)); 196 %CUANTIFICACION %Se define la partición a=round(max(ymtdc)); particion = [0:1:a-1]; simbolos = [0:1:a]; %La longitud de la partición debe ser una %unidad menor que le codebook %Niveles de cuantificación o símbolos %Cuantificación [intervalos,sencuant] = quantiz(ymtdc,particion,simbolos); %************************************************************************ %************************************************************************ %Punto (2) %************************************************************************ %Grafica de la señal a modular figure(1) subplot(3,1,1); plot(n1,ym1,'-r'); title('Señal con frecuencia 180 Hz'); xlabel('Tiempo (segundos)'); ylabel('m(t)'); txt=strcat('fmuestreo= ',num2str(fm),' Hz'); legend(txt); grid on; subplot(3,1,2); plot(n1,ym2,'-g'); title('Señal con frecuencia 25 Hz'); xlabel('Tiempo (segundos)'); ylabel('Amplitud'); txt=strcat('fmuestreo= ',num2str(fm),' Hz'); legend(txt); grid on; subplot(3,1,3); plot(n1,ymt); title('Señal a modular'); xlabel('Tiempo (segundos)'); ylabel('Amplitud'); txt=strcat('fmuestreo= ',num2str(fm),' Hz'); legend(txt); grid on; %señal cuantificada figure(2) subplot(2,1,1); plot(n1,ymt); title('Señal a modular'); xlabel('Tiempo (segundos)'); ylabel('m(t)'); txt=strcat('fmuestreo= ',num2str(fm),' Hz'); 197 legend(txt); grid on; subplot(2,1,2); plot(n1,sencuant,'-xb'); hold on; stem(n1,sencuant,'.r'); hold off; title('Señal muestreada y cuantificada'); xlabel('Tiempo (segundos)'); ylabel('Amplitud'); txt=strcat('fmuestreo= ',num2str(fm),' Hz'); legend(txt); xlim([0 treq/3]); grid on; %************************************************************************ %************************************************************************ %Punto (3) %************************************************************************ %Modulación QAM utilizando qammod b=[4 8 16 32 64 128 256 512]; %Niveles en potencia de 2 L=length(b); %Búsqueda del M apropiado dependiendo de la amplitud de la señal una vez %cuantificada M=0; %Inicialización de M i=1; while M==0 if b(i)>a M=b(i); %Asignación de un M end i=i+1; end %Modulación QAM sqam=qammod(sencuant,M); %grafica de la señal en cuadratura y fase figure(3) subplot(2,1,1); plot(real(sqam),'-g'); title('Señal QAM en cuadratura'); xlabel('Tiempo (segundos)'); ylabel('Amplitud'); grid on; subplot(2,1,2); plot(imag(sqam),'-m'); title('Señal QAM en fase'); xlabel('Tiempo (segundos)'); 198 ylabel('Amplitud'); grid on; %************************************************************************ %************************************************************************ %Punto (4) %************************************************************************ %Señal QAM transmitida ytx = sqam; %Simulación de un canal AWGN %Se envia la señal través de este canal k=log2(M); EbNo = 10; %Tasa de energía de la densidad de energía espectral dB snr = EbNo + 10*log10(k) - 10*log10(1);%Tasa de ruido por muestra ynoisy = awgn(ytx,snr,'measured'); %Se genera la nueva señal con ruido %************************************************************************ %************************************************************************ %Punto (5) %************************************************************************ %La nueva señal es recibida yrx = ynoisy; %Se analiza la señal QAM utilizando un diagrama de constelación M valores h=scatterplot(yrx,1,0,'g.'); hold on; scatterplot(ytx,1,0,'k*',h); title('Señal QAM'); ylabel('En Cuadratura'); xlabel('En Fase'); legend('Señal con ruido','Señal sin ruido',4); grid on; hold off; %************************************************************************ %************************************************************************ %Punto (6) %************************************************************************ %Demodulación QAM utilizando "qamdemod" %Se demodula la señal sin ruido z1=qamdemod(ytx,M); z1=z1-max(abs(ymt)); %Se demodula la señal con ruido z2=qamdemod(yrx,M); z2=z2-max(abs(ymt)); 199 figure(5) subplot(2,1,1) plot(n1,z1,n1,ymt); title('Señal demodulada a partir de una señal QAM sin ruido'); xlabel('Tiempo (segundos)'); ylabel('Amplitud'); legend('Señal reconstruida','Señal original'); grid on; subplot(2,1,2) plot(n1,z2,n1,ymt); title('Señal demodulada a partir de una señal QAM con ruido'); xlabel('Tiempo (segundos)'); ylabel('Amplitud'); legend('Señal reconstruida','Señal original'); grid on; %************************************************************************ %************************************************************************ %Punto (7) %************************************************************************ %Vector de frecuencias para los espectros en frecuencia M=Nfft/2; faux(M+1:Nfft)=0:M-1; %Vector de frecuencias desordenado faux(1:M)=-M:-1; %Vector de frecuencias ordenado f=fm*faux/(Nfft); %Vector de frecuencias normalizado %Cálculo de la DFT utilzando la FFT para la señal a modular Y1=fft(ymt,Nfft); %FFT de Nfft puntos Y1=fftshift(Y1); %Reordenamiento de los valores de la FFT norm1=max(abs(Y1)); %Para normalizar el espectro en magnitud Yf1=unwrap(angle(Y1)); %Cálculo de las componentes de fase de la señal %Cálculo de la DFT utilzando la FFT para la señal modulada sin ruido Y2=fft(ytx,Nfft); %FFT de Nfft puntos Y2=fftshift(Y2); %Reordenamiento de los valores de la FFT norm2=max(abs(Y2)); %Para normalizar el espectro en magnitud Yf2=unwrap(angle(Y2)); %Cálculo de las componentes de fase de la señal %Cálculo de la DFT utilzando la FFT para la señal modulada con ruido Y3=fft(yrx,Nfft); %FFT de Nfft puntos Y3=fftshift(Y3); %Reordenamiento de los valores de la FFT norm3=max(abs(Y3)); %Para normalizar el espectro en magnitud Yf3=unwrap(angle(Y3)); %Cálculo de las componentes de fase de la señal %Cálculo de la DFT utilzando la FFT para la señal demodulada sin ruido Y4=fft(z1,Nfft); %FFT de Nfft puntos Y4=fftshift(Y4); %Reordenamiento de los valores de la FFT norm4=max(abs(Y4)); %Para normalizar el espectro en magnitud Yf4=unwrap(angle(Y4)); %Cálculo de las componentes de fase de la señal 200 %Cálculo de la DFT utilzando la FFT para la señal demodulada con ruido Y5=fft(z2,Nfft); %FFT de Nfft puntos Y5=fftshift(Y5); %Reordenamiento de los valores de la FFT norm5=max(abs(Y5)); %Para normalizar el espectro en magnitud Yf5=unwrap(angle(Y5)); %Cálculo de las componentes de fase de la señal %Grafica del espectro de frecuencia de la señal a modular figure(6) subplot(2,1,1); plot(f,abs(Y1)/norm1); title('Espectro continuo en magnitud de la señal a modular'); xlabel('Frecuencia (Hz)'); ylabel('Magnitud normalizada |FFT|'); txt=strcat('Nfft=',num2str(Nfft),' puntos'); legend(txt); grid on; subplot(2,1,2); plot(f,Yf1); title('Espectro continuo de fase de la señal a modular'); xlabel('Frecuencia (Hz)'); ylabel('Magnitud normalizada |FFT|'); txt=strcat('Nfft=',num2str(Nfft),' puntos'); legend(txt); grid on; %Grafica del espectro de frecuencia de la señal modulada sin ruido figure(7) subplot(2,1,1); plot(f,abs(Y2)/norm2); title('Espectro continuo en magnitud de la señal QAM sin ruido'); xlabel('Frecuencia (Hz)'); ylabel('Magnitud normalizada |FFT|'); txt=strcat('Nfft=',num2str(Nfft),' puntos'); legend(txt); grid on; subplot(2,1,2); plot(f,Yf2); title('Espectro continuo de fase de la señal QAM sin ruido'); xlabel('Frecuencia (Hz)'); ylabel('Magnitud normalizada |FFT|'); txt=strcat('Nfft=',num2str(Nfft),' puntos'); legend(txt); grid on; 201 %Grafica del espectro de frecuencia de la señal modulada con ruido figure(8) subplot(2,1,1); plot(f,abs(Y3)/norm3); title('Espectro continuo en magnitud de la señal QAM con ruido'); xlabel('Frecuencia (Hz)'); ylabel('Magnitud normalizada |FFT|'); txt=strcat('Nfft=',num2str(Nfft),' puntos'); legend(txt); grid on; subplot(2,1,2); plot(f,Yf3); title('Espectro continuo de fase de la señal QAM con ruido'); xlabel('Frecuencia (Hz)'); ylabel('Magnitud normalizada |FFT|'); txt=strcat('Nfft=',num2str(Nfft),' puntos'); legend(txt); grid on; %Grafica del espectro de frecuencia de la señal demodulada sin ruido figure(9) subplot(2,1,1); plot(f,abs(Y4)/norm4); title('Espectro continuo en magnitud de la señal demodulada sin ruido'); xlabel('Frecuencia (Hz)'); ylabel('Magnitud normalizada |FFT|'); txt=strcat('Nfft=',num2str(Nfft),' puntos'); legend(txt); grid on; subplot(2,1,2); plot(f,Yf4); title('Espectro continuo de fase de la señal demodulada sin ruido'); xlabel('Frecuencia (Hz)'); ylabel('Magnitud normalizada |FFT|'); txt=strcat('Nfft=',num2str(Nfft),' puntos'); legend(txt); grid on; %Grafica del espectro de frecuencia de la señal demodulada con ruido figure(10) subplot(2,1,1); plot(f,abs(Y5)/norm5); title('Espectro continuo en magnitud de la señal demodulada con ruido'); xlabel('Frecuencia (Hz)'); ylabel('Magnitud normalizada |FFT|'); txt=strcat('Nfft=',num2str(Nfft),' puntos'); legend(txt); grid on; 202 subplot(2,1,2); plot(f,Yf5); title('Espectro continuo de fase de la señal demodulada con ruido'); xlabel('Frecuencia (Hz)'); ylabel('Magnitud normalizada |FFT|'); txt=strcat('Nfft=',num2str(Nfft),' puntos'); legend(txt); grid on; %************************************************************************ 203 APÉNDICE B: Diagramas de bloques de los ejercicios de simulación en SIMULINK B.1 Simulación: laboratorio de filtros digitales ************************************************************************ LABORATORIO DE FILTROS DIGITALES ************************************************************************ REALIZADO POR: José Gabriel Fernández Carazo A21941 Escuela de Ingeniería Eléctrica Facultad de Ingeniería Universidad de Costa Rica ************************************************************************ Ultima modificación: Julio del 2007. ************************************************************************ Onda de 720 Hz FDATool Onda de 1440 Hz Add Zero-Order Hold Filtro FIR N=64 Hamming Salida del filtro pasabanda FIR Onda de 3000 Hz Señales Señal completa FDATool Onda de 120 Hz Filtro pasabanda IIR N=6 Chebyshev Tipo I Onda de 400 Hz Add1 Zero-Order Hold1 FDATool Onda de 680 Hz Señales1 Señal completa1 204 Salida del filtro pasabanda Filtro rechaza banda IIR N=6 Chebyshev Tipo I1 Salida del filtro rechaza banda B.2 Simulación: laboratorio de FFT ************************************************************************ LABORATORIO FFT ************************************************************************ REALIZADO POR: José Gabriel Fernández Carazo A21941 Escuela de Ingeniería Eléctrica Facultad de Ingeniería Universidad de Costa Rica ************************************************************************ Ultima modificación: Julio del 2007. ************************************************************************ Señal de entrada B-FFT Espectro de la señal de entrada FDATool Salida del filtro pasoabajo Salida f iltro pasobajo Onda de 1500 Hz Filtro Pasobajo FIR N=36 Hamming Onda de 175 Hz Onda de 1200 Hz B-FFT Espectro de la salida del filtro pasobajo Zero-Order Hold FDATool Salida del filtro pasabanda Salida f iltro pasabanda Onda de 2325 Hz Filtro FIR N=36 Pasabanda Kaiser B-FFT Espectro de la salida del filtro pasabanda FDATool Salida del filtro pasoalto Salida f iltro pasoalto Filtro FIR N=36 Pasoalto Hamming B-FFT Espectro de la salida del filtro pasoalto 205 B.3 Simulación: laboratorio de modulación AM ************************************************************************ LABORATORIO MODULACION AM ************************************************************************ REALIZADO POR: José Gabriel Fernández Carazo A21941 Escuela de Ingeniería Eléctrica Facultad de Ingeniería Universidad de Costa Rica ************************************************************************ Ultima modificación: Julio del 2007. ************************************************************************ Señal a modular1 Seña a modular Zero-Order Hold2 B-FFT Espectro de la señal a modular Señal a modular Product 0.5 Zero-Order Hold Modulador Señal modulada ka 1 Nivel DC Señal portadora Zero-Order Hold1 Detector de envolvente de Ley Cuadrática Señal reconstruida FDATool 1.7-1.7z-1 sqrt 2-1.4z-1 Señal reconstruida Filtro pasoalto para eliminar DC Raíz cuadrada1 Raíz cuadrada 206 Salida del filtro pasobajo 2 Elevador Filtro FIR pasobajo N=36 Hamming B-FFT Espectro de la salida del filtro paso alto u B.4 Simulación: laboratorio de modulación DSBSC-AM ************************************************************************ LABORATORIO MODULACION DSBSC-AM ************************************************************************ REALIZADO POR: José Gabriel Fernández Carazo A21941 Escuela de Ingeniería Eléctrica Facultad de Ingeniería Universidad de Costa Rica ************************************************************************ Ultima modificación: Julio del 2007. ************************************************************************ Sen de 20Hz Zero-Order Hold1 Fcn Señal a modular Product exp(-0.5*(u)) Clock Señal a modular B-FFT Zero-Order Hold2 Espectro señal a modular Señal modulada Señal portadora Zero-Order Hold Product1 Señal modulada B-FFT Espectro portadora Demodulador FDATool Señal demodulada LO (Oscilador Local) Zero-Order Hold3 Product3 Señal demodulada Filtro FIR pasobajo N=24 Hamming B-FFT Espectro de la salida del filtro pasobajo 207 B.5 Simulación: laboratorio de modulación SSB-AM ************************************************************************ LABORATORIO MODULACION SSB-AM ************************************************************************ REALIZADO POR: José Gabriel Fernández Carazo A21941 Escuela de Ingeniería Eléctrica Facultad de Ingeniería Universidad de Costa Rica ************************************************************************ Ultima modificación: Julio del 2007. ************************************************************************ Señal a modular Señal a modular Sen de 600Hz Zero-Order Hold1 B-FFT Product1 Zero-Order Hold Espectro de la señal a modular Señal portadora Señal DSBSC-AM Señal DSBSC-AM MODULACION SSB-AM Modulador SSB-AM (Banda lateral inferior) B-FFT FDATool Espectro de la señal DSBSC-AM Señal SSB-AM banda lateral inferior Señal SSB-AM banda lateral inf erior Filtro FIR pasobajo N=36 Hamming B-FFT Espectro de la señal SSB-AM banda lateral inferior Modulador SSB-AM (Banda lateral superior) FDATool Señal SSB-AM banda lateral superior Señal SSB-AM banda lateral superior Filtro FIR pasoalto N=36 Hamming B-FFT Espectro de la señal SSB-AM banda lateral superior FDATool DEMODULACION SSB-AM Product2 Filtro FIR pasobajo N=36 Hamming1 FDATool Señal portadora1 Zero-Order Hold2 Product3 Filtro FIR pasobajo N=36 Hamming2 208 Señal reconstruida con banda lateral inferior Señal reconstruida con banda lateral superior Comparación B.6 Simulación: laboratorio de modulación FM ************************************************************************ LABORATORIO MODULACION FM ************************************************************************ REALIZADO POR: José Gabriel Fernández Carazo A21941 Escuela de Ingeniería Eléctrica Facultad de Ingeniería Universidad de Costa Rica ************************************************************************ Ultima modificación: Julio del 2007. ************************************************************************ MODULACION DE UN TONO SIMPLE Señal a modular Señal a modular Sen de 100Hz Zero-Order Hold1 B-FFT Señal a modular Espectro señal a modular Comparación Señal FM Señal FM FM FM Modulator Passband Señal FM B-FFT Espectro señal FM FM FM Demodulator Passband FDATool Señal demodulada Señal demodulada Filtro Chebyshev Tipo I N=6 pasobajo B-FFT Espectro señal demodulada 209 B.7 Simulación: laboratorio de modulación PAM ************************************************************************ LABORATORIO MODULACION PAM ************************************************************************ REALIZADO POR: José Gabriel Fernández Carazo A21941 Escuela de Ingeniería Eléctrica Facultad de Ingeniería Universidad de Costa Rica ************************************************************************ Ultima modificación: Julio del 2007. ************************************************************************ MODULACION PAM Random Integer Integer to Bit Converter M-PAM Señal PAM Random Integer Generator M-PAM Modulator Baseband Señal aleatoria de enteros positivos Se convierten en bits B-FFT Espectro señal PAM |u| Abs Señal PAM Diagrama de Ojo Señal PAM M-PAM M-PAM Demodulator Baseband Bit to Integer Converter Bit to Integer Converter Señal reconstruida Señal reconstruida B-FFT Espectro señal reconstruida 210 B.8 Simulación: laboratorio de modulación QAM ************************************************************************ LABORATORIO MODULACION QAM ************************************************************************ REALIZADO POR: José Gabriel Fernández Carazo A21941 Escuela de Ingeniería Eléctrica Facultad de Ingeniería Universidad de Costa Rica ************************************************************************ Ultima modificación: Julio del 2007. ************************************************************************ MODULACION QAM Random Integer Random Integer Generator Rectangular QAM Rectangular QAM Modulator Baseband Señal aleatoria de enteros positivos Señal QAM B-FFT Espectro señal QAM Señal QAM Re(u) Im(u) Cuadratura Complex to Real-Imag Rectangular QAM Constelación señal QAM sin ruido AWGN AWGN Channel Señal reconstruida sin ruido Rectangular QAM Demodulator Baseband1 Fase Señal QAM Señal reconstruida sin ruido en el canal B-FFT Espectro señal reconstruida sin ruido en el canal Constelación señal QAM con ruido Rectangular QAM Rectangular QAM Demodulator Baseband Señal reconstruida con ruido Señal reconstruida con ruido en el canal B-FFT Espectro señal reconstruida con ruido en el canal 211