scieee AI-readable full text Open interactive document viewer

Diseño e implementación de un módem con modulación QPSK

Delgado Encinas, Luis Miguel

Full text

47UNIVERSIDAD POLITECNICA DE VALENCIA E S C U E LA P O L I T E C N I C A S U P E R I O R D E G A N D I A “Diseño e implementación de un módem con modulación QPSK” TRABAJO FINAL DE CARRERA Autor/es: Luis Miguel Delgado Encinas Director/es: D. Vicenç Almenar Terré GANDIA, 5 de septiembre de 2011 Índice del Proyecto Capítulo 1 - Introducción......................................................................................................................5 1.1 Descripción de funcionamiento de un módem..........................................................................7 1.1.1 Desarrollo de módems para ordenadores...........................................................................8 Capítulo 2 - Diseño inicial del Módem en BPSK.................................................................................9 2.1 Introducción...............................................................................................................................9 2.2 Esquema del transmisor-receptor inicial..................................................................................11 2.2.1 Transmisor........................................................................................................................11 2.2.1.1. Interpolación............................................................................................................11 2.2.1.2. Conformación de pulso............................................................................................11 Diagrama de ojos.............................................................................................................14 2.2.1.3. Filtro CIC (Cascade Comb Integrator)....................................................................16 Estructura y diseño.........................................................................................................16 2.2.1.4. Parámetros globales del transmisión.......................................................................21 2.2.2 Receptor...........................................................................................................................21 2.2.3 Conclusiones....................................................................................................................22 2.3 Esquema del transmisor-receptor básico con subida en frecuencia.........................................23 2.3.1 Transmisor........................................................................................................................23 Subida en frecuencia........................................................................................................23 Interfaz analógico del transmisor....................................................................................23 2.3.2 Receptor...........................................................................................................................24 Interfaz analógico del receptor........................................................................................24 Conversión a banda base................................................................................................26 2.3.3 Conclusiones....................................................................................................................28 2.4 Evaluación del transmisor-receptor básico con ruido en el canal............................................29 2.4.1 Interferencia introducida en el canal: Ruido....................................................................29 2.4.2 Análisis de los errores en el receptor...............................................................................30 2.4.2.1. Probabilidad de error de bit (Bit Error Rate) para la modulación BPSK................30 Modelo del canal.............................................................................................................30 Cálculo de la probabilidad de error.................................................................................31 Probabilidad de error cuando s1 fue transmitida.............................................................32 Probabilidad de error cuando s0 fue transmitida.............................................................32 Probabilidad total de error de bit.....................................................................................32 2.4.2.2. Simulación del sistema diseñado.............................................................................32 Procedimiento de la simulación.......................................................................................33 2.5 Evaluación del transmisor y receptor con ecualización adaptativa.........................................35 2.5.1 Interferencia introducida en el canal: Multicamino.........................................................35 2.5.1.1. Receptor con ecualización......................................................................................36 Ecualización LMS...........................................................................................................38 2.5.1.2. Simulación del diseño.............................................................................................40 2.6 Evaluación del transmisor y receptor con sincronización en fase y frecuencia.......................42 2.6.1 Sincronización de portadora.............................................................................................42 2.6.1.1. Sincronización de Fase: PLL...................................................................................43 2.6.1.2. Sincronización de Frecuencia..................................................................................43 2.6.1.3. Lazo de costas.........................................................................................................44 Implementación digital del lazo de costas.......................................................................45 Lazo de Costas de segundo orden....................................................................................46 2.6.1.4. Simulación del sistema con el lazo de costas..........................................................48 2.6.1.5. Detector con recuperación de la fase de la portadora para BPSK con decisión Índice 2 dirigida..................................................................................................................................50 2.7 Evaluación del transmisor y receptor con Ecualización ciega.................................................51 2.7.1 Ecualización LMS con decisión directa (ó LMS Direct Decision)..................................51 2.7.2 Simulación de la ecualización LMS DD..........................................................................53 2.7.3 Ecualización CMA...........................................................................................................53 2.7.4 Simulación de la ecualización CMA................................................................................55 2.7.5 Simulación de los ecualizadores LMS, LMS DD y CMA...............................................56 2.8 Evaluación del transmisor-receptor con errores de sincronización en tiempo........................57 2.8.1 Introducción a la sincronización de tiempo de símbolo...................................................59 2.8.2 Adaptación del receptor con ecualizador adaptativo fraccionario...................................62 2.8.3 Sincronización de tiempo con el método “hiccuping”.....................................................62 Seguimiento y compensación de las variaciones en la velocidad de muestreo...............62 2.8.4 Simulación del método 'hiccuping'..................................................................................66 2.8.5 Simulación del sistema con ecualización y sincronización en tiempo.............................67 Capítulo 3 - Adaptación y simulación a QPSK del diseño en BPSK.................................................68 3.1 Introducción a QPSK (Quadrature Phase-Shift Keying).........................................................68 3.1.1 Adaptación del transmisor-receptor BPSK a QPSK........................................................69 3.1.1.1. Simulación del sistema adaptado de BPSK a QPSK...............................................70 3.2 Sincronización en tiempo con QPSK.......................................................................................71 3.2.1 Detector de error de tiempo (TED)..................................................................................72 Detector de error de sincronismo Gardner (GTED)........................................................74 Interpolación....................................................................................................................76 Interpolación polinómica de Lagrange............................................................................79 Control de interpolación..................................................................................................81 Contador Modulo-1 de control para la interpolación......................................................81 3.2.2 Implementación de Gardner con interpolación de lagrange y contador modulo-1 para QPSK........................................................................................................................................83 3.2.3 Simulación del algoritmo diseñado..................................................................................90 3.3 Sincronización de fase y frecuencia de QPSK por Decisión directa.......................................92 3.4 Simulación del diseño completo de QPSK..............................................................................96 Capítulo 4 - Simulación del sistema con altavoz y micrófono...........................................................98 4.1 Simulación del transmisor-receptor con un cable entre ordenadores......................................98 4.2 Simulación del transmisor-receptor con un altavoz y un micrófono entre ordenadores........102 Capítulo 5 - Conclusiones y trabajos futuros...................................................................................106 Anexo A. Código MATLAB® del apartado 2.2...............................................................................108 Anexo B. Código MATLAB® del apartado 2.3...............................................................................110 Anexo C. Código MATLAB® del apartado 2.4...............................................................................112 Anexo D. Código MATLAB® del apartado 2.5...............................................................................114 Anexo E. Código MATLAB® del apartado 2.6...............................................................................116 Anexo F. Código MATLAB® del apartado 2.7................................................................................118 Anexo G. Código MATLAB® del apartado 2.8...............................................................................120 Anexo H. Código MATLAB® del apartado 3.1...............................................................................125 Anexo I. Código MATLAB® del apartado 3.2................................................................................128 Anexo J. Filtro discreto de lazo enganchado....................................................................................133 Anexo K. Código MATLAB® del apartado 3.3...............................................................................140 Anexo L. Código MATLAB® del apartado 4..................................................................................144 Glosario............................................................................................................................................147 Bibliografía.......................................................................................................................................149 Capítulo 1 - Introducción El arte de las comunicaciones es tan antiguo como la humanidad, en la antigüedad se usaban tambores y humo para transmitir información entre localidades. A medida que el tiempo avanzaba, se crearon otras técnicas, tales como los semáforos. La era de la comunicación electrónica se inició en 1834, con el invento del telégrafo y su código asociado, que debemos a Samuel Morse y su tan famoso mensaje: "Lo que Dios ha creado"("What hath God wrought", una cita bíblica, Números 23:23). El código morse utilizaba un número variable de elementos con el objeto de definir cada carácter. El invento del telégrafo adelantó la posibilidad de comunicación humana, pero contaba con bastantes limitaciones. Uno de los principales defectos fue la incapacidad de automatizar la transmisión. Debido a la incapacidad técnica de sincronizar unidades de envío y recepción automáticas y a la incapacidad propia del código Morse de apoyar la automatización, el uso de la telegrafía estuvo limitado a procesos manuales hasta los primeros años del siglo XX. En 1910 Howard Krum introdujo mejoras en este incipiente concepto de sincronización y lo aplicó al código de longitud constante de Baudot. Este desarrollo, llamado sincronización start/stop, condujo a la rápida difusión de los equipos de telegrafía. El primer equipo teleimpresor operaba sin ningún protocolo identificable, se alineaba el mensaje de cinta o se introducía el mensaje por medio de teclado. Tan pronto como la máquina local comenzaba a transmitir, la máquina receptora copiaba la transmisión. Alrededor de 1920 se habían establecido los principios básicos de telecomunicaciones, conmutación de mensajes y control de línea. Los sistemas se construyeron sobre comunicaciones a través de la voz y transmisión de caracteres de datos. Después de la segunda Guerra Mundial comenzó el desarrollo comercial del computador. Como estas primeras máquinas estaban orientadas a lotes, no existía la necesidad de “interconectarse” con el sistema de comunicación que abarcaba toda la nación. Posteriormente la industria tomó conciencia de la convivencia de las máquinas y las personas para que hablaran entre sí. Dado que el único sistema de comunicación disponible era el telefónico, naturalmente, los ordenadores en desarrollo deberían seguir en esta línea, de forma que a través del servicio telefónico pudiesen transmitir datos. A medida que las comunicaciones se volvieron más sofisticadas, en el comienzo de los años 50 se desarrollaron dispositivos electromecánicos centrales para realizar tareas como una invitación y selección, para adaptarse al control adicional requerido para estas funciones, se equipó teleimpresoras con dispositivos que decodificaban secuencias de caracteres. Esto permitió enviar, recibir, “reacondicionar” o realizar alguna otra función básica. Dado que la mayoría de estas teleimpresoras operaban con el código de Baudot, que no permitía realizar funciones de control (salvo "alimentación en línea" y "retorno de carro"), se usaban series de diferentes caracteres alfabéticos llamadas "sugerencias de control" para comandos de control específico. Este sistema fue el origen de los protocolos de comunicación de datos. Paralelamente al desarrollo del telégrafo tuvo lugar el desarrollo del Teléfono. Este sistema tenía un panel de control manual. Permitía la comunicación alternada. El crecimiento del uso de la comunicación fue simultáneo al crecimiento de la tecnología de los computadores y en parte, favorecido por él. Desde que comenzaron a popularizarse las computadoras, a finales de los años 60 y principios de los 70, surgió la necesidad de comunicarlas a fin de poder compartir datos, o de poder conectar controladores de terminales. En esos días lo más común era que dichas computadoras o controlado- 6 Capítulo 1 - Introducción res estuvieran alejados entre sí. Una de las soluciones más baratas y eficientes era la utilización de la red telefónica, ya que tenía un costo razonable y su grado de cobertura era muy amplio. Pero la red telefónica no es un medio apto para transmitir señales digitales, ya que fue optimizada para la transmisión de voz. Por ejemplo, a fin de evitar interferencias, se limitó el rango de frecuencias que puede transportar a una banda que va de los 300 a los 3000 Hz, y a esta se la denominada banda vocal, pues dentro de la misma se encuentra la mayor parte de las frecuencias que componen la voz humana. Por ello, al estar limitada en su máxima frecuencia, las señales binarias están muy distorsionadas. Para poder transmitir datos binarios por las líneas telefónicas comunes, es necesario acondicionarlos a las mismas. Con este fin se creó un dispositivo que pudiese convertir la señal digital en una señal apta para ser transmitida por la red telefónica, y poder efectuar la operación inversa, es decir, recuperar la señal de la red telefónica y convertirla en la señal digital original. Dicho acondicionamiento de la información digital consiste en generar alteraciones en una señal de frecuencia fija, llamada portadora. A esta operación se la conoce como modulación, y es muy utilizada en otras aplicaciones, por ejemplo, para transmitir radio. La operación inversa es la “demodulación”. Al dispositivo que efectuaba ambas operaciones se lo conoció como modulador-demodulador, o módem para abreviar. La empresa Hayes Microcomputer Products Inc. en 1979 fue la encargada de desarrollar el primer modelo de módem llamado Hayes Smartmodem, este podía marcar números telefónicos sin levantar el auricular. Se convirtió en el estándar y es por esto que la mayoría de fabricantes desarrollaba módems compatibles con este modelo, los primeros módems permitían la comunicación a 300 bps los cuales tuvieron un gran éxito y pronto fueron apareciendo modelos mas veloces. En este proyecto abordaremos el desarrollo e implementación de un módem cuya modulación estará basada en el estándar QPSK con el objetivo de transmitir datos, a través de un canal vocal, sin pérdidas en la eficiencia de potencia. Servirá también como complemento didáctico en asignaturas dedicadas al tratamiento de la señal. 1.1 Descripción de funcionamiento de un módem Un módem se compone de dos partes; un transmisor y un receptor, que normalmente están juntos en el mismo dispositivo para poder enviar y recibir o pueden estar separados. En la parte del transmisor tendremos que diseñar un sistema que adapte un mensaje a una señal que se transmitirá por un canal de comunicaciones. En este proceso el mensaje se adapta a una señal que se llama portadora y al dispositivo que realiza este proceso se le llama modulador y a la señal donde va el mensaje se la llama moduladora. La portadora generalmente, se trata de una simple señal eléctrica sinusoidal de mucha mayor frecuencia que la señal moduladora. La señal moduladora constituye la información que se prepara para una transmisión (un módem prepara la información para ser transmitida, pero no realiza la transmisión). La moduladora modifica alguna característica de la portadora (que es la acción de modular), de manera que se obtiene una señal, que incluye la información de la moduladora. Así el “demodulador” puede recuperar la señal moduladora original, quitando la portadora. Las características que se pueden modificar de la señal portadora son: •Amplitud, dando lugar a una modulación de amplitud (AM/ASK). •Frecuencia, dando lugar a una modulación de frecuencia (FM/FSK). •Fase, dando lugar a una modulación de fase (PM/PSK) También es posible una combinación de modulaciones o modulaciones más complejas como la modulación de amplitud en cuadratura. Luego esta señal portadora se enviará por un canal que introducirá distorsiones y ruido en la señal, y el receptor se encargará de compensar las distorsiones y ruido del canal, recuperando la señal moduladora y obteniendo el mensaje. También los módems se pueden clasificar dependiendo del como transmitan la información: •Módems por paquetes. Estos tipos de módems transmiten la información en paquetes. Un paquete es un grupo de información que consta de dos partes: los datos propiamente dichos y la información de control, que sirve para que el receptor tenga cierto control sobre los datos. •Módems continuos. Estos módems transmiten la información de manera continua, sin que el receptor tenga ninguna manera de saber cuando empieza la información. En la actualidad se pueden usar de manera sencilla debido a la mejora de computación de los chips y a las técnicas en recepción de los datos. 8 Capítulo 1 - Introducción 1.1.1 Desarrollo de módems para ordenadores El desarrollo del hardware de procesado digital de la señal y de los algoritmos para este hardware, llamados DSP, han reemplazado el hardware analógico que se encargaba de realizar la trasmisión y recepción con la señal moduladora sin utilizar una portadora (que se denomina “transmitir en banda base”) así como utilizando una portadora (que se denomina “transmitir en paso banda”). Todo mecanismo de comunicación se ha digitalizado, y, por poner unos ejemplos, tenemos: receptores TDT, módems inalámbricos de redes de área local, módems de satélite, teléfonos móviles, sistemas de posicionamiento global (GPS), y multitud de dispositivos de entretenimiento como reproductores de MP3, reproductores de alta definición de TV, … Como nota interesante, hay que añadir que los receptores basados en DSP han reemplazado a los receptores analógicos en modulaciones no-digitales como AM o FM y en la televisión analógica tradicional. En las comunicaciones tradicionalmente los recursos que hemos tenido son el ancho de banda de la señal (W) y energía de la señal (S) para el ruido (N) tal como se presenta en el teorema de la capacidad de Shannon: C = W log2 (S/N +1), que quiere decir de manera resumida que C establece la máxima cantidad de datos digitales que pueden ser transmitidos sin error (esto es, información) sobre dicho enlace de comunicaciones con un ancho de banda específico y que está sometido a la presencia de la interferencia del ruido. Los problemas que han de estudiarse en un sistema de comunicación tienen que ver con la cantidad de información, la capacidad del canal de comunicación, el proceso de codificación que puede utilizarse para cambiar el mensaje en una señal, y los efectos del ruido. En la segunda mitad del siglo XX un tercer recurso se ha añadido a la estructura de las comunicaciones modernas, y es la complejidad computacional. Hemos aprendido que cualquier módem necesita un ordenador, ya que inicialmente éste realizaba las transformaciones de los datos en 0's y 1's. Estas trasformaciones, se deben mucho a la estructura de Shannon, incluyendo codificación y decodificación de canal, codificación y decodificación de fuente, y encriptación y desencriptación. Antes el ordenador se dedicaba a las tareas de aplicar transformaciones a las ondas muestreadas, y estas transformaciones se llaman Procesado Digital de la Señal (en Inglés Digital Signal Processing). Pero a partir de que se redujo el coste y se aumentó la capacidad de Procesado Digital de la Señal en los circuitos integrados, la complejidad matemática ya podía ser realizada por un solo circuito. Por esto, las comunicaciones se expandieron a muchos ámbitos de nuestra vida. Capítulo 2 - Diseño inicial del Módem en BPSK 2.1 Introducción En el planteamiento del módem tendremos que diseñar un transmisor y un receptor eligiendo las mejores características que se adapten al canal elegido. La herramienta que se utilizará para programar los distintos modelos de los componentes del módem completo es MATLAB®. Al final del proyecto se añadirán las funciones utilizadas en MATLAB® y el código de cada bloque del proyecto. La señal y(t) que vamos a transmitir por el canal, es una secuencia de señales smt del conjunto finito smtm=1,.. , M emitidas cada periodo de símbolo Tb . Se denomina “bit” a la unidad mínima de información, y “símbolo” a cada uno de los niveles que puede tomar una señal modulada. Cada señal smt codifica un símbolo, que es un grupo de k=log2M bits, y además nos indica el tipo de modulación que se usa. M nos indica el número de símbolos y k el número de bits. La señal y(t) lleva un régimen binario de información Rb=log2M T=k T y tendrá una determinada energía media por símbolo Ebit=Esimb k . Con esto también podemos relacionar el número de símbolos necesarios y por lo tanto el tipo de modulación, para transmitir una cierta tasa de bits, y esta relación es la siguiente: bps=Rslog2M . Donde bps son los bits por segundo, Rs es la tasa de símbolos de la modulación, y M es el número de símbolos en la constelación. Para el transmisor elegiremos una modulación en 2-PAM (Pulse Amplitud Modulated, Amplitud de Pulso Modulada) o BPSK (Binary Phase-shift keying, desplazamiento de fase binaria). En esta modulación un bit representa un símbolo (-A, +A) y esta modulación consta de dos símbolos. También se la conoce como 2-PSK o PRK (Phase Reversal Keying, desplazamiento de fase inversa). A la representación de la modulación en un espacio vectorial se le denomina “constelación”. Es la más sencilla de todas, puesto que solo emplea dos símbolos, con un bit de información cada uno. Es también la que presenta mayor inmunidad al ruido, puesto que la diferencia entre símbolos es máxima (180º). Dichos símbolos suelen tener un valor de salto de fase de 0º para el 1 y 180º para el 0. La descripción matemática de una señal modulada BPSK es la siguiente: st=A⋅mtcos2fct  , donde m(t) = 1 para el bit 1, y m(t) = − 1 para el bit 0, A es la amplitud de la portadora y fc su frecuencia. Cuando transformamos el mensaje a bits y los transmitimos, tenemos una velocidad binaria o de transmisión. Y cuando estos bits son modulados tenemos una velocidad de modulación. La velocidad de modulación es el máximo número de símbolos o cambios de estado de la señal por unidad de tiempo. Vm=nº de bits Tiempo baudios Figura 1: Diagrama de constelación para BPSK 16 Capítulo 2 - Diseño inicial del Módem en BPSK En nuestra simulación del transmisor los símbolos transmitidos tienen este diagrama de ojos: 2.2.1.3. Filtro CIC (Cascade Comb Integrator) La señal interpolada tiene que ser filtrada para conservar la parte del espectro que contiene la banda de interés y eliminar todo lo que queda fuera de dicha banda (que constituiría ruido e interferencia). El filtro tiene que ser normalmente un filtro de banda estrecha con un orden elevado para eliminar todas las componentes indeseadas en la medida de lo posible, por lo que tendremos que llegar a un compromiso entre la relación SNR y el orden del filtro requerido. El filtro necesario para señales de banda estrecha, que cumple con estas características aceptablemente bien y que hemos escogido es el filtro CIC (Cascade Comb Integrator). Estructura y diseño Los dos componentes básicos de un filtro CIC son un integrador y un filtro de peine (o comb filter en inglés). Estos dos bloques básicos se juntan en N etapas trabajando a una frecuencia de muestreo fs los integradores y fs/R los filtros de peine, creando un filtro CIC. Un integrador es simplemente un filtro IIR unipolar con coeficiente de retroalimentación unitario: y[n] = y[n−1] + x[n] (2.2.1.2) Este sistema es conocido también como un acumulador. La función de transferencia para un integrador en el plano z es: HIz= 1 1−z−1 (2.2.1.3) Figura 8: Diagrama de ojos de los símbolos filtrados por el filtro raíz de coseno alzado en el transmisor 2.2 Esquema del transmisor-receptor inicial 17 La respuesta impulsional es básicamente un filtro paso-bajo con roll-off de -20 dB por década (-6 dB por octava), pero con ganancia infinita en continua (DC). Esto es debido al polo único en z = 1, lo que hace que la salida pueda aumentar sin limite para una entrada sin limite, es decir el integrador por si sólo es un filtro inestable. Un filtro de peine (o comb, en inglés) se produce al sumarle a la señal original una versión retrasada en el tiempo de sí misma, causando así una interferencia constructiva y destructiva al mismo tiempo. La respuesta en frecuencia de un filtro de peine consiste en una serie de picos regularmente espaciados, cuya figura se asemeja a la de un peine. Es un filtro FIR asimétrico descrito por la siguiente ecuación: y[n] = x[n] − x [n − M] (2.2.1.4) En esta ecuación, M es un parámetro de diseño y es llamado el retardo diferencial (differential delay, del inglés). M puede ser cualquier número entero positivo, pero está normalmente limitado a 1 o 2. La correspondiente función de transferencia del filtro de peine es la siguiente: Hcz=1−z−M (2.2.1.5) Para construir un filtro CIC, debemos unir (o encadenar de la salida a la entrada) N integradores trabajando a fs seguidos de N filtros de peine trabajando a fs R . Con esto la ecuación de un filtro de peine nos queda de la siguiente manera: y [n] = x [n] − x [n − RM] (2.2.1.6) Con esta variación de frecuencia en los filtro de peine a una R veces mas baja fs , conseguimos tres cosas: •Primero, hemos reducido la frecuencia de la mitad del filtro y por tanto aumentado la eficiencia. •Segundo, hemos reducido el número de elementos retardantes necesarios en la sección de los filtros de peine. Figura 9: Diagrama de bloques de un Integrador. Z-1 + x(n) y(n) y(n-1) Figura 10: Diagrama de bloques de un Filtro Peine. Z-M + x(n) y(n) x(n-M) 18 Capítulo 2 - Diseño inicial del Módem en BPSK •Tercero, y más importante, la estructura del integrador y la del filtro de peine son ahora independientes al cambio de frecuencia. Esto significa que podemos diseñar un filtro CIC con un cambio de frecuencia programable y mantener la misma estructura del filtro. Resumiendo, un filtro diezmador CIC debería tener N integradores en cascada sincronizados a una frecuencia fs , seguido por un cambio de frecuencia de factor R, y, por ultimo, N filtros de peine en cascada sincronizados a una frecuencia fs R . Por lo tanto la función de transferencia para un filtro CIC de N bloques a una frecuencia fs es: Hz=HIzHCz=  1−z−RM 1−Z−1  N =  ∑ k=0 RM −1 zk  N (2.2.1.7) Aunque en esta ecuación hay integradores, la respuesta impulsional del filtro CIC es equivalente a N filtros FIR, teniendo una fase lineal y un retardo de grupo constante. La magnitud de la respuesta impulsional a la salida del filtro es la siguiente: ∣Hz∣= ∣ senRM f  sen f ∣ N (2.2.1.8) N es el número de etapas conectadas en cascada, RM es el orden del filtro de peine, y R es factor interpolación/diezmado. A efectos de análisis podemos tratar el filtro CIC como una respuesta en frecuencia de N bloques integradores seguidos de N bloques peine con un diezmado final. Siendo esta estructura muy sencilla de analizar. Figura 11: Diagrama de bloques de un filtro CIC. Z-1 + x(n) y(n) ↓R N bloques integradores ... Z-1 +... Z-M + Z-M + N bloques peine fs fs R 2.2 Esquema del transmisor-receptor inicial 19 Las ventajas de los filtros CIC son: •Respuesta de fase linear. •Utiliza solamente operaciones de sumas o restas, es decir, no requiere operaciones de multiplicación, con lo que es muy óptimo al hacer los cálculos. Esto hace que sean computacionalmente eficientes para la implementación de filtros de banda estrecha, por lo que: -Se emplean para realizar interpolación/diezmado de orden alto. -También son útiles para interpolación/diezmado porque sus ceros caen en las imágenes o en las zonas que generarán aliasing. -Surgen al plantear el diseño de filtros promediadores. •No es necesario almacenar ningún coeficiente del filtro. •La estructura del filtro CIC es muy regular, consistiendo en dos simples bloques. •No es necesario ningún control del filtro. Los inconvenientes que tenemos son: •Pueden requerir un filtro para compensar la atenuación en la banda de paso. El filtro que generaremos se implementará en la simulación como un filtro CIC de cuarto orden, con RM=6: Hz=  1−z−6 1−z−1  4 (2.2.1.9) Figura 12: Respuesta en frecuencia de un filtro CIC con los valores dados 20 Capítulo 2 - Diseño inicial del Módem en BPSK Implementaremos el filtro CIC en los siguientes pasos: – CIC orden 1: 6 (respuesta al impulso cic1=ones(6,1)) – CIC orden 2: 11 = (6+6-1) (respuesta al impulso cic2=conv(cic1,cic1)) – CIC orden 3: 16 = (6+11-1) (respuesta al impulso cic3=conv(cic1,cic2)) – CIC orden 4: 21 = (6+16-1) (respuesta al impulso cic4=conv(cic1,cic3)) En la implementación en MATLAB® del filtro CIC de cuarto orden simplificaremos haciendo la convolución de los filtros CIC de segundo orden (hcic4=conv(hcic2,hcic2)). También tendremos que tener en cuenta que cuando el número de coeficientes es impar, el retardo es (coeficientes-1)/2. Pero cuando es par da un número fraccionario y debido a la dificultad de cálculo es mejor obviar este caso. En el receptor aplicaremos los mismos filtros y diezmaremos la señal que nos llegue en dos pasos, primero por 6 y luego por 4. En el primer diezmado de cada 6 muestras nos quedaremos con 1 y en el segundo diezmado de cada 4 muestras nos quedaremos con 1. Figura 13: Respuesta en frecuencia de un filtro CIC, con RM=6 y de orden 4. 2.2 Esquema del transmisor-receptor inicial 21 2.2.1.4. Parámetros globales del transmisión Y los parámetros globales que utilizaremos son: Parámetro Valor Modulación BPSK Tipo de filtro Raíz de coseno alzado Roll-off 0,35 Retardo 4 símbolos Factor M 4 Factor L 6 1/T 1 MHz IF 9 MHz fs a la salida 1MHz x 4 x 6 = 24 MHz 2.2.2 Receptor En el receptor digital generamos los pasos inversos que hemos realizado en el transmisor: 1. Filtramos la señal recibida por un filtro paso bajo (CIC) para quedarnos con la señal en banda base. 2. Diezmamos por L, es decir, nos quedamos con una muestra de cada L de la señal discreta). 3. Filtramos con el mismo filtro adaptado del transmisor para conseguir un comportamiento de la ISI de valor cero. 4. Diezmamos por M, obteniendo la señal original que ha transmitido el transmisor. 5. Tomamos la decisión sobre la señal recibida con la función de MATLAB® sign, obteniendo la fuente de datos en BPSK. Receptor digital Filtro Adaptado CIC ↓ L ↓ M Decisión fs=L×M/Ts fs=M/Ts fs=1/Ts 22 Capítulo 2 - Diseño inicial del Módem en BPSK 2.2.3 Conclusiones Este sistema diseñado es lo más básico que se puede implementar, y también es totalmente ideal. A este sistema iremos añadiéndole todos los bloques necesarios para eliminar todo tipo de distorsiones y ruidos que puedan afectar al sistema. Así conseguiremos un sistema real de comunicaciones y podremos simularlo en el laboratorio. 2.3 Esquema del transmisor-receptor básico con subida en frecuencia Una vez que hemos diseñado el transmisor y el receptor añadimos otra etapa para trabajar en frecuencia intermedia. En la simulación del sistema completo asumiremos que la señal generada en frecuencia intermedia (IF) es equivalente a la señal analógica transmitida, por lo que no añadiremos etapas de mezclado que simulen la subida y bajada analógica a RF. En este primer esquema el canal no introducirá ninguna distorsión para comprobar que el sistema funciona correctamente. El diseño del transmisor-receptor básico con subida en frecuencia quedaría de la siguiente manera: 2.3.1 Transmisor Añadimos la subida en frecuencia y el conversor Digital a analógico para simular la transmisión por un canal dado en MATLAB®. Subida en frecuencia Hemos añadido una subida en frecuencia intermedia (FI). La frecuencia de muestreo de salida de nuestra simulación es 24MHz, pero dado que la fuente de datos es de 1MHz eso significa que en MATLAB® la señal a la salida sólo necesita 24 muestras por símbolo. Interfaz analógico del transmisor Esta etapa consta de un conversor digital-analógico o DAC (en inglés, digital to analogue converter). Este conversor es un dispositivo para convertir datos digitales en señales de corriente o de tensión analógica. Transmisor digital Fuente datos BPSK Conformación de pulso ↑ L fs=1/Ts fs=M/Ts fs= LM /Ts CIC FI FI Receptor digital Filtro Adaptado CIC ↓ L ↓ M Decisión ↑ M Filtro paso banda analógico ADC Interfaz analógico DAC fs=FI×L×M/Ts fs=L×M/Ts fs=M/Ts fs=1/Ts 24 Capítulo 2 - Diseño inicial del Módem en BPSK Es decir, en un sistema real (DSP o FPGA), como hemos generado una señal interpolada por 24, el reloj del conversor DAC debería funcionar a 24MHz, mientras que la fuente de símbolo tendría un reloj a 1MHz, de esta manera el DAC recibiría 24 muestras por cada símbolo que sea enviado. En la última parte el mezclado se hará con un coseno de frecuencia intermedia de 9MHz que en digital será 9MHz/24MHz=0,375. 2.3.2 Receptor En el receptor tendremos que hacer el proceso inverso, por lo tanto primero tenemos un interfaz analógico que adapta la señal recibida a discreta y una bajada en frecuencia, obteniendo la señal en banda base. Interfaz analógico del receptor Esta etapa consta de un filtro paso banda y el conversor ADC. La misión del filtro será limitar la cantidad de ruido que entra en el receptor. El filtro analógico se simulará con un filtro digital FIR (Finite Impulse Response, respuesta al impulso finita) de fase lineal paso banda centrado en la frecuencia intermedia. El método utilizado para el diseño de este tipo de filtros será una estructura llamada Remez. Este método consiste en el uso de filtros óptimos, considerados así aquellos con rizado de amplitud constante. El diseño de filtros FIR mediante otros métodos presentan errores en las bandas de paso y atenuadas, con lo que no nos interesan. Al método Remez también se le llama, método de Parks-McClellan. El algoritmo Parks-McClellan, publicado por James McClellan y Parques Thomas en 1972, es un algoritmo iterativo para encontrar el filtro óptimo de Chebyshev de respuesta al impulso finita (FIR), minimizando el error en la banda de paso y en la banda eliminada. El algoritmo Parks-McClellan es una variación del algoritmo de Remez o algoritmo de intercambio Remez, modificado de tal manera que está específicamente diseñado para los filtros FIR y se ha convertido en un método estándar para el diseño de filtros FIR. 2.3 Esquema del transmisor-receptor básico con subida en frecuencia 25 Con el diseño de este método para la obtención de filtros FIR, podemos ajustar las bandas de paso y eliminadas, y según el orden escogido del filtro, la anchura de la banda de transición del filtro, es tanto menor cuanto mayor sea el orden escogido, o el número de coeficientes del filtro. Los parámetros de dicho filtro son: Parámetro Valor Frecuencia central 9 MHz Frecuencias de corte de banda pasante 8,4 y 9,6 MHz Frecuencias de corte de banda eliminada 7,8 y 10,2 MHz Orden del filtro 90 Figura 14: Bandas de paso y eliminadas del algoritmo ParksMcClellan 32 Capítulo 2 - Diseño inicial del Módem en BPSK Por lo tanto tenemos: y0⇒s1 y y0⇒s0 . Probabilidad de error cuando s1 fue transmitida Con el umbral dado anteriormente, la probabilidad de error dada cuando s1 fue transmitida es (el área de la región azul): pe∣s1= 1  N0 ∫ −∞ 0 e − y−  Eb2 N0dy=1  ∫  Eb N0 ∞ e−z2 dz=1 2erfc   Eb N0  , donde, erfcx= 2  ∫ x ∞ e−x2 dx es la función de error complementaria. Probabilidad de error cuando s0 fue transmitida De manera similar, la probabilidad de error dada cuando s0 fue transmitida es (el área de la región azul): pe∣s0= 1  N0 ∫ 0 ∞ e − y  Eb2 N0dy=1  ∫  Eb N0 ∞ e−z2 dz=1 2erfc   Eb N0  . Probabilidad total de error de bit Pb=ps1pe∣s1ps0pe∣s0 . Dado que hemos supuesto que s1 y s0 son igualmente probables, ps1= ps0=1 2 , la probabilidad de error es, Pb=1 2erfc   Eb N0  ó Pb=Q   2Eb N0  (2.4.2.1) 2.4.2.2. Simulación del sistema diseñado Hemos visto que ocurre cuando a la señal transmitida se le añade ruido, y las ecuaciones que tenemos que utilizar. Para comprobar que nuestro sistema se comporta de la manera ideal tenemos que calcular la gráfica teórica del número de errores de bits en una modulación BPSK respecto a la gráfica del sistema simulado. La tasa de error de bit (BER) que calcularemos en MATLAB® generalmente se representa en una gráfica de dos dimensiones. La ordenada, es la relación señal a ruido (SNR) expresada como Eb/N0 (energía por bit dividida por la densidad espectral de potencia de ruido), expresada en decibelios (dB). La abcisa es la tasa de error de bit (BER), valor adimensional, expresado normalmente en potencias de diez. 2.4 Evaluación del transmisor-receptor básico con ruido en el canal 33 Para esta gráfica trazaremos una serie de puntos, que nos obligará a ejecutar la simulación para cada valor específico de SNR. Procedimiento de la simulación Para una señal tenemos que la potencia instantánea es: Pins≡x² n y la potencia media del valor instantáneo en N muestras es: Pmed=1 N∑ n=1 N x2n (2.4.2.2) Cuando recibimos la señal en el receptor calculamos su potencia con la siguiente formula: PotS=mean(abs(Stx).^2); Esta es la potencia de la señal que recibimos en el receptor. Para poder añadirle un ruido tenemos que generarlo y escalarlo con la señal. Para dibujar la gráfica de BER, es decir, la tasa de errores (errores totales/símbolos recibidos) utilizaremos un rango de Eb/N0, que será nuestra relación señal a ruido (SNR) del canal. Los valores de Eb/N0, estarán entre 0 y 6 dB en pasos de 1 dB. Y para que la gráfica simulada se parezca lo más posible a la teórica transmitiremos 10.000 símbolos.. En las simulaciones Eb/N0, se expresa en decibelios, pero debemos convertirlo a un valor adimensional. Si Eb/N0 es m dB, entonces Eb/N0 = 10m/10 (estando en unidades lineales). Y en MATLAB® lo calculamos así: EbNo_lin=10.^(EbNo_dB/10); Los dB de ruido están en la potencia de ruido, y la potencia de ruido se calcula en función de la señal recibida, para que finalmente haya una SNR concreta, que es lo que nos interesa en la simulación, calculamos la potencia de ruido como: PotN=(PotS*Ms)/(2*EbNo_lin*b); Donde Ms es el número de muestras por símbolo, es decir, el factor de interpolación total, y b es el número de bits por símbolo. En nuestro caso para BPSK, b = 1, y para QPSK, b = 2. Para generar el ruido y sumárselo a la señal, utilizaremos en MATLAB® la función 'randn', que genera una distribución normal de números aleatorios con una media cero y una varianza de uno. Debemos escalar la salida para que el resultado tenga la varianza deseada, N 2 . Para hacer esto, simplemente multiplicaremos la salida de la función 'randn' por N , así que generaremos el vector de la siguiente manera: ruido= randn(size(Stx)))*sqrt(PotN); Añadiendo el ruido generado de la siguiente manera: sru = Stx + ruido; Ejecutaremos el receptor y a la salida del decisor calcularemos los errores con la función de MATLAB® 'biterr': [ne,ber]=biterr(BitsTx,BitsRec); Una vez que llevamos a cabo simulaciones para los Eb/N0 de interés, dibujamos los resultados. Generaremos dos gráficas que superpondremos. Una será la teórica, que dibujaremos en azul, y la otra será la unión de los valores obtenidos que uniremos quedando esta gráfica en rojo. En el eje X estarán los valores de Eb/N0, mientras que en el eje Y estará la relación de errores de bit. El eje Y se 34 Capítulo 2 - Diseño inicial del Módem en BPSK dibujará en escala logarítmica, mientras que el eje X se dibujará en escala lineal. Calcularemos la gráfica para el rango Eb/N0 entre 0 y 6 dB, en pasos de 1 dB. Utilizaremos los siguientes pasos en MATLAB®: La gráfica obtenida es la siguiente: Podemos comprobar que nuestro sistema diseñado funciona como dice la teoría, por lo que nos vamos acercando al sistema real, haciendo un diseño sencillo y comprensible. Y en la parte negativa, tenemos que el sistema todavía no se puede utilizar en un sistema real ya que nos faltan por tener en cuenta algunos errores que se introducen en un sistema real. Figura 20: Curva de de error de bit (BER) para la modulación BPSK - teórica, simulada % Curva teórica BER para BPSK ebn0_lin = 10.^((0:6)/10); ber_teo= erfc(sqrt(ebn0_lin))/2; semilogy((0:6), ber_teo); grid hold on plot([0:6], eval, 'r',[0:6], eval, 'or'); legend('teórica','simulada'); xlabel('E_b/N_0'); ylabel('BER'); title('Curva de probabilidad de error de bit para la modulación BPSK'); hold off 2.5 Evaluación del transmisor y receptor con ecualización adaptativa En Sistemas de Comunicaciones digitales, las señales de datos son transmitidas a través de canales analógicos de comportamiento lineal que producen distorsiones. Estos canales pueden ser canales telefónicos, de cable, y canales inalámbricos. 2.5.1 Interferencia introducida en el canal: Multicamino Las dos principales fuentes de distorsión de canales lineales en sistemas de comunicaciones digitales son la propagación por multitrayectoria o multicamino (multipath fading), (en canales inalámbricos), y el ancho de banda del canal limitado. Por lo tanto el canal puede ser modelado como si tuviera una respuesta al impulso finita, es decir, como si fuera un filtro lineal C, y con unos tiempos de retardo de propagación, siendo estos el intervalo total durante el cual llegan la reflexiones significativas de la señal transmitida. Esta distorsión lineal se produce porque la señal transmitida llega por varios caminos, desfasada un tiempo t. Esto conduce a Interferencia intersimbólica (ISI, por sus siglas en inglés) en el receptor, el cual a su vez produce el efecto de incremento en la probabilidad de error (BER) en la detección del símbolo transmitido. Existen varias técnicas para corregir o minimizar la distorsión y reducir los efectos de la ISI producida por el canal de comunicación. Una de las técnicas más utilizadas es la Ecualización Adaptativa. La idea de la ecualización adaptativa es construir un filtro en el receptor, que contrarreste el efecto del canal. Con este objetivo al diseñar el ecualizador, la respuesta al impulso del canal y el ecualizador combinados tiene que ser un pulso. Este filtro adaptativo se encargará de minimizar las interferencias añadidas en el canal de transmisión y rechazar el ruido aditivo y gaussiano, adaptando sobre la marcha el filtrado según la señal recibida. Al mismo tiempo, será importante que mejore reduzca el ruido de banda ancha. Transmisor digital multicamino Ruido blanco Canal Receptor digital 36 Capítulo 2 - Diseño inicial del Módem en BPSK Modelaremos el canal como un filtro FIR invariante en el tiempo. El multicamino lo simularemos con una serie de coeficientes que se filtrarán con la señal transmitida. Los coeficientes del canal multicamino serán: c =[0,5 1 -0,6] La separación entre dichos coeficientes es 1 µs (es decir, el periodo de símbolo). Por tanto, para poder simular dicho canal en frecuencia intermedia, donde la señal tiene LxM muestras por símbolo, se deberá generar un filtro cuya respuesta al impulso contenga los anteriores coeficientes separados por (MxL-1) ceros: h = [0,5 zeros(1,(M*L)-1) 1 zeros(1,(M*L)-1) -0,6] El ecualizador al ser un filtro, tendremos que ir seleccionado los coeficientes que lo conforman con el objetivo de eliminar la interferencia entre símbolos y atenuar las interferencias aditivas. Esos coeficientes podrán ser escogidos, basándonos en la señal recibida y posiblemente en una preestablecida “secuencia de entrenamiento”. 2.5.1.1. Receptor con ecualización El ecualizador se coloca después del último diezmado para eliminar todas las transformaciones que ha introducido el transmisor y quedarnos con aquellas que tienen que ver solo con el canal de transmisión. Dependiendo del nivel de ISI, presentado por el canal de comunicación, los ecualizadores a emplearse podrían ser de tipo Lineal y No Lineal. Los Ecualizadores Lineales, son implementados cuando el nivel de ISI es moderado; por el contrario los Ecualizadores No Lineales, son implementados cuando el nivel de ISI es severo. Los ecualizadores que veremos serán de tipo lineal. La estrategia básica en la ecualización es encontrar una función adecuada para los parámetros desconocidos del ecualizador que puedan ser usados para definir un problema de optimización. Filtro paso banda analógico Receptor digital Filtro Adaptado Filtro paso bajo + diezmado ↓ 4 Decisión ADC Interfaz analógico Conversión a banda base Ecualizador fs=FI×L×M/Ts fs=L×M/Ts fs=M/Ts fs=1/Ts Detección FI 2.5 Evaluación del transmisor y receptor con ecualización adaptativa 37 Una secuencia de entrenamiento preestablecida s[k] se supone conocida en el receptor. El objetivo es encontrar un filtro FIR (que será el ecualizador) cuya salida sea aproximadamente igual a la señal del transmisor, aunque posiblemente retrasada en el tiempo. Por lo tanto, el objetivo es elegir la respuesta al impulso wi tal que y[k]≈s[k−] para algún  específico. El problema de la ecualización lineal se representa con la siguiente ecuación: y[k]=∑ j=0 n wjr[k−j] (2.5.1.1) y operando obtendríamos la relación de matrices: Y=RF Y el error recuperado de la trasmisión con retardo es: e[k]=s[k−]−y[k] (2.5.1.2) para un retardo  dado. Con el error calculado podemos utilizarlo para definir una función que dependa de los parámetros desconocidos wi . Y calculando estos parámetros que minimicen el rendimiento de esta función proporcionaría una buena solución al problema de la ecualización. Operando tendríamos la relación de matrices siguiente: E=S−Y=S−RF Como medida del rendimiento de wi en F, consideramos: JLS=∑ i=n1 p e2[i] (2.5.1.3) JLS es una función siempre de valor positivo, ya que es una suma de cuadrados. Minimizar una suma de errores al cuadrado con un retardo respecto al origen es el objetivo en el diseño del ecualizador, así que los valores de wi que minimizan JLS provocarán que la salida del ecualizador se acerque a los valores del transmisor (retardados). Una vez calculados estos valores también tendríamos que encontrar el retardo  óptimo. Figura 21: Distintos tipos de modulación. Canal Ajuste del Ecualizador Ecualizador FIR Error de Cálculo Decisión Secuencia de entrenamiento Estadísticas de símbolo sk yk ek rk sk Modo Entrenamiento Modo Ciego Modo Decisión-Directa 38 Capítulo 2 - Diseño inicial del Módem en BPSK Ecualización LMS LMS (del inglés “Least Mean Square”) significa que se utilizará en el algoritmo una solución que produzca la menor media cuadrática. El diseño que obtendríamos con la resolución de la ecuación JLS , requiere un cálculo substancial, incluso cuando el retraso del sistema es conocido. Para reducir este cálculo usaremos un elemento adaptativo para minimizar la media del error al cuadrado: JLMS=1 2avg {e2[k]} (2.5.1.4) Y tenemos que JLMS es una función de todos los coeficientes wi del ecualizador: e[k]=s[k−]−y[k]=s[k−]−∑ j=0 n wjr[k−j] (2.5.1.5) que combinada con 2.5.1.2 y 2.5.1.1, y donde r[k] es la señal recibida en banda base después del muestreo. Un algoritmo para la minimización de JLMS con respecto a la iteración i del coeficiente fi del ecualizador es: wi[k1]=wi[k]− dJ LMS dwi ∣wi=wi[k] (2.5.1.6) Para crear un algoritmo que pueda ser fácilmente implementado, es necesario evaluar esta derivada con respecto al parámetro de interés: dJ LMS dwi ∣wi=fi[k]=davg {1 2e2[k]} dwi ≈avg { 1 2e2[k] dwi } =avg { e[k]de[k] dwi } (2.5.1.7) Utilizando la ecuación 2.2.1.5, la derivada de la fuente de error recuperada e[k] con respecto a la iteración i del ecualizador wi es: de[k] dwi =ds[k−] dwi −∑ j=0 ndw jr[k−j] dwi =−r[k−i] (2.5.1.8) Normalmente, la operación de promediado se suprime en cada iteración con un valor muy pequeño que provoca un comportamiento de filtro paso bajo (en promedio). El resultado se llama algoritmo LMS (del inglés, promedio de mínimos cuadrados) para una respuesta al impulso directa lineal del ecualizador en cada adaptación de coeficiente: wi[k1]=wi[k]e[k]r[k−i] (2.5.1.9) El algoritmo LMS lo que pretende es minimizar el error cuadrático obtenido entre los valores de los datos recibidos y los valores transmitidos que pueden ser recuperados con un elemento adaptativo. 2.5 Evaluación del transmisor y receptor con ecualización adaptativa 39 El LMS se inicia con una secuencia de entrenamiento, que ayuda a construir o entrenar al ecualizador. Una característica importante del LMS es su simplicidad. No requiere medidas de las funciones de correlación, ni tampoco inversión de la matriz de auto-correlación, que son cálculos que se utilizan en otros tipos de ecualizadores adaptativos. El LMS comprende dos procesos básicos: •Un proceso de filtrado, que implica el cálculo de la salida generada por un filtro transversal, y la generación de una estimación del error comparando esta salida con la respuesta deseada. •Un proceso adaptativo, que realiza el ajuste automático de los coeficientes del filtro de acuerdo con la estimación del error. Estos procesos pueden expresarse en las siguientes relaciones y su gráfica correspondiente, que son el resultado de la estimación del vector gradiente del algoritmo: 1. Salida del filtro y(n) = w(n) x(n) (2.5.1.10) 2. Estimación del error e(n) = s(n) – y(n) (2.5.1.11) 3. Adaptación de los pesos del filtro w(n+1) = w(n) + m x(n) e*(n) (2.5.1.12) Observamos que la estimación del error, definida por las ecuaciones 2.5.1.10 y 2.5.1.11, depende del vector de coeficientes actual w(n), y el término “m x(n) e*(n)” que representa la corrección aplicada al vector de coeficientes w(n). El algoritmo “adaptativo” ha de comenzar con un valor inicial w(0). También apreciamos que en cada iteración se debe conocer el valor de la señal transmitida x(n), la señal de referencia o de entrenamiento d(n) y el vector de coeficientes actuales w(n). Diseño en MATLAB® Una vez comprendido el problema de estudio; ISI, su análisis y comprensión, realizamos la implementación del ecualizador ajustando adecuadamente todos sus parámetros y analizando su función. Partiendo de la ecuación básica del algoritmo seleccionado, se desarrolló el siguiente código en MATLAB®, para el ecualizador LMS: Figura 22: Diagrama de bloques de un Ecualizador Lineal basado en el Algoritmo LMS. Filtro transversal Algoritmo LMS -+ x(n) y(n) s(n) e(n) for k=N+1:M rr=x(k:-1:k-(N+1)+1); y(k)= w'*rr; e(k) = s(k-delta)-y(k); w = w + mu * e(k) * rr; end 40 Capítulo 2 - Diseño inicial del Módem en BPSK Otro parámetro importante: el Step Size, en el algoritmo “mu”, al cual corresponde la rápida o lenta convergencia del ecualizador. Por lo tanto “mu” debe ser seleccionado menor que el valor máximo del mismo con el objetivo de evitar problemas de divergencia. Sin embargo, la asignación de valores muy pequeños podría resultar en una lenta convergencia del ecualizador. Con los parámetros utilizados en las simulaciones, cuando introduzcamos el canal multicamino, el filtro ecualizador se implementará con una longitud de 11 muestras, y el parámetro “delta” o retardo será de 5. La constante de convergencia será ajustable. Y con el ecualizador LMS conseguimos las siguientes características •El algoritmo LMS es efectivo en un canal de ISI moderado debido a que sus coeficientes son capaces de adecuarse a cambios no muy abruptos del canal de comunicaciones. •El principal inconveniente que tiene la Ecualización Adaptativa, es que necesita tener cierto conocimiento previo de la información transmitida, sin embargo, sigue siendo un tema de interés de investigación para el diseño de receptores. La desventaja de esta ecualización es que usa los datos del transmisor para realizar la ecualización y no nos sirve en la práctica. La ventaja es que esta ecualización la usamos como referencia ideal para ver como se comportan otras ecualizaciones, y como se comporta esta respecto a la transmisión ideal. 2.5.1.2. Simulación del diseño Una vez que hemos diseñado el sistema, comprobaremos que tal funciona el algoritmo desarrollado, con los datos introducidos. En la simulación utilizaremos el siguiente valor de multicamino: M=4; L=6; c = [0.5 zeros(1,(M*L)-1) 1 zeros(1,(M*L)-1) -0,6]; 2.5 Evaluación del transmisor y receptor con ecualización adaptativa 41 Y hemos obtenido los siguientes resultados: Comprobamos como el algoritmo ecualizador realiza su trabajo, y consigue seguir a la curva teórica. Esto nos indica que funciona bien y que el multicamino introduce un pequeño error en la señal recibida que podemos asumir. Al eliminar la ecualización el multicamino introduce errores en la señal recibida, que no podemos corregir. Figura 23: Respuesta del sistema con ecualizador, multicamino y ruido Figura 24: Respuesta del sistema sin ecualizador, con multicamino y ruido 48 Capítulo 2 - Diseño inicial del Módem en BPSK BL d=BL aTs=nTs 2  1 4  ⇒nTs=2BL d  1 4  r=e−4nTs 0=nTs  1−2 (2.6.1.5) El procedimiento de diseño a partir de un ancho de banda normalizado sería obtener el parámetro ωn utilizando una ζ que se fija entre 0,7 y 0,9. Una vez obtenidos se emplearían las relaciones anteriores para obtener los parámetros digitales. 2.6.1.4. Simulación del sistema con el lazo de costas Una vez que tenemos diseñado el algoritmo para la sincronización de fase y frecuencia, calculamos los valores de simulación para para un BL d=0,01 , elegimos ζ = 0,8, y en MATLAB® tendríamos: Y con estos resultados, vemos que el algoritmo funciona enganchándose en fase y frecuencia con el lazo del costas de segundo orden. La figura 28 muestra que con una variación de frecuencia del 0,01% el sistema consigue recuperar la señal aceptablemente. wnTs=2*.01/(0.8+1/(.8*4)) r=exp(-wnTs*0.8) wo=wnTs*sqrt(1-0.8*0.8) Figura 28: Respuesta del sistema con ruido y error de frecuencia, y sincronización en fase y frecuencia 2.6 Evaluación del transmisor y receptor con sincronización en fase y frecuencia 49 En la figura 29, vemos que la simulación con una variación de frecuencia del 0,01% y un error de fase de π/4 el sistema consigue recuperar la señal aceptablemente. Figura 29: Respuesta del sistema con ruido, error de frecuencia y fase, y sincronización de fase y frecuencia 50 Capítulo 2 - Diseño inicial del Módem en BPSK 2.6.1.5. Detector con recuperación de la fase de la portadora para BPSK con decisión dirigida. El diagrama de bloques de la figura 30 está basado en el lazo de costas [1] y se diferencia solamente que en la salida del derrotador (multiplicar las entradas) se toma el signo de la señal. Debido a que no aporta mejores prestaciones que el lazo de costas no lo utilizaremos en BPSK, pero si para QPSK, ya que nos da mejores prestaciones que este. Figura 30: Detector con recuperación de la fase de la portadora para BPSK con decisión dirigida. Derrotador DDS DDS sign(●) F(z) Filtro Adaptado ↓N ↓N Filtro Adaptado xkT s ykT s −  2sino  2coso rnT  aon −sin k cos k 2.7 Evaluación del transmisor y receptor con Ecualización ciega Con el diseño del receptor en este punto, la ecualización LMS necesita una secuencia de entrenamiento, y utilizábamos la señal generada BPSK del transmisor como entrenamiento. En la vida real esto no va a ser posible ya que si tuviéramos la señal del transmisor no sería necesaria ninguna comunicación. En este capítulo vamos a desarrollar un algoritmo ecualizador que no dependa de ninguna señal del transmisor, solamente de la recibida por el receptor. 2.7.1 Ecualización LMS con decisión directa (ó LMS Direct Decision). En el algoritmo LMS durante el periodo de entrenamiento, el sistema de comunicación no transmite ningún mensaje. Por lo general, un bloque de datos de entrenamiento le sigue un bloque de datos. La fracción de tiempo dedicado al entrenamiento debe ser lo más pequeña posible, pero puede llegar hasta un 20% en la práctica. Por este motivo, sería interesante adaptar los parámetros del ecualizador sin necesidad de utilizar datos de entrenamiento, y esto haría que el tamaño del mensaje fuera mayor y por tanto aumentaría la capacidad del canal. Cuando el sistema empieza a funcionar, en algún momento se consigue abrir el diagrama de ojos del canal, por lo tanto todas las decisiones son perfectas, pero los parámetros del ecualizador no están en sus valores óptimos, y esto hace que en la salida se consiga una réplica exacta retardada del transmisor, de tal manera que los valores se adaptan a sus óptimos y la señal ha servido como entrenamiento. Para una fuente binaria ±1 y un dispositivo de decisión que es un operador de signo, la recuperación del error retardado puede ser obtenida como sign{y[k]} – y[k], donde y[k] es la salida del ecualizador y sign{y[k]} es igual a s[k−] . Por lo tanto, el ecualizador adaptativo entrenado de la figura 22, puede ser sustituido por el ecualizador por decisión directa de la figura 31. Esto convierte la ecuación 2.5.1.9 en LMS con decisión directa, y queda de la siguiente manera: wi[k1]=wi[k]⋅signy[k]−y[k]⋅r[k−i] (2.7.1.1) Filtro paso banda analógico Receptor digital Filtro Adaptado Filtro paso bajo + diezmado ↓ 4 Decisión ADC Interfaz analógico Conversión a banda base Ecualizador fs=FI×L×M/Ts fs=L×M/Ts fs=M/Ts fs=1/Ts Sincronización en fase y frecuencia 52 Capítulo 2 - Diseño inicial del Módem en BPSK Esta ecualización se suele emplear tras el entrenamiento con el ecualizador LMS. Tiene las ventajas siguientes: –Permite seguir variaciones en el canal. –La señal de referencia son las decisiones de los símbolos recibidos. –Funciona bien hasta con un 2~5% de errores. –Puede emplearse sin entrenamiento (se inicializa w con una delta en el coeficiente central, equivalente al retardo D) El mayor inconveniente es que el diagrama de ojo debe estar un poco abierto. La regla básica para que funcione el algoritmo, es que tengamos menos del 5% de errores de decisión, para que el algoritmo de decisión directa LMS se pueda enganchar y por lo tanto converger adecuadamente, y una vez que haya convergido puede aceptar algo más de ese 5% de errores. Partiendo de la ecuación del algoritmo LMS, desarrollamos en MATLAB®, para el ecualizador LMS DD, el siguiente código: Figura 31: Diagrama de bloques de un ecualizador ciego por decisión dirigido Ecualizador Decisión Algoritmo adaptativo Evaluación del rendimiento y(k) w(k) e(k) x(k) Sing[ ● ] for k=N+1:M rr=x(k:-1:k-(N+1)+1); y(k)= w'*rr; e(k) = sign(y(k)) - y(k); w = w + mu * e(k) * rr; end 2.7 Evaluación del transmisor y receptor con Ecualización ciega 53 2.7.2 Simulación de la ecualización LMS DD Una vez que tenemos el ecualizador LMS DD, lo simulamos en un sistema con ruido y multicamino para ver como se comporta. El multicamino empleado es el siguiente: En la figura 32 podemos ver como se comporta el ecualizador LMS DD con ruido y multicamino respecto a los valores teóricos. 2.7.3 Ecualización CMA CMA (del inglés “Constant Modulus Algorithm”) significa que se utilizará en el algoritmo una solución que produzca un módulo constante. También se le denomina ecualización ciega CMA ya que no usa ningún dato del transmisor para abrir el ojo de la señal. El criterio de minimización para el algoritmo LMS que se usa en la ecualización ciega CMA, es el siguiente: –La potencia de las señales binarias es γ=1 (o valor cuadrático medio) –Se busca que la potencia de y[n] sea 1. Estas características se ajustan perfectamente a transmisiones digitales. Por lo tanto la nueva señal de error del algoritmo es: e[n] = γ – y2[n] . Entonces hay que minimizar el error cuadrático medio de Figura 32: Simulación de la ecualización LMS DD con ruido y multicamino %-- Multicamino c = [0.5 zeros(1,(M*L)-1) 1 zeros(1,(M*L)-1) -0,6]; 54 Capítulo 2 - Diseño inicial del Módem en BPSK JCMA=1 4avg { γ − y2[n]2 } (2.7.3.1) que mide la dispersión de la salida del ecualizador deseando que llegue al valor cuadrático γ. El elemento asociado adaptativo para actualizar los coeficientes del ecualizador es wi[k1]=wi[k]− μ dJ CMA dwi ∣wi=wi[k] (2.7.3.2) desarrollando esta ecuación como la ecuación 2.5.1.6 a través de 2.5.1.9 derivándola, los rendimientos de minimización del algoritmo de dispersión (o CMA, constant modulus algorithm) para la adaptación ciega de los coeficientes de un ecualizador lineal, quedan de la siguiente manera: wi[k1]=wi[k]4avg {γ − y2[k]}y[k]x[k−i] (2.7.3.3) y eliminando la operación promedio se convierte en: wi[k1]=wi[k]41− y2[k] y[k]x[k−i] (2.7.3.4) que podemos ver en el diagrama de bloques de la figura 33. Partiendo del diagrama de bloques de la figura 33, desarrollamos en MATLAB®, para el ecualizador CMA, el siguiente código: Cuando la fuente es binaria ±1, entonces γ=1. Y cuando la fuente es multinivel, también sigue siendo útil este algoritmo para minimizar la dispersión, pero la constante deberá cambiar a =avg {s4} avg {s2} . Figura 33: Diagrama de bloques del ecualizador ciego CMA Ecualizador X2 Algoritmo adaptativo y(k) w(k) e(k) x(k) - y2(k)  Evaluación del rendimiento for k=N+1:M rr=x(k:-1:k-(N+1)+1); y(k)= w'*rr; e(k) = gamma - abs(y(k))^2; w = w + mu * e(k) * rr * y(k); end 2.7 Evaluación del transmisor y receptor con Ecualización ciega 55 Normalmente CMA puede converger a la respuesta deseada a partir de una inicialización peor que LMS con decisión dirigida, mientras que no es tan robusto como LMS con entrenamiento. A esta técnica se le llama también minimización de la dispersión (en inglés, Dispersion-Minimizing). Ventajas: –Se suele inicializar w con una delta en el coeficiente central. –No es necesario ninguna señal de entrenamiento, solamente de la señal recibida. Inconvenientes: –Puede tener problemas de convergencia: por ejemplo recibir la señal con signo cambiado (tiene la misma potencia). –Solo vale para transmisiones digitales (potencia de la señal sea 1). Esta ecualización se suele emplear para abrir el ojo y luego se cambia a LMS DD. 2.7.4 Simulación de la ecualización CMA Podemos comprobar en la figura 34 como se comporta la ecualización CMA con ruido y multicamino. El multicamino empleado es el siguiente: Figura 34: Simulación de la ecualización CMA con ruido y multicamino %-- Multicamino c = [0.5 zeros(1,(M*L)-1) 1 zeros(1,(M*L)-1) -0,6]; 56 Capítulo 2 - Diseño inicial del Módem en BPSK 2.7.5 Simulación de los ecualizadores LMS, LMS DD y CMA A continuación en la figura 35, podemos ver la comparativa entre los tres tipos de ecualización vistos. Comprobamos como la mejor ecualización es la LMS y la peor es la CMA. La ecualización intermedia es la LMS DD, y con la ecualización CMA no es necesario tener ninguna señal de referencia para que funcione correctamente. Figura 35: Simulación de los tres tipos de ecualización vistos, LMS, LMS DD y CMA, con ruido y multicamino 2.8 Evaluación del transmisor-receptor con errores de sincronización en tiempo Una vez que hemos conseguido reducir los errores anteriores, tenemos el problema de que al muestrear la señal analógica para convertirla a digital en el receptor, las frecuencias de reloj del muestreador del transmisor y receptor no son exactamente iguales y se producen errores de muestreo. Esto produce que exista un error de sincronización de tiempo que tenemos que corregir. Como no es eficiente enviar la frecuencia de reloj del transmisor, debido a que el espectro está limitado y hay que aprovecharlo, necesitamos utilizar algún método para corregir este error. Para los receptores adaptados, la señal de reloj se usa para identificar los instantes donde deben tomarse las muestras en la salida del filtro adaptado. Por eso utilizando conjuntamente el filtro adaptado con el diezmado, tenemos la mejor opción para corregir los errores de muestreo que se hayan producido en el conversor analógico-digital. Un error de la sincronización se puede considerar como el muestreo del diagrama de ojo en un instante donde la apertura de ojos no es máxima. El instante de muestreo óptimo corresponde en el centro del diagrama de ojo. Filtro paso banda analógico Receptor digital Filtro Adaptado Filtro paso bajo + diezmado ↓ 4 Decisión ADC Interfaz analógico Conversión a banda base Ecualizador fs=FI×L×M/Ts fs=L×M/Ts fs=M/Ts fs=1/Ts Sincronización en fase y frecuencia Sincronización en tiempo Sincronización 64 Capítulo 2 - Diseño inicial del Módem en BPSK La figura 43 representa la medida de COM de una señal BPSK muestreada a dos muestras por símbolo. El COM fluctúa ligeramente alrededor de los valores del ecualizador debido al ruido de la señal, pero no va más allá. La figura 44 nos muestra COM para una velocidad de muestreo de 2.0001 muestras por símbolo. Como era de esperar, el COM gradualmente disminuye a medida que los valores del ecualizador van hacia atrás. La figura 45 nos muestra el COM para una velocidad de submuestreo de 1,9998 muestras por símbolo. La mayor velocidad de desplazamiento es fácilmente evidente a partir de la pendiente de la curva. Figura 45: Valor de COM para una seña submuestreada Figura 44: Valor de COM para una señal sobremuestreada. 2.8 Evaluación del transmisor-receptor con errores de sincronización en tiempo 65 Como puede verse en las figuras anteriores, si no se realizan ajustes para los desplazamientos de la velocidad de símbolo, con el tiempo los valores del ecualizador “se caerán” y éste perderá el enganche. Al establecer una técnica para la compensación del desplazamiento de los valores del ecualizador, seleccionamos una posición para el centro de masas (CP) que suele ser el centro de los valores del ecualizador. La técnica propuesta, denominada 'hiccuping' (del inglés “a tropiezos”), se esforzará por mantener el COM ubicado alrededor del CP deseado. Para explicar la técnica del 'hiccuping', suponemos que la señal recibida ha sido ligeramente sobremuestreada. Este sobremuestreo indica que los valores del ecualizador poco a poco se irán desplazando hacia atrás. Cuando COM ≤ CP-2, los valores del ecualizador se han retrasado dos posiciones (que corresponden a un periodo de símbolo), y se insertan ceros en los 2 valores del ecualizador más a la izquierda. Esta operación de cambio en los valores del ecualizador es lo que llamamos 'hiccuping'. Para adaptar este cambio en los valores del ecualizador, las siguientes 2 muestras de entrada se desplazarán en el ecualizador, pero se ignorarán las actualizaciones de los pesos del ecualizador. Se produce un símbolo extra en la salida del ecualizador, y este símbolo deberá ser marcado como no válido o eliminado de la secuencia de la salida. Para la señal submuestreada la técnica de 'hiccuping' funciona de la misma manera. En este caso los valores del ecualizador irán a la deriva hacia adelante, y el salto se realizará cuando COM ≥ CP+2. Los valores del ecualizador de nuevo se desplazarán 2 posiciones hacia atrás, se insertan ceros en los valores más a la derecha del ecualizador, y un símbolo extra deberá ser insertado en la secuencia de salida del ecualizador. Sobre este símbolo extra nosotros no tenemos ningún control, por lo que no podremos eliminarlo en el caso de que aparezca. Debido a esto este método nos interesará cuando la señal recibida ha sido ligeramente sobremuestreada. Esto lo podemos conseguir nosotros forzando que en el receptor el muestreo sea ligeramente superior al del transmisor. En SNR bajas y graves distorsiones de la señal con el multicamino el valor del COM puede fluctuar un poco más, incluso sin desplazamiento de la velocidad de símbolo. Para estos casos podríamos complicar el sistema para que funcionase la técnica 'hiccuping', pero el gran interés de esta técnica es su sencillez, y complicándola perdería gran parte de su rendimiento. Para estos casos utilizaríamos otra técnica. Tendremos que tener en cuenta que al insertar y desplazar la salida del ecualizador durante la técnica del 'hiccuping', la salida del ecualizador tendrá una secuencia de variación respecto al desplazamiento del sincronismo. Esto podrá ser posteriormente eliminado si se desea. 66 Capítulo 2 - Diseño inicial del Módem en BPSK 2.8.4 Simulación del método 'hiccuping' Una vez diseñado el sistema, realizamos una simulación donde comprobamos como se comporta la ecualización adaptativa fraccionaria con la técnica 'hiccuping'. Vemos en la figura 46 como se comporta el sistema con error de sincronismo, ecualización adaptativa fraccionaria y sincronización de tiempo con el método 'hiccuping'. Figura 46: Simulación con error de sincronismo y ecualización adaptativa fraccionaria. 2.8 Evaluación del transmisor-receptor con errores de sincronización en tiempo 67 2.8.5 Simulación del sistema con ecualización y sincronización en tiempo Una vez que tenemos desarrollado el sistema completo solucionando todos los errores posibles, vemos como funcionaría el sistema. Realizamos la simulación con las siguientes distorsiones: •Relación Eb/No de 0 a 6 dB. •Diferencia de fase entre receptor y transmisor de de valor π/4. •Diferencia de frecuencia entre transmisor y receptor de 0,0001 Hz. •Error de muestreo de por cada 10000 interpoladas 9999 muestras diezmadas. Y en la figura 47, comprobamos como se comporta el sistema respecto a uno ideal. No hemos introducido multicamino ya que el sistema con todos los errores anteriores no era capaz de compensarlo. Figura 47: Simulación con ruido, error de fase y frecuencia, error de muestreo y ecualización adaptativa fraccionaria. Capítulo 3 - Adaptación y simulación a QPSK del diseño en BPSK Una vez realizado el diseño del módem para BPSK y habiendo probado su funcionamiento, lo modificaremos para que admita QPSK y obtengamos mayor velocidad en el envío de datos. En el diseño que tenemos del transmisor receptor BPSK, las modificaciones a realizar son pocas. Simplemente cambiamos la fuente de datos de BPSK por la fuente de datos QPSK sin necesidad de cambiar ningún bloque de todo el sistema transmisor-receptor. 3.1 Introducción a QPSK (Quadrature Phase-Shift Keying) QPSK (en inglés, Quadrature Phase Shift Keying, codificación por cambio de fase en cuadratura), es un esquema de modulación lineal digital donde la información transportada por la señal transmitida está contenida en la fase. Es una particularización de la modulación digital por desplazamiento de fase o PSK (Phase-Shift Keying). Rb representa la velocidad de transmisión de bit y se corresponde con el tiempo de bit y con el tiempo de símbolo mediante la relación: Rb=1 Tb =2 Ts La fase de la portadora toma uno de cuatro valores igualmente espaciados (0, π/2, π y 3π/2), cada uno corresponde a un único símbolo. La señal QPSK está definida por la expresión SQPSK t=  2E Tcos2fcti−1 20tT , i=1,2,3,4 (3.1.1) Donde E es la energía de símbolo, T es el tiempo del símbolo y es igual a dos veces el período de bit. QPSK equivale a una señal de 4 símbolos donde se modifica su fase, desplazados entre sí 90º. Normalmente se usan como valores de salto de fase de 45º, 135º, 225º, y 315º. Cada símbolo aporta 2 bits. Suele dividirse el flujo de cada bit que forman los símbolos como I y Q. El diagrama de constelación muestra 4 símbolos equiespaciados. La asignación de bits a cada símbolo suele hacerse mediante el código Gray, que consiste en que entre dos símbolos adyacentes estos solo se diferencian en 1 bit. Esto se escoge así para minimizar la tasa de bits erróneos. Fuente datos QPSK Transmisor digital Canal Receptor digital 3.1 Introducción a QPSK (Quadrature Phase-Shift Keying) 69 La probabilidad de bit erróneo para QPSK es la misma que para BPSK: Pb=Q   2Eb N0  ó Pb=1 2erfc   Eb N0  (3.1.2) La tasa de símbolos erróneos se puede calcular con la siguiente fórmula: Ps=1−1−Pb2=2Q   Eb N0  −Q2   Es N0  (3.1.3) 3.1.1 Adaptación del transmisor-receptor BPSK a QPSK Para QPSK tenemos que modificar el transmisor y receptor BPSK. Para el transmisor no es necesario ningún cambio, solamente introducir los datos en QPSK y el resto del proceso es idéntico. Para el receptor tenemos que cambiar la sincronización en fase y frecuencia y la sincronización en tiempo ya que los métodos utilizados para BPSK no son válidos para QPSK. En la sincronización en fase y frecuencia en QPSK utilizaremos el modelo descrito en el apartado 2.6.1.5 Detector con recuperación de la fase de la portadora para BPSK con decisión dirigida. que no utilizamos para BPSK, porque no nos aportaba ninguna mejora significativa, pero si nos aumentaba la complejidad, en QPSK es óptimo. La sincronización de tiempo que utilizaremos es sistema en bloques compuesto por: –Detector de error de tiempo (TED). –Filtrado de lazo –Control de interpolación –Interpolación adaptativa según el control de interpolación. Con esto conseguiremos un sistema robusto y adaptado perfectamente a QPSK. Figura 48: Diagrama de constelación para QPSK. 70 Capítulo 3 - Adaptación y simulación a QPSK del diseño en BPSK Diseño del receptor digital en QPSK: 3.1.1.1. Simulación del sistema adaptado de BPSK a QPSK Una vez que tenemos todos los bloques del transmisor-receptor adaptado a QPSK, realizamos la simulación con las tres ecualizaciones para ver su comportamiento: Comprobamos que el sistema funciona perfectamente, ahora solo nos quedará ir solucionando las distorsiones que aparecen en un sistema real. Figura 49: Simulación del diseño BPSK adaptado a QPSK, con las tres ecualizaciones. Filtro paso banda analógico Receptor digital Filtro paso bajo Filtro paso bajo + diezmado ↓ 2 Decisión ADC Interfaz analógico Conversión a banda base Ecualizador adaptativo fraccionario fs=FI×L×M/Ts fs=L×M/Ts fs=M/Ts fs=2/Ts Sincronización en fase y frecuencia Sincronización en tiempo Sincronización 3.2 Sincronización en tiempo con QPSK 71 3.2 Sincronización en tiempo con QPSK Para la sincronización en tiempo para QPSK utilizaremos un sincronizador o detector de error de tiempo de Gardner, siendo un método recursivo sin ayuda de datos y que es independiente de la recuperación de la fase de la portadora. El objetivo de la sincronización de tiempo de símbolo es producir N muestras a la salida del filtro adaptado durante cada intervalo de símbolo, de tal manera que obtendremos un alineamiento de las muestras de salida con la máxima apertura del diagrama de ojos. Hay dos enfoques básicos para resolver este problema. El primero consiste en calcular el error de sincronización para ajustar la frecuencia de reloj de muestreo del conversor A/D, y el segundo consiste en poner una frecuencia de reloj de muestreo fija para el conversor A/D y calcular el error de sincronización de manera digital. Estos dos enfoques los vimos explicados en el apartado 2.8.1 Introducción a la sincronización de tiempo de símbolo. En QPSK usaremos el segundo enfoque para calcular el error de sincronismo. Cuando el conversor analógico a digital convierte la señal que recibimos, produce unas muestras espaciadas T y una velocidad de N muestras/símbolo. La muestra enésima de esta señal la representamos como: rnT =Ga∑ m ampnT −mT s−wnT  (3.2.1) donde ak∈− M−1A ,− M−3A ,... ,−A ,A, ..., M−3A ,M−1A es el k-ésimo símbolo; TS es el tiempo de símbolo; τ es el retardo desconocido de sincronismo; p(nT) son las muestras de p(t), señal limitada en ancho de banda con una unidad de energía en el intervalo -LpTs ≤ t≤ LpTs; Ga está compuesta de todas las ganancias y pérdidas del sistema; y w(nT) son las muestras del ruido de ancho de banda limitado. Se asume que los datos de los símbolos no están correlacionados: E{akam}=Eavg m−k (3.2.2) donde Eavg es la energía media por símbolo. La señal recibida es procesada por un filtro adaptado cuya respuesta al impulso se compone de muestras de la forma de onda del pulso de tiempo invertido. La salida del filtro adaptado es: ..., xk−1Ts−, xk−1/2Ts− ,x kT s−, xk1/2Ts−, xk1Ts− ,... donde rp(u) es la función de autocorrelación de la forma del pulso, y ν(nT) = p(-nT)*w(nT) es el componente de la salida del filtro adaptado debido al ruido. Como utilizamos una frecuencia de muestreo fija de 1/Ts que es asíncrona con la velocidad de símbolo 1/T, respecto a la señal recibida r(t), el retardo de sincronismo τ solo lo podemos calcular a Figura 50: Bloques básicos de un muestreo de datos discretos. Filtro paso banda analógico Filtro Adaptado ADC r(t) r(nT) fs r(t) x(nT) 72 Capítulo 3 - Adaptación y simulación a QPSK del diseño en BPSK partir de las muestras asíncronas del filtro adaptado x(nT). Este método genera muestras que no están alineadas con los limites del símbolo, como veríamos en un diagrama de ojos a la salida del filtro adaptado. La función de sincronización de símbolo es “mover” las muestras a los instantes de tiempo deseados. La técnica que utilizaremos para “mover” las muestras será una técnica de interpolación. Debido a que el sincronizador tiene que adaptarse a un retardo de tiempo desconocido, el interpolador debe ser adaptativo. Cuando funciona correctamente, el interpolador produce muestras del filtro adaptado que están alineadas con los límites del símbolo y el instante de muestreo óptimo. Podemos ver el diagrama de bloques en la figura 51. La principal desventaja de este método es la fluctuación en la interpolación (del inglés interpolation jitter), que se produce cuando Ti ≠ NT. Si el interpolador no tuviese esta fluctuación, la salida del interpolador produciría N muestras, en promedio. Pero debido a la condición de Ti ≠ NT, el error de sincronización es fraccionario y se acumula, llegando a convertirse a la unidad. Cuando esto ocurre, la salida del interpolador está en la muestra N-1 o N+1, cuando debería estar en la muestra N. Esta fluctuación en la interpolación es especialmente problemática si los bits de datos deben ser retransmitidos a través de un enlace síncrono. Este método que hemos visto, es el más utilizado para la sincronización de tiempo en los detectores de muestreo de datos. A menudo, la sincronización de tiempo se realiza mediante un PLL de tiempo discreto compuesto por tres unidades básicas: el TED (del inglés Timing Error Detectors, detector de error de tiempo), el filtro de lazo, y el control de la interpolación. La explicación de un PLL discreto y el cálculo de sus constantes se ve en el Anexo J. Filtro discreto de lazo enganchado. La combinación del interpolador y el TED desempeñan el papel del detector de fase, y el control del interpolador desempeña el papel del DDS, u oscilador. 3.2.1 Detector de error de tiempo (TED) En general, el TED produce una señal de error una vez cada símbolo a partir de la estimación del tiempo actual y usando las entradas del filtro adaptado, r(nT), y las salidas del filtro adaptado x(nT). Es decir, la señal de error se actualiza a la velocidad de símbolo. Figura 51: Diagrama de bloques en tiempo discreto para la sincronización de símbolo de los detectores de muestreo de datos. Filtro paso banda analógico Filtro Adaptado Interpolador F(z) ADC TED Frecuencia Fija Control de interpolación r(t) r(nT) T=Ts N xkT s  Muestras disponibles a la salida del filtro adaptado Muestras disponibles a la salida del interpolador 3.2 Sincronización en tiempo con QPSK 73 80 Capítulo 3 - Adaptación y simulación a QPSK del diseño en BPSK donde todos los xj se asumen distintos, el polinomio interpolador en la forma de Lagrange es la combinación lineal Lx=∑ j=0 k yjljx (3.2.1.11) de bases polinómicas de Lagrange ljx= ∏ i=0, i≠j kx−xi xj−xi =x−x0 xj−x0 ... x−xj−1 xj−xj−1 x−xj1 xj−xj1 ... x−xk xj−xk (3.2.1.12) Por lo tanto con esta ecuación buscamos una función polinómica L(x) de grado k con Lxj=yjj=0,..., k Así utilizando el polinomio de Lagrange para solucionar el problema de la interpolación, podemos ver: 1. ljx es un polinomio y es de grado k. 2. lixj=ij ,0i , j k Así la función L(x) es un polinomio de grado k y por lo tanto tenemos Lxi=∑ j=0 k yjljxi=yi (3.2.1.13) El problema de interpolación puede tener tan solo una solución, pues la diferencia entre dos tales soluciones, sería otro polinomio de grado k a lo sumo, con k+1 ceros. Por lo tanto, L(x) es el único polinomio interpolador. El inconveniente que tiene esta interpolación es que no siempre funciona correctamente con cantidades mayores de seis puntos. A medida que crece el grado del polinomio interpolador, se percibe una creciente variación entre puntos de control consecutivos, lo que produce que la aproximación entre dos puntos continuos sea muy distinta a la que se esperaría. Este es el código en MATLAB® que utilizaremos: El retardo fraccionario que tenemos que calcular es mu. Como utilizaremos el filtro retardo de Lagrange en la sincronización de tiempo de QPSK, estará incluido en un bucle que irá calculando mu en cada momento. %Filtro retardo Lagrange hh1=(mu-1)*mu*(mu+1)/6; %Filtro retardo Lagrange coef 1 hh2=-(mu-2)*mu*(mu+1)/2; %Filtro retardo Lagrange coef 2 hh3= (mu-2)*(mu-1)*(mu+1)/2; %Filtro retardo Lagrange coef 3 hh4=- (mu-2)*mu*(mu-1)/6; %Filtro retardo Lagrange coef 4 hret=[hh1 hh2 hh3 hh4]; %Filtro retardo Lagrange 3.2 Sincronización en tiempo con QPSK 81 Control de interpolación El propósito del bloque de control del interpolador como muestra la figura 51 es proporcionar al interpolador el índice del punto base k-ésimo m(k) y el intervalo fraccionario k-ésimo μ(k). El índice base no suele ser calculado explícitamente, sino más bien es identificado por una señal que se suele llamar estroboscópica o de parpadeo (del inglés, strobe). Dos métodos comúnmente utilizados para el control de la interpolación son el método basado en el contador y un método recursivo. En nuestro diseño utilizaremos el método basado en el contador. Contador Modulo-1 de control para la interpolación Para el caso donde es necesaria la interpolación cada N muestras, el control de interpolación se puede lograr usando un índice de punto base modulo-1. Un diagrama de bloques de este enfoque se muestra en la figura 57. Las muestras espaciadas un periodo T a la entrada del filtro adaptado se muestrean en el filtro adaptado con el mismo reloj utilizado para actualizar el contador. El contador modulo-1 decreciente se muestra aquí, ya que simplifica el cálculo del intervalo fraccional. También se podría usar un contador modulo-1 incremental. El contador en 1/N de media, de manera que se producen subdesbordamientos (del inglés, underflows) cada N muestras de media. La salida del filtro de bucle ν(n) ajusta la cantidad en que disminuye el contador. Esto se hace para alinear el subdesbordamiento con los tiempos de muestreo de la interpolación deseada. Cuando funciona correctamente, el subdesbordamiento del contador módulo-1 ocurre en un periodo de reloj después de la interpolación deseada como se ilustra en la figura 58. La condición de desbordamiento se indica con un parpadeo (“strobe”) y es utilizado por el interpolador para identificar el punto base del índice. El intervalo fraccional puede calcularse directamente a partir del contenido del contador modulo-1 en desbordamiento. En general, el valor del contador cumple la ecuación recursiva n1=  n−Wn  mod 1 (3.2.1.14) Figura 57: Contador modulo-1 para el control de la interpolación en un sistema banda base PAM. El punto base índice es identificado por el parpadeo del desbordamiento y la actualización de intervalo fraccional usando el contador contenido en el desbordamiento. 82 Capítulo 3 - Adaptación y simulación a QPSK del diseño en BPSK donde W(n) = 1/N + ν(n) es el contador de entrada y es la estimación de la relación Ti/T. Cuando el contador decremental desborda, el índice n es el punto base del índice m(k). La incorporación del modulo-1 produce la reducción de la ecuación 3.2.1.14 a   mk1  =1  mk  −W  mk  (3.2.1.15) Como se ilustra en la figura 58, los valores del contador η(m(k)) y 1 – η(m(k) + 1) forman triángulos similares. Esta observación lleva a la relación   mk    mk  =1−  mk  1−  mk1  (3.2.1.16) Resolviendo para μ(m(k)) la ecuación nos queda de la siguiente manera   mk  =  mk  1−  mk1    mk  =  mk  W  mk  (3.2.1.17) El periodo de desbordamiento (en muestras) del contador decreciente modulo-1 es 1 Wn=1 1 Nn (3.2.1.18) =N 1Nn (3.2.1.19) Cuando está en bucle, ν(n) es cero de media y el periodo de desbordamiento del contador decremental modulo-1 es N muestras de media. Durante la adquisición, ν(n) ajusta el periodo de desbordamiento para alinear los eventos del desbordamiento con los límites del símbolo como se ha descrito. El contador decremental modulo-1 juega el mismo papel en este sistema de bucle cerrado que el DDS que se reproduce en el PLL general de la (Figura anexo J.2 (a)). Teniendo en cuenta que debido a que el contador es un contador decreciente, la ganancia del DDS es K0 = -1. La operación modulo-1 del contador corresponde a la operación del módulo-2π del DDS. 3.2 Sincronización en tiempo con QPSK 83 3.2.2 Implementación de Gardner con interpolación de lagrange y contador modulo-1 para QPSK Veremos en este apartado como hemos implementado en nuestro sistema el uso de Gardner con el contador decreciente modulo-1 para el control de la interpolación y junto con el interpolador de Lagrange para realizar la sincronización de tiempo para QPSK. Podemos ver un diagrama de bloques del diseño en la figura 59. La forma del pulso es raíz de coseno alzado con un roll-off del 50%. La señal recibida se muestrea a una velocidad equivalente a N = 2 muestras/símbolo. Las muestras de la señal recibida r(nT), se filtran por un filtro adaptado funcionando a 2 muestras/símbolo. La salida del filtro adaptado x(nT) se usa por el interpolador de lagrange para calcular la señal interpolada xnT . Esta señal forma la entrada del detector de Gardner. La salida de Gardner es interpolada por 2, ya que el filtro de lazo funciona a 2 muestras por símbolo y el contador decremental módulo-1. La señal de error de sincronización se actualiza en Figura 58: Dibujo de la relación entre las muestras disponibles, la interpolación deseada, y el contenido del contador modulo-1. 84 Capítulo 3 - Adaptación y simulación a QPSK del diseño en BPSK 1 muestra por símbolo y como el filtro de lazo y el controlador funcionan a N = 2 muestras por símbolo, la señal de error de sincronización es filtrada por el filtro de lazo integrador-proporcionalpositivo. Las salida del filtro de lazo es la entrada al contador decremental modulo-1. El contador controla el proceso de interpolación. Debido a que el interpolador no realiza un cambio de la velocidad de muestreo, no hay necesidad de proporcionar información al índice base. El interpolador produce un valor interpolado de cada muestra de entrada. El sistema de sincronización de tiempo también puede ser descrito como un algoritmo de ordenador. El reto al llevar este enfoque al ordenador, es que el sistema de sincronización de tiempo es un sistema paralelo al resto del diseño, mientras que un algoritmo de ordenador es un sistema secuencial. Esto es un problema común en el modelado de sistemas: la simulación de un sistema inherentemente paralelo en un procesador secuencial. Un método común para la generación de la representación secuencial del sistema es escribir el algoritmo como un bucle, donde cada paso del bucle representa un ciclo de reloj en el sistema digital. Dentro del bucle, en el sistema aritmético paralelo (combinatoria) las expresiones se evalúan en orden topológico. A continuación los valores de registro (memoria) se actualizan. A continuación se expone el código en MATLAB® que realiza todas las operaciones de la figura anterior, utilizando el mismo nombre de las variables en el código, con los siguientes añadidos: TEDBuff un vector columna de 2x1 de la salida del interpolador usado por el TED xx un vector añadido a las salidas del filtro adaptado xnT  para k = 0,1, ... Figura 59: Sistema sincronización de tiempo de símbolos binarios PAM basado en GTED usando un interpolador lineal y un filtro de lazo integrador. Filtro paso banda analógico Filtro Adaptado Interpolación polinómica de Lagrange ADC Frecuencia Fija r(t) r(nT) T=Ts N xkT s  z-1 z-1 + - Gardner TED ↑2 z-1 K2 K1 Filtro de lazo F(z) 1 2 z-1 Actualización μ NCO(n) Registro modulo-1 W(n) v(n) + - Inserta ceros xk−1/2Ts  xk−1Ts  x(nT) xkT s  CNT underflow vp(n) vi(n) 3.2 Sincronización en tiempo con QPSK 85 for n=4:length(x) CNT = CNT_next; mu = mu_next; % Filtro interpolador/retardador de Lagrange hh1=(mu-1)*mu*(mu+1)/6; %Filtro retardo Lagrange coef 1 hh2=-(mu-2)*mu*(mu+1)/2; %Filtro retardo Lagrange coef 2 hh3= (mu-2)*(mu-1)*(mu+1)/2; %Filtro retardo Lagrange coef 3 hh4=- (mu-2)*mu*(mu-1)/6; %Filtro retardo Lagrange coef 4 hret=[hh1 hh2 hh3 hh4]; %Filtro retardo Lagrange xret=[x(n) x(n-1) x(n-2) x(n-3)]; xIold=xI; xI=hret*xret'; % Salida del Interpolador if underflow==1 z(2*k-1)=xIold; z(2*k)=xI; k=k+1; end if (underflow == 1 && old_underflow == 0) eR=real(TEDBuff(1)) * (real(TEDBuff(2)) - real(xI)); % Gardner eI=imag(TEDBuff(1)) * (imag(TEDBuff(2)) - imag(xI)); % Gardner e=eR+eI; %Gardner else e = 0; end vp = K1*e; % componente proporcional del filtro de bucle vi = vi + K2*e; % componente integrador del filtro de bucle v = vp + vi; % salida del filtro de bucle W = 1/2 + v; % valor NCO de control % Actualizamos registros if underflow==0 && old_underflow==0 TEDBuff = TEDBuff; % Saltamos la actual muestra elseif underflow==0 && old_underflow==1 TEDBuff = [xI; TEDBuff(1)]; % operaciones normales elseif underflow==1 && old_underflow==0 TEDBuff =[xI; TEDBuff(1)]; % operaciones normales elseif underflow==1 && old_underflow==1 TEDBuff = [xI; 0]; % rellenamos la muestra perdida end CNT_next = CNT - W; % actualizamos CNT para el siguiente ciclo if CNT_next < 0 % comprobamos si el underflow ha ocurrido CNT_next = 1 + CNT_next; % reduce el valor del modulo-1 si underflow old_underflow = underflow; underflow = 1; % cambia el flag underflow mu_next = CNT/W; % actualiza mu else old_underflow = underflow; underflow = 0; mu_next = mu; end end 86 Capítulo 3 - Adaptación y simulación a QPSK del diseño en BPSK En nuestro ejemplo utilizaremos un PLL de sincronización de tiempo con los siguientes requisitos de rendimiento BnTS = 0.005 (Tiempo en converger) y =1/  2 . La ecuación (3.2.1.6) nos proporciona la fase de la ganancia del detector Kp = 2.7. Utilizando N = 2, las constantes del lazo calculadas en la ecuación (J.16) son: K1KpK0 = 6.6445 x 10-3 K2KpK0 = 2.2148 x 10-5 Por último, resolviendo para K1 y K2 con Kp = 2.7 y K0 = -1 (son los valores de enganche) (para tener en cuenta el hecho de que el controlador es un contador decreciente modulo-1) da K1 = -2,4609 x 10-3 K2 = -8,2030 x 10-6 El código escrito en MATLAB® consigue los siguientes objetivos: –El interpolador de lagrange consigue unir en un mismo código un filtro causal y no causal. El efecto no causal del filtro es útil cuando hay un cambio muy rápido y breve en la sincronización de símbolo. –Cuando T≠Ts/2, tenemos en cuenta que el interpolador actúa entre dos ciclos de reloj consecutivos (T > Ts/2) o cuando dos ciclos de reloj ocurren entre interpolaciones consecutivas (T < Ts/2). •El caso de T > Ts/2, se ilustra en la figura 60. Las muestras deseadas parecen “deslizarse hacia la izquierda” porque las muestras están espaciadas un poco más que Ts/2. La mayoría de las veces, la interpolación deseada del filtro adaptado se produce por cada dos muestras del filtro adaptado. Debido a que T > Ts/2, un error residual de sincronismo se acumula. A medida que el error residual de sincronismo se acumula, el intervalo fraccional µ(k) disminuye con el tiempo, como se muestrea. Finalmente, la acumulación del error residual de sincronismo supera un periodo de símbolo. Esto coincide con µ(k) decreciendo a 0 y envolviendo a 1. Cuando esto ocurre, la interpolación deseada del filtro adaptado se produce una muestra separadamente en vez de las dos normales. Como se muestra, cuando esto ocurre, una de las muestras necesarias por GTED nunca se produce. Esta muestra perdida, debe ser insertada o “rellenada” en los registros del GTED para garantizar un funcionamiento adecuado después de la “envoltura” (del inglés, wrap around). 3.2 Sincronización en tiempo con QPSK 87 •El caso de T < Ts/2, se ilustra en la figura 61. En este caso, las muestras deseadas parecen “deslizarse hacia la derecha” porque las muestras están espaciadas ligeramente menos que Ts/2. La mayoría de las veces, la interpolación deseada del filtro adaptado se produce por cada dos muestras disponibles de las del filtro adaptado. Debido a que T < Ts/2, un error residual de tiempo (de sincronización) se acumula. Como el error se acumula, el intervalo fraccionario µ(k) aumenta con el tiempo, como se muestra. Finalmente, el error acumulado supera un periodo de muestreo. Esto coincide con µ(k) superando el 1 y envolviendo a 0. Cuando esto ocurre, la interpolación deseada del filtro adaptado está espaciada tres muestras en vez de las dos habituales. Como consecuencia, el interpolador produce una muestra adicional que debe ser ignorada, o “saltada” por GTED. Esto se logra al no desplazar los registros de GTED después de la “envoltura” (del inglés, wrap around). Para tener en cuenta la condición T≠Ts/2, hemos utilizado una variable llamada old_underflow (del inglés viejo desbordamiento). Esta variable, junto con la variable underflow (del inglés desbordamiento), se utiliza para determinar si la operación es normal, “relleno” (en inglés “stuffing”), o “salto” (del inglés “skipping”). Figura 60: Un ejemplo de la relación entre las muestras disponibles a la salida del filtro adaptado, la interpolación deseada, la variable underflow del controlador de interpolación NCO, y el intervalo fraccionario para el caso donde la frecuencia de muestreo de reloj es ligeramente más lenta que dos muestras / símbolo (es decir, T > Ts/2). Suponemos un filtro de interpolación de lagrange causal. 88 Capítulo 3 - Adaptación y simulación a QPSK del diseño en BPSK –También vemos que entre el GTED y el filtro de lazo se ha introducido una interpolación por 2, “muestreo superior en 2”. Esta función es una abstracción. La operación de muestreo se realiza mediante la inserción de ceros entre las actualizaciones del error de sincronismo. La mayoría de las veces se inserta un cero. Pero a veces no se insertan ceros, y otras veces se insertan 2 ceros. Como ejemplo de la operación para el caso de que la frecuencia de reloj de la muestra es ligeramente superior a 2 muestras/símbolo (es decir, T < Ts/2), suponemos que las muestras r(nT) fueron obtenidas donde T cumple T=Ts 21 400 o, lo que es equivalente frecuencia de muestreo=  21 400  ×velocidad de símbolo La frecuencia de muestreo es de 1/400 de la velocidad de símbolos más rápido que 2 muestras/símbolo. La señal de error y el intervalo fraccional para la misma velocidad de PLL considerada previamente está dibujada en la figura 62 y 63. Como era de esperar, las rampas en los intervalos fraccionarios van de 0 a 1 y se da la vuelta cada 400 símbolos. Esto se debe a que el error de frecuencia en el reloj de muestreo es de 1/400 de la velocidad de símbolo. La señal de error indica que la sincronización del PLL se engancha cerca de 200 símbolos. En este caso la velocidad de sincroniFigura 61: Un ejemplo de la relación entre las muestras disponibles a la salida del filtro adaptado, la interpolación deseada, la variable underflow del controlador de interpolación NCO, y el intervalo fraccionario para el caso donde la frecuencia de muestreo de reloj es ligeramente más rápida que dos muestras / símbolo (es decir, T < Ts/2). Suponemos un filtro de interpolación de lagrange causal. 3.2 Sincronización en tiempo con QPSK 89 zación del PLL es equivalente a la entrada de rampa de fase para el PLL genérico revisado en la Figura anexo J.2. Figura 62: Señal de error de sincronismo para la sincronización de velocidad de símbolo para el caso donde la frecuencia de reloj es ligeramente mayor que dos muestras / símbolo. Figura 63: Intervalo de interpolación fraccionario para la sincronización de velocidad de símbolo para el caso donde la frecuencia de reloj es ligeramente mayor que dos muestras / símbolo. 96 Capítulo 3 - Adaptación y simulación a QPSK del diseño en BPSK 3.4 Simulación del diseño completo de QPSK Hemos realizado la simulación con la ecualización CMA ya que esta es la única que es capaz de abrir el ojo de los símbolos y conseguir engancharse. La ecualización LMS y LMS DD necesitan que el ojo esté algo abierto para poder funcionar y en este caso cuando hay error de fase y frecuencia no se da. El error de frecuencia utilizado es de 0,0001 y el de fase es de 0,2, obteniendo la siguiente gráfica: Para mejorar el sistema una vez que el ecualizador CMA se ha enganchado podemos utilizar la ecualización LMS DD. Vemos como el sistema se comporta aceptablemente bien, ya que a partir de cierto nivel de Eb/N0 el sistema consigue engancharse y corregir los errores del entorno. Figura 69: Curva de probabilidad de error para error de fase y frecuencia con ecualización CMA y corrección de fase y frecuencia por decisión directa. 3.4 Simulación del diseño completo de QPSK 97 El algoritmo utilizado para esta simulación se describe en el Texto K.3, y la simulación obtenida es la siguiente: El sistema que hemos diseñado se comporta bastante bien en la simulación en el ordenador, el siguiente paso que será el laboratorio veremos si funciona igual de bien. Todos los errores que podrían surgir en un sistema de comunicaciones real, los hemos ido corrigiendo con los algoritmos diseñados (exceptuando la sincronización en tiempo, que no ha funcionado), por lo que el objetivo de diseño está completado, a falta de probarlo con los dos ordenadores y micrófono y altavoz. Figura 70: Curva de probabilidad de error para error de fase y frecuencia con ecualización CMA más LMS DD con recuperación de fase y frecuencia, CMA y corrección de fase y frecuencia por decisión directa. Capítulo 4 - Simulación del sistema con altavoz y micrófono Una vez que tenemos todos los bloques diseñados veremos las simulaciones en un entorno real, haciendo de canal un altavoz y un micrófono y poniendo un ordenador como transmisor y otro como receptor. En estas simulaciones no utilizaremos el algoritmo de sincronización en tiempo debido a que no ha funcionado en las simulaciones en el ordenador. 4.1 Simulación del transmisor-receptor con un cable entre ordenadores En esta primera evaluación del transmisor-receptor con dos ordenadores, utilizaremos un cable como simulación del canal para evitar todo el ruido posible y ver como se comporta el sistema diseñado. Podemos ver en la siguiente imagen como están conectado los dos ordenadores a través de un cable y la mesa de mezclas. Para las simulaciones no hemos realizado el BER ya que necesitamos la señal generada en el primer ordenador para compararla con la señal recibida en el segundo ordenador. Como nos interesa solamente comprobar que el sistema funciona correctamente, con la ecualización y la corrección de fase y frecuencia, veremos la parte real de la señal recibida QPSK para ver el resultado obtenido. Los datos con los que hemos trabajado en esta simulación son: •Ancho de banda de la señal: 1000 Hz •Frecuencia central: 1500 Hz •Frecuencia de muestreo: 8000 Hz •Periodo de muestreo: 1/fs 4.1 Simulación del transmisor-receptor con un cable entre ordenadores 99 Hemos realizado dos simulaciones con valores diferentes del ecualizador CMA. En esta primera simulación con los dos ordenadores con el cable, los valores utilizados en el ecualizador CMA son: •Longitud del filtro ecualizador: Ne=33 •Parámetro de convergencia: mu=0,05 Parte real de la señal QPSK, a la salida del ecualizador. Imágen 1: Conexión en la mesa de mezclas de los dos ordenadores. 100 Capítulo 4 - Simulación del sistema con altavoz y micrófono Y la parte real de la señal QPSK a la salida del sincronizador en fase y frecuencia En esta simulación podemos ver como el sistema se engancha pero le cuesta un tiempo, y esto seguramente se debe a que el parámetro de convergencia es muy pequeño y el ecualizador CMA tarda más en engancharse. En la segunda simulación con los dos ordenadores con el cable, los valores utilizados en el ecualizador CMA son: •Longitud del filtro ecualizador: Ne=33 •Parámetro de convergencia: mu=0,5 Parte real de la señal QPSK, a la salida del ecualizador. 4.1 Simulación del transmisor-receptor con un cable entre ordenadores 101 Parte real de la señal QPSK a la salida del sincronizador en fase y frecuencia Podemos comprobar como al ser más pequeño el parámetro de convergencia, el ecualizador tarda menos en engancharse y la señal a las pocas muestras está ecualizada y sincronizada en fase y frecuencia. 102 Capítulo 4 - Simulación del sistema con altavoz y micrófono 4.2 Simulación del transmisor-receptor con un altavoz y un micrófono entre ordenadores En esta segunda evaluación del transmisor-receptor con dos ordenadores, utilizaremos un altavoz en el transmisor y un micrófono en el receptor, conectado al otro ordenador a través de la mesa de mezclas, siendo el aire el canal de transmisión, y por lo tanto tendremos ruido. Con este entorno veremos como se comporta el sistema diseñado. Vemos en la siguiente imagen como están configurados los dos ordenadores. Para las simulaciones no hemos realizado el BER ya que necesitamos la señal generada en el primer ordenador para compararla con la señal recibida en el segundo ordenador. Como nos interesa solamente comprobar que el sistema funciona correctamente, con la ecualización y la corrección de fase y frecuencia, veremos la parte real de la señal recibida QPSK para ver el resultado obtenido. Los datos con los que hemos trabajado en esta simulación son: •Ancho de banda de la señal: 1000 Hz •Frecuencia central: 1500 Hz •Frecuencia de muestreo: 8000 Hz •Periodo de muestreo: 1/fs 4.2 Simulación del transmisor-receptor con un altavoz y un micrófono entre ordenadores 103 Podemos ver en la imagen 2 como el altavoz está cerca del micrófono que a su vez está conectado a la mesa de mezclas. Este micrófono está diseñado para convertir principalmente la voz que le llega directamente en vez de la que le llega lateralmente. La señal que va a captar el micrófono va a ser lateral, y en la mesa de mezclas tendremos que amplificar un poco el sonido para captar bien la señal, por lo que tendremos bastante ruido en la señal obtenida en MATLAB®. Imagen 2: Altavoz de un ordenador y micrófono conectado a la mesa de mezclas del otro ordenador. 104 Capítulo 4 - Simulación del sistema con altavoz y micrófono Hemos realizado dos simulaciones con valores diferentes del ecualizador CMA. En esta primera simulación con el altavoz de un ordenador y el micrófono del otro ordenador, los valores utilizados en el ecualizador CMA son: •Longitud del filtro ecualizador: Ne=33 •Parámetro de convergencia: mu=0,05 Parte real de la señal QPSK, a la salida del ecualizador. Parte real de la señal QPSK a la salida del sincronizador en fase y frecuencia Comprobamos como el ruido es considerable, como habíamos previsto, pero aún así el sistema diseñado es capaz de engancharse a la señal recibida. 4.2 Simulación del transmisor-receptor con un altavoz y un micrófono entre ordenadores 105 En la segunda simulación el altavoz y el micrófono, los valores utilizados en el ecualizador CMA son: •Longitud del filtro ecualizador: Ne=33 •Parámetro de convergencia: mu=0,5 Parte real de la señal QPSK, a la salida del ecualizador. Parte real de la señal QPSK a la salida del sincronizador en fase y frecuencia Vemos que con este parámetro de convergencia el sistema se engancha perfectamente. El sistema es robusto, ya que con las peores condiciones es capaz de transmitir razonablemente bien. Anexo C. Código MATLAB® del apartado 2.4 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% TX-RX – Simulación %% 2.4 Evaluación del transmisor-receptor básico con ruido en el canal %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %-- Frecuencia intermedia de 9MHz/24MHz = 0,375 (en digital) FI=9e6/24e6; % Frecuencia intermedia FaseTx=0; FaseRx=0; %-- Multicamino c=1; %-- Conformación de pulsos (raíz de coseno alzado) rrc=rcosine(1,4,'sqrt',.35,4); % Ms=24; % Número de muestras por símbolo (factor de interpolación total) b=1; % Número de bits por símbolo (1 BPSK) % vec=0:8; eval=zeros(1,length(vec)); num_err=zeros(1,length(vec)); cont=1; var_p=1; for k=vec N=10^4; % Número de bits Bits=randint(N,1); % Generación de bits aleatorios [r,BPSKtx,srrc,hcic4]=tx_bpsk_frec_if(Bits,rrc,FI,FaseTx); % TRANSMISOR EbNo_dB=k; % Señal a ruido en recepción [scanal,smulti,sru]=canal(r,EbNo_dB,Ms,b,c); [r2_d,r_d]=rx_bpsk_frec_if(scanal,FI,FaseRx,rrc); % RECEPTOR % BPSKrec=sign(r2_d); % Decisión BitsRec = (BPSKrec > 0) *1; [ne,ber]=biterr(Bits(1:length(BitsRec)),BitsRec); num_err(k+1)=ne; eval(cont)=ber; cont=cont+1; end Texto C.1: Transmisor Digital y Receptor Digital con generación de gráfica de probabilidad de error. Anexo C. Código MATLAB® del apartado 2.4 113 % Curva teórica y simulada BER para BPSK ebn0_lin = 10.^((vec)/10); ber_teo= erfc(sqrt(ebn0_lin))/2; semilogy((vec), ber_teo); grid hold on plot(vec, eval, 'r',vec, eval, 'or'); legend('teórica','simulada'); xlabel('E_b/N_0'); ylabel('BER'); title('Curva de probabilidad de error de bit para la modulación BPSK'); hold off Texto C.2: Representación de la curva teórica y la simulada de probabilidad de error para BPSK. Anexo D. Código MATLAB® del apartado 2.5 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% TX-RX – Simulación %% 2.5 Evaluación del transmisor y receptor con ecualización adaptativa %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% FI=9e6/24e6; % Frecuencia intermedia FaseTx=0; FaseRx=0; %-- Interpolación y diezmado M=4; L=6; %-- Multicamino c = [0.5 zeros(1,(M*L)-1) 1 zeros(1,(M*L)-1) -0,6]; rrc=rcosine(1,4,'sqrt',.35,4); % Pulso de raíz coseno alzado %-- Datos para el ruido blanco Ms=24; % Número de muestras por símbolo (factor de interpolación total) b=1; % Número de bits por símbolo (1 BPSK) % cont=1; vec=0:6; eval=zeros(1,length(vec)); for k=vec N=10^4; Bits=randint(N,1); % Generación de bits aleatorios [sif,BPSKtx,srrc,hcic4]=tx_bpsk_frec_if(Bits,rrc,FI,FaseTx); % TRANSMISOR EbNo_dB=k; % Señal a ruido en recepción smulti=filter(c,1,sif); % Multicamino [sru]=canal_ruido(smulti,EbNo_dB,Ms,b); % Ruido %% RECEPTOR %% %-- Interfaz analógica Receptor hbd = remez(90,[0 0.65 0.7 0.8 0.85 1],[0 0 1 1 0 0]); retardo_remez=(length(hbd)-1)/2; r_pb=filter(hbd,1,sru); %-- Conversión a Banda Base n=length(r_pb); rbb=2*r_pb(retardo_remez+1:end).*cos(2*pi*FI*(0:n-retardo_remez-1)+FaseRx)'; %-- Filtro paso bajo + Diezmado retardo_cic=(length(hcic4)-1)/2; % retardo del filtro CIC H0=sum(hcic4); % Ganancia del filtro (suma de todos sus coeficientes) %-- Filtrado paso bajo (Mismo filtro CIC que en transmisión) rbb_f=filter(hcic4,1,rbb); rbb_f=rbb_f./H0; retardo1=retardo_cic+retardo_cic; %-- Diezmamos por 6 desde el retardo de filtro CIC + Filtro CIC + 1 r_d=rbb_f(retardo1+1:L:end); %-- Detección r2=filter(rrc,1,r_d); retardo_rrc=(length(rrc)-1)/2; retardo2=retardo_rrc+retardo_rrc; r2_d=r2(retardo2+1:M:end); % Diezmamos por M %-- Ecualización de la señal N=11; % orden del filtro ecualizador delta=6; % retardo en la comparación Anexo D. Código MATLAB® del apartado 2.5 115 mu=0.001; % parámetro de convergencia [y,w,e]=ecualiza_LMS(r2_d,BPSKtx,N,delta,mu); % Ecualización LMS BPSKrec=sign(y(delta+1:end)); % Decisión BitsRec = (BPSKrec > 0) *1; [ne,ber]=biterr(Bits(1:length(BitsRec)),BitsRec); eval(cont)=ber; cont=cont+1; end Texto D.1: Transmisor Digital y Receptor Digital con ecualización y generación de gráfica de probabilidad de error. % Curva teórica y simulada BER para BPSK ebn0_lin = 10.^((vec)/10); ber_teo= erfc(sqrt(ebn0_lin))/2; semilogy((vec), ber_teo); grid hold on plot(vec, eval, 'r',vec, eval, 'or'); legend('teórica','simulada'); xlabel('E_b/N_0'); ylabel('BER'); title('Curva de probabilidad de error de bit para la modulación BPSK'); hold off Texto D.2: Representación de la curva teórica y la simulada de probabilidad de error para BPSK con ecualización. Anexo E. Código MATLAB® del apartado 2.6 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% TX-RX – Simulación %% 2.6 Evaluación del transmisor y receptor con sincronización en fase y frecuencia %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% FI=9e6/24e6; % Frecuencia intermedia FaseTx=pi/4; FaseRx=0; % Diezmado - Interpolado M=4; L=6; % Multicamino c=1; % Pulso de raíz coseno alzado rrc=rcosine(1,4,'sqrt',.35,4); retardo_rrc=(length(rrc)-1)/2; %-- Datos para el ruido blanco Ms=24; % Número de muestras por símbolo (factor de interpolación total) b=1; % Número de bits por símbolo (1 BPSK) % cont=1; vec=0:6; eval=zeros(1,length(vec)); for k=vec N=10^4*2^k; % Número de bits Bits=randint(N,1); % Generación de bits aleatorios [sif,BPSKtx,srrc,hcic4]=tx_bpsk_frec_if(Bits,rrc,FI,FaseTx); % TRANSMISOR retardo_cic=(length(hcic4)-1)/2; % retardo del filtro CIC H0=sum(hcic4); % Ganancia del filtro CIC (suma de todos sus coeficientes) EbNo_dB=k; % Señal a ruido en recepción smulti=filter(c,1,sif); % Multicamino [sru]=canal_ruido(smulti,EbNo_dB,Ms,b); % Ruido %% RECEPTOR %% %-- Interfaz analógica hbd = remez(90,[0 0.65 0.7 0.8 0.85 1],[0 0 1 1 0 0]); retardo_remez=(length(hbd)-1)/2; r_pb=filter(hbd,1,sru); %-- Conversión a Banda Base + Filtro paso bajo + Diezmado [zlazo,df,theta]=lazo_costas_2orden(r_pb,FI+0.0001,retardo_remez,hcic4,L,0.05,0.8); rbb = real(zlazo); %-- Filtro adaptado r2=filter(rrc,1,rbb); retardo_rrc=(length(rrc)-1)/2; retardo2=retardo_rrc+retardo_rrc; r2_d=r2(retardo2+1:M:end); % Diezmamos por M %-- Ecualización de la señal N=11; % orden del filtro ecualizador delta=6; % retardo en la comparación mu=0.001; % parámetro de convergencia [y,w,e]=ecualiza_LMS(r2_d,BPSKtx,N,delta,mu); % Ecualización % Anexo E. Código MATLAB® del apartado 2.6 117 BPSKrec=sign(y(delta+1:end)); % Decisión BitsRec = (BPSKrec > 0) *1; [ne,ber]=biterr(Bits(1:length(BitsRec)),BitsRec); eval(cont)=ber; cont=cont+1; end Texto E.1: Transmisor Digital y Receptor Digital con ecualización LMS, error de fase y frecuencia y , lazo de costas, y generación de gráfica de probabilidad de error. % Curva teórica y simulada BER para BPSK ebn0_lin = 10.^((vec)/10); ber_teo= erfc(sqrt(ebn0_lin))/2; semilogy((vec), ber_teo); grid hold on plot(vec, eval, 'r',vec, eval, 'or'); legend('teórica','simulada'); xlabel('E_b/N_0'); ylabel('BER'); title('Curva de probabilidad de error de bit para la modulación BPSK'); hold off Texto E.2: Representación de la curva teórica y la simulada de probabilidad de error para BPSK con ecualización. Anexo F. Código MATLAB® del apartado 2.7 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% TX-RX – Simulación %% 2.7 Evaluación del transmisor y receptor con Ecualización ciega %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% FI=9e6/24e6; % Frecuencia intermedia FaseTx=0; FaseRx=0; err_frec=0; % Diezmado - Interpolado M=4; L=6; % Multicamino c = [0.5 zeros(1,(M*L)-1) 1 zeros(1,(M*L)-1) -0,6]; % Pulso de raíz coseno alzado rrc=rcosine(1,4,'sqrt',.35,4); %-- Datos para el ruido blanco Ms=24; % Número de muestras por símbolo (factor de interpolación total) b=1; % Número de bits por símbolo (1 BPSK) cont=1; vec=0:6; eval=zeros(1,length(vec)); for k=vec N=10^5;%*2^k; % Número de bits Bits=randint(N,1); % Generación de bits aleatorios [sif,BPSKtx,srrc,hcic4]=tx_bpsk_frec_if(Bits,rrc,FI,FaseTx); % TRANSMISOR EbNo_dB=k; % Señal a ruido en recepción smulti=filter(c,1,sif); % Multicamino [sru]=canal_ruido(smulti,EbNo_dB,Ms,b); % Ruido %-- Interfaz analógica hbd = remez(90,[0 0.65 0.7 0.8 0.85 1],[0 0 1 1 0 0]); retardo_remez=(length(hbd)-1)/2; r_pb=filter(hbd,1,sru); n=length(r_pb); % Conversión a Banda Base rbb=2*r_pb(retardo_remez+1:end).*cos(2*pi*FI*(0:n-retardo_remez-1)+FaseRx)'; %-- Filtro paso bajo + Diezmado retardo_cic=(length(hcic4)-1)/2; % retardo del filtro CIC H0=sum(hcic4); % Ganancia del filtro (suma de todos sus coeficientes) rbb_f=filter(hcic4,1,rbb); % Filtrado paso bajo rbb_f=rbb_f./H0; retardo1=retardo_cic+retardo_cic; r_d=rbb_f(retardo1+1:L:end); % Diezmamos por 6 r2=filter(rrc,1,r_d); % Filtro adaptado retardo_rrc=(length(rrc)-1)/2; retardo2=retardo_rrc+retardo_rrc; r2_d=r2(retardo2+1:M:end); % Diezmamos por M Ne=51; % orden del filtro ecualizador %-- LMS mu=0.0001; % parámetro de convergencia LMS [yLMS,wLMS,eLMS]=ecualiza_LMS(r2_d,BPSKtx,Ne,mu); % Ecualización LMS Anexo F. Código MATLAB® del apartado 2.7 119 delta=(Ne+1)/2; BPSKrec=sign(yLMS(delta+1:end)); % Decisión LMS BitsRec = (BPSKrec > 0) *1; [ne,ber]=biterr(Bits(100:length(BitsRec)),BitsRec(100:end)); evalLMS(cont)=ber; end Texto F.1: Transmisor Digital y Receptor Digital con ecualización LMS, multicamino, lazo de costas, y generación de gráfica de probabilidad de error. %-- LMS DD mu=0.0001; % Parámetro de convergencia LMS DD [yDD,wDD,eDD]=ecualiza_LMS_DD(r2_d,Ne,mu); % Ecualización LMS_DD delta=(Ne+1)/2; BPSKrec=-sign(yDD(delta+2:end)); % Decisión LMS DD BitsRec = (BPSKrec > 0) *1; [ne,ber]=biterr(Bits(100:length(BitsRec)),BitsRec(100:end)); evalDD(cont)=ber; %-- CMA mu=0.00001; % Parámetro de convergencia CMA [yCMA,wCMA,eCMA]=ecualiza_CMA(r2_d,Ne,mu); % Ecualización CMA delta=(Ne+1)/2; BPSKrec=-sign(yCMA(delta+2:end)); % Decisión CMA BitsRec = (BPSKrec > 0) *1; [ne,ber]=biterr(Bits(100:length(BitsRec)),BitsRec(100:end)); evalCMA(cont)=ber; cont=cont+1; Texto F.2: Para la simulación de la ecualización LMS DD y la ecualización CMA, tendríamos que cambiar la parte de la ecualización LMS por este código. % Curva teórica y simulada BER para BPSK ebn0_lin = 10.^((vec)/10); ber_teo= erfc(sqrt(ebn0_lin))/2; figure(1); semilogy((vec), ber_teo); grid hold on plot(vec, evalLMS, 'ok-.'); plot(vec, evalDD, 'or-'); plot(vec, evalCMA, 'og-'); legend('teórica','simulada con multicamino, ruido y ecualización LMS', 'simulada con multicamino, ruido y ecualización LMS DD', 'simulada con multicamino, ruido y ecualización CMA'); xlabel('E_b/N_0'); ylabel('BER'); title('Curva de probabilidad de error de bit para la modulación BPSK'); hold off Texto F.3: Representación de la curva teórica y la simulada de probabilidad de error para BPSK con los tres tipos de ecualización. Anexo G. Código MATLAB® del apartado 2.8 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% TX-RX – Simulación %% 2.8 Evaluación del transmisor-receptor con errores de sincronización en tiempo %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % Frecuencia intermedia de 9MHz/24MHz = 0,375 (en digital) FI=9e6/24e6; % Frecuencia intermedia FaseTx=0; FaseRx=0; %-- Diezmado - Interpolado M=4; L=6; %-- Multicamino c=1; %-- Pulso de raíz coseno alzado rrc=rcosine(1,4,'sqrt',.35,4); % Conformación de Pulsos (raíz de coseno alzado) retardo_rrc=(length(rrc)-1)/2; %-- Datos para el ruido blanco Ms=24; % Número de muestras por símbolo (factor de interposición total) b=1; % Número de bits por símbolo (1 BPSK) % cont=1; vec=0:6; eval=zeros(1,length(vec)); for k=vec Nbits=10^4;%*2^k; % Número de bits Bits=randint(Nbits,1); % Generación de bits aleatorios [sif,BPSKtx,srrc,hcic4]=tx_bpsk_frec_if(Bits,rrc,FI,FaseTx); % TRANSMISOR EbNo_dB=k; % Señal a ruido en recepción smulti=filter(c,1,sif); % Multicamino [sru]=canal_ruido(smulti,EbNo_dB,Ms,b); % Ruido sumado a la señal en el canal %% Receptor %% %-- Interfaz analógica hbd = remez(90,[0 0.65 0.7 0.8 0.85 1],[0 0 1 1 0 0]); retardo_remez=(length(hbd)-1)/2; r_pb=filter(hbd,1,sru); %-- Error muestreo R=10000; S=R-1; %S=10001; % Factores de Interpolación(R)/Diezmado (S) %Si R<S entonces señal submuestreada %Si R>S entonces señal sobremuestreada n=length(r_pb); rbb=2*rm(retardo_remez+1:end).*cos(2*pi*FI*(0:n-retardo_remez-1)+FaseRx)'; rbb2=err_muestreo(rbb,R,S); %-- Filtro paso bajo + Diezmado retardo_cic=(length(hcic4)-1)/2; % retardo del filtro CIC H0=sum(hcic4); % Ganancia del filtro (suma de todos sus coeficientes) % Filtrado paso bajo (Mismo filtro CIC que en transmisión) rbb_f=filter(hcic4,1,rbb2); Anexo G. Código MATLAB® del apartado 2.8 121 rbb_f=rbb_f./H0; retardo1=retardo_cic+retardo_cic; % Diezmamos por 6 desde el retardo de filtro CIC + Filtro CIC + 1 r_d=rbb_f(retardo1+1:L:end); rbb3=r_d; %-- Filtrado paso bajo y diezmado por 2 en vez del Filtro adaptado att=60; % Atenuación del filtro kaiser paso bajo(1:(length(r)+1)/2) fs=1; fcuts = [0.2 0.3]; mags = [1 0]; devs = [0.01 10^(-att/20)]; [n,Wn,bta,filtype] = kaiserord(fcuts,mags,devs,fs); hh = fir1(n+1,Wn,filtype,kaiser(n+2,bta),'noscale'); retardo_kai=(length(hh)-1)/2; r_kai=filter(hh,1,rbb3); retardo2=retardo_rrc+retardo_kai; r2_d=r_kai(retardo2+1:2:end); % Diezmamos por 2. %-- Ecualización por 'hipccuping' Ne=33; % longitud del filtro ecualizador delta=16; mu=0.05; % parámetro de convergencia [y,w,e,COM]=ec_frac_LMS(r2_d,BPSKtx,Ne,mu); %-- Calculo de inicio de los datos y detección de la inversión x=xcorr(BPSKtx,y); if max(x) > abs(min(x)) pk=1; elseif max(x) < abs(min(x)) pk=0; % la señal está invertida x=xcorr(BPSKtx,-y); end offx=find(x==max(x)); in_data=Nbits-offx; % BPSKrec=sign(y(in_data+1:end)); % Decisión BitsRec = (BPSKrec > 0) *1; [ne,ber]=biterr(Bits(1:length(BitsRec)),BitsRec); eval(cont)=ber; cont=cont+1; end Texto G.1: Simulación del Transmisor y Receptor Digital para la representación de la curva teórica y la simulada de probabilidad de error para BPSK con ecualización por 'hipccuping'. Anexo I. Código MATLAB® del apartado 3.2 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% TX-RX – Simulación %% 3.2 Sincronización en tiempo con QPSK %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % Frecuencia intermedia de 9MHz/24MHz = 0,375 (en digital) fc=9e6/24e6; % Frecuencia intermedia phic=0; Dfc=0; % L=6; M=4; %-- Pulso de raíz coseno alzado rrc=rcosine(1,4,'sqrt',.35,4); % Conformación de Pulsos (raíz de coseno alzado) retardo_rrc=(length(rrc)-1)/2; %-- Multicamino c=1; %-- Datos para el ruido blanco Ms=24; % Número de muestras por símbolo (factor de interpolación total) b=2; % Número de bits por símbolo (2 QBPSK) % cont=1; vec=0:6; eval=zeros(1,length(vec)); for k=vec Nbits=10^4; % Número de bits Bits=randint(Nbits,1); % Generación de bits aleatorios BPSKtx=Bits*2-1; % Generación de símbolos BPSK QPSKtx=(BPSKtx(1:2:end)+j*BPSKtx(2:2:end))*sqrt(.5); % Gen de símbolos QPSK %-- Interpolación x4 + Filtrado squ=upsample(QPSKtx,M); % Interpolación por M=4 x=filter(rrc,1,squ); retardo_rrc=(length(rrc)-1)/2; %-- Interpolación x6 + Filtrado srrc6=upsample(x,L); % Interpolación por L=6 RN=6; % Generación del filtro CIC con RN=6 y M=4 hcic1=ones(RN,1); hcic2=conv(hcic1,hcic1); hcic4=conv(hcic2,hcic2); H0=sum(hcic4); % Ganancia del filtro (suma de todos sus coeficientes) srrc6_f=filter(hcic4,1,srrc6); % Filtrado de la señal interpolada por 6 % Multiplicamos por L=6, para compensar la atenuación por interpolación srrc6_f=srrc6_f.*L; xbbT=srrc6_f./H0; % Dividimos por la ganancia del filtro CIC. %-- Subida en frecuencia t1=[0:length(xbbT)-1]'; sif=sqrt(2)*real(exp(i*2*pi*fc*t1).*xbbT); % Subimos la señal a FI %-- Canal EbNo_dB=k; % Señal a ruido en recepción smulti=filter(c,1,sif); % Multicamino Anexo I. Código MATLAB® del apartado 3.2 129 [sru]=canal_ruido(smulti,EbNo_dB,Ms,b); % Ruido sumado a la señal en el canal % Receptor %% %-- Interfaz analógica hbd = remez(90,[0 0.65 0.7 0.8 0.85 1],[0 0 1 1 0 0]); retardo_remez=(length(hbd)-1)/2; r_pb=filter(hbd,1,sru); %-- Conversión a Banda Base t2=[0:length(r_pb)-retardo_remez-1]'; rbb=2*exp(-i*2*pi*(fc-Dfc)*t2-phic).*r_pb(retardo_remez+1:end); %--Error de la frecuencia de muestreo R=10000; S=10001; % Factores de Interpolación(R)/Diezmado (S) rbb2=err_muestreo(rbb,R,S); % QPSK %-- Filtro paso bajo + Diezmado x6 retardo_cic=(length(hcic4)-1)/2; % retardo del filtro CIC H0=sum(hcic4); % Ganancia del filtro (suma de todos sus coeficientes) % Filtrado paso bajo (Mismo filtro CIC que en transmisión) rbb_f=filter(hcic4,1,rbb2); rbb_f=rbb_f./H0; retardo1=retardo_cic+retardo_cic; % Diezmamos por 6 desde el retardo de filtro CIC + Filtro CIC + 1 r_d=rbb_f(retardo1+1:L:end); %-- Filtrado paso bajo y diezmado por 2 en vez del Filtro adaptado att=60; % Atenuación del filtro kaiser paso bajo fs=1; fcuts = [0.2 0.3]; mags = [1 0]; devs = [0.01 10^(-att/20)]; [n,Wn,bta,filtype] = kaiserord(fcuts,mags,devs,fs); hh = fir1(n+1,Wn,filtype,kaiser(n+2,bta),'noscale'); retardo_kai=(length(hh)-1)/2; r_kai=filter(hh,1,r_d); retardo2=retardo_rrc+retardo_kai; r2_d=r_kai(retardo2+1:2:end); % Diezmamos por 2. %-- Sincronización en tiempo yq=sincro_tiempo(r2_d); % QPSK %--Ecualización CMA Ne=33; % longitud del filtro ecualizador mu=0.005; % parámetro de convergencia yCMA=eqCMA_frac_qpsk(yq,Ne,mu); % QPSK yCMA2=eqCMA_frac_qpsk_sincro_tpo(yq,Ne,mu); BPSKrec=QPSK2bits(yCMA); % Decision BPSKrec2=QPSK2bits(yCMA2*-1); % Decision2 BPSKrec3=QPSK2bits(yCMA2*i); % Decision3 BPSKrec4=QPSK2bits(yCMA2*-i); % Decision4 BitsRec = (BPSKrec > 0) *1; in_data=inicio_datos(BitsRec,Bits,Nbits); BitsRec=BitsRec(in_data+1:end); [ne,ber]=biterr(Bits(1:length(BitsRec)),BitsRec); evalCMA(cont)=ber; 130 Anexo I. Código MATLAB® del apartado 3.2 % cont=cont+1; end Texto I.1: Simulación del Transmisor y Receptor Digital QPSK con error de muestreo, y sincronización en tiempo con ecualización adaptativa fraccionaria CMA. function [z]=sincro_tiempo(x); % % [z]=sincro_tiempo(x); % x Es la señal a pasar por la sincronización en tiempo % z Salida sincronizada en tiempo %%% Datos de inicialización mu_next=0; CNT_next=0; y=zeros(size(x)); z=y; k=1; kk=1; e=0;vp=0;vi=0; underflow=0; old_underflow=0; TEDBuff=[0; 0]; xI=0; xIold=0; %%% Calculo de las variables del filtro en bucle con KP de Gardner BnTs=.005; dseta=1/sqrt(2); N=2; dndor=1+(2*dseta/N)*(BnTs/(dseta+(1/4*dseta)))+((BnTs/(N*(dseta+(1/4*dseta))))^2); K0P1=(4*dseta/N)*(BnTs/(dseta+(1/(4*dseta))))/dndor; K0P2=((4/N^2)*(BnTs/(dseta+(1/(4*dseta))))^2)/dndor; K0=-1; alfa=.35; Ga=1; Ts=1; T=Ts/N; K=Ga/T; Eavg=1; Kp=(4*(K^2)*Eavg/Ts)*(1/(4*pi*(1-alfa^2/4)))*sin(pi*alfa/2); % Kp de Gardner K1=K0P1/(K0*Kp); K2=K0P2/(K0*Kp); for n=4:length(x) % Evaluamos las expresiones aritméticas en orden topológico CNT = CNT_next; Anexo I. Código MATLAB® del apartado 3.2 131 mu = mu_next; % Filtro interpolador/retardador de Lagrange hh1=(mu-1)*mu*(mu+1)/6; %Filtro retardo Lagrange coef 1 hh2=-(mu-2)*mu*(mu+1)/2; %Filtro retardo Lagrange coef 2 hh3= (mu-2)*(mu-1)*(mu+1)/2; %Filtro retardo Lagrange coef 3 hh4=- (mu-2)*mu*(mu-1)/6; %Filtro retardo Lagrange coef 4 hret=[hh1 hh2 hh3 hh4]; %Filtro retardo Lagrange xret=[x(n) x(n-1) x(n-2) x(n-3)]; xIold=xI; xI=hret*xret'; % Salida del Interpolador if underflow==1 z(2*k-1)=xIold; z(2*k)=xI; k=k+1; end if (underflow == 1 && old_underflow == 0) eR=real(TEDBuff(1)) * (real(TEDBuff(2)) - real(xI)); %Gardner eI=imag(TEDBuff(1)) * (imag(TEDBuff(2)) - imag(xI)); %Gardner e=eR+eI; %Gardner else e = 0; end vp = K1*e; % componente proporcional del filtro de bucle vi = vi + K2*e; % componente integrador del filtro de bucle v = vp + vi; % salida del filtro de bucle W = 1/2 + v; % valor NCO de control % Actualizamos registros if underflow==0 && old_underflow==0 TEDBuff = TEDBuff; % Saltamos la actual muestra elseif underflow==0 && old_underflow==1 TEDBuff = [xI; TEDBuff(1)]; % operaciones normales elseif underflow==1 && old_underflow==0 TEDBuff =[xI; TEDBuff(1)]; % operaciones normales elseif underflow==1 && old_underflow==1 TEDBuff = [xI; 0]; % rellenamos la muestra perdida end CNT_next = CNT - W; % actualizamos el valor contador para el siguiente ciclo if CNT_next < 0 % comprobamos si el underflow ha ocurrido CNT_next = 1 + CNT_next; % reduce el valor del modulo-1 si underflow old_underflow = underflow; underflow = 1; % cambia el flag underflow mu_next = CNT/W; % actualiza mu else old_underflow = underflow; 132 Anexo I. Código MATLAB® del apartado 3.2 underflow = 0; mu_next = mu; end end Texto I.2: Sistema sincronización de tiempo de símbolos binarios PAM basado en GTED usando un interpolador lineal y un filtro de lazo integrador. Anexo J. Filtro discreto de lazo enganchado Habiendo visto una introducción al lazo enganchado en fase (PLL) en el apartado 2.6.1.1 Sincronización de Fase: PLL, desarrollaremos un poco más el diseño para poder calcular sus valores. Los PLLs de tiempo discreto son usados en los sistemas de muestreado de datos. La estructura de un PLL de tiempo discreto es esencialmente el mismo que un PLL de tiempo continuo. Un ejemplo básico de la arquitectura del sistema está ilustrada en la Figura anexo J.2. Un detector de fase de tiempo discreto, un filtro de bucle de tiempo discreto, y un sintetizador digital directo (en inglés DDS) están dispuestos en un bucle de realimentación de la misma manera que un circuito de tiempo continuo. Las muestras de una sinusoide con frecuencia Ω0 rad/muestra y las muestras de fase θ(nT) forman la entrada al PLL. El detector de fase de tiempo discreto calcula una función que es la diferencia de fase entre la entrada y la salida del DDS. Esta diferencia de fase es el error de fase. Este error es filtrado por el filtro de bucle y entra al DDS. El DDS es una versión de tiempo discreto de un VCO (del inglés Voltage-controlled oscillator, Oscilador Controlado por Tensión) de tiempo continuo. La relación entre la entrada y la salida del DDS es: salida=cos0n nT  (J.1) donde  nT =K0∑ k=−∞ n−1 kT  (J.2) Figura anexo J.1: Modelo PLL visto en el apartado 2.6.1.1. LPF VCO r(t) e(t) y(t) x(t) Detector de fase 134 Anexo J. Filtro discreto de lazo enganchado Por lo general, el diseño de un PLL de tiempo discreto se inicia con un diseño de un PLL de tiempo continuo y se utiliza una transformación de tiempo continuo a tiempo discreto para producir el PLL buscado. El proceso de diseño comienza con un PLL de tiempo continuo porque hay técnicas bien desarrolladas para los sistemas de tiempo continuo y la adaptación a un sistema discreto es bastante simple. La transformación de tiempo continuo a tiempo discreto tiene el objetivo de producir un sistema de tiempo discreto con el mismo comportamiento que el sistema de tiempo continuo. El problema al aplicar estos métodos directamente para calcular el equivalente PLL de fase linealizada es que el equivalente PLL de fase lineal solamente es un modelo del actual PLL. Por ejemplo, en un sistema real las fases actuales nT  y  nT  no están disponibles. Lo que está disponible para el sistema son muestras de la sinusoide de entrada y la salida del DDS. Un enfoque híbrido se utiliza a menudo para realizar la transformación de tiempo continuo a tiempo discreto. Este enfoque híbrido se muestra aquí para el filtro proporcional-integrador de bucle. (La aplicación de este enfoque del PLL con otros filtros de bucle es muy sencillo). Figura anexo J.2: Estructura básica de un PLL de tiempo discreto (a) y la correspondiente fase equivalente PLL. F(s) VCO Detector de fase  nT = ∑ k=−∞ n−1 kT  cos0n nT  cos0nnT  enT =gnT − nT  nT  (a) F(z)g(●)  nT  nT  enT =gnT − nT  nT  (b) K0 z−1 1−z−1 Anexo J. Filtro discreto de lazo enganchado 135 El punto de partida del diseño, es el PLL de tiempo continuo y su filtro de lazo de fase equivalente. Estos filtros de lazo se ilustran en la Figura anexo J.3. El PLL de tiempo discreto que imita el PLL de tiempo continuo de la Figura anexo J.3 se ilustra en la Figura anexo J.4. En la Figura anexo J.4 (a), la parte integral del filtro de lazo se utiliza un filtro simple con un polo en z = 1. El PLL de tiempo discreto utiliza un sintetizador digital directo (DDS) en lugar del VCO. Un filtro de un solo polo se utiliza para integrar la entrada del DDS para el cálculo de la fase instantánea. Observe el uso de mayúsculas para la ganancia del detector de fase, las constantes de filtro de lazo, y la ganancia del DDS para diferenciarlos de sus contrapartes en el PLL de tiempo continuo. La fase equivalente del filtro de lazo de tiempo discreto se ilustra en la Figura anexo J.4 (b). Figura anexo J.3: Bucle cerrado de fase (PLL) de segundo orden con filtro de bucle proporcional-integrador (a) y PLL equivalente de fase linearizada. VCO Detector de fase cos0n t Acos0nt t (a) k1 k2∫ −∞ t ·dx s VS (b) k1 k2 s k0 s kp  s 136 Anexo J. Filtro discreto de lazo enganchado Las funciones de transferencia del filtro de lazo de tiempo continuo de la Figura anexo J.3 y el filtro de lazo de tiempo discreto de la Figura anexo J.4 son: Has= 2nsn 2 s22nsn 2 (J.3) Hds= KpK0K1K2z−1−KpK0K1z−2 1−2  1−1 2KpK0K1K2z−1  1−KpK0K1z−2 (J.4) donde ζ y ωn en (J.3) están dadas por =k1 2  k0kp k2 y n=  k0kpk2 , respectivamente. Aplicando la ecuación de Tustin: Figura anexo J.4: Bucle cerrado de fase (PLL) de tiempo discreto de segundo orden con un filtro integrador proporcional que imita el PLL de tiempo continuo dibujado en la Figura anexo J.3 (a) El PLL de tiempo discreto y el DDS; (b) PLL equivalente de fase linearizada de tiempo discreto. cos(•) Detector de fase cos0n n Acos0nn n (a) K1 K2 z−1 z−1 K0 0 DDS z VS (b) K1 K2 1 1−z−1 K0 z−1 1−z−1 Kp  z Anexo J. Filtro discreto de lazo enganchado 137 1 sT 2 1z−1 1−z−1 (J.5) a Ha(s) produce una versión de tiempo discreto del bucle de tiempo continuo indicado por Has  2 T 1−z−1 1z−1  . Después de un poco de álgebra, Has  2 T 1−z−1 1z−1  puede se expresada como Ha  2 T 1−z−1 1z−1  = 2nn 2 12nn 22n 2n 12nn 2n 2 12nn 2z−2 1−2n 2−1 12nn 2z−11−2nn 2 12nn 2z−2 (J.6) donde n=nT 2 (J.7) La equiparación de los polinomios del denominador en Hd(z) y Has  2 T 1−z−1 1z−1  produce las siguientes relaciones: 1−1 2KpK0K1K2= n 2−1 12nn 2 (J.8) 1−KpK0K1=1−2nn 2 12nn 2 (J.9) Finalmente, la solución para las constantes del filtro de bucle son KpK0K1=4n 12nn 2 KpK0K2=4n 2 12nn 2 (J.10) Las expresiones de las constantes para el filtro de lazo son una función del coeficiente de amortiguamiento ζ, la frecuencia natural ωn y el periodo de muestreo T. (La dependencia funcional en ωn y T es a través de θn). Las constantes del filtro de lazo se pueden expresar en términos de ζ, T, y el ancho de banda equivalente Bn mediante la resolución de la expresión de Bn para ωn, expresando θn en términos de Bn y sustituyendo en (J.10). Para el filtro de lazo proporcional-integrador, Bn está relacionada con ωn por Bn=n 2   1 4  . Resolviendo para ωn y sustituyendo obtenemos n=BnT  1 4 (J.11) Sustituyendo en las ecuaciones (J.10) obtenemos: Anexo L. Código MATLAB® del apartado 4 En este apartado tanto el transmisor como el receptor serán los mismos, sea el canal un cable o un altavoz y un micrófono, solo cambiará el medio por el que se transmite la señal. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% TRANSMISOR – Simulación %% 4.1 Simulación del transmisor-receptor con un cable entre ordenadores %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % B=1e3; % Ancho de banda de la señal fc=1.5e3; % frecuencia central fs=8e3; % frecuencia de muestreo Ts=1/fs; % L=6; M=4; %-- Pulso de raíz coseno alzado rrc=rcosine(1,4,'sqrt',.35,4); % Conformación de Pulsos (raíz de coseno alzado) retardo_rrc=(length(rrc)-1)/2; Nbits=10^5; % Número de bits Bits=randint(Nbits,1); % Generación de bits aleatorios BPSKtx=Bits*2-1; % Generación de símbolos BPSK pausa=10^7; % pausa p=zeros(pausa,1); d2=[p' BPSKtx']; QPSKtx=(BPSKtx(1:2:end)+j*BPSKtx(2:2:end))*sqrt(.5); % Símbolos QPSK %-- Interpolación x4 + Filtrado squ=upsample(QPSKtx,M); % Interpolación por M=4 x=filter(rrc,1,squ); retardo_rrc=(length(rrc)-1)/2; %-- Interpolación x6 + Filtrado srrc6=upsample(x,L); % Interpolación por L=6 RN=6; % Generacion del filtro CIC con RN=6 y M=4 hcic1=ones(RN,1); hcic2=conv(hcic1,hcic1); hcic4=conv(hcic2,hcic2); H0=sum(hcic4); % Ganancia del filtro (suma de todos sus coeficientes) srrc6_f=filter(hcic4,1,srrc6); % Filtrado de la señal interpolada por 6 % Multiplicamos por L=6, para compensar la atenuación por interpolación srrc6_f=srrc6_f.*L; xbbT=srrc6_f./H0; % Dividimos por la ganancia del filtro CIC. %-- Subida en frecuencia t1=[0:length(xbbT)-1]'*Ts; sif=sqrt(2)*real(exp(i*2*pi*fc*t1).*xbbT); % Subimos la señal a FI %-- Reproducción del sonido wavplay(sif,fs) Texto L.1: Código MATLAB® del transmisor para la simulación entre dos ordenadores. Anexo L. Código MATLAB® del apartado 4 145 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% RECEPTOR – Simulación %% 4.1 Simulación del transmisor-receptor con un cable entre ordenadores %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % B=1e3; % Ancho de banda de la señal fc=1.5e3; % frecuencia central fs=8e3; % frecuencia de muestreo Ts=1/fs; % L=6; M=4; %-- Pulso de raíz coseno alzado rrc=rcosine(1,4,'sqrt',.35,4); % Conformación de Pulsos (raíz de coseno alzado) retardo_rrc=(length(rrc)-1)/2; %-- Captura sonido MATLAB® disp('pulsa una tecla para empezar:') pause r_pb=wavrecord(25*fs, fs, 'double'); disp('grabada señal.') %-- Conversión a Banda Base retardo_remez=0; t2=[0:length(r_pb)-retardo_remez-1]'*Ts; rbb=2*exp(-i*2*pi*(fc-Dfc)*t2-phic).*r_pb(retardo_remez+1:end); %-- Filtro paso bajo + Diezmado x6 retardo_cic=(length(hcic4)-1)/2; % retardo del filtro CIC H0=sum(hcic4); % Ganancia del filtro (suma de todos sus coeficientes) % Filtrado paso bajo (Mismo filtro CIC que en transmisión) rbb_f=filter(hcic4,1,rbb); rbb_f=rbb_f./H0; retardo1=retardo_cic+retardo_cic; % Diezmamos por 6 desde el retardo de filtro CIC + Filtro CIC + 1 r_d=rbb_f(retardo1+1:L:end); %-- Filtrado paso bajo y diezmado por 2 en vez del Filtro adaptado att=60; % Atenuación del filtro kaiser paso bajo fcuts = [2000 2100]; mags = [1 0]; devs = [0.01 10^(-att/20)]; [n,Wn,bta,filtype] = kaiserord(fcuts,mags,devs,fs); hh = fir1(n+1,Wn,filtype,kaiser(n+2,bta),'noscale'); retardo_kai=(length(hh)-1)/2; r_kai=filter(hh,1,r_d); retardo2=retardo_rrc+retardo_kai; r2_d=r_kai(retardo2+1:2:end); % Diezmamos por 2. %--Ecualización CMA Ne=33; % longitud del filtro ecualizador mu=0.5; % parámetro de convergencia yCMA=eqCMA_frac_qpsk(r2_d,Ne,mu); % QPSK %-- Sincronización en fase y frecuencia yCMA2=ddcr_frec_qpsk(yCMA); 146 Anexo L. Código MATLAB® del apartado 4 BPSKrec=QPSK2bits(yCMA2); % Decisión BitsRec = (BPSKrec > 0) *1; Texto L.2: Código MATLAB® del receptor para la simulación entre dos ordenadores. Glosario A altavoz, 97, 98, 102-106 B banco de filtros polifásico, 78 BER, 30, 32, 33, 35, 90, 98, 102 BPSK, 9, 30, 31, 34, 50, 70 C CIC (Cascade Comb Integrator), 16-20 Conformación de pulso, 11 constelación, 9, 68, 93 Contador Modulo-1, 81 conversor digital-analógico o DAC, 23 coseno alzado, 12-14, 21, 75, 83 D delta, 40, 52, 55, 59 demodulación, 6 Detector con recuperación de la fase de la portadora, 50 detector de error de tiempo de Gardner, 71 Diagrama de ojos, 14, 15, 16, 27, 58 E ecualización, 35, 36, 37, 40, 41, 51, 52, 53, 55, 56, 59, 60, 62, 66, 67, 96, 98, 102 Ecualización Adaptativa, 35, 40 Ecualización CMA, 53 Ecualización LMS, 38, 51 Ecualización LMS con decisión directa, 51 ecualizador adaptativo fraccionario, 59, 60, 62 energía media por símbolo, 9 F filtros polinomio, 78 frecuencia de muestreo, 10, 11, 16, 23, 26, 61, 71, 78 frecuencia intermedia, 23, 24, 36, 42 G Gardner, 71, 74, 83, 85 H hiccuping, 62, 65, 66 I interpolación, 11, 18, 19, 33, 61, 69, 72, 74, 76, 77, 78, 79, 80, 81, 83, 84, 86, 87, 88, 90 ISI, 12, 13, 14, 15, 21, 35, 36, 39, 40 L Lagrange, 79, 80, 83, 86 Lazo de costas, 44, 45, 46, 48, 50 M micrófono, 97, 98, 102, 103, 104, 105, 106 módem, 6, 7, 89, 68 modulación, 6, 7, 9, 10, 21, 29, 30, 32, 44, 68, 93 Multicamino, 35, 36, 40, 41, 53, 55, 59, 65, 67 N Nyquist, 15 P PLL, 42, 43, 44, 46, 47, 60, 72, 74, 78, 82, 86, 88, 89 Probabilidad de error de bit, 30 Q QPSK, 6, 11, 33, 50, 68, 69, 70, 71, 74, 80, 83, 92, 95, 96, 98, 99, 100, 101, 102, 104, 105, 106 R Raíz de Coseno Alzado, 10, 12, 13, 14, 21, 75, 83 régimen binario de información, 9 Remez, 24, 26 roll-off, 13, 17, 21, 83 Ruido Gausiano, 29 S símbolo, 9, 10, 13, 23, 24, 26, 29, 33, 35, 36, 59, 60, 61, 62, 64, 65, 68, 71, 72, 74, 78, 82, 83, 84, 86, 88, 92, 93 148 Anexo L. Código MATLAB® del apartado 4 sinc, 12 sincronización, 5 Sincronización de Fase: PLL, 43 Sincronización de Frecuencia, 43 sincronización de tiempo, 69 Sincronización de tiempo con el método “hiccuping”, 62 sincronización de tiempo de símbolo, 59 sincronización en tiempo, 57 Step Size, 40 T tasa de error de bit (BER), 30 TED, 72 teorema de la capacidad de Shannon, 8 tiempo de símbolo, 10 V VCO, 43 velocidad binaria, 9 velocidad de modulación, 9, 10 velocidad de transmisión, 10 Bibliografía [1] Carrier Phase Recovery for BPSK, http://people.eecs.ku.edu/~esp/class/S06_690/simulink/crBPSK/ [2] L. E. Franks, “Synchronization Subsystems: Analysis and Design,” Digital Communications: Satellite/Earth Station Engineering, Prentice-Hall Inc. (1981) [3] D. L. Lyon, “Timing Recovery in Synchronous Equalized Data Communication,” IEEE Trans. Commun, COM-23, no. 2, February 1975. [4] G Ungerboek, “Fractional Tap-Spacing Equalizer and Conseguences for clock Recovery in Data Modems” IEEE Trans. Commun, COM-24, no. 8, August 1976. [5] A. Haoui, et al, “An All-Digital Timing Recovery Scheme for Voiceband Data Modems”, Proceedings of the ICASSP, 1987, vol 4, pp. 1911-1914. [6] B. Ghosh and D. Messerchimitt, “Asynchronous Adaptative Equalization in Voiceband Data Modems,” Prooceedings of the ICASSP, 1992, vol IV, pp. 485-488. [8] Farhang-Boroujeny, Behrouz, “Signal processing techniques for software radios”, Lulu, cop. 2008 [7] http://en.wikipedia.org/wiki/Differential_coding [8] C. Richard Johnson, Jr. and William A. Sethares, “Telecommunication breakdown : concepts of communication transmitted via software-defined radio”, Upper Saddle River : Pearson Prentice Hall, cop. 2004 [9] Rice, Michael, “Digital communications : a discrete-time approach”, Upper Saddle River : Pearson Education. [10] John R. Treichler, “Practical Blind Demodulators for High-Order QAM Signals”, Procedings of the IEEE, vol 86, no 10, october 1998. [11] Neil K. Jablon, “Joint Blind Equalization, Carrier Recovery, and Timing Recovery for High-Order QAM Signal Constellations”, IEEE Transactions on signal processing, vol 40, no 6, June 1992.