Diseño e implementación de un simulador de módem...

123
Proyecto Fin de Carrera Ingeniería de Telecomunicación Diseño e implementación de un simulador de módem BPSK. Autor: Isidro Guerrero Ocaña Tutor: Rubén Martín Clemente Dep. Teoría de la Señal y Comunicaciones Escuela Técnica Superior de Ingeniería Universidad de Sevilla Sevilla, 2014

Transcript of Diseño e implementación de un simulador de módem...

Page 1: Diseño e implementación de un simulador de módem …bibing.us.es/proyectos/abreproy/12230/fichero/PFC... · 4.3.4 Canal 90 4.3.5 Ecualizadores 91 4.3.6 Salida de resultados . 92

Proyecto Fin de Carrera Ingeniería de Telecomunicación

Diseño e implementación de un simulador de módem BPSK.

Autor: Isidro Guerrero Ocaña Tutor: Rubén Martín Clemente

Dep. Teoría de la Señal y Comunicaciones Escuela Técnica Superior de Ingeniería

Universidad de Sevilla Sevilla, 2014

Page 2: Diseño e implementación de un simulador de módem …bibing.us.es/proyectos/abreproy/12230/fichero/PFC... · 4.3.4 Canal 90 4.3.5 Ecualizadores 91 4.3.6 Salida de resultados . 92
Page 3: Diseño e implementación de un simulador de módem …bibing.us.es/proyectos/abreproy/12230/fichero/PFC... · 4.3.4 Canal 90 4.3.5 Ecualizadores 91 4.3.6 Salida de resultados . 92

Proyecto Fin de Carrera Ingeniería de Telecomunicación

Diseño e implementación de un simulador de

módem BPSK.

Autor:

Isidro Guerrero Ocaña

Tutor:

Rubén Martín Clemente

Profesor titular

Dep. de Teoría de la Señal y Comunicaciones Escuela Técnica Superior de Ingeniería

Universidad de Sevilla Sevilla, 2014

Page 4: Diseño e implementación de un simulador de módem …bibing.us.es/proyectos/abreproy/12230/fichero/PFC... · 4.3.4 Canal 90 4.3.5 Ecualizadores 91 4.3.6 Salida de resultados . 92
Page 5: Diseño e implementación de un simulador de módem …bibing.us.es/proyectos/abreproy/12230/fichero/PFC... · 4.3.4 Canal 90 4.3.5 Ecualizadores 91 4.3.6 Salida de resultados . 92

Proyecto Fin de Carrera: Diseño e implementación de un simulador de módem BPSK.

Autor: Isidro Guerrero Ocaña

Tutor: Rubén Martín Clemente

El tribunal nombrado para juzgar el Proyecto arriba indicado, compuesto por los siguientes miembros:

Presidente:

Vocales:

Secretario:

Acuerdan otorgarle la calificación de:

Sevilla, 2014

El Secretario del Tribunal

Page 6: Diseño e implementación de un simulador de módem …bibing.us.es/proyectos/abreproy/12230/fichero/PFC... · 4.3.4 Canal 90 4.3.5 Ecualizadores 91 4.3.6 Salida de resultados . 92
Page 7: Diseño e implementación de un simulador de módem …bibing.us.es/proyectos/abreproy/12230/fichero/PFC... · 4.3.4 Canal 90 4.3.5 Ecualizadores 91 4.3.6 Salida de resultados . 92

A mi familia

A mis compañeros

A mis profesores

Page 8: Diseño e implementación de un simulador de módem …bibing.us.es/proyectos/abreproy/12230/fichero/PFC... · 4.3.4 Canal 90 4.3.5 Ecualizadores 91 4.3.6 Salida de resultados . 92
Page 9: Diseño e implementación de un simulador de módem …bibing.us.es/proyectos/abreproy/12230/fichero/PFC... · 4.3.4 Canal 90 4.3.5 Ecualizadores 91 4.3.6 Salida de resultados . 92

Resumen

Este proyecto va mostrando cómo crear desde cero un módem Bpsk. Los lectores podrán consultar los códigos en los que poco a poco se va completando el sistema añadiendo nuevos bloques para acercar el sistema simulado lo máximo posible a un sistema real.

Cada bloque incorporado será probado por separado e iremos viendo cómo funciona el módem según se van incorporando.

Finalmente se crea un simulador con el sistema completo al que se ha llegado. Dicho simulador permite usar o no cada uno de los bloques anteriores según se desee, así como variar muchos de sus parámetro para ver cómo afectan a los resultados.

Los resultados estarán basados en el número de errores recibidos y en la curva de probabilidad de error de bit que obtenemos con cada una de las simulaciones, la cual siempre la podremos comparar con la curva teórica.

ix

Page 10: Diseño e implementación de un simulador de módem …bibing.us.es/proyectos/abreproy/12230/fichero/PFC... · 4.3.4 Canal 90 4.3.5 Ecualizadores 91 4.3.6 Salida de resultados . 92

Índice

Resumen ix

Índice x

Índice de Tablas xiii

Índice de Figuras xv

1 Introducción 19 1.1 Descripción del funcionamiento de un módem 19

1.1.1 Desarrollo de módems para ordenadores. 20

2 Diseño inicial de un módem BPSK 21 2.1 Introducción 21 2.2 Esquema del Transmisor inicial 22

2.2.1 Conformador de pulso 22 2.2.2 Diagrama de ojos 26 2.2.3 Esquema receptor simple 28 2.2.4 Simulación de este primer sistema básico 28 2.2.5 Conclusión 30

2.3 Esquema del sistema con interpolación y diezmado 30 2.3.1 Introducción 30 2.3.2 Interpolación 31 2.3.3 Diezmado 32 2.3.4 Filtro CIC 33 2.3.5 Implementación 37 2.3.6 Simulación 38

2.4 Subida en frecuencia 40 2.4.1 Implementación 41 2.4.2 Resultados y conclusiones 43

2.5 Evaluación del sistema con ruido en el canal 44 2.5.1 Análisis de los errores del receptor 44 2.5.2 Simulación del sistema diseñado 47

2.6 Evaluación del sistema con ecualización del canal 49 2.6.1 Multicamino introducido en el canal 50 2.6.2 Simulación de los tres ecualizadores 59

2.7 Sincronización en frecuencia y fase 59 2.7.1 Funcionamiento del PLL 60 2.7.2 Lazo de costas 61 2.7.3 Implementación digital del lazo de costas 63 2.7.4 Incorporación en nuestro receptor 71

3 Otras modulaciones 73 3.1 Transmisor-Receptor QPSK 73

3.1.1 Modulador en banda base 73 3.1.2 Transmisor 74 3.1.3 Receptor 76

Page 11: Diseño e implementación de un simulador de módem …bibing.us.es/proyectos/abreproy/12230/fichero/PFC... · 4.3.4 Canal 90 4.3.5 Ecualizadores 91 4.3.6 Salida de resultados . 92

3.1.4 Canal 76 3.1.5 Simulación del sistema 77 3.1.6 Simulación de la curva de probabilidad de error 80

3.2 Transmisor- receptor 16 QAM 80 3.2.1 Transmisor 16 QAM 80 3.2.2 Receptor 16-QAM 81 3.2.3 Simulación del sistema 83 3.2.4 Simulación de la curva de probabilidad de error de bit 85

4 Simulador del sistema completo 86 4.1 Introducción 86 4.2 Funcionamiento básico del programa 86 4.3 Parámetros de la simulación 88

4.3.1 Fase del transmisor y receptor 88 4.3.2 Diferencia de frecuencia del receptor respecto al transmisor 89 4.3.3 Valores para la interpolación y el diezmado. 89 4.3.4 Canal 90 4.3.5 Ecualizadores 91 4.3.6 Salida de resultados 92

5 Casos de estudio 94 5.1 Probabilidad de error de bit con multitrayecto 94

5.1.1 Estudio 1 94 5.1.2 Estudio 2 96 5.1.3 Estudio 3 97

5.2 Conclusión 98

6 Trabajos futuros 99 6.1 Sistema con canal real 99 6.2 Simulador para cualquier modulación 99 6.3 Casos prácticos 99

Anexos 101 Anexo A: Sistema simple 101 Anexo B: Sistema con interpolado y diezmado 102 Anexo C: Subida en frecuencia 104 Anexo D: Ruido en el canal 105 Anexo E: Ecualización adaptativa 107 Anexo F: Comparación de ecualizadores 109 Anexo G: Sincronización de fase y frecuencia 111 Anexo H: Simulación QPSK 113 Anexo I: Simulación 16QAM 115 Anexo J: Simulador 117

Bibliografía 123

xi

Page 12: Diseño e implementación de un simulador de módem …bibing.us.es/proyectos/abreproy/12230/fichero/PFC... · 4.3.4 Canal 90 4.3.5 Ecualizadores 91 4.3.6 Salida de resultados . 92
Page 13: Diseño e implementación de un simulador de módem …bibing.us.es/proyectos/abreproy/12230/fichero/PFC... · 4.3.4 Canal 90 4.3.5 Ecualizadores 91 4.3.6 Salida de resultados . 92

ÍNDICE DE TABLAS Tabla 2.1.- Parámetros filtro Remez 42 Tabla 3.1.- Regla de asignación bits a símbolo en una modulación 16-QAM 81 Tabla 4.1.- Valores por defecto en el simulador 87 Tabla 4.2.- Resultados distintos valores de interpolación y diezmado 90

xiii

Page 14: Diseño e implementación de un simulador de módem …bibing.us.es/proyectos/abreproy/12230/fichero/PFC... · 4.3.4 Canal 90 4.3.5 Ecualizadores 91 4.3.6 Salida de resultados . 92
Page 15: Diseño e implementación de un simulador de módem …bibing.us.es/proyectos/abreproy/12230/fichero/PFC... · 4.3.4 Canal 90 4.3.5 Ecualizadores 91 4.3.6 Salida de resultados . 92

ÍNDICE DE FIGURAS Figura 2.1 Constelación BPSK 21 Figura 2.2 Sistema completo 22 Figura 2.3.- Transmisor simple 22 Figura 2.3.- Transmisor simple 23 Figura 2.5.-Pulso con ancho de banda mayor 23 Figura 2.6.- Canal con ISI cero 23 Figura 2.7.- Coseno Alzado (azul) comparado con una función Sinc (violeta) 23 Figura 2.8.- Esquema con los dos raíz coseno alzado 24 Figura 2.9.- Raíz coseno alzado con discontinuidades 25 Figura 2.10.- Raíz coseno alzado completo 25 Figura 2.11.- Raíz coseno alzado utilizado en simulación 26 Figura 2.12.- Concepto diagrama de ojos 27 Figura 2.13.- Diagrama de ojos de una modulación PSK 27 Figura 2.14.- Diagrama receptor simple 28 Figura 2.15.- Diagrama de ojos a la salida del receptor 29 Figura 2.16.- Diagrama de ojos en el receptor 29 Figura 2.17.- Interpolación y diezmado 30 Figura 2.18.- Interpolación 31 Figura 2.19.- Efecto de la interpolación sobre el espectro de la señal 31 Figura 2.20.- Filtro de interpolación 32 Figura 2.21.- Diezmado 32 Figura 2.22.- Efectos del diezmado sobre el espectro de la señal 33 Figura 2.23.-Aliasing por exceso de diezmado 33 Figura 2.24.- Diagrama de bloques de un Integrador 34 Figura 2.25.- Diagrama de bloques de un filtro 34 Figura 2.26.- Diagrama de bloques de un filtro CIC 35 Figura 2.27.- Respuesta en frecuencia de un filtro CIC con los valores dados 36 Figura 2.28.- Filtro CIC simulado 37 Figura 2.29.- Transmisor con interpolación 37 Figura 2.30.- Receptor con diezmado 38 Figura 2.31.- Diagrama de ojos a la salida del transmisor 38 Figura 2.32.- Diagrama de ojos antes del último diezmado 39 Figura 2.33.- Diagrama de ojos con eyediagram 39 Figura 2.34.- Diagrama de ojos BPSK antes del decisor 40 Figura 2.35.- Esquema con subida a frecuencia intermedia 41 Figura 2.36.- Bandas de paso y de rechazo del algoritmo de Parcks-McClellan 42 Figura 2.37.- Respuesta en frecuencia del filtro paso de banda Remez 43 Figura 2.38.- Introducción de ruido en el canal 44 Figura 2.39.- Diseño simplificado de bloques con el transmisor-receptor en BPSK 45 Figura 2.40.- Función densidad de probabilidad con modulación BPSK 46 Figura 2.41.- Curva probabilidad de error simulada 49 Figura 2.42.- Sistema con ruido y multicamino 49 Figura 2.43.- Multitrayecto 50

xv

Page 16: Diseño e implementación de un simulador de módem …bibing.us.es/proyectos/abreproy/12230/fichero/PFC... · 4.3.4 Canal 90 4.3.5 Ecualizadores 91 4.3.6 Salida de resultados . 92

Figura 2.44.- Diagrama de bloques de un ecualizador lineal basado en el algoritmo LMS 52 Figura 2.45.- Curva de probabilidad de error con ecualizador LMS con M variable 53

Figura 2.46.- Diagrama de bloques de un ecualizador ciego por decisión directa 55

Figura 2.47.- Curva con ecualizador LMS DD 56

Figura 2.48.- Diagrama de bloques del ecualizador ciego CMA 57

Figura 2.49.- Curva de probabilidad con ecualizador de CMA 58

Figura 2.50.- Simulación de los tres tipos de ecualización vistos con ruido y multicamino 59

Figura 2.51.- Diagrama de bloques con sincronización de fase y frecuencia 59

Figura 2.52.- Diagrama de bloques de un PLL 60

Figura 2.53.- Simulación del funcionamiento de un PLL 61

Figura 2.54.- Diagrama de bloques del lazo de costas 62

Figura 2.55.- Diagrama de la implementación del lazo de costas 63

Figura 2.56.- Señal de entrada AM 63

Figura 2.57.- Espectro de la señal entrada 64

Figura 2.58.- Señal tras el filtro de Hilbert 64

Figura 2.59.- Señal Analytic 65

Figura 2.60.- Espectro señal Analytic 65

Figura 2.61.- Variables usada en el código LC 67

Figura 2.62.- Salida del lazo de costas con señal AM 67

Figura 2.63.- Señales a multiplicar a la salida del lazo 68

Figura 2.64.- Salida con desfase de pi/7 68

Figura 2.65.- Salida con desfase de pi/4 69

Figura 2.66.- Diferencia de frecuencia 10 Hz 69

Figura 2.67.- Diferencia de frecuencia de 100 Hz 70

Figura 2.68.- Diferencia frecuencias mayores 70

Figura 2.69.- Diferencia de frecuencia mayores 71

Figura 2.70.-Simulación de lazo de costas con ruido y multitrayecto 71

Figura 2.71.- Curva con sincronización en fase y frecuencia 72

Figura 3.1.- Modulador en cuadratura 73

Figura 3.2.- Equivalente paso de baja ideal 74

Figura 3.3.- Diagrama de bloques equivalente paso de baja real 74

Figura 3.4.- Constelación QPSK 75

Figura 3.5.- Diagrama de bloques transmisor QPSK 75

Figura 3.6.- Diagrama de bloques receptor QPSK 76

Figura 3.7.- Generador de ruido paso de baja 76

Figura 3.8.- Diagrama de ojos en el transmisor QPSK 77

Figura 3.9.- QPSK Diagrama de ojos tras diezmado por L 77

Figura 3.10.- QPSK Diagrama de ojos Coseno alzado 78

Page 17: Diseño e implementación de un simulador de módem …bibing.us.es/proyectos/abreproy/12230/fichero/PFC... · 4.3.4 Canal 90 4.3.5 Ecualizadores 91 4.3.6 Salida de resultados . 92

Figura 3.11.- QPSK Diagrama de ojos antes del decisor 78

Figura 3.12.- Constelación recibida 79

Figura 3.13.- Constelación con ruido 79

Figura 3.14.- Curva de probabilidad de error QPSK 80

Figura 3.15.- Constelación usada 16-QAM 81

Figura 3.16.- Cuadrícula implementada por el decisor 82

Figura 3.17.- Constelación en el transmisor 83

Figura 3.18.- Diagrama de ojos antes del decisor 83

Figura 3.19.- 16 QAM Constelación antes del decisor 84

Figura 3.20.- 16 QAM Constelación obtenida 84

Figura 3.21.- Curva de probabilidad de error de bit 16-QAM 85

Figura 4.1.- Curva de probabilidad como salida del Simulador 92

Figura 4.2.- Curva d enumero de errores como salida del Simulador 93

Figura 5.1.- Estudio 1: Curva de probabilidad de error 95

Figura 5.2.- Estudio 1: Numero de errores 95

Figura 5.3.- Estudio 2: Curva de probabilidad de error 96

Figura 5.4.- Estudio 2: Número de errores 96

Figura 5.5.- Estudio 3: Curva de probabilidad de error 97

Figura 5.6.- Estudio 3: Número de errores 98

xvii

Page 18: Diseño e implementación de un simulador de módem …bibing.us.es/proyectos/abreproy/12230/fichero/PFC... · 4.3.4 Canal 90 4.3.5 Ecualizadores 91 4.3.6 Salida de resultados . 92
Page 19: Diseño e implementación de un simulador de módem …bibing.us.es/proyectos/abreproy/12230/fichero/PFC... · 4.3.4 Canal 90 4.3.5 Ecualizadores 91 4.3.6 Salida de resultados . 92

1 INTRODUCCIÓN

ste proyecto surge tras realización de las prácticas de una de las asignaturas de la carrera de Ingeniería de Telecomunicaciones, específicamente de la asignatura Comunicaciones Móviles. En dichas prácticas se propuso la implementación de un sencillo transmisor y receptor, donde ya se simulaba ruido y

multitrayecto.

Este proyecto llega a aproximar esa implementación lo más que nos ha sido posible a un sistema real, con todos sus bloques necesarios. Es tanto así que los códigos que simulan tanto el transmisor y el receptor les faltan pocos detalles para hacerlos funcionar en un canal real como el aire.

Dicho esto, este proyecto se basa en un simulador de una modulación BPSK, para que los alumnos de distintas asignaturas relacionadas con la transmisión de señales sean capaces de ver la importancia de cada uno de los bloques de un sistema Transmisor-Receptor.

Se ha elegido el sistema BPSK por simplicidad, puesto que el fin de este proyecto no es la modulación en sí, sino el funcionamiento de cada uno de los bloques. Además la adaptación a otra modulación a partir de haber entendido esta es bastante sencilla. Sin embargo bloques como el decisor de nuestro receptor son demasiado sencillos y no reflejan su verdadera necesidad, es por ello que para entenderlo hemos realizado una pequeña adaptación al final del proyecto a modulaciones de 4 y 16 símbolos donde este bloque no es tan inmediato, para que así el lector entienda y vea la funcionalidad de todas las partes de nuestro sistema de una manera sencilla.

Nuestro simulador va a modelar lo que es el módem de un sistema completo. Dejando tareas como el paso de nuestro mensaje a bits fuera de nuestro alcance. Mencionaremos también que hoy en día la cantidad de código y librería de funciones es muy grande, pero en este proyecto hemos intentado realizar la mayoría de las funciones utilizadas, para que así el lector pueda entender mejor cada uno de los puntos que en los capítulos siguientes se detallarán.

1.1 Descripción del 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.

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.

E

Page 20: Diseño e implementación de un simulador de módem …bibing.us.es/proyectos/abreproy/12230/fichero/PFC... · 4.3.4 Canal 90 4.3.5 Ecualizadores 91 4.3.6 Salida de resultados . 92

Introducción 20

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 cuándo 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.

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 este 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.

Page 21: Diseño e implementación de un simulador de módem …bibing.us.es/proyectos/abreproy/12230/fichero/PFC... · 4.3.4 Canal 90 4.3.5 Ecualizadores 91 4.3.6 Salida de resultados . 92

21 Diseño e implementación de un simulador de módem BPSK.

2 DISEÑO INICIAL DE UN MÓDEM BPSK

ara la el diseño de nuestro módem tenemos que tener en cuenta los mejores opciones para su simulación. En este capítulo iremos desde la implementación más sencilla de nuestro transmisor y receptor BPSK, a la cual iremos añadiendo bloques para hacerlo lo más completo posible. Este desarrollo se podrá ir

observando en los códigos MATLAB® de cada apartado los cuales podrán ser consultados en el Anexo

2.1 Introducción La señal y(t) que en nuestra simulación vamos a transmitir por nuestro canal, es una secuencia de señales 𝑠𝑠𝑚𝑚(𝑡𝑡) 𝑚𝑚=1,…,𝑀𝑀 emitidas cada periodo de símbolo 𝑇𝑇𝑏𝑏, 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 𝑠𝑠𝑚𝑚(𝑡𝑡) codifica un símbolo, que es un grupo de 𝑘𝑘 = log2 𝑀𝑀 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 𝑅𝑅𝑅𝑅 = log2 𝑀𝑀

𝑇𝑇= 𝑘𝑘

𝑇𝑇 y tendrá una determinada energía media por símbolo 𝐸𝐸𝑏𝑏𝑏𝑏𝑏𝑏 = 𝐸𝐸𝑠𝑠𝑠𝑠𝑠𝑠𝑠𝑠

𝑘𝑘 . 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: 𝑅𝑅𝑏𝑏𝑠𝑠 = 𝑅𝑅𝑠𝑠 ∙ log2 𝑀𝑀 . Donde ‘bps’ son los bits por segundo, ‘Rs’ es la tasa de símbolos de la modulación, y ‘M’ de nuevo nos indica el número de símbolos de la constelación.

En nuestro caso BPSK (Binary Phase-shift keying) un bit representa un símbolo (-A,+A), constando esta modulación de dos símbolos.

Figura 2.1 Constelación BPSK

Es la modulación más sencilla, puesto que solo emplea dos símbolos, con un bit de información cada uno. Su diferencia entre símbolos es máxima (180º) presentando una mayor inmunidad al ruido respecto a otras modulaciones. Dichos símbolo suelen tener un valor de fase de 0º para el 1 y de 180º para el 0. La descripción matemática de una señal modulada BPSK es la siguiente: 𝑠𝑠(𝑡𝑡) = 𝐴𝐴 ∙ 𝑚𝑚(𝑡𝑡) cos 2𝜋𝜋𝑓𝑓𝑐𝑐, donde m(t) = 1 para el bit 1, y m(t) = -1 para el bit 0, A es la amplitud de la portadora y 𝑓𝑓𝑐𝑐 su frecuencia.

Cuando transformamos el mensaje a bits y lo 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. 𝑉𝑉𝑚𝑚 =𝑛𝑛º 𝑑𝑑𝑑𝑑 𝑏𝑏𝑏𝑏𝑏𝑏𝑏𝑏𝑇𝑇𝑏𝑏𝑑𝑑𝑚𝑚𝑇𝑇𝑇𝑇

(baudios)

El intervalo significativo mínimo o tiempo de símbolo 𝑇𝑇𝑏𝑏í𝑚𝑚𝑏𝑏𝑇𝑇𝑚𝑚𝑇𝑇𝑏𝑏 o también llamado 𝑇𝑇 es el tiempo mínimo que debe mantenerse un símbolo en el medio de transmisión para poder distinguirlo de los demás. La velocidad de modulación se obtiene al invertir el tiempo de símbolo: 𝑉𝑉𝑚𝑚 = 1

𝑇𝑇𝑠𝑠í𝑠𝑠𝑠𝑠𝑚𝑚𝑚𝑚𝑚𝑚𝑠𝑠.

La velocidad de transmisión de BPSK es el número de bits transmitidos por unidad de tiempo. Esta velocidad está relacionada con la frecuencia de símbolo a la que trabaja el sistema, y es la más baja de las modulaciones de fase. También la potencia de todos los símbolos es la misma, por lo que se simplifica el diseño de los amplificadores y etapas receptoras (y esto reduce costes). La tasa de errores de BPSK es baja, debido a su máxima separación entre saltos de fase.

P

21

Page 22: Diseño e implementación de un simulador de módem …bibing.us.es/proyectos/abreproy/12230/fichero/PFC... · 4.3.4 Canal 90 4.3.5 Ecualizadores 91 4.3.6 Salida de resultados . 92

Diseño inicial de un módem BPSK 22

Tendremos que tener en cuenta al diseñar el transmisor y receptor el utilizar una serie de pulsos adaptados al canal; esta conformación de pulsos será de Raíz de Coseno Alzado. El canal por el que trasmitiremos la señal tendrá una portadora de 9 MHz, una frecuencia de muestreo de 24MHz y una frecuencia de símbolo de 1 Msps. En este canal tendremos que tener en cuenta las siguientes fuentes de error que tendrá que corregir el receptor:

• Efecto del ruido (interferencias...), que se suelen modelar mediante una fuente n(t). • Efecto del canal (distorsión…), por ejemplo, que tenga un ancho de banda limitado.

Y por último tendremos el receptor que tendrá que invertir todas las operaciones que haya realizado el transmisor y compensar las fuentes de error del canal. También tendrá que tener en cuenta otro error típico en comunicaciones que será la sincronización entre el transmisor y el receptor.

Figura 2.2 Sistema completo

Cómo vemos en la Figura 2.2 vamos a centrar nuestra simulación en el recuadro Módem, sin hacer la transformación del mensaje a bit, pues en simulación no nos aporta mucha información.

2.2 Esquema del Transmisor inicial

En este primer apartado vamos a simular un transmisor lo más simple posible, y que consiste en el esquema de la Figura 2.3

Figura 2.3.- Transmisor simple

Cómo podemos ver tras generar nuestro símbolos conformamos los pulsos que enviaremos directamente al canal. Este conformador de pulsos consistirá un pulso raíz coseno alzado, el cual pasamos a describir en el siguiente apartado.

2.2.1 Conformador de pulso

Para transmitir una señal digital en un canal lo ideal sería transmitir un pulso cuadrado en frecuencia, pero esto es imposible ya que produce una señal en el tiempo senoidal, que necesita un tiempo infinito de transmisión y esto es imposible realizarlo en la práctica.

Page 23: Diseño e implementación de un simulador de módem …bibing.us.es/proyectos/abreproy/12230/fichero/PFC... · 4.3.4 Canal 90 4.3.5 Ecualizadores 91 4.3.6 Salida de resultados . 92

23 Diseño e implementación de un simulador de módem BPSK.

Figura 2.4.- Pulso cuadrado en frecuencia

Para conseguir esto, flexibilizamos el requerimiento de ancho de banda del pulso ocupando más de 0,5 fb.

Figura 2.5.-Pulso con ancho de banda mayor

Si continuáramos transmitiendo los pulsos en frecuencia con un ancho de banda de 0,5 fb, se solaparían en frecuencia los pulsos y se produciría interferencia entre símbolos (en inglés ISI), que hay que evitar a toda costa. Y el objetivo para escoger el pulso adecuado a transmitir es obtener en frecuencia una línea constante, una vez que se han ido sumando todos los símbolos enviados.

Figura 2.6.- Canal con ISI cero

Tendremos que limitar la señal en el tiempo y hacer que cumpla el ISI en frecuencia, y por ello, se usa la función coseno alzado que decrece más rápidamente que la “sinc” conforme aumenta la frecuencia (está más limitada). Un filtro de coseno alzado o función de coseno alzado se utiliza frecuentemente en sistemas de telecomunicaciones debido a que es capaz de reducir al mínimo la interferencia entre símbolos (ISI). Se llama así porque la parte no nula del espectro “frecuencial” es un coseno que, en su forma más simple (β = 1), se encuentra 'alzado' para situarse por encima del eje f (horizontal).

Figura 2.7.- Coseno Alzado (azul) comparado con una función Sinc (violeta)

23

Page 24: Diseño e implementación de un simulador de módem …bibing.us.es/proyectos/abreproy/12230/fichero/PFC... · 4.3.4 Canal 90 4.3.5 Ecualizadores 91 4.3.6 Salida de resultados . 92

Diseño inicial de un módem BPSK 24

Dado que la respuesta en frecuencia del filtro coseno alzado debe aplicarse al enlace de transmisión completo, incluyendo la transmisión y la recepción para conseguir un comportamiento de la ISI de valor cero, tenemos que compartir el filtro entre transmisión y recepción; por eso se utiliza el filtro de raíz de coseno alzado.

Figura 2.8.- Esquema con los dos raíz coseno alzado

Este filtro tiene las siguientes ventajas:

• No sufre ISI (Interferencia entre símbolos)

• Consigue, en el receptor, sintetizar el filtro adaptado a la señal, lo que permite unas características de detección con ruido blanco “gaussiano” óptimas.

El filtro en raíz de coseno alzado tiene la siguiente respuesta temporal:

ℎ(𝑡𝑡) =4𝛼𝛼𝜋𝜋√𝑇𝑇

∙𝑐𝑐𝑐𝑐𝑠𝑠 �(1 + 𝛼𝛼)𝜋𝜋 𝑡𝑡 𝑇𝑇� � + 1

4𝛼𝛼𝑡𝑡 ∙ sin �(1 − 𝛼𝛼)𝜋𝜋 𝑡𝑡 𝑇𝑇� �

1 − �4𝛼𝛼 �𝑡𝑡 𝑇𝑇� �2�

Ecuación 2.1

Donde α es el factor de redondeo (utilizaremos α = 0.5, que corresponde a un ancho de banda

(1+ α)*1/(2T)) con T el tiempo de símbolo.

Debido a que se trata de un filtro con respuesta al impulso definida en todo el eje de tiempos, no es realizable en la práctica. Lo que se suele hacer es truncar su respuesta impulsiva a dos o tres veces el tiempo de símbolo (a cada lado del máximo). Este intervalo, convenientemente muestreado a la frecuencia de inserción de ceros nos da la respuesta impulsiva digital que deberemos convolucionar con la secuencia de símbolos con ceros insertados. Nosotros elegiremos el truncamiento de la respuesta en cuatro símbolos y un “roll off” de 0,35. Para nuestra simulación usaremos la función que Matlab tiene para ello, pero a la vez vamos a implementarlo nosotros para que su entendimiento sea mayor. Introduciendo la fórmula Ecuación 2.1 en MATLAB ® encontramos que nuestra función tiene una serie de discontinuidades.

Page 25: Diseño e implementación de un simulador de módem …bibing.us.es/proyectos/abreproy/12230/fichero/PFC... · 4.3.4 Canal 90 4.3.5 Ecualizadores 91 4.3.6 Salida de resultados . 92

25 Diseño e implementación de un simulador de módem BPSK.

Figura 2.9.- Raíz coseno alzado con discontinuidades

Para solucionarlo sólo tenemos que realizar el límite en las discontinuidades. Mirando la función del pulso básico tendremos indeterminación en:

• 0.

• En las soluciones de: (4 ∙ 𝛼𝛼 ∙ 𝑛𝑛 ∙ 𝑇𝑇𝑏𝑏/𝑇𝑇)2 = 1

Una vez identificadas las indeterminaciones se calcula el límite de la función en esos puntos y se sustituyen. Para el cálculo de los límites me ayude de la función limit() de MATLAB ®. El pulso ya nos queda:

Figura 2.10.- Raíz coseno alzado completo

25

Page 26: Diseño e implementación de un simulador de módem …bibing.us.es/proyectos/abreproy/12230/fichero/PFC... · 4.3.4 Canal 90 4.3.5 Ecualizadores 91 4.3.6 Salida de resultados . 92

Diseño inicial de un módem BPSK 26

Cómo indicamos antes a pesar de esta implementación a la hora de simulación vamos a usar la función rcosine() de MATLAB®. Para representarlo usamos el siguiente código.

Figura 2.11.- Raíz coseno alzado utilizado en simulación

Con esto tendríamos hecho nuestro primer transmisor, pero para realizar correctamente la simulación debemos muestrear p(t) a ocho veces la velocidad de símbolo. Esto lo hacemos introduciendo ceros entre nuestros símbolos antes de realizar la convolución con nuestro pulso.

2.2.2 Diagrama de ojos

Los símbolos que obtendremos una vez filtrados por el filtro raíz de coseno alzado, los analizamos utilizando un diagrama de ojos. El diagrama de ojo o patrón de ojo es un método utilizado para el análisis del comportamiento de los enlaces de transmisión. Permite analizar las formas de onda de los pulsos que se propagan en un enlace de comunicaciones, para lograr observar sus formas, desfases, niveles de ruido, potencias de las señales... y con ello apreciar la distorsión del canal (ISI), la severidad del ruido o interferencia y los errores de sincronismo en el receptor.

El concepto del diagrama de ojo corresponde a un gráfico que muestra la superposición de las distintas combinaciones posibles de unos y ceros en un rango de tiempo o cantidad de bits determinados. Dichas combinaciones transmitidas por el enlace permiten obtener las características de los pulsos que se propagan

c=rcosine(1,4,'sqrt',.35,4); % Conformación del pulso

plot(rrc);

grid;

title('Pulso de Raíz de Coseno Alzado truncado en 4 símbolos con Roll-off = 0.35')

Page 27: Diseño e implementación de un simulador de módem …bibing.us.es/proyectos/abreproy/12230/fichero/PFC... · 4.3.4 Canal 90 4.3.5 Ecualizadores 91 4.3.6 Salida de resultados . 92

27 Diseño e implementación de un simulador de módem BPSK.

por el medio de comunicación que sea. El gráfico se forma superponiendo los trazos de la salida del filtro receptor.

Figura 2.12.- Concepto diagrama de ojos

Por ejemplo, en una secuencia de tres bits hay ocho combinaciones posibles, las que pueden ser observadas en la figura 2.8. Se observa que no se consideran las cadenas de tres unos y tres ceros consecutivas, ya que, debido a la superposición de las otras combinaciones, quedan determinadas implícitamente.

Análisis de las propiedades de la señal

En presencia de ISI, cuando el pulso no satisface el criterio de Nyquist, el diagrama tenderá a cerrarse verticalmente. Para una transmisión sin errores en ausencia de ruido, el ojo debe mantener cierta apertura vertical (a), o en caso contrario existirán señales de interferencia entre símbolos que provocarán errores. Cuando el ojo no esté totalmente cerrado, la interferencia entre símbolos reducirá el valor del ruido aditivo admisible.

Figura 2.13.- Diagrama de ojos de una modulación PSK

Por tanto, cuanta mayor apertura vertical, mayor inmunidad frente al ruido. El instante óptimo de muestreo será el punto de máxima apertura vertical del ojo, pero esto será muy difícil de conseguir por un sistema práctico de sincronismo. Por eso, la apertura horizontal del ojo (b) es también importante desde el punto de vista práctico. Cuanto mayor sea la pendiente (c), mayor sensibilidad tendrá el sistema a errores cometidos en la recuperación del sincronismo (errores en el cálculo del instante de muestreo).

Simulación en MATLAB®

Como indicamos en la introducción muchas de las funciones que vamos implementar existen en las librerías de MATLAB® pero entendemos que la creación de ellas ayuda al entendimiento. De esta forma para el diagrama de ojos MATLAB® nos proporciona la función eyediagram(), que a lo largo del documento la usaremos alguna vez.

Pero vamos a implementarla sabiendo en que consiste el diagrama de ojos de la siguiente manera:

27

Page 28: Diseño e implementación de un simulador de módem …bibing.us.es/proyectos/abreproy/12230/fichero/PFC... · 4.3.4 Canal 90 4.3.5 Ecualizadores 91 4.3.6 Salida de resultados . 92

Diseño inicial de un módem BPSK 28

2.2.3 Esquema receptor simple

Figura 2.14.- Diagrama receptor simple

En el receptor completamos nuestro pulso coseno alzado. Y tras detectar el primer símbolo muestreamos la señal recibida y decidimos el símbolo recibido.

2.2.3.1 Decisor

En el caso de la modulación BPSK nuestro decisor será muy sencillo. Ya que elegiremos un símbolo u otro según el signo del valor recibido, y para ello usamos la función de MATLAB® “sign” que nos devolvería la nuestros datos BPSK. De esta forma elegiremos un símbolo u otro dependiendo de si este es positivo o negativo.

2.2.4 Simulación de este primer sistema básico

Simulando el primer esquema simple mencionado, a la salida del transmisor tenemos:

function diagramaojos_1(x,T) % x: señal % T: muestras repesentadas en el diagrama % Calculamos cuantas veces vamos a superponer la señal ma = floor(length(x)/T); %Creamos la matriz que guardará los valores del tamaño necesario % T: numero de muestras por representación % ojos: sera una matriz en que cada columna llevara T muestras ojosa = zeros(T,ma); %Relleno la matriz ojosa(:) = x(1:ma*T); % Represento ojosa:= T filas x ma columnas % plot superpone cada una de las columnas de la matriz figure plot(ojosa), title('Diagrama de ojos'), xlabel('n'), ylabel('amplitud');

Page 29: Diseño e implementación de un simulador de módem …bibing.us.es/proyectos/abreproy/12230/fichero/PFC... · 4.3.4 Canal 90 4.3.5 Ecualizadores 91 4.3.6 Salida de resultados . 92

29 Diseño e implementación de un simulador de módem BPSK.

Figura 2.15.- Diagrama de ojos a la salida del receptor

Donde en esta primera simulación si vemos el código que está en los anexos podemos ver que insertábamos ocho ceros entre símbolos, por lo que podemos ver nuestros símbolos en la muestra 9. Donde podemos ver algo de ruido debido a que el coseno alzado aún no está completo. Viendo el diagrama de ojos en el receptor tras completar el coseno alzado podemos observar como la muestra 9 converge a dos únicos valores de nuestra modulación BPSK

Figura 2.16.- Diagrama de ojos en el receptor

29

Page 30: Diseño e implementación de un simulador de módem …bibing.us.es/proyectos/abreproy/12230/fichero/PFC... · 4.3.4 Canal 90 4.3.5 Ecualizadores 91 4.3.6 Salida de resultados . 92

Diseño inicial de un módem BPSK 30

2.2.5 Conclusión

Este es el sistema más simple, y que puede ayudar a introducir al lector en lo que es un transmisor-receptor. A partir de este vamos a ir añadiéndole bloques y usando canales ruidosos para acercar nuestra simulación lo máximo posible una comunicación real.

Este primer sistema se puede probar ejecutado el código llamado “código1” donde podemos ver que los bits enviados y recibidos son los mismos sin error, puesto que este sistema es ideal.

2.3 Esquema del sistema con interpolación y diezmado

2.3.1 Introducción

En los sistemas reales se suelen usar estas técnicas para modificar la frecuencia de muestreo. Y nosotros realizamos esta modificación para realizar la conversión A/D y D/A. En nuestro primer sistema eso lo hacíamos intercalando ceros en nuestras señal, ahora vamos a usar estas dos técnicas.

Tanto la interpolación como el diezmado surgen cuando por ejemplo en la conversión A/D obtenemos una señal x[n]= x(nT), pero no queremos tener todas las muestras en todos los instantes de tiempo múltiplos del periodo de muestreo T, sino que lo queremos x[n]=x(nT’) siendo T’=kT y “k” entero.

Para entender lo que hacen grosso modo vemos la siguiente figura donde en el caso del diezmado k es M y en la interpolación k=1/L.

Figura 2.17.- Interpolación y diezmado

Page 31: Diseño e implementación de un simulador de módem …bibing.us.es/proyectos/abreproy/12230/fichero/PFC... · 4.3.4 Canal 90 4.3.5 Ecualizadores 91 4.3.6 Salida de resultados . 92

31 Diseño e implementación de un simulador de módem BPSK.

2.3.2 Interpolación

Hace pasar de un periodo de muestreo T a uno L veces menor (T’=T/L), lo que equivale a un aumento de la frecuencia de muestreo (ωs’= ωs ∙L)

Figura 2.18.- Interpolación

Figura 2.19.- Efecto de la interpolación sobre el espectro de la señal

Añadiendo L-1 muestras de valor cero entre cada muestra x[n]. La señal original no ha modificado realmente su periodo de T a T’, por ello se usa filtros de interpolación. Estos filtros son unos filtros paso bajo con ωc=ωs/2.

El filtro permite una corrección de la amplitud de la señal, para los valores de las muestra añadidas que anteriormente tenían el valor cero.

31

Page 32: Diseño e implementación de un simulador de módem …bibing.us.es/proyectos/abreproy/12230/fichero/PFC... · 4.3.4 Canal 90 4.3.5 Ecualizadores 91 4.3.6 Salida de resultados . 92

Diseño inicial de un módem BPSK 32

Figura 2.20.- Filtro de interpolación

2.3.3 Diezmado

Este es el caso inverso al anterior. Si de cada M muestras tan solo cogemos una, es como si pasáramos de un periodo de muestreo T a uno M veces mayor (T’ = MT), lo que equivale a una disminución de la frecuencia de muestreo (ωs’ = ωs/M)a M

Figura 2.21.- Diezmado

En frecuencia, como la frecuencia de muestreo disminuye el efecto es que los espectros de la señal muestreada se encuentran más próximos unos de otros.

Page 33: Diseño e implementación de un simulador de módem …bibing.us.es/proyectos/abreproy/12230/fichero/PFC... · 4.3.4 Canal 90 4.3.5 Ecualizadores 91 4.3.6 Salida de resultados . 92

33 Diseño e implementación de un simulador de módem BPSK.

Figura 2.22.- Efectos del diezmado sobre el espectro de la señal

A medida que M se incrementa, los espectros se aproximan unos a otros, a partir de ciertos valores de M se producirá aliasing, ya que si se eliminan demasiadas muestras es como si no se hubiera respetado la condición de Nyquist en su adquisición que indica que ωs’≥2ωm

Figura 2.23.-Aliasing por exceso de diezmado

Si es necesario utilizar un valor de M elevado, puede reducirse este problema mediante filtros antialiasing.

2.3.4 Filtro CIC

Como hemos indicado cuando hablábamos de interpolación necesitamos filtrar la señal para eliminar las altas frecuencias. En la figura 2.15 es lo que llamamos filtro digital. 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).

2.3.4.1 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.

33

Page 34: Diseño e implementación de un simulador de módem …bibing.us.es/proyectos/abreproy/12230/fichero/PFC... · 4.3.4 Canal 90 4.3.5 Ecualizadores 91 4.3.6 Salida de resultados . 92

Diseño inicial de un módem BPSK 34

Un integrador es simplemente un filtro IIR unipolar con coeficiente de retroalimentación unitario:

𝑦𝑦[𝑛𝑛] = 𝑦𝑦[𝑛𝑛 − 1] + 𝑥𝑥[𝑛𝑛]

Este sistema es conocido también como un acumulador. La función de transferencia para un integrador en el plano z es:

𝐻𝐻𝐼𝐼(𝑧𝑧) =1

1 − 𝑧𝑧−1

Figura 2.24.- Diagrama de bloques de un Integrador

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 límite para una entrada sin límite, es decir el integrador por si solo 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:

𝑦𝑦[𝑛𝑛] = 𝑥𝑥[𝑛𝑛] − 𝑥𝑥[𝑛𝑛 −𝑀𝑀]

En esta ecuación, M es un parámetro de diseño y es llamado el retardo diferencial (differential delay). M puede ser cualquier número entero positivo, pero esta normalmente limitado a 1 o 2.

Figura 2.25.- Diagrama de bloques de un filtro

La correspondiente función de transferencia del filtro de peine es la siguiente:

𝐻𝐻𝑐𝑐(𝑧𝑧) = 1 − 𝑧𝑧−𝑀𝑀

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:

𝑦𝑦[𝑛𝑛] = 𝑥𝑥[𝑛𝑛] − 𝑥𝑥[𝑛𝑛 − 𝑅𝑅𝑀𝑀]

Page 35: Diseño e implementación de un simulador de módem …bibing.us.es/proyectos/abreproy/12230/fichero/PFC... · 4.3.4 Canal 90 4.3.5 Ecualizadores 91 4.3.6 Salida de resultados . 92

35 Diseño e implementación de un simulador de módem BPSK.

Con esta variación de frecuencia en los filtro de peine a una R veces más 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.

- 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 último, 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:

𝐻𝐻(𝑧𝑧) = 𝐻𝐻𝐼𝐼(𝑧𝑧)𝐻𝐻𝑐𝑐(𝑧𝑧) =1 − 𝑧𝑧−𝑅𝑅𝑀𝑀

1 − 𝑍𝑍−1= � � 𝑧𝑧𝑘𝑘

𝑅𝑅𝑀𝑀−1

𝑘𝑘=0

𝑁𝑁

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.

Figura 2.26.- Diagrama de bloques de un filtro CIC

La magnitud de la respuesta impulsional a la salida del filtro es la siguiente:

|𝐻𝐻(𝑧𝑧)| = �sin(𝜋𝜋𝑅𝑅𝑀𝑀𝑓𝑓)

sin(𝜋𝜋𝑓𝑓) �𝑁𝑁

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.

35

Page 36: Diseño e implementación de un simulador de módem …bibing.us.es/proyectos/abreproy/12230/fichero/PFC... · 4.3.4 Canal 90 4.3.5 Ecualizadores 91 4.3.6 Salida de resultados . 92

Diseño inicial de un módem BPSK 36

Figura 2.27.- Respuesta en frecuencia de un filtro CIC con los valores dados

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 generaran 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:

𝐻𝐻(𝑧𝑧) = �1 − 𝑧𝑧−6

1 − 𝑧𝑧−1�4

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))

Page 37: Diseño e implementación de un simulador de módem …bibing.us.es/proyectos/abreproy/12230/fichero/PFC... · 4.3.4 Canal 90 4.3.5 Ecualizadores 91 4.3.6 Salida de resultados . 92

37 Diseño e implementación de un simulador de módem BPSK.

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.

Figura 2.28.- Filtro CIC simulado

2.3.5 Implementación

En nuestro caso haremos la interpolación en dos pasos. Primero interpolaremos por un valor M y luego por L. En nuestro caso M será igual a 4 y L a 6, para que el periodo de muestreo este multiplicado por M y L, y por lo tanto tendremos una subida en frecuencia que esta multiplicada por el mismo factor.

Esto hará que se simplifique la subida en frecuencia. Tras la interpolación usaremos el filtro CIC explicado en el apartado anterior.

Figura 2.29.- Transmisor con interpolación

37

Page 38: Diseño e implementación de un simulador de módem …bibing.us.es/proyectos/abreproy/12230/fichero/PFC... · 4.3.4 Canal 90 4.3.5 Ecualizadores 91 4.3.6 Salida de resultados . 92

Diseño inicial de un módem BPSK 38

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 2.30.- Receptor con diezmado

2.3.6 Simulación

Para probar esta implementación solo tenemos que ejecutar el ‘código2’ adjunto en el anexo.

Por ver los diagramas de ojos, en la salida del transmisor tenemos:

Figura 2.31.- Diagrama de ojos a la salida del transmisor

Page 39: Diseño e implementación de un simulador de módem …bibing.us.es/proyectos/abreproy/12230/fichero/PFC... · 4.3.4 Canal 90 4.3.5 Ecualizadores 91 4.3.6 Salida de resultados . 92

39 Diseño e implementación de un simulador de módem BPSK.

Figura 2.32.- Diagrama de ojos en el receptor antes del último diezmado

Por comparar podemos verlo con la función que nos proporciona MATLAB ® eyediagram():

Figura 2.33.- Diagrama de ojos con eyediagram

Nos aporta la misma información solo que esta función se centra en el punto donde recibimos los símbolos.

39

Page 40: Diseño e implementación de un simulador de módem …bibing.us.es/proyectos/abreproy/12230/fichero/PFC... · 4.3.4 Canal 90 4.3.5 Ecualizadores 91 4.3.6 Salida de resultados . 92

Diseño inicial de un módem BPSK 40

Personalmente nos gusta más representar el diagrama de ojos por nuestra función mucho más demostrativa.

Por último vemos que el sistema funciona correctamente cuando representamos el diagrama de ojos justo antes de la decisión.

Figura 2.34.- Diagrama de ojos BPSK antes del decisor

Para comprobar los resultados solo tienen que ejecutar codigo2.m y comprobar que tantos los bits enviados como recibidos son exactamente iguales.

2.4 Subida en frecuencia

El siguiente paso en nuestra simulación y con el fin de que nuestro sistema se asemeje lo máximo posible a un sistema real será la subida en frecuencia antes de enviar nuestra señal por el canal. Este paso en simulación no se suele implementar debido al coste computacional que supone.

Por lo tanto al sistema hasta ahora diseñado vamos a añadir 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:

Page 41: Diseño e implementación de un simulador de módem …bibing.us.es/proyectos/abreproy/12230/fichero/PFC... · 4.3.4 Canal 90 4.3.5 Ecualizadores 91 4.3.6 Salida de resultados . 92

41 Diseño e implementación de un simulador de módem BPSK.

Figura 2.35.- Esquema con subida a frecuencia intermedia

2.4.1 Implementación

Una vez añadido la subida a 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 solo necesita 24 muestras por símbolo.

En la última parte el mezclado se hará con un coseno de frecuencia intermedia de 9MHz que en digital será 9MHz/24MHz=0,375.

En el receptor incluimos un filtro paso de banda para eliminar posible ruido a frecuencias que no nos interesan. Y tras ello hacemos el proceso inverso al transmisor.

Se generara un coseno de la misma frecuencia y fase que el de transmisión. Por tanto en este apartado del diseño básico asumiremos sincronización perfecta.

Tras el mezclado digital se realizará un filtrado paso bajo, mediante el mismo CIC de cuarto orden que se empleó en el transmisor, para que atenúe las imágenes y permita realizar un diezmado por L. Para que la señal esté sincronizada, en este diezmado deberán tenerse en cuenta los retardos introducidos por los filtros: CIC transmisor, paso banda interfaz analógico y CIC receptor.

2.4.1.1 Filtro paso banda

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 rechazo, 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

41

Page 42: Diseño e implementación de un simulador de módem …bibing.us.es/proyectos/abreproy/12230/fichero/PFC... · 4.3.4 Canal 90 4.3.5 Ecualizadores 91 4.3.6 Salida de resultados . 92

Diseño inicial de un módem BPSK 42

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 de rechazo. El algoritmo Parks-Mc-Clellan es una variación del algoritmo de Remez o algoritmo de intercambio Remez, modificado de tal manera que esta 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.

Figura 2.36.- Bandas de paso y de rechazo del algoritmo de Parcks-McClellan

Con el diseño de este método para la obtención de filtros FIR, podemos ajustar las bandas de paso y rechazo, 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

Frecuencia de corte de banda de paso 8,4 y 9,6 MHz

Frecuencia de cote de banda de rechazo 7,8 y 10,2 MHz

Orden del filtro 90

Tabla 2.1.- Parámetros filtro Remez

Page 43: Diseño e implementación de un simulador de módem …bibing.us.es/proyectos/abreproy/12230/fichero/PFC... · 4.3.4 Canal 90 4.3.5 Ecualizadores 91 4.3.6 Salida de resultados . 92

43 Diseño e implementación de un simulador de módem BPSK.

Para el diseño de este filtro en MATLAB ® introducimos:

Figura 2.37.- Respuesta en frecuencia del filtro paso de banda Remez

2.4.2 Resultados y conclusiones

Con este sistema al no meter ruido en el sistema no tendremos ningún en error. Podemos comprobarlo ejecutando codigo3.m de anexo.

Ya en el siguiente apartado introduciremos ruido para ver como nuestro sistema funciona perfectamente en estas nuevas condiciones.

hbd = remez(90,[0 0.65 0.7 0.8 0.85 1],[0 0 1 1 0 0])

43

Page 44: Diseño e implementación de un simulador de módem …bibing.us.es/proyectos/abreproy/12230/fichero/PFC... · 4.3.4 Canal 90 4.3.5 Ecualizadores 91 4.3.6 Salida de resultados . 92

Diseño inicial de un módem BPSK 44

2.5 Evaluación del sistema con ruido en el canal Al diseño que hemos realizado del transmisor y el receptor, le añadiremos ruido para ver qué tal se comporta y evaluaremos sus características. El transmisor no lo modificaremos, y este será el diseño definitivo para la modulación en BPSK. A partir de ahora lo trataremos como un bloque.

Figura 2.38.- Introducción de ruido en el canal

En el receptor iremos añadiendo los bloques necesarios para compensar todos los errores que van surgiendo en un receptor real.

Los pasos que seguiremos en la simulación para el cálculo del número de errores de bits con la modulación BPSK, comparando el valor teórico con el valor simulado, serán los siguientes:

A) Generación de símbolos aleatorios modulados en BPSK +1 s y -1 s.

B) Envío de la señal a través del canal con ruido aditivo blanco y gaussiano.

C) Demodulación del símbolo recibido según la modulación BPSK.

D) Obtención del número de errores.

E) Repetición del mismo proceso para otros valores de Eb/N0.

2.5.1 Análisis de los errores del receptor

Para evaluar el sistema utilizaremos la probabilidad de error de bit, que son los bits que nos llegan erróneos respecto a los bits transmitidos.

2.5.1.1 Probabilidad de error de bit para modulación BPSK

Cuando nos llegan las señales al receptor, se introducen una serie de errores y distorsiones que tendremos que tener en cuenta. Para calcular los errores vamos a obtener la ecuación teórica de la tasa de error de bit (BER). El sistema consistirá en una modulación de fase binaria (BPSK), introduciendo en el canal ruido blanco aditivo gaussiano.

Con la modulación BPSK (Binary Phase Shift Keying), los dígitos binarios 1 y 0 pueden ser representados por los niveles analógicos +�𝐸𝐸𝑏𝑏 y −�𝐸𝐸𝑏𝑏 respectivamente. El sistema modelo se representa en la figura siguiente:

Page 45: Diseño e implementación de un simulador de módem …bibing.us.es/proyectos/abreproy/12230/fichero/PFC... · 4.3.4 Canal 90 4.3.5 Ecualizadores 91 4.3.6 Salida de resultados . 92

45 Diseño e implementación de un simulador de módem BPSK.

Figura 2.39.- Diseño simplificado de bloques con el transmisor-receptor en BPSK

Modelo del canal

La onda de transmisión que va por el canal se ve interferida por ruido, n, típicamente denominado Ruido Blanco Gaussiano Aditivo (Additive White Gaussian Noise, AWGN).

• Aditivo: el ruido es agregado (no se multiplica) por la señal transmitida.

• Blanco: el espectro de ruido plano en todas las frecuencias.

• Gaussiano: Los valores del ruido siguen la función de distribución de probabilidad gaussiana, dada por:

𝑏𝑏(𝑥𝑥) = 1√2𝜋𝜋𝜎𝜎2

𝑒𝑒−(𝑥𝑥−𝜇𝜇)2

2𝜎𝜎2 con 𝜇𝜇 = 0 y 𝜎𝜎2 = 𝑁𝑁02

Cálculo de la probabilidad de error

Por lo tanto las señales que recibimos en el receptor vienen definidas por:

• 𝑦𝑦(𝑡𝑡) = 𝑠𝑠1 + 𝑛𝑛 cuando se transmite un 1.

• 𝑦𝑦(𝑡𝑡) = 𝑠𝑠0 + 𝑛𝑛 cuando se transmite un 0.

Por lo tanto en el receptor tendremos una función de distribución de probabilidad (PDF) para cada caso:

𝑏𝑏(𝑦𝑦|𝑠𝑠0) =1

�𝜋𝜋 𝑁𝑁0 𝑒𝑒−(𝑦𝑦+�𝐸𝐸𝑠𝑠)2

𝑁𝑁0

𝑏𝑏(𝑦𝑦|𝑠𝑠1) =1

�𝜋𝜋 𝑁𝑁0 𝑒𝑒−(𝑦𝑦+�𝐸𝐸𝑠𝑠)2

𝑁𝑁0

45

Page 46: Diseño e implementación de un simulador de módem …bibing.us.es/proyectos/abreproy/12230/fichero/PFC... · 4.3.4 Canal 90 4.3.5 Ecualizadores 91 4.3.6 Salida de resultados . 92

Diseño inicial de un módem BPSK 46

Figura 2.40.- Función densidad de probabilidad con modulación BPSK

Asumiendo que las señales s1 y s0, son mutuamente excluyentes e igualmente probables, es decir que la probabilidad de que enviemos s1 o s0 es de 1 2� . Por lo tanto el valor 0 constituye el umbral para el límite de la decisión óptima.

• Si la señal recibida s1 es mayor que 0, el receptor asume que fue transmitida.

• Si la señal recibida s0 es inferior o igual a 0, el receptor asume que fue transmitida.

Por lo tanto tenemos:

𝑦𝑦 > 0 → 𝑠𝑠1

𝑦𝑦 ≤ 0 → 𝑠𝑠0

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):

𝑏𝑏(𝑒𝑒|𝑠𝑠1) =1

�𝜋𝜋 𝑁𝑁0 �𝑒𝑒

−�𝑦𝑦−�𝐸𝐸𝑠𝑠�2

𝑁𝑁0

0

−∞

𝑑𝑑𝑦𝑦 =1𝜋𝜋

� 𝑒𝑒−𝑧𝑧2∞

�𝐸𝐸𝑠𝑠𝑁𝑁0

𝑑𝑑𝑧𝑧 =12

𝑒𝑒𝑒𝑒𝑓𝑓𝑐𝑐 ��𝐸𝐸𝑏𝑏𝑁𝑁0�

donde, 𝑒𝑒𝑒𝑒𝑓𝑓𝑐𝑐(𝑥𝑥) = 2√𝜋𝜋

∫ 𝑒𝑒−𝑥𝑥2∞𝑥𝑥 es la función de error complementaria.

Probabilidad de error cuando s0 fue transmitida

Page 47: Diseño e implementación de un simulador de módem …bibing.us.es/proyectos/abreproy/12230/fichero/PFC... · 4.3.4 Canal 90 4.3.5 Ecualizadores 91 4.3.6 Salida de resultados . 92

47 Diseño e implementación de un simulador de módem BPSK.

De manera similar, la probabilidad de error dada cuando s0 fue transmitida es (el área de la región verde):

𝑏𝑏(𝑒𝑒|𝑠𝑠0) =1

�𝜋𝜋 𝑁𝑁0 � 𝑒𝑒

−�𝑦𝑦−�𝐸𝐸𝑠𝑠�2

𝑁𝑁0

0

𝑑𝑑𝑦𝑦 =1𝜋𝜋

� 𝑒𝑒−𝑧𝑧2∞

�𝐸𝐸𝑠𝑠𝑁𝑁0

𝑑𝑑𝑧𝑧 =12

𝑒𝑒𝑒𝑒𝑓𝑓𝑐𝑐 ��𝐸𝐸𝑏𝑏𝑁𝑁0�

Probabilidad total del error de bit

𝑃𝑃𝑏𝑏 = 𝑏𝑏(𝑠𝑠1)𝑏𝑏(𝑒𝑒|𝑠𝑠1) + 𝑏𝑏(𝑠𝑠0)𝑏𝑏(𝑒𝑒|𝑠𝑠0) .

Dado que hemos supuesto que s1 y s0 son igualmente probables, 𝑏𝑏(𝑠𝑠1) = 𝑏𝑏(𝑠𝑠0) = 12 , la probabilidad de error

es,

𝑃𝑃𝑏𝑏 = 12𝑒𝑒𝑒𝑒𝑓𝑓𝑐𝑐 ��𝐸𝐸𝑠𝑠

𝑁𝑁0� Ó 𝑃𝑃𝑏𝑏 = 1

2𝑄𝑄 ��2 𝐸𝐸𝑠𝑠

𝑁𝑁0�

2.5.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 abscisa es la tasa de error de bit (BER), valor adimensional, expresado normalmente en potencias de diez.

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: 𝑃𝑃𝑏𝑏𝑛𝑛𝑏𝑏 ≡ 𝑥𝑥(𝑛𝑛)2 y la potencia media del valor instantáneo en N muestras es:

𝑃𝑃𝑚𝑚𝑑𝑑𝑑𝑑 =1𝑁𝑁�𝑥𝑥(𝑛𝑛)2𝑁𝑁

𝑛𝑛=1

Cuando recibimos la señal en el receptor calculamos su potencia con la siguiente fórmula: 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 = 1010/m

(estando en unidades lineales). Y en MATLAB® lo calculamos así:

47

Page 48: Diseño e implementación de un simulador de módem …bibing.us.es/proyectos/abreproy/12230/fichero/PFC... · 4.3.4 Canal 90 4.3.5 Ecualizadores 91 4.3.6 Salida de resultados . 92

Diseño inicial de un módem BPSK 48

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.

Para generar el ruido y sumárselo a la señal, utilizaremos en MATLABR 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, 𝜎𝜎𝑁𝑁2 . Para hacer esto, simplemente multiplicaremos la salida de la función 'randn' por 𝜎𝜎𝑁𝑁, asi que generaremos el vector de la siguiente manera: sru= randn(size(smulti))*sqrt(PotN);

Añadiendo el ruido generado de la siguiente manera: sru= Stx+sru;

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 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®:

% 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

Page 49: Diseño e implementación de un simulador de módem …bibing.us.es/proyectos/abreproy/12230/fichero/PFC... · 4.3.4 Canal 90 4.3.5 Ecualizadores 91 4.3.6 Salida de resultados . 92

49 Diseño e implementación de un simulador de módem BPSK.

La gráfica obtenida es:

Figura 2.41.- Curva probabilidad de error simulada

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.

2.6 Evaluación del sistema con ecualización del canal

Figura 2.42.- Sistema con ruido y multicamino

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.

49

Page 50: Diseño e implementación de un simulador de módem …bibing.us.es/proyectos/abreproy/12230/fichero/PFC... · 4.3.4 Canal 90 4.3.5 Ecualizadores 91 4.3.6 Salida de resultados . 92

Diseño inicial de un módem BPSK 50

2.6.1 Multicamino introducido en el canal

Las dos principales fuentes de distorsión de canales lineales en sistemas de comunicaciones digitales son la propagación por multitrayecto 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 las reflexiones significativas de la señal transmitida.

Figura 2.43.- Multitrayecto

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 ingles) 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 reduzca el ruido de banda ancha.

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 seleccionando 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”.

Page 51: Diseño e implementación de un simulador de módem …bibing.us.es/proyectos/abreproy/12230/fichero/PFC... · 4.3.4 Canal 90 4.3.5 Ecualizadores 91 4.3.6 Salida de resultados . 92

51 Diseño e implementación de un simulador de módem BPSK.

2.6.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.

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 𝑦𝑦[𝑘𝑘] ≈ 𝑠𝑠[𝑘𝑘 − 𝛿𝛿] para algún 𝛿𝛿 específico.

El problema de la ecualización lineal se representa con la siguiente ecuación:

𝑦𝑦[𝑘𝑘] = �𝑤𝑤𝑗𝑗 𝑒𝑒[𝑘𝑘 − 𝑗𝑗]𝑛𝑛

𝑗𝑗=0

y operando obtendríamos la relación de matrices: Y=RF

Y el error recuperado de la trasmisión con retardo es:

𝑒𝑒[𝑘𝑘] = 𝑠𝑠[𝑘𝑘 − 𝛿𝛿] ∙ 𝑦𝑦[𝑘𝑘]

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:

𝐽𝐽𝐿𝐿𝐿𝐿 = � 𝑒𝑒2[𝑖𝑖]𝑇𝑇

𝑏𝑏=𝑛𝑛+1

𝐽𝐽𝐿𝐿𝐿𝐿 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 𝐽𝐽𝐿𝐿𝐿𝐿 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.

2.6.1.2 Ecualización LMS

La primera ecualización que vamos a usar en nuestra simulación es la ecualización LMS. Esta ecualización adaptativa utiliza para su algoritmo una solución que produzca la menor media cuadrática. 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.

51

Page 52: Diseño e implementación de un simulador de módem …bibing.us.es/proyectos/abreproy/12230/fichero/PFC... · 4.3.4 Canal 90 4.3.5 Ecualizadores 91 4.3.6 Salida de resultados . 92

Diseño inicial de un módem BPSK 52

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.

Figura 2.44.- Diagrama de bloques de un ecualizador lineal basado en el algoritmo LMS

Estos procesos pueden expresarse en las siguientes relaciones y su grafica 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. Estimación del error e(n) = s(n) – y(n)

3. Adaptación de los pesos del filtro w(n+1) = w(n) + m x(n) e*(n)

Observamos que la estimación del error, definida por las ecuaciones 1 y 2, 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 MATLAB ®

Partiendo de la ecuación básica del algoritmo pasamos al siguiente desarrollo en MATLAB ® para nuestro ecualizador LMS:

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

Page 53: Diseño e implementación de un simulador de módem …bibing.us.es/proyectos/abreproy/12230/fichero/PFC... · 4.3.4 Canal 90 4.3.5 Ecualizadores 91 4.3.6 Salida de resultados . 92

53 Diseño e implementación de un simulador de módem BPSK.

Como vemos en el código una variable importante es las iteraciones de nuestro bucle for ‘M’, para ello y para que se vea su importancia hacemos varias simulaciones dándole distintos valores.

Figura 2.45.- Curva de probabilidad de error con ecualizador LMS con M variable

En esta simulación también hemos representado en color negro la curva de probabilidad si no colocamos ecualizador con multicamino. Podemos observar como el ruido que introduce el multicamino no es admisible por nuestro sistema sin ecualizador.

De la Figura 2.45 podemos ver que con 3000 iteraciones ya es suficiente para tener una respuesta muy parecida a la teórica. A la misma conclusión podemos llegar viendo como los valores de las componentes del ecualizador quedan más o menos constantes tras las 3000 iteraciones.

53

Page 54: Diseño e implementación de un simulador de módem …bibing.us.es/proyectos/abreproy/12230/fichero/PFC... · 4.3.4 Canal 90 4.3.5 Ecualizadores 91 4.3.6 Salida de resultados . 92

Diseño inicial de un módem BPSK 54

Figura 2.45.- Evolución de los valores del LMS

2.6.1.3 Ecualización LMS con decisión directa

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 2.35, puede ser sustituido por el ecualizador por decisión directa de la figura 2.37. De esta forma tenemos la ecuación del ecualizador LMS con decisión directa:

𝑤𝑤𝑏𝑏[𝑘𝑘 + 1] = 𝑤𝑤𝑏𝑏[𝑘𝑘] + µ ∙ (𝑠𝑠𝑖𝑖𝑠𝑠𝑛𝑛(𝑦𝑦[𝑘𝑘]) − 𝑦𝑦[𝑘𝑘]) ∙ 𝑒𝑒[𝑘𝑘 − 𝑖𝑖]

Page 55: Diseño e implementación de un simulador de módem …bibing.us.es/proyectos/abreproy/12230/fichero/PFC... · 4.3.4 Canal 90 4.3.5 Ecualizadores 91 4.3.6 Salida de resultados . 92

55 Diseño e implementación de un simulador de módem 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.

Figura 2.46.- Diagrama de bloques de un ecualizador ciego por decisión directa

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:

w=zeros(1,N+1)'; % Inicamos con una delta en el coeficiente central w((N+1)/2)=1; for k=N+1:nIte 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 y=conv(x,w);

55

Page 56: Diseño e implementación de un simulador de módem …bibing.us.es/proyectos/abreproy/12230/fichero/PFC... · 4.3.4 Canal 90 4.3.5 Ecualizadores 91 4.3.6 Salida de resultados . 92

Diseño inicial de un módem BPSK 56

2.6.1.4 Simulación de ecualizador LMS DD

Una vez que tenemos el ecualizador LMS DD, lo simulamos en un sistema con ruido y multicamino para ver cómo se comporta.

Figura 2.47.- Curva con ecualizador LMS DD

2.6.1.5 Ecualización CMA

CMA 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

𝐽𝐽𝐶𝐶𝑀𝑀𝐶𝐶 =14

𝑎𝑎𝑎𝑎𝑠𝑠{(𝛾𝛾 − 𝑦𝑦2[𝑛𝑛])2}

que mide la dispersión de la salida del ecualizador deseando que llegue al valor cuadrático γ.

Page 57: Diseño e implementación de un simulador de módem …bibing.us.es/proyectos/abreproy/12230/fichero/PFC... · 4.3.4 Canal 90 4.3.5 Ecualizadores 91 4.3.6 Salida de resultados . 92

57 Diseño e implementación de un simulador de módem BPSK.

El elemento asociado adaptativo para actualizar los coeficientes del ecualizador es

𝑤𝑤𝑏𝑏[𝑘𝑘 + 1] = 𝑤𝑤𝑏𝑏[𝑘𝑘] − 𝜇𝜇𝑑𝑑𝐽𝐽𝐶𝐶𝑀𝑀𝐶𝐶𝑑𝑑𝑤𝑤𝑏𝑏

|𝑤𝑤𝑠𝑠=𝑤𝑤𝑠𝑠[𝑘𝑘]

desarrollando esta ecuación, los rendimientos de minimización del algoritmo de dispersión (o CMA, constant modules algorithm) para la adaptación ciega de los coeficientes de un ecualizador lineal, quedan de la siguiente manera:

𝑤𝑤𝑏𝑏[𝑘𝑘 + 1] = 𝑤𝑤𝑏𝑏[𝑘𝑘] + 4𝜇𝜇 𝑎𝑎𝑎𝑎𝑠𝑠{(𝛾𝛾 − 𝑦𝑦2[𝑘𝑘])} 𝑦𝑦[𝑘𝑘]𝑥𝑥[𝑘𝑘 − 𝑖𝑖]

y eliminando la operación promedio se convierte en:

𝑤𝑤𝑏𝑏[𝑘𝑘 + 1] = 𝑤𝑤𝑏𝑏[𝑘𝑘] + 4𝜇𝜇 (1 − 𝑦𝑦2[𝑘𝑘]) 𝑦𝑦[𝑘𝑘]𝑥𝑥[𝑘𝑘 − 𝑖𝑖]

que podemos ver en el diagrama de bloques de la figura 2.38.

Figura 2.48.- Diagrama de bloques del ecualizador ciego CMA

Desarrollando en MATLAB ®:

w=zeros(1,N+1)'; % Inicamos con una delta en el coeficiente central w((N+1)/2)=1; for k=N+1:nIte 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 y=conv(x,w);

57

Page 58: Diseño e implementación de un simulador de módem …bibing.us.es/proyectos/abreproy/12230/fichero/PFC... · 4.3.4 Canal 90 4.3.5 Ecualizadores 91 4.3.6 Salida de resultados . 92

Diseño inicial de un módem BPSK 58

Cuando la fuente es binaria �±1, entonces γ=1.

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 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.6.1.6 Simulación ecualización CMA

Simulando este ecualizador con ruido y multritrayecto.

Figura 2.49.- Curva de probabilidad con ecualizador de CMA

Page 59: Diseño e implementación de un simulador de módem …bibing.us.es/proyectos/abreproy/12230/fichero/PFC... · 4.3.4 Canal 90 4.3.5 Ecualizadores 91 4.3.6 Salida de resultados . 92

59 Diseño e implementación de un simulador de módem BPSK.

2.6.2 Simulación de los tres ecualizadores

Figura 2.50.- Simulación de los tres tipos de ecualización vistos con ruido y multicamino

2.7 Sincronización en frecuencia y fase

El siguiente paso en el diseño del receptor, es añadir el error de fase y frecuencia en la transmisión de la señal. Cuando se recibe la señal en el receptor, los osciladores del transmisor y del receptor no están perfectamente sincronizados y tienen ligeras variaciones el uno del otro produciéndose un error. Este error se puede dar en la frecuencia o en la fase de la portadora. En algunos casos este error, al bajar la señal recibida a banda base, puede ser muy perjudicial para la correcta recepción de la señal, por lo que esta diferencia de fase entre los osciladores de transmisión y recepción tendremos que corregirla.

Figura 2.51.- Diagrama de bloques con sincronización de fase y frecuencia

59

Page 60: Diseño e implementación de un simulador de módem …bibing.us.es/proyectos/abreproy/12230/fichero/PFC... · 4.3.4 Canal 90 4.3.5 Ecualizadores 91 4.3.6 Salida de resultados . 92

Diseño inicial de un módem BPSK 60

En el receptor, para poder tener la frecuencia intermedia exacta que tiene el transmisor, y no tener errores, utilizaremos un método para obtenerla de la señal recibida. Este método consiste en generar una sinusoide que variará en función de la señal recibida para obtener la frecuencia intermedia exacta del transmisor. Para conseguir esto construimos un Lazo enganchado en fase (PLL, en inglés Phase Local Loop). Este lazo permite estimar la frecuencia y fase de la portadora recibida que es nuestro objetivo.

2.7.1 Funcionamiento del PLL

Figura 2.52.- Diagrama de bloques de un PLL

Cuando nos llega una señal r(t) al lazo enganchado en fase ocurre lo siguiente:

• La frecuencia de la señal de entrada empieza a aumentar ligeramente, y la diferencia de fases entre la señal del VCO y la de entrada comenzará a crecer. Se producirá un cambio en la frecuencia de control del VCO de tal forma que se lleve al VCO a oscilar hacia la misma frecuencia de la señal de entrada.

• Una vez que el sistema se engancha, la diferencia de frecuencias se hace cero, y únicamente tendremos una señal continua a la salida del filtro.

• Por tanto, el lazo se mantiene enganchado a la frecuencia de entrada.

2.7.1.1 Simulación del funcionamiento del PLL

En este apartado vamos a ver más claramente a través de una simulación en MATLAB® como funciona el lazo enganchado en fase.

En esta simulación ante una entrada senoidal compleja veremos como nuestro PLL consigue crear una senoide enganchada en fase.

Page 61: Diseño e implementación de un simulador de módem …bibing.us.es/proyectos/abreproy/12230/fichero/PFC... · 4.3.4 Canal 90 4.3.5 Ecualizadores 91 4.3.6 Salida de resultados . 92

61 Diseño e implementación de un simulador de módem BPSK.

Figura 2.53.- Simulación del funcionamiento de un PLL

En rojo podemos ver la salida del PLL tanto para la parte real de la señal como para la imaginaria.

En la gráfica inferior podemos ver la diferencia de fase hasta que llega a ser cero.

En nuestro receptor vamos a usar una variante del PLL, el lazo de costas, debido que este tiene unas ventajas que en el siguiente punto explicaremos.

2.7.2 Lazo de costas

El lazo de costas es un filtro de bucle cerrado utilizado para la recuperación de la fase de la portadora de las señales de modulación. Fue inventado por John P. Costas en General Electric en la década de 1950. Su invención fue descrita como “de un efecto profundo en las comunicaciones digitales modernas”. Su ventaja sobre los detectores basados en PLL es que las pequeñas variaciones en los errores de voltaje en el lazo o bucle de Costas es el 𝑠𝑠𝑒𝑒𝑛𝑛(2(𝜃𝜃𝑏𝑏 − 𝜃𝜃𝑏𝑏)) en vez de (𝜃𝜃𝑏𝑏 − 𝜃𝜃𝑏𝑏). Esto se traduce en el doble de sensibilidad y también hace que el bucle de Costas sea especialmente adecuado para los desplazamientos de la portadora de la frecuencia, como pueden ser en la modulación OFDM y en los receptores GPS.

Por lo que tenemos una técnica sencilla de recuperación de fase con unas buenas prestaciones, y con solo el inconveniente de que las dos ramas tienen que estar equilibradas.

61

Page 62: Diseño e implementación de un simulador de módem …bibing.us.es/proyectos/abreproy/12230/fichero/PFC... · 4.3.4 Canal 90 4.3.5 Ecualizadores 91 4.3.6 Salida de resultados . 92

Diseño inicial de un módem BPSK 62

El diagrama básico del lazo de costas consiste en:

Figura 2.54.- Diagrama de bloques del lazo de costas

El funcionamiento del lazo de costas es el siguiente:

1. La señal de entrada s(t) esta multiplicada por una sinusoide generada por el VCO en una rama y por la misma sinusoide desfasada 90 grados en la otra rama, obteniendo s1(t) y s2(t):

𝑠𝑠1(𝑡𝑡) =𝑚𝑚(𝑡𝑡)

2{cos(2𝜔𝜔𝑐𝑐𝑡𝑡 + 𝜃𝜃𝑏𝑏 + 𝜃𝜃0) + cos (𝜃𝜃𝑏𝑏 − 𝜃𝜃0)}

𝑠𝑠2(𝑡𝑡) =𝑚𝑚(𝑡𝑡)

2{sen(2𝜔𝜔𝑐𝑐𝑡𝑡 + 𝜃𝜃𝑏𝑏 + 𝜃𝜃0) + sen (𝜃𝜃𝑏𝑏 − 𝜃𝜃0)}

2. Tras el filtro paso de baja (LPF):

𝐼𝐼(𝑡𝑡) =𝑚𝑚(𝑡𝑡)

2cos (𝜃𝜃𝑏𝑏 − 𝜃𝜃0)

𝑄𝑄(𝑡𝑡) =𝑚𝑚(𝑡𝑡)

2sen(𝜃𝜃𝑏𝑏 − 𝜃𝜃0)

3. Y multiplicando ambas ramas obtenemos q(t):

𝑞𝑞(𝑡𝑡) = 𝑄𝑄(𝑡𝑡)𝐼𝐼(𝑡𝑡) =14𝑚𝑚2(𝑡𝑡)𝑐𝑐𝑐𝑐𝑠𝑠𝜃𝜃𝑑𝑑𝑠𝑠𝑒𝑒𝑛𝑛𝜃𝜃𝑑𝑑 =

18𝑚𝑚2(𝑡𝑡)𝑠𝑠𝑒𝑒𝑛𝑛2𝜃𝜃𝑑𝑑

Si el error es pequeño 𝑠𝑠𝑒𝑒𝑛𝑛 2𝜃𝜃𝑑𝑑 ≈ 2𝜃𝜃𝑑𝑑 tendremos:

𝑞𝑞(𝑡𝑡) ≈14𝑚𝑚2(𝑡𝑡)𝜃𝜃𝑑𝑑

El filtro F(s) será de tipo paso bajo, de forma que actuará como un integrador para m(t), obteniendo la energía del mensaje, que se supone que es constante, de forma que a la salida obtendremos una señal proporcional a 𝜃𝜃𝑑𝑑. Así el VCO será proporcional al error 𝜃𝜃𝑑𝑑 de manera que se enganchará a la entrada.

Page 63: Diseño e implementación de un simulador de módem …bibing.us.es/proyectos/abreproy/12230/fichero/PFC... · 4.3.4 Canal 90 4.3.5 Ecualizadores 91 4.3.6 Salida de resultados . 92

63 Diseño e implementación de un simulador de módem BPSK.

2.7.3 Implementación digital del lazo de costas

Para la implementación digital vamos a usar el siguiente modelo.

Figura 2.55.- Diagrama de la implementación del lazo de costas

Vamos a ir explicando cada bloque, y para su entendimiento pondremos como entrada una señal AM, para posteriormente incorporarlo a nuestro sistema.

Como hemos dicho para la explicación usaremos una señal AM como la siguiente:

Figura 2.56.- Señal de entrada AM

z-1 α

11 zβ

−−

( )je− ⋅

-j sgn(ω)x(nTS)

ωcTS

m(t)

φ(nTS)

( ) ( )2θωφ +−− = ScS nTjnTj eeq(nTS)

( )SnTx̂

( ) ( ) ( ){ }21

c Sj nTS Sc nT x nT e ω θ− +

+= Re

( ) ( ) ( ){ }22

c Sj nTS Sc nT x nT e ω θ− +

+= I m

z-1 α

11 zβ

−−

( )je− ⋅

-j sgn(ω)x(nTS)

ωcTS

m(t)

φ(nTS)

( ) ( )2θωφ +−− = ScS nTjnTj eeq(nTS)

( )SnTx̂

( ) ( ) ( ){ }21

c Sj nTS Sc nT x nT e ω θ− +

+= Re

( ) ( ) ( ){ }22

c Sj nTS Sc nT x nT e ω θ− +

+= I m

63

Page 64: Diseño e implementación de un simulador de módem …bibing.us.es/proyectos/abreproy/12230/fichero/PFC... · 4.3.4 Canal 90 4.3.5 Ecualizadores 91 4.3.6 Salida de resultados . 92

Diseño inicial de un módem BPSK 64

Figura 2.57.- Espectro de la señal entrada

• Podemos ver como la entrada se divide en dos ramas, una de ellas pasa por la transformada de Hilbert, que prácticamente consiste en aplicar un desfase de 90 grados a nuestra señal sin modificar su amplitud.

Figura 2.58.- Señal tras el filtro de Hilbert

Page 65: Diseño e implementación de un simulador de módem …bibing.us.es/proyectos/abreproy/12230/fichero/PFC... · 4.3.4 Canal 90 4.3.5 Ecualizadores 91 4.3.6 Salida de resultados . 92

65 Diseño e implementación de un simulador de módem BPSK.

• Los dos segmentos son sumados formando la señal lo que llamaremos en el código analytic, que

no es más una versión de la señal original que contiene solo la baja de las componentes de frecuencia con el doble de la amplitud

ˆ( ) ( ) ( )x t x t jx t+ = +

Figura 2.59.- Señal Analytic

Figura 2.60.- Espectro señal Analytic

65

Page 66: Diseño e implementación de un simulador de módem …bibing.us.es/proyectos/abreproy/12230/fichero/PFC... · 4.3.4 Canal 90 4.3.5 Ecualizadores 91 4.3.6 Salida de resultados . 92

Diseño inicial de un módem BPSK 66

• Siguiendo nuestro diagrama vemos que esta señal la multiplicamos con la salida del lazo de realimentación principal de nuestro diagrama formando una envolvente compleja mostrada en la siguiente ecuación y en consecuencia nos traslada nuestra seña a banda base. La parte real del resultado será la salida de nuestro lazo de costas:

( ) ( ) 0j tx t x t e ω−+=

• Continuando con el diagrama, vemos como de nuevo las partes reales e imaginarias son multiplicadas y el resultado, q(nTs), es de nuevo dividido en dos ramas, una multiplicando por la constante α, y la otra entrado en un filtro con función de transferencia:

11 −−==

zxy

Hn

n β

• La cual podemos implementar de la siguiente manera:

1−−= nnn yxy β

• Tras sumar ambas ramas el resultado va a un sumador de tres operandos, donde uno de ellos es la salida de esta suma retrasada y el otro la contaste ωCTS, la frecuencia portadora multiplicada con el tiempo de muestreo. La salida forma la señal φ(nTS), que multiplicado por el último bloque forma la salida de nuestro lazo que nos sirve para la demodulación de nuestra señal:

( )( ) ( )( ) ( )( )SSnTj nTjnTeH S φφφ sincos −== −

El código donde se implementa el lazo principal es:

for I=1:len-groupdelay

phi(I)= temp_out3;

phase(I) = exp(-1i*phi(I));

c1(I) = real(analytic(I)*phase(I));

c2(I) = imag(analytic(I)*phase(I));

out(I)=(c1(I));

q(I) = (c1(I))*c2(I);

temp_out1=temp_pre_out1+q(I)*beta;

temp_out2=alpha*q(I)+ temp_out1;

temp_out3=2*pi*fc/fs+phi(I)+temp_out2;

temp_pre_out1=temp_out1; end;

Page 67: Diseño e implementación de un simulador de módem …bibing.us.es/proyectos/abreproy/12230/fichero/PFC... · 4.3.4 Canal 90 4.3.5 Ecualizadores 91 4.3.6 Salida de resultados . 92

67 Diseño e implementación de un simulador de módem BPSK.

donde:

Figura 2.61.- Variables usada en el código LC

• La salida superpuesta sobre la entrada la podemos ver en la siguiente imagen:

Figura 2.62.- Salida del lazo de costas con señal AM

z-1 α

11 zβ

−−

( )je− ⋅

-j sgn(ω)x(nTS)

ωcTS

m(t)

φ(nTS)

( ) ( )2θωφ +−− = ScS nTjnTj eeq(nTS)

( )SnTx̂

( ) ( ) ( ){ }21

c Sj nTS Sc nT x nT e ω θ− +

+= Re

( ) ( ) ( ){ }22

c Sj nTS Sc nT x nT e ω θ− +

+= I m

z-1 α

11 zβ

−−

( )je− ⋅

-j sgn(ω)x(nTS)

ωcTS

m(t)

φ(nTS)

( ) ( )2θωφ +−− = ScS nTjnTj eeq(nTS)

( )SnTx̂

( ) ( ) ( ){ }21

c Sj nTS Sc nT x nT e ω θ− +

+= Re

( ) ( ) ( ){ }22

c Sj nTS Sc nT x nT e ω θ− +

+= I m

temp out1

temp_out2temp_out3

67

Page 68: Diseño e implementación de un simulador de módem …bibing.us.es/proyectos/abreproy/12230/fichero/PFC... · 4.3.4 Canal 90 4.3.5 Ecualizadores 91 4.3.6 Salida de resultados . 92

Diseño inicial de un módem BPSK 68

Esta demodulación se realiza correctamente gracias a multiplicar nuestra señal por una señal con la portadora correcta. Para verlo mejor vamos a representar las dos señales que multiplicamos:

Figura 2.63.- Señales a multiplicar a la salida del lazo

Podemos observar como al principio ambas señales están desfasadas, hasta más o menos la iteración 44 de nuestro lazo donde ya vemos ambas señales en fase.

Probando con otras diferencias de fase:

Figura 2.64.- Salida con desfase de pi/7

Page 69: Diseño e implementación de un simulador de módem …bibing.us.es/proyectos/abreproy/12230/fichero/PFC... · 4.3.4 Canal 90 4.3.5 Ecualizadores 91 4.3.6 Salida de resultados . 92

69 Diseño e implementación de un simulador de módem BPSK.

Figura 2.65.- Salida con desfase de pi/4

Probando con otros valores para la fase parece que nuestro lazo es capaz de engancharse.

Ahora vamos a probar para distintas frecuencias de portadora en nuestro diagrama, fc:

Figura 2.66.- Diferencia de frecuencia 10 Hz

z-1

ωcTS

z-1

ωcTS

69

Page 70: Diseño e implementación de un simulador de módem …bibing.us.es/proyectos/abreproy/12230/fichero/PFC... · 4.3.4 Canal 90 4.3.5 Ecualizadores 91 4.3.6 Salida de resultados . 92

Diseño inicial de un módem BPSK 70

Figura 2.67.- diferencia de frecuencia de 100 Hz

Vemos como es capaz de demodular perfectamente con una diferencia de hasta 100 Hz. Probando con frecuencias con diferencias mayores vemos que también demodula pero necesita más iteraciones para engancharse.

Figura 2.68.- Diferencia frecuencias mayores

Page 71: Diseño e implementación de un simulador de módem …bibing.us.es/proyectos/abreproy/12230/fichero/PFC... · 4.3.4 Canal 90 4.3.5 Ecualizadores 91 4.3.6 Salida de resultados . 92

71 Diseño e implementación de un simulador de módem BPSK.

Figura 2.69.-Incremento de frecuencias mayores

2.7.4 Incorporación en nuestro receptor

Al incorporar el lazo de costas no necesitaremos bajar en frecuencia la señal recibida, ya que el mismo lazo realiza esa función.

Simulando nuestro sistema con una diferencia de frecuencia de 150 Hz y un error de fase de pi/4:

Figura 2.70.-Simulación de lazo de costas con ruido y multitrayecto

71

Page 72: Diseño e implementación de un simulador de módem …bibing.us.es/proyectos/abreproy/12230/fichero/PFC... · 4.3.4 Canal 90 4.3.5 Ecualizadores 91 4.3.6 Salida de resultados . 92

Diseño inicial de un módem BPSK 72

Vemos como nuestro sistema es capaz de engancharse.

Para que nos sirva mejor la comparación de la curva obtenida con la teórica, vamos a simular sin multitrayecto ni el ecualizador.

Figura 2.71.- Curva con sincronización en fase y frecuencia

Page 73: Diseño e implementación de un simulador de módem …bibing.us.es/proyectos/abreproy/12230/fichero/PFC... · 4.3.4 Canal 90 4.3.5 Ecualizadores 91 4.3.6 Salida de resultados . 92

3 OTRAS MODULACIONES

n este capítulo vamos a adaptar nuestro sistema BPSK a otras modulaciones como QPSK o 16QAM. A diferencia del capítulo anterior, esta vez haremos nuestra simulación usando un equivalente paso de baja de nuestra señal, evitando subir y bajar en frecuencia en nuestra simulación. Esto nos proporciona un

menor coste computacional y podemos ver otra forma de realizar nuestras simulaciones.

Por lo tanto es esta capítulo lo primero será adaptar nuestro sistema a la modulación QPSK. Esta adaptación consistirá básicamente en cambiar nuestro modulador y decisor, para adaptarlo a la nueva constelación.

El fin de este capítulo es mostrar que nuestro sistema sirve para cualquier modulación siempre que se hagan los pequeños cambios con cuidado.

3.1 Transmisor-Receptor QPSK

3.1.1 Modulador en banda base

Antes de exponer la implementación de nuestro modulador con el equivalente paso de baja vamos a mostrar cómo sería el modulador en banda base para modulaciones distintas a la BPSK, donde ya entran las componentes en cuadratura.

Figura 3.1.- Modulador en cuadratura

La simulación del sistema se lleva a cabo utilizando los “equivalentes paso de baja”. El equivalente paso de baja de 𝑥𝑥(𝑡𝑡) se define como la señal compleja 𝑥𝑥�(𝑡𝑡) que verifica:

𝑥𝑥(𝑡𝑡) = 𝑅𝑅𝑒𝑒(𝑥𝑥�(𝑡𝑡)𝑒𝑒𝑗𝑗𝑗𝑗𝑏𝑏)

Si el modulador funciona correctamente, entonces:

𝑥𝑥�(𝑡𝑡) = 𝐼𝐼(𝑡𝑡) + 𝑗𝑗 𝑄𝑄(𝑡𝑡)

E

Page 74: Diseño e implementación de un simulador de módem …bibing.us.es/proyectos/abreproy/12230/fichero/PFC... · 4.3.4 Canal 90 4.3.5 Ecualizadores 91 4.3.6 Salida de resultados . 92

Otras modulaciones 74

Así el diagrama del equivalente paso de baja ideal sería:

Figura 3.2.- Equivalente paso de baja ideal

Decimos ideal puesto que en la realidad los demoduladores suelen adolecer de:

Diferencia de ganancias entre los canales en fase y cuadratura (desequilibrio de amplitud).

Diferencia de fase entre las dos ramas del oscilador (desequilibrio de fase).

Retardo entre ambas ramas.

Un posible esquema para el modelado de estos defectos es el siguiente:

Figura 3.3.- Diagrama de bloques equivalente paso de baja real

3.1.2 Transmisor

Para generar nuestros símbolos QPSK vamos a partir de los BPSK ya creados. Con esta sentencia sencilla ya tenemos los símbolos listos para nuestra nueva modulación.

QPSKtx=(BPSKtx(1:2:end)+1i*BPSKtx(2:2:end))*sqrt(.5); % Símbolos QPSK

Page 75: Diseño e implementación de un simulador de módem …bibing.us.es/proyectos/abreproy/12230/fichero/PFC... · 4.3.4 Canal 90 4.3.5 Ecualizadores 91 4.3.6 Salida de resultados . 92

75 Diseño e implementación de un simulador de módem BPSK.

De esta forma tendremos la siguiente constelación:

Figura 3.4.- Constelación QPSK

Estos símbolos serán divididos en su componente en fase (I) y en su componente en cuadratura (Q). Las cuales harán su procesamiento por separado para usar nuestra equivalente paso de baja y no usar la subida en frecuencia.

Por lo tanto nuestro transmisor quedaría de la siguiente forma:

Figura 3.5.- Diagrama de bloques transmisor QPSK

Usaremos el paso baja ideal creando la señal compleja a partir de las dos ramas. La componente en fase la obtenemos de la parte real de los símbolos y la componente en cuadratura de la imaginaria.

75

Page 76: Diseño e implementación de un simulador de módem …bibing.us.es/proyectos/abreproy/12230/fichero/PFC... · 4.3.4 Canal 90 4.3.5 Ecualizadores 91 4.3.6 Salida de resultados . 92

Otras modulaciones 76

3.1.3 Receptor

De manera similar en el receptor, tras recibir nuestra señal con ruido y multicamino volveremos a procesar de manera separada la parte real y la parte imaginaria.

Figura 3.6.- Diagrama de bloques receptor QPSK

3.1.4 Canal

En la simulación del canal, a la hora de añadirle ruido a la señal, para calcularlo volvemos a dividir nuestra señal por separado. Así la generación de ruido para nuestra señal paso de baja será:

Figura 3.7.- Generador de ruido paso de baja

Una vez generado para componente actuamos igual que lo hacíamos para BPSK.

En cuanto al multitrayecto pues se le aplicará a cada componente antes de calcularle el ruido correspondiente a la SNR deseada.

Page 77: Diseño e implementación de un simulador de módem …bibing.us.es/proyectos/abreproy/12230/fichero/PFC... · 4.3.4 Canal 90 4.3.5 Ecualizadores 91 4.3.6 Salida de resultados . 92

77 Diseño e implementación de un simulador de módem BPSK.

3.1.5 Simulación del sistema

Tras generar los símbolos y realizarle todo el procesamiento visto en el diagrama de la ‘figura 3.5’ tenemos el siguiente diagrama de ojos antes de realizarle el equivalente paso de baja:

Figura 3.8.- Diagrama de ojos en el transmisor QPSK

A continuación vamos a ir viendo cómo va cambiando el diagrama de ojos conforme pasa por cada bloque. En la representación de cada diagrama de ojos habrá que tener en cuenta el periodo de muestras que vamos a ir superponiendo.

Tras el diezmado por L.

Figura 3.9.- QPSK Diagrama de ojos tras diezmado por L

77

Page 78: Diseño e implementación de un simulador de módem …bibing.us.es/proyectos/abreproy/12230/fichero/PFC... · 4.3.4 Canal 90 4.3.5 Ecualizadores 91 4.3.6 Salida de resultados . 92

Otras modulaciones 78

Tras completar el coseno alzado.

Figura 3.10.- QPSK Diagrama de ojos Coseno alzado

Vemos como tenemos el ojo ya mucho más abierto, gracias a la eliminación de la ISI

Tras el diezmado por M:

Figura 3.11.- QPSK Diagrama de ojos antes del decisor

Page 79: Diseño e implementación de un simulador de módem …bibing.us.es/proyectos/abreproy/12230/fichero/PFC... · 4.3.4 Canal 90 4.3.5 Ecualizadores 91 4.3.6 Salida de resultados . 92

79 Diseño e implementación de un simulador de módem BPSK.

Ya podemos ver que en cada muestra tenemos un símbolo.

Vemos la constelación antes de la decisión y tenemos:

Figura 3.12.- Constelación recibida

En el caso de realizar la simulación con ruido en el canal la constelación antes del decisor con una EbNo=6dB tenemos:

Figura 3.13.- Constelación con ruido

79

Page 80: Diseño e implementación de un simulador de módem …bibing.us.es/proyectos/abreproy/12230/fichero/PFC... · 4.3.4 Canal 90 4.3.5 Ecualizadores 91 4.3.6 Salida de resultados . 92

Otras modulaciones 80

3.1.6 Simulación de la curva de probabilidad de error

Figura 3.14.- Curva de probabilidad de error QPSK

La curva teórica de la QPSK es igual a la de la BPSK.

3.2 Transmisor- receptor 16 QAM

En este apartado vamos a similar una modulación 16-QAM, su implementación es válida para cualquier modulación QAM, donde solo habrá que cambiar el modulador y el decisor.

Este capítulo apenas varía con el sistema con QPSK, pero la motivación hacia este es que se vea cómo funciona un decisor algo más complicado que el visto hasta ahora, que consistían en ver si el valor recibido era positivo o negativo.

3.2.1 Transmisor 16 QAM

Lo que cambia respecto al QPSK es la agrupación de símbolos. Esta la realizaremos siguiendo la codificación de Grey que vemos en la siguiente figura.

Page 81: Diseño e implementación de un simulador de módem …bibing.us.es/proyectos/abreproy/12230/fichero/PFC... · 4.3.4 Canal 90 4.3.5 Ecualizadores 91 4.3.6 Salida de resultados . 92

81 Diseño e implementación de un simulador de módem BPSK.

Figura 3.15.- Constelación usada 16-QAM

Como vemos la imagen los dos primeros bits los asociaremos a la componente Q del símbolo, y generaremos la componente I siguiendo la misma codificación para los dos últimos bits.

A cada una de esas parejas de bits le asociaremos el siguiente valor para su amplitud:

Tabla 3.1.- Regla de asignación bits a símbolo en una modulación 16-QAM

3.2.2 Receptor 16-QAM

Pues nuestro receptor lo que tendremos que introducir es el nuevo decisor. Este recibirá cada símbolo del que extraerá sus componentes en fase y cuadratura para ver a que dos bits lo hace corresponder.

El código MATLAB es muy sencillo, lo único que hace es dividir la constelación en una cuadrícula, para símbolo que caiga en ese cuadro se le asigne la amplitud correspondiente.

81

Page 82: Diseño e implementación de un simulador de módem …bibing.us.es/proyectos/abreproy/12230/fichero/PFC... · 4.3.4 Canal 90 4.3.5 Ecualizadores 91 4.3.6 Salida de resultados . 92

Otras modulaciones 82

Figura 3.16.- Cuadrícula implementada por el decisor

function [ir qr]=decisor(r,t) for i=1:numel(r) if r(i)>1 ir(i)=1.5; else if r(i)>0 ir(i)=0.5; else if r(i)<-1 ir(i)=-1.5; else ir(i)=-0.5; end end end end for i=1:numel(t) if t(i)>1 qr(i)=1.5; else if t(i)>0 qr(i)=0.5; else if t(i)<-1 qr(i)=-1.5; else qr(i)=-0.5; end end end end

Page 83: Diseño e implementación de un simulador de módem …bibing.us.es/proyectos/abreproy/12230/fichero/PFC... · 4.3.4 Canal 90 4.3.5 Ecualizadores 91 4.3.6 Salida de resultados . 92

83 Diseño e implementación de un simulador de módem BPSK.

3.2.3 Simulación del sistema

La constelación que tenemos una vez agrupados los símbolos como explicamos antes es:

Figura 3.17.- Constelación en el transmisor

Tras enviarlo por el canal, tras todo el procesado del receptor justo antes del decisor tenemos el siguiente diagrama de ojos:

Figura 3.18.- Diagrama de ojos antes del decisor

83

Page 84: Diseño e implementación de un simulador de módem …bibing.us.es/proyectos/abreproy/12230/fichero/PFC... · 4.3.4 Canal 90 4.3.5 Ecualizadores 91 4.3.6 Salida de resultados . 92

Otras modulaciones 84

Donde podemos observar perfectamente los 1 valores posibles para cada una de las componentes.

La constelación obtenida antes del decisor es:

Figura 3.19.- 16 QAM Constelación antes del decisor

Y pasando esta constelación por nuestro decisor obtenemos la constelación inicial:

Figura 3.20.- 16 QAM Constelación obtenida

Page 85: Diseño e implementación de un simulador de módem …bibing.us.es/proyectos/abreproy/12230/fichero/PFC... · 4.3.4 Canal 90 4.3.5 Ecualizadores 91 4.3.6 Salida de resultados . 92

85 Diseño e implementación de un simulador de módem BPSK.

3.2.4 Simulación de la curva de probabilidad de error de bit

Creamos ruido teniendo en cuenta que esta vez cada una de las componentes de cada símbolo representa dos bits, por lo que al crear el ruido habrá que poner b=2.

La curva de probabilidad de una 16QAM ya no es igual q a la BPSK, su cálculo la podemos hacer siguiendo el siguiente código MATLAB sabiendo que para una 16QAM tendremos 4 bits por símbolo, por lo que ponemos k =4:

Para cualquier otra modulación solo tenemos que cambiar el valor de k.

Una vez sabemos cómo representar la curva teórica pasamos a realizar la simulación de nuestro sistema:

Figura 3.21.- Curva de probabilidad de error de bit 16-QAM

ebn0_lin = 10.^((EbNo_dB)/10); k=4; % Numeros de bits por símbolo M=2^k; x=sqrt(3*k*ebn0_lin/(M-1)); Pb=(4/k)*(1-1/sqrt(M))*(1/2)*erfc(x/sqrt(2)); semilogy(EbNo_dB,Pb)

85

Page 86: Diseño e implementación de un simulador de módem …bibing.us.es/proyectos/abreproy/12230/fichero/PFC... · 4.3.4 Canal 90 4.3.5 Ecualizadores 91 4.3.6 Salida de resultados . 92

Simulador del sistema completo 86

4 SIMULADOR DEL SISTEMA COMPLETO

n este capítulo se explica el desarrollo de un código en MATLAB® con el cual cualquier usuario podrá probar de manera más sencilla todo lo explicado anteriormente sobre BPSK. Para ello el usuario sólo deberá introducir los parámetros con los que desea realizar la simulación y ver los

resultados. La motivación de la implementación de este pequeño programa es facilitar la función de comparar los distintos resultados para ver cómo afecta cada uno de los parámetros a nuestro sistema.

4.1 Introducción

Tras ver cómo íbamos completando nuestro transmisor y receptor en el capítulo 2 y explicar otras cuestiones importantes como la simulación con el equivalente paso de baja o el funcionamiento con constelaciones más complicadas que la BPSK; en este capítulo vamos a desarrollar un programa para que tras haber entendido lo anterior poner en marcha simulaciones de manera sencilla.

Ante este reto, lo importante es saber hasta dónde queremos llegar en estas simulaciones, es decir, que queremos llegar a simular y que ventajas aportan estas simulaciones. Más allá de explicar el programa en este capítulo se propondrán simulaciones y las posibles conclusiones que se pueden sacar de cada una de ellas.

En nuestro desarrollo no mencionaremos todos los parámetros que entran en esta simulación, ya que dejaría de ser sencillo, por ello todas nuestras simulaciones se basarán en que el canal por el que trasmitiremos la señal tendrá una portadora de 9 MHz, una frecuencia de muestreo de 24MHz y una frecuencia de símbolo de 1 Msps.

4.2 Funcionamiento básico del programa

El código MATLAB® para estas simulaciones lo podemos ejecutar escribiendo Bpsk en nuestro panel principal de MATLAB®. A partir de ahí nuestro programa irá pidiendo parámetros, algunos de ellos a forma de pregunta. Para no ser muy tedioso hacer una simulación rápida todos los parámetros y preguntas que se hacen tendrán un valor y una respuesta por defecto que será tomada al pulsar la tecla ENTER en lugar de del valor deseado.

En la tabla de la siguiente página se muestra las cuestiones propuestas por la simulación y sus valores por defecto:

E

Page 87: Diseño e implementación de un simulador de módem …bibing.us.es/proyectos/abreproy/12230/fichero/PFC... · 4.3.4 Canal 90 4.3.5 Ecualizadores 91 4.3.6 Salida de resultados . 92

87 Diseño e implementación de un simulador de módem BPSK.

Cuestión Valor por defecto

1.1.-Introduzca el Número de bits a simular 10000

1.2.-Introduzca la fase del Tx 0

1.3.-Introduzca la fase del Rx 0

1.4.-Introduzca la diferencia de frecuencias entre Tx y Rx (Hz):(ej 50) 0

2.1.-Introduzca el primer valor de diezmado M, si no desea usarlo ponga 1: 4

2.2.-Introduzca el segundo valor de diezmado L, si no desea usarlo ponga 1: 6

3.1.-¿Desea aplicar ruido? (Sí:1/No:0) No(0)

3.2.-Si desea simular la curva de error de bits introduzca el máximo de valor Eb/N0

en el caso de que no lo desee introduzca 0 0

3.3.-¿Desea aplicar multicamino?: (Sí:1/No:0) No(0)

3.4.-Número de rayos a simular en el multicamino: 3

3.5.1.-Rayo número (1): 1

3.5.x.-Rayo número (x): 0

4.1.- ¿Desea usar ecualizador?: (Sí:1/No:0) No(0)

4.2.-¿Qué ecualizador?: (1:LMS/2:LMS_DD/3:CMA/4:todos) Todos(4)

4.3-Introduce el orden del ecualizador 11

4.4.-Introduce el parámetro de convergencia mu 0.001

4.5.-Introduce el número de iteraciones del ecualizador 3000

5.1.-¿Desea usar el lazo de costas en el receptor?(Sí:1/No:0) No(0)

6.1.-Introduzca el valor Eb/No (dB): 3

Tabla 4.1.- Valores por defecto en el simulador

87

Page 88: Diseño e implementación de un simulador de módem …bibing.us.es/proyectos/abreproy/12230/fichero/PFC... · 4.3.4 Canal 90 4.3.5 Ecualizadores 91 4.3.6 Salida de resultados . 92

Simulador del sistema completo 88

4.3 Parámetros de la simulación

En este apartado vamos a ir viendo los parámetros que nos va pidiendo nuestro script.

4.3.1 Fase del transmisor y receptor

En nuestra simulación tanto la frecuencia de la portadora, cómo la de muestreo serán fijas. Sólo podremos cambiar la fase del transmisor y la fase con la que el receptor baja en frecuencia con el fin de probar el sincronismo de frecuencia y fase en el receptor. En el caso de la frecuencia del receptor, si usamos el lazo de costas será la fase con la que se inicializará el lazo.

Estas serán los puntos 1.1 y 1.2 de nuestra simulación.

Para ver cómo afecta vamos a realizar la siguiente simulación:

- Fase del transmisor 0.

- Fase del receptor 7*pi/8

-

Vamos hacer dos simulaciones, una sin el lazo de costas y otra con el lazo de costas. Obteniendo los siguientes resultados:

Sin lazo de costas:

Con lazo de costas:

Page 89: Diseño e implementación de un simulador de módem …bibing.us.es/proyectos/abreproy/12230/fichero/PFC... · 4.3.4 Canal 90 4.3.5 Ecualizadores 91 4.3.6 Salida de resultados . 92

89 Diseño e implementación de un simulador de módem BPSK.

Nos sirve para ver la utilidad del lazo de costas, ya que sin él y con esa diferencia de fases recibimos la mayor parte de los bits erróneos.

4.3.2 Diferencia de frecuencia del receptor respecto al transmisor

Este parámetro al igual que el anterior nos permite probar el lazo de costas. Ahora nos pide una cantidad en Hz de la diferencia de la frecuencia del receptor respecto a la de transmisor fc.

Nuestro lazo de costas permite una diferencia de frecuencias de 175 Hz, es decir nuestro receptor puede estar demodulando nuestra señal a 𝑓𝑓𝑐𝑐 ± 175.

Simulando de nuevo sin lazo de costas y con lazo de costas:

Sin lazo de costas:

Con lazo de costas volvemos a tener cero para esa diferencia de frecuencias:

Volvemos a tener cero errores.

Tanto en este punto o en el anterior hemos estado indicando en nuestra simulación si deseábamos usar el lazo de costas o no, mediante el punto 5.1 de nuestra simulación:

4.3.3 Valores para la interpolación y el diezmado.

Son los valores que hemos llamado M y L. Estos valores estarán restringidos a aportar a nuestro sistema a una frecuencia de muestreo de 24 MHz, por lo que el producto de ambos deberá dar 24. Serán las cuestiones 2.1 y 2.2 de nuestro programa.

Por lo que se podrá elegir como realizar esta interpolación o diezmado si en una vez en dos, con que valores, viendo gracias a las simulaciones la opción mejor.

89

Page 90: Diseño e implementación de un simulador de módem …bibing.us.es/proyectos/abreproy/12230/fichero/PFC... · 4.3.4 Canal 90 4.3.5 Ecualizadores 91 4.3.6 Salida de resultados . 92

Simulador del sistema completo 90

Simulando para 100000 bits con ruido y sin ruido obtenemos los siguientes resultados para los distintos valores propuestos:

M L Número de

errores

Sin ruido

Número de errores con ruido(Eb/N0|db)

0 1 2 3 4 5 6 7 8 9 10

3 8 1088 12396 10545 9070 7673 6462 5545 4941 4149 3721 3171 2856

8 3 0 8752 6389 4517 2884 1708 930 492 202 69 30 9

4 6 0 8106 5653 3850 2374 1343 599 256 100 32 5 0

6 4 0 8590 6448 4459 3071 1894 1110 610 268 116 49 16

24 1 0 10621 7934 5727 3972 2464 1336 720 320 122 40 6

Tabla 4.2.- Resultados distintos valores de interpolación y diezmado

Cómo podemos ver una vez introducido el ruido la mejor opción es el interpolado en dos fases y con los valores 4 y 6.

4.3.4 Canal

Lo siguiente en nuestro simulador es ver las interferencias es incorporar las interferencias que podemos añadir en nuestro canal. Así lo primera cuestión será si queremos añadir ruido una vez dicho que sí nos preguntará si deseamos añadir multicamino.

El multicamino podemos ponerlo por defecto pulsando ENTER cuando nos pidan el número de rayos a simular (3.4). Por defecto se simularán tres rayos con los siguientes valores:

c = [0.5 1 0.6];

Si no es así nuestro deseo, sólo debemos ir introduciendo las magnitudes de cada rayo del multitrayecto, lo que nos permitirá simular el canal que deseemos.

Otra opción respecto al canal dependerá de cómo queramos ver los resultados, si queremos representar la curva de error de bits tendremos que introducir la Eb/N0 máxima que deseamos simular en caso contrario pondremos cero, lo que provocará la cuestión 6.1, donde deberemos poner el valor de Eb/N0|db que deseamos.

Page 91: Diseño e implementación de un simulador de módem …bibing.us.es/proyectos/abreproy/12230/fichero/PFC... · 4.3.4 Canal 90 4.3.5 Ecualizadores 91 4.3.6 Salida de resultados . 92

91 Diseño e implementación de un simulador de módem BPSK.

A continuación voy a mostrar las cuestiones mencionadas:

4.3.5 Ecualizadores

Las siguientes cuestiones vendrán sobre el uso de los ecualizadores en nuestra simulación.

Será importante usarlos siempre que incluyamos multitrayecto, sobre todo si usamos los que usan una ecualización ciega.

Una vez decidido el usar un ecualizador, nos pide tres parámetros sobre este, el orden, el parámetro de convergencia y el número de iteraciones a simular. Parámetro muy importante en los ecualizadores simulados.

A continuación vamos a exponer un ejemplo de simulación en la que podremos ver el comportamiento de los distintos ecualizadores ante el ruido y multicamino.

91

Page 92: Diseño e implementación de un simulador de módem …bibing.us.es/proyectos/abreproy/12230/fichero/PFC... · 4.3.4 Canal 90 4.3.5 Ecualizadores 91 4.3.6 Salida de resultados . 92

Simulador del sistema completo 92

Si no introducimos multicamino podemos comprobar que los ecualizadores de ecualización ciega no funcionan:

Como predecíamos, es tan importante el multicamino en estos ecualizadores que sin él nos dan unos resultados peores que sin usar ecualizador.

4.3.6 Salida de resultados

Como hemos podido ver en las simulaciones anteriores habrá tres posibles salida de resultados:

• Gráfica de la curva de probabilidad de error

Figura 4.1.- Curva de probabilidad como salida del Simulador

Page 93: Diseño e implementación de un simulador de módem …bibing.us.es/proyectos/abreproy/12230/fichero/PFC... · 4.3.4 Canal 90 4.3.5 Ecualizadores 91 4.3.6 Salida de resultados . 92

93 Diseño e implementación de un simulador de módem BPSK.

• Curva de número de errores para cada una de las Eb/N0

Figura 4.2.- Curva d enumero de errores como salida del Simulador

• Numero de bits erróneos en el caso de no representar las gráficas anteriores:

93

Page 94: Diseño e implementación de un simulador de módem …bibing.us.es/proyectos/abreproy/12230/fichero/PFC... · 4.3.4 Canal 90 4.3.5 Ecualizadores 91 4.3.6 Salida de resultados . 92

Casos de estudio 94

5 CASOS DE ESTUDIO

na de las aplicaciones más útiles que puede tener nuestro simulador es realizar estudios sobre cuestiones no realizables teóricamente. Nosotros vamos a plantear el estudio de la curva de error de bit cuando introducimos multitrayecto. Lo que nos será sencillo gracias a nuestro simulador, donde

iremos cambiando los canales y veremos como irán afectando a la curva de probabilidad de error de bit.

5.1 Probabilidad de error de bit con multitrayecto

Para el estudio que planteamos usaremos multitrayecto sin usar ecualizador. Para así poder ver cómo afecta el multitrayecto por si solo sin bloques que lo contrarresten. En este capítulo no vamos a realizar el estudio completo sólo vamos a dar unas pinceladas de lo que se podría hacer gracias a nuestro simulador. Por ello no podemos sacar conclusiones definitivas ya que para ello hay que realizar el estudio en sí.

5.1.1 Estudio 1

Vamos a ver cómo afecta un segundo rayo en nuestro canal, y veremos su grado de importancia según llegue más próximo en tiempo al rayo directo o más alejado.

Los canales que simularemos serán los siguientes:

• Canal 1: c=[1 0.1 0 0 0 0 0 0 0 ]

• Canal 2: c=[1 0 0 0.1 0 0 0 0 0 ]

• Canal 3: c=[1 0 0 0 0 0.1 0 0 0 ]

Con estos canales pretendemos ver como afecta a la curva de probabilidad de error de bit asi como a la curva de numero de errores la aparición de un segundo rayo.

Podemos observar en las gráficas de la siguiente página como nuestra curva mejor conforme el segundo rayo está más alejado.

U

Page 95: Diseño e implementación de un simulador de módem …bibing.us.es/proyectos/abreproy/12230/fichero/PFC... · 4.3.4 Canal 90 4.3.5 Ecualizadores 91 4.3.6 Salida de resultados . 92

95 Diseño e implementación de un simulador de módem BPSK.

Figura 5.1.- Estudio 1: Curva de probabilidad de error

Figura 5.2.- Estudio 1: Numero de errores

95

Page 96: Diseño e implementación de un simulador de módem …bibing.us.es/proyectos/abreproy/12230/fichero/PFC... · 4.3.4 Canal 90 4.3.5 Ecualizadores 91 4.3.6 Salida de resultados . 92

Casos de estudio 96

5.1.2 Estudio 2

En esta ocasión vamos a ver cómo afectan dos rayos secundarios.

Canales:

• Canal 4: c=[1 0.2 0.1 0 0 0 0 0 0 ]

• Canal 5: c=[1 0 0 0.2 0.1 0 0 0 0 ]

• Canal 6: c=[1 0 0 0 0 0 0 0.2 0.1 ]

Figura 5.3.- Estudio 2: Curva de probabilidad de error

Figura 5.4.- Estudio 2: Número de errores

Page 97: Diseño e implementación de un simulador de módem …bibing.us.es/proyectos/abreproy/12230/fichero/PFC... · 4.3.4 Canal 90 4.3.5 Ecualizadores 91 4.3.6 Salida de resultados . 92

97 Diseño e implementación de un simulador de módem BPSK.

De nuevo vemos una cierta mejoría conforme los alejamos pero no muy significativa.

5.1.3 Estudio 3

En este estudio vamos a intentar ver que afecta más a la curva si el retraso de los rayos o su magnitud. Para ello vamos a simular los siguientes canales:

• Canal 7: c=[1 0 0.2 0 0 0 0 0 0 ]

• Canal 8: c=[1 0 0 0 0 0.6 0 0 0 ]

• Canal 9: c=[1 0 0 0 0 0 0 0 0.8 ]

Obteniendo los siguientes resultados.

Figura 5.5.- Estudio 3: Curva de probabilidad de error

97

Page 98: Diseño e implementación de un simulador de módem …bibing.us.es/proyectos/abreproy/12230/fichero/PFC... · 4.3.4 Canal 90 4.3.5 Ecualizadores 91 4.3.6 Salida de resultados . 92

Casos de estudio 98

Figura 5.6.- Estudio 3: Número de errores

5.2 Conclusión

Como comentamos al principio del capítulo lo realizado aquí no es ni mucho menos un estudio completo, simplemente queremos mostrar cómo se podría ir probando canales y comparando sus curvas de error para tras numerosas simulaciones obtener conclusiones exactas y veraces.

Page 99: Diseño e implementación de un simulador de módem …bibing.us.es/proyectos/abreproy/12230/fichero/PFC... · 4.3.4 Canal 90 4.3.5 Ecualizadores 91 4.3.6 Salida de resultados . 92

99 Diseño e implementación de un simulador de módem BPSK.

6 TRABAJOS FUTUROS 6.1 Sistema con canal real Un paso más en nuestra simulación sería probar con canales reales como el aire o un cable. Con nuestro transmisor y receptor implementados podríamos usar un altavoz y un micro para transmitir y recibir nuestras señales. Para que esto llegue a funcionar no pensamos que se deban realizar muchos cambios.

6.2 Simulador para cualquier modulación

Otra posible ampliación es realizar nuestro simulador para otras modulaciones más complejas y más interesantes. Así se podría ver cómo afecta a los resultados usar una modulación y otra.

6.3 Casos prácticos Como ya mencionamos en el Capítulo 5 sería interesante usar nuestro simulador para el estudio de determinados casos no realizables teóricamente, como podría ser el multritrayecto o cualquier otro. Optimizando la simulación de nuestro simulador para el caso de estudio en cuestión.

99

Page 100: Diseño e implementación de un simulador de módem …bibing.us.es/proyectos/abreproy/12230/fichero/PFC... · 4.3.4 Canal 90 4.3.5 Ecualizadores 91 4.3.6 Salida de resultados . 92
Page 101: Diseño e implementación de un simulador de módem …bibing.us.es/proyectos/abreproy/12230/fichero/PFC... · 4.3.4 Canal 90 4.3.5 Ecualizadores 91 4.3.6 Salida de resultados . 92

ANEXOS Anexo A: Sistema simple

codigo_1.m

%-------------------------------------------------------------------------- %Simulación Módem BPSK % 2.2 Módem sencillo %-------------------------------------------------------------------------- %DATOS %m numero al que muestreamos el rrc para hacer la simulación m=8; % Bloque 1: Generacion de los bits bits=genera_bits(10000); % Bloque 2: Paso de bits a simbolos bpsk=mod_BPSK(bits)'; % Bloque 3: Paso de simbolo a señal(raíz de coseno alzado) rrc=rcosine(1,4,'sqrt',0.5,4); % bpsk2= transpose([1 zeros(1,m-1)])*bpsk; bpsk2 = bpsk2(:); srrc=conv(bpsk2,rrc); retardo_rrc=(length(rrc)-1)/2; diagramaojos_1(srrc,16); % Bloque 4: Canal. En este primer caso no hay canal srec=srrc; %srec: señal recibida en el receptor % Bloque 5:Completamos el coseno alzado simbolos=conv(srec,rrc); retardo2=retardo_rrc+retardo_rrc; diagramaojos_1(simbolos,16); % Bloque 6: Decision. Pasao a simbolos simbolosRx=muestreo(simbolos,m); % Bloque 7: Paso a bits BitsRec = (simbolosRx > 0) *1; % Bloque 8: Numero de errores [ne,ber]=biterr(bits,BitsRec(1:length(bits))); fprintf('Número de errores: %i\n',ne);

Page 102: Diseño e implementación de un simulador de módem …bibing.us.es/proyectos/abreproy/12230/fichero/PFC... · 4.3.4 Canal 90 4.3.5 Ecualizadores 91 4.3.6 Salida de resultados . 92

Anexos 102

Anexo B: Sistema con interpolado y diezmado

codigo_2.m

%-------------------------------------------------------------------------- %Simulación Módem BPSK % 2.3.Módem sencillo % Interpolación y diezmado %-------------------------------------------------------------------------- %DATOS M=4; % factor 1º de interpolación/diezmado L=6; % factor 2º de interpolación/diezmado % Bloque 1: Generacion de los bits bits=genera_bits(10000); % Bloque 2: Paso de bits a simbolos bpsk=mod_BPSK(bits); % Bloque 3: Interpolación por M s=upsample(bpsk,M); % Bloque 4 Conformación de Pulsos (raíz de coseno alzado) rrc=rcosine(1,4,'sqrt',.35,4); % srrc=filter(rrc,1,s); retardo_rrc=(length(rrc)-1)/2; %Bloque 5: Interpolación por L srrcL=upsample(srrc,L); % Bloque 6: filtro CIC [salidaTX,retardo1]=filtroCIC(srrcL,0); % 0 indica que es del transmisor diagramaojos_1(salidaTX,24); % Bloque 7: Canal. En este primer caso no hay canal srec=salidaTX; %srec: señal recibida en el receptor % Bloque 8: Filtro Cic en recepción [sCICRx,retardo1]=filtroCIC(srec,1); % 1 indica que es del recpetor % Bloque 9: Diezmado por L r_d=sCICRx(retardo1+1:L:end); % Figura: Diagrama de ojos de los pulsos recibidos %Descomentar para ver el diagrama de ojos: %eyediagram(r_d(100+17:1e3),4); title('Diagrama de ojos de los pulsos recibidos') diagramaojos_1(r_d,12) % Bloque 10:Filtramos con el filtro adaptado a raíz de coseno alzado r2=filter(rrc,1,r_d); retardo2=retardo_rrc+retardo_rrc; % Bloque 11: Diezmado por M r2_d=r2(retardo2+1:M:end); diagramaojos_1(r2_d,3); % Bloque 12: Decision. Pasao a simbolos simbolosRx=decision(r2_d,0);

Page 103: Diseño e implementación de un simulador de módem …bibing.us.es/proyectos/abreproy/12230/fichero/PFC... · 4.3.4 Canal 90 4.3.5 Ecualizadores 91 4.3.6 Salida de resultados . 92

103 Diseño e implementación de un simulador de módem BPSK.

% Bloque 13: Paso a bits BitsRec = (simbolosRx > 0) *1; % Resultados [ne,ber]=biterr(bits(1:length(BitsRec)),BitsRec); fprintf('Número de errores: %i\n',ne);

103

Page 104: Diseño e implementación de un simulador de módem …bibing.us.es/proyectos/abreproy/12230/fichero/PFC... · 4.3.4 Canal 90 4.3.5 Ecualizadores 91 4.3.6 Salida de resultados . 92

Anexos 104

Anexo C: Subida en frecuencia %-------------------------------------------------------------------------- %Simulación Módem BPSK % 2.4.Módem con subida en frecuencia % %-------------------------------------------------------------------------- %DATOS M=4; L=6; FI=9e6/24e6; % Frecuencia intermedia 9MHz/24MHz = 0,375 (en digital) % Bloque 1: Generacion de los bits bits=genera_bits(10000); % Bloque 2: Paso de bits a simbolos bpsk=mod_BPSK(bits); % Bloque 3: Interpolación por M s=upsample(bpsk,M); % Bloque 4 Conformación de Pulsos (raíz de coseno alzado) rrc=rcosine(1,4,'sqrt',.35,4); % srrc=filter(rrc,1,s); retardo_rrc=(length(rrc)-1)/2; %Bloque 5: Interpolación por L srrcL=upsample(srrc,L); % Bloque 6: filtro CIC [scic,retardo1]=filtroCIC(srrcL,0); % 0 indica que es del transmisor %Bloque 7: Subida en frecuencia n=length(scic); salidaTX=scic.*cos(2*pi*FI*(0:n-1))'; % Bloque 8: Canal. En este primer caso no hay canal srec=salidaTX; %srec: señal recibida en el receptor % Bloque 9: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,srec); % Bloque 10:Conversión a Banda Base rbb=2*r_pb(retardo_remez+1:end).*cos(2*pi*FI*(0:n-retardo_remez-1))'; % Bloque 11: Filtro Cic en recepción [sCICRx,retardo1]=filtroCIC(rbb,1); % 1 indica que es del recpetor % Bloque 12: Diezmado por L r_d=sCICRx(retardo1+1:L:end); % Figura: Diagrama de ojos de los pulsos recibidos %Descomentar para ver el diagrama de ojos: eyediagram(r_d(100+17:1e3),4); title('Diagrama de ojos de los pulsos recibidos')

Page 105: Diseño e implementación de un simulador de módem …bibing.us.es/proyectos/abreproy/12230/fichero/PFC... · 4.3.4 Canal 90 4.3.5 Ecualizadores 91 4.3.6 Salida de resultados . 92

105 Diseño e implementación de un simulador de módem BPSK.

% Bloque 13:Filtramos con el filtro adaptado a raíz de coseno alzado r2=filter(rrc,1,r_d); retardo2=retardo_rrc+retardo_rrc; % Bloque 14: Diezmado por M r2_d=r2(retardo2+1:M:end); % Bloque 15: Decision. Pasao a simbolos simbolosRx=decision(r2_d,0); % Bloque 16: Paso a bits BitsRec = (simbolosRx > 0) *1; % Resultados [ne,ber]=biterr(bits(1:length(BitsRec)),BitsRec); fprintf('Número de errores: %i\n',ne);

Anexo D: Ruido en el canal

codigo_4.m

%-------------------------------------------------------------------------- %Simulación Módem BPSK % 1.4.Sistema con ruido en el canal % Simulación de errores %-------------------------------------------------------------------------- %DATOS M=4; L=6; FI=9e6/24e6; % Frecuencia intermedia 9MHz/24MHz = 0,375 (en digital) faseTx=0; faseRx=0; c=1;%Multicamino(1:= no hay multicamino) % 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:6; eval=zeros(1,length(vec)); num_err=zeros(1,length(vec)); cont=1; var_p=1; % Vamos a simular a el sistema con distintos valores de ruido (k) para % obtener la curva de errores for k=vec % TRANSMISOR Bits=genera_bits(10000); %B.1:Generamos bits aleatorios bpsk=mod_BPSK(Bits); %B.2:Creamos los símbolos BPSK [s1,retardo_rrc]=interpolacion(M,L,bpsk);% B.3/4/5:interpolacion M/conformación de pulso/interpolación L [salidaCIC,retardo1]=filtroCIC(s1,0); % B.6: Filtro CIC. Elimina las frecuencias indeseadas introducidas con la interpolación [salida]=cambio_frecuencia(salidaCIC,0,FI,faseTx,0); %B.7: subida en frecuencia

105

Page 106: Diseño e implementación de un simulador de módem …bibing.us.es/proyectos/abreproy/12230/fichero/PFC... · 4.3.4 Canal 90 4.3.5 Ecualizadores 91 4.3.6 Salida de resultados . 92

Anexos 106

%RECEPTOR EbNo_dB=k; % Señal a ruido en recepción [scanal,smulti,sru]=canal(salida,EbNo_dB,Ms,b,c); % B.8: simulación del canal [r_pb,retardo_remez]=filtroRemez(scanal); % B.9;Filtro paso banda [rbb]=cambio_frecuencia(r_pb,retardo_remez,FI,faseRx,1); % B.10:Bajamos de frecuencia, multlicando por un coseno a FI [rbb_f,retardo1]=filtroCIC(rbb,1); %B.11 simbolos=filtroadaptado(retardo1,retardo_rrc,rbb_f,L,M); % B.12/13/14:diezmado M/completamos el coseno alzado/diezmado L simbolosRx=decision(simbolos,0); % B.15 Decisión de los símbolos BitsRec = (simbolosRx > 0) *1; % B.16 Pasamos a bits [ne,ber]=biterr(Bits(1:length(BitsRec)),BitsRec); % Contamos numero de errores recibidos num_err(k+1)=ne; % guardamos el numero de errores de cada iteración eval(cont)=ber; cont=cont+1; end % 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 %

Page 107: Diseño e implementación de un simulador de módem …bibing.us.es/proyectos/abreproy/12230/fichero/PFC... · 4.3.4 Canal 90 4.3.5 Ecualizadores 91 4.3.6 Salida de resultados . 92

107 Diseño e implementación de un simulador de módem BPSK.

Anexo E: Ecualización adaptativa

código_5.m

%-------------------------------------------------------------------------- %Simulación Módem BPSK % 1.5.Sistema con ecualización adaptativa %-------------------------------------------------------------------------- %DATOS M=4; L=6; FI=9e6/24e6; % Frecuencia intermedia 9MHz/24MHz = 0,375 (en digital) faseTx=0; faseRx=0; c = [0.5 zeros(1,(M*L)-1) 1 zeros(1,(M*L)-1) -0.6]; %Multicamino % DAtos del ecualizador N=11; % orden del filtro ecualizador mu=0.001; % parámetro de convergencia delta=(N+1)/2; %retraso 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:6; eval=zeros(1,length(vec)); num_err=zeros(1,length(vec)); cont=1; var_p=1; nIte=5000; % numero de iteraciones for k=vec % TRANSMISOR Bits=genera_bits(10000); %B.1:Generamos bits aleatorios bpsk=mod_BPSK(Bits); %B.2:Creamos los símbolos BPSK [s1,retardo_rrc]=interpolacion(M,L,bpsk);% B.3/4/5:interpolacion M/conformación de pulso/interpolación L [salidaCIC,retardo1]=filtroCIC(s1,0); % B.6: Filtro CIC. Elimina las frecuencias indeseadas introducidas con la interpolación [salida]=cambio_frecuencia(salidaCIC,0,FI,faseTx,0); %B.7: subida en frecuencia %RECEPTOR EbNo_dB=k; % Señal a ruido en recepción [scanal,smulti,sru]=canal(salida,EbNo_dB,Ms,b,c); % B.8: simulación del canal [r_pb,retardo_remez]=filtroRemez(scanal); % B.9;Filtro paso banda [rbb]=cambio_frecuencia(r_pb,retardo_remez,FI,faseRx,1); % B.10:Bajamos de frecuencia, multlicando por un coseno a FI [rbb_f,retardo1]=filtroCIC(rbb,1); %B.11 simbolos=filtroadaptado(retardo1,retardo_rrc,rbb_f,L,M); % B.12/13/14: diezmado M/completamos el coseno alzado/diezmado L

107

Page 108: Diseño e implementación de un simulador de módem …bibing.us.es/proyectos/abreproy/12230/fichero/PFC... · 4.3.4 Canal 90 4.3.5 Ecualizadores 91 4.3.6 Salida de resultados . 92

Anexos 108

% Descomentar el ecualizador a usar [y,w,e]=ecualiza_LMS_2(simbolos,bpsk,N,mu,nIte); % B.15 Ecualización LMS % [y,w,e]=ecualiza_LMS_DD(simbolos,N,mu,nIte); % Ecualización % [y,w,e]=ecualiza_CMA(simbolos,N,mu,nIte); % Ecualización CMA simbolosRx=decision(y,delta); % B.16 Decisión de los símbolos BitsRec = (simbolosRx > 0) *1; % B.17 Pasamos a bits [ne,ber]=biterr(Bits(1:length(BitsRec)),BitsRec); % Contamos numero de errores recibidos num_err(k+1)=ne; % guardamos el numero de errores de cada iteración eval(cont)=ber; cont=cont+1; end % 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, 'ok'); legend('teorica','simulada'); xlabel('E_b/N_0'); ylabel('BER'); title('Curva de probabilidad de error de bit para la modulación BPSK con ecualizador LMS'); hold off %

Page 109: Diseño e implementación de un simulador de módem …bibing.us.es/proyectos/abreproy/12230/fichero/PFC... · 4.3.4 Canal 90 4.3.5 Ecualizadores 91 4.3.6 Salida de resultados . 92

109 Diseño e implementación de un simulador de módem BPSK.

Anexo F: Comparación de ecualizadores

codigo_5_2.m

%-------------------------------------------------------------------------- %Simulación Módem BPSK % 1.6. Comparacion tres ecualizadores %-------------------------------------------------------------------------- %DATOS M=4; L=6; FI=9e6/24e6; % Frecuencia intermedia 9MHz/24MHz = 0,375 (en digital) faseTx=0; faseRx=0; c = [0.5 zeros(1,(M*L)-1) 1 zeros(1,(M*L)-1) -0.6]; %Multicamino % DAtos del ecualizador N=11; % orden del filtro ecualizador mu=0.001; % parámetro de convergencia delta=(N+1)/2; %retraso 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; evalLMS=zeros(1,length(vec)); evalDD=zeros(1,length(vec)); evalCMA=zeros(1,length(vec)); num_err=zeros(1,length(vec)); cont=1; var_p=1; nIte=3000; for k=vec % TRANSMISOR Bits=genera_bits(10000); %B.1:Generamos bits aleatorios bpsk=mod_BPSK(Bits); %B.2:Creamos los símbolos BPSK [s1,retardo_rrc]=interpolacion(M,L,bpsk);% B.3/4/5:interpolacion M/conformación de pulso/interpolación L [salidaCIC,retardo1]=filtroCIC(s1,0); % B.6: Filtro CIC. Elimina las frecuencias indeseadas introducidas con la interpolación [salida]=cambio_frecuencia(salidaCIC,0,FI,faseTx,0); %B.7: subida en frecuencia %RECEPTOR EbNo_dB=k; % Señal a ruido en recepción [scanal,smulti,sru]=canal(salida,EbNo_dB,Ms,b,c); % B.8: simulación del canal [r_pb,retardo_remez]=filtroRemez(scanal); % B.9;Filtro paso banda [rbb]=cambio_frecuencia(r_pb,retardo_remez,FI,faseRx,1); % B.10:Bajamos de frecuencia, multlicando por un coseno a FI [rbb_f,retardo1]=filtroCIC(rbb,1); %B.11 simbolos=filtroadaptado(retardo1,retardo_rrc,rbb_f,L,M); % B.12/13/14: diezmado M/completamos el coseno alzado/diezmado L

109

Page 110: Diseño e implementación de un simulador de módem …bibing.us.es/proyectos/abreproy/12230/fichero/PFC... · 4.3.4 Canal 90 4.3.5 Ecualizadores 91 4.3.6 Salida de resultados . 92

Anexos 110

%-- LMS [yLMS,wLMS,eLMS]=ecualiza_LMS_2(simbolos,bpsk,N,mu,nIte); % Ecualización LMS simbolosRx=decision(yLMS,delta); % B.16 Decisión de los símbolos BitsRec = (simbolosRx > 0) *1; % B.17 Pasamos a bits [neLMS,ber]=biterr(Bits(1:length(BitsRec)),BitsRec(1:end)); evalLMS(cont)=ber; %-- LMS DD [yDD,wDD,eDD]=ecualiza_LMS_DD(simbolos,N,mu,nIte); % Ecualización LMS_DD simbolosRx=decision(yDD,delta); % B.16 Decisión de los símbolos BitsRec = (simbolosRx > 0) *1; % B.17 Pasamos a bits [neDD,ber]=biterr(Bits(1:length(BitsRec)),BitsRec(1:end)); evalDD(cont)=ber; %-- CMA [yCMA,wCMA,eCMA]=ecualiza_CMA(simbolos,N,mu,nIte); % Ecualización CMA simbolosRx=decision(yCMA,delta); % B.16 Decisión de los símbolos BitsRec = (simbolosRx > 0) *1; % B.17 Pasamos a bits [neCMA,ber]=biterr(Bits(1:length(BitsRec)),BitsRec(1:end)); evalCMA(cont)=ber; cont=cont+1; end %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 LMSD', '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

Page 111: Diseño e implementación de un simulador de módem …bibing.us.es/proyectos/abreproy/12230/fichero/PFC... · 4.3.4 Canal 90 4.3.5 Ecualizadores 91 4.3.6 Salida de resultados . 92

111 Diseño e implementación de un simulador de módem BPSK.

Anexo G: Sincronización de fase y frecuencia

codigo_6.m

%-------------------------------------------------------------------------- %Simulación Módem BPSK % 1.4.Sistema con ruido en el canal % Simulación de errores % Lazo de costas %-------------------------------------------------------------------------- %DATOS M=4; L=6; FI=9e6/24e6; % Frecuencia intermedia 9MHz/24MHz = 0,375 (en digital) fc=9e6; Fs=24*10^6; df=100; %max 175 faseTx=pi/4; faseRx=0; c=1;%Multicamino(1:= no hay multicamino) % 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) % BL = 1000; zeta = 0.8; vec=0:6; eval=zeros(1,length(vec)); num_err=zeros(1,length(vec)); cont=1; var_p=1; % Vamos a simular a el sistema con distintos valores de ruido (k) para % obtener la curva de errores for k=vec % TRANSMISOR Bits=genera_bits(10000); %B.1:Generamos bits aleatorios bpsk=mod_BPSK(Bits); %B.2:Creamos los símbolos BPSK % B.3/4/5:interpolacion M/conformación de pulso/interpolación L [s1,retardo_rrc]=interpolacion(M,L,bpsk); % B.6: Filtro CIC. Elimina las frecuencias indeseadas introducidas con la interpolación [salidaCIC,retardo1]=filtroCIC(s1,0); %B.7: subida en frecuencia [salida]=cambio_frecuencia(salidaCIC,0,FI,faseTx,0); %RECEPTOR EbNo_dB=k; % Señal a ruido en recepción % B.8: simulación del canal [scanal,smulti,sru]=canal(salida,EbNo_dB,Ms,b,c); % B.9;Filtro paso banda [r_pb,retardo_remez]=filtroRemez(scanal); % Lazo de costas [salida_costas]=my_lazo_costas_2orden(r_pb,fc+df,retardo_remez,BL,zeta,Fs,faseRx)'; %B.11

111

Page 112: Diseño e implementación de un simulador de módem …bibing.us.es/proyectos/abreproy/12230/fichero/PFC... · 4.3.4 Canal 90 4.3.5 Ecualizadores 91 4.3.6 Salida de resultados . 92

Anexos 112

[rbb_f,retardo1]=filtroCIC(salida_costas,1); % B.12/13/14:diezmado M/completamos el coseno alzado/diezmado L simbolos=filtroadaptado(retardo1,retardo_rrc,rbb_f,L,M); % B.15 Decisión de los símbolos simbolosRx=decision(simbolos,0); % B.16 Pasamos a bits BitsRec = (simbolosRx > 0) *1; % Contamos errores [ne,ber]=biterr(Bits(1:length(BitsRec)),BitsRec); num_err(k+1)=ne; eval(cont)=ber; cont=cont+1; end % 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 %

Page 113: Diseño e implementación de un simulador de módem …bibing.us.es/proyectos/abreproy/12230/fichero/PFC... · 4.3.4 Canal 90 4.3.5 Ecualizadores 91 4.3.6 Salida de resultados . 92

113 Diseño e implementación de un simulador de módem BPSK.

Anexo H: Simulación QPSK

codigo_7.m

%------------------------------------------------------------------------- %Simulación Módem 16QAM % 1.2.Módem sencillo con equivalente paso baja % Interpolación y diezmado %-------------------------------------------------------------------------- %DATOS M=4; L=6; Ms=M*L; c=1; b=1; vec=0:6; eval=zeros(1,length(vec)); num_err=zeros(1,length(vec)); cont=1; var_p=1; % Vamos a simular a el sistema con distintos valores de ruido (k) para % obtener la curva de errores for k=vec % Bloque 1: Generacion de los bits Bits=genera_bits(10000); % Bloque 2: Paso de bits a simbolos BPSKtx=mod_BPSK(Bits); %B.2:Creamos los símbolos BPSK QPSKtx=(BPSKtx(1:2:end)+1i*BPSKtx(2:2:end))*sqrt(.5); % Símbolos QPSK Q=imag(QPSKtx); I=real(QPSKtx); % Bloque 3: Interpolación por M sQ=upsample(Q,M); sI=upsample(I,M); % Bloque 4 Conformación de Pulsos (raíz de coseno alzado) rrc=rcosine(1,4,'sqrt',.35,4); % srrcQ=filter(rrc,1,sQ); srrcI=filter(rrc,1,sI); retardo_rrc=(length(rrc)-1)/2; %Bloque 5: Interpolación por L srrcL_Q=upsample(srrcQ,L); srrcL_I=upsample(srrcI,L); % Bloque 6: filtro CIC [salidaTX_Q,retardo1]=filtroCIC(srrcL_Q,0); % 0 indica que es del transmisor [salidaTX_I,retardo1]=filtroCIC(srrcL_I,0); % 0 indica que es del transmisor %Bloque 7: equivalente paso baja salidaTX=pasobajoideal(salidaTX_Q,salidaTX_I); % Bloque 7: Canal. En este primer caso no hay canal EbNo_dB=k; % Señal a ruido en recepción %n=generador_ruido(salidaTX,EbNo_dB)'; %srec=n+salidaTX;

113

Page 114: Diseño e implementación de un simulador de módem …bibing.us.es/proyectos/abreproy/12230/fichero/PFC... · 4.3.4 Canal 90 4.3.5 Ecualizadores 91 4.3.6 Salida de resultados . 92

Anexos 114

[scanal,smulti,sru]=canal_QI(salidaTX,EbNo_dB,Ms,b,c); % B.8: simulación del canal %srec: señal recibida en el receptor % Bloque 8: Filtro Cic en recepción srecI=real(scanal); srecQ=imag(scanal); [sCICRx_Q,retardo1]=filtroCIC(srecQ,1); % 1 indica que es del recpetor [sCICRx_I,retardo1]=filtroCIC(srecI,1); % 1 indica que es del recpetor %diagramaojos(sCICRx_I,sCICRx_Q,48); % Bloque 9: Diezmado por L r_d_Q=sCICRx_Q(retardo1+1:L:end); r_d_I=sCICRx_I(retardo1+1:L:end); % Figura: Diagrama de ojos de los pulsos recibidos %Descomentar para ver el diagrama de ojos: %diagramaojos(r_d_I,r_d_Q,12); % % Boque 10:Filtramos con el filtro adaptado a raíz de coseno alzado r2_Q=filter(rrc,1,r_d_Q); r2_I=filter(rrc,1,r_d_I); retardo2=retardo_rrc+retardo_rrc; % Bloque 11: Diezmado por M r2_d_Q=r2_Q(retardo2+1:M:end); r2_d_I=r2_I(retardo2+1:M:end); %figure %plot(r2_d_I,r2_d_Q,'x'); % Bloque 12: Decision. Pasao a simbolos simbolos=r2_d_I+1i*r2_d_Q; % Bloque 12: Decision. Pasao a simbolos BPSKrec=QPSK2bits(simbolos)'; % Decisión %Bloque 13: Paso a bits BitsRec = (BPSKrec > 0) *1; [ne,ber]=biterr(Bits(1:length(BitsRec)),BitsRec); % Contamos numero de errores recibidos num_err(k+1)=ne; % guardamos el numero de errores de cada iteración eval(cont)=ber; cont=cont+1; end % 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, 'ok'); legend('teórica','simulada'); xlabel('E_b/N_0'); ylabel('BER'); title('Curva de probabilidad de error de bit para la modulación QPSK'); grid on hold off %

Page 115: Diseño e implementación de un simulador de módem …bibing.us.es/proyectos/abreproy/12230/fichero/PFC... · 4.3.4 Canal 90 4.3.5 Ecualizadores 91 4.3.6 Salida de resultados . 92

115 Diseño e implementación de un simulador de módem BPSK.

Anexo I: Simulación 16QAM

codigo_8.m

%-------------------------------------------------------------------------- %Simulación Módem 16QAM % 1.2.Módem sencillo con equivalente paso de baja % Interpolación %-------------------------------------------------------------------------- %DATOS M=4; L=6; Ms=M*L; %c = [0.5 zeros(1,(M*L)-1) 1 zeros(1,(M*L)-1) -0.6]; %Multicamino c=1; b=2; vec=0:12; eval=zeros(1,length(vec)); num_err=zeros(1,length(vec)); cont=1; var_p=1; % Vamos a simular a el sistema con distintos valores de ruido (k) para % obtener la curva de errores %for t=vec nIte=5000; for k=vec % Bloque 1: Generacion de los bits Bits=genera_bits(1000000); % Bloque 2: Paso de bits a simbolos [Q I]=agrupa_simbolos(Bits); %plot(I,Q,'x') % Bloque 3: Interpolación por M sQ=upsample(Q,M); sI=upsample(I,M); % Bloque 4 Conformación de Pulsos (raíz de coseno alzado) rrc=rcosine(1,4,'sqrt',.35,4); % srrcQ=filter(rrc,1,sQ); srrcI=filter(rrc,1,sI); retardo_rrc=(length(rrc)-1)/2; %Bloque 5: Interpolación por L srrcL_Q=upsample(srrcQ,L); srrcL_I=upsample(srrcI,L); % Bloque 6: filtro CIC [salidaTX_Q,retardo1]=filtroCIC(srrcL_Q,0); % 0 indica que es del transmisor [salidaTX_I,retardo1]=filtroCIC(srrcL_I,0); % 0 indica que es del transmisor %Bloque 7: equivalente paso baja salidaTX=pasobajoideal(salidaTX_Q,salidaTX_I); % Bloque 7: Canal. En este primer caso no hay canal EbNo_dB=k; % Señal a ruido en recepción %n=generador_ruido(salidaTX,EbNo_dB)'; %srec=n+salidaTX;

115

Page 116: Diseño e implementación de un simulador de módem …bibing.us.es/proyectos/abreproy/12230/fichero/PFC... · 4.3.4 Canal 90 4.3.5 Ecualizadores 91 4.3.6 Salida de resultados . 92

Anexos 116

[scanal,smulti,sru]=canal_QI(salidaTX,EbNo_dB,Ms,b,c); % B.8: simulación del canal %srec: señal recibida en el receptor % Bloque 8: Filtro Cic en recepción srecI=real(scanal); srecQ=imag(scanal); [sCICRx_Q,retardo1]=filtroCIC(srecQ,1); % 1 indica que es del recpetor [sCICRx_I,retardo1]=filtroCIC(srecI,1); % 1 indica que es del recpetor %diagramaojos(sCICRx_I,sCICRx_Q,48); % Bloque 9: Diezmado por L r_d_Q=sCICRx_Q(retardo1+1:L:end); r_d_I=sCICRx_I(retardo1+1:L:end); % Figura: Diagrama de ojos de los pulsos recibidos %Descomentar para ver el diagrama de ojos: %diagramaojos(r_d_I,r_d_Q,12); % % Boque 10:Filtramos con el filtro adaptado a raíz de coseno alzado r2_Q=filter(rrc,1,r_d_Q); r2_I=filter(rrc,1,r_d_I); retardo2=retardo_rrc+retardo_rrc; % Bloque 11: Diezmado por M r2_d_Q=r2_Q(retardo2+1:M:end); r2_d_I=r2_I(retardo2+1:M:end); %figure %plot(r2_d_I,r2_d_Q,'x'); % Bloque 12: Decision. Pasao a simbolos [Q_rx I_rx]=decisor(r2_d_Q,r2_d_I); %Bloque 13: Paso a bits BitsRec = pasaabits(Q_rx,I_rx); [ne,ber]=biterr(Bits(1:length(BitsRec)),BitsRec'); % Contamos numero de errores recibidos num_err(k+1)=ne; % guardamos el numero de errores de cada iteración eval(cont)=ber; cont=cont+1; end % Curva teórica y simulada BER para BPSK ebn0_lin = 10.^((vec)/10); k=4; % Numeros de bits por símbolos M=2^k; x=sqrt(3*k*ebn0_lin/(M-1)); Pb=(4/k)*(1-1/sqrt(M))*(1/2)*erfc(x/sqrt(2)); semilogy(vec,Pb) hold on plot(vec, eval, 'r');%,vec, eval, 'ok'); legend('teórica','simulada'); xlabel('E_b/N_0'); ylabel('BER'); title('Curva de probabilidad de error de bit para la modulación 16 QAM'); grid on hold off %

Page 117: Diseño e implementación de un simulador de módem …bibing.us.es/proyectos/abreproy/12230/fichero/PFC... · 4.3.4 Canal 90 4.3.5 Ecualizadores 91 4.3.6 Salida de resultados . 92

117 Diseño e implementación de un simulador de módem BPSK.

Anexo J: Simulador

Bpsk.m

%------------------------------------------------------------------------- % Simulador completo BPSK % %-------------------------------------------------------------------------- %DATOS clear all ne=0; neLMS=0; neDD=0; neCMA=0; M=1; L=1; fprintf('---------------------------------------------------------------------\n-Modem BPSK, a continuación introduzca los parámetros que se le pide-\n---------------------------------------------------------------------\n'); Nbits=input('1.1.-Introduzca el Número de bits a simular\n '); Nbits=compruebaValor(Nbits,10000); faseTx=input('1.2.-Introduzca la fase del Tx\n '); faseTx=compruebaValor(faseTx,0); faseRx=input('1.3.-Introduzca la fase del Rx\n '); faseRx=compruebaValor(faseRx,0); df=input('1.4.-Introduzca la diferencia de frecuencias entre Tx y Rx (Hz):(ej 50)\n '); df=compruebaValor(df,0); while((M*L)~=24) M=input('2.1.-Introduzca el primer valor de diezmado M, si no desea usarlo ponga 1: \n '); M=compruebaValor(M,4); L=input('2.2.-Introduzca el segundo valor de diezmado L, si no desea usarlo ponga 1: \n '); L=compruebaValor(L,6); if((M*L)~=24) fprintf('Error: Introduzca unos valores para que la frecuencia de muestreo sea 24MHz (M*L=24)\n'); end end fc=9e6; FI=9/(M*L); % Frecuencia intermedia 9MHz/24MHz = 0,375 (en digital) Fs=M*L*10^6; ruido_v=input('3.1.-¿Desea aplicar ruido? (Sí:1/No:0)\n '); ruido_v=compruebaValor(ruido_v,0); if(ruido_v==1) fvec=input('3.2.-Si desea simular la curva de error de bits introduzca el maximo de valor Eb/N0\n en el caso de que no lo desee untroduzca 0\n '); fvec=compruebaValor(fvec,0); c_v=input('3.3.-¿Desea aplicar multicamino?: (Sí:1/No:0)\n '); c_v=compruebaValor(c_v,0); if(c_v==1) numc = input('3.4.-Número de rayos a simular en el multicamino:\n ');

117

Page 118: Diseño e implementación de un simulador de módem …bibing.us.es/proyectos/abreproy/12230/fichero/PFC... · 4.3.4 Canal 90 4.3.5 Ecualizadores 91 4.3.6 Salida de resultados . 92

Anexos 118

n=length(numc); if n==0 c = [0.5 zeros(1,(M*L)-1) 1 zeros(1,(M*L)-1) -0.6]; numc=3; else cp = input('3.5.1.-Rayo número (1):'); c(1)=compruebaValor(cp,1); for c_i = 1 : numc-1 c=[c zeros(1,(M*L)-1)]; s = ['3.5.' (num2str(c_i)+1) '.-Rayo número (' num2str(c_i)+1 '): ']; cp = input(s); c(end+1)=compruebaValor( cp,0); end end else c=1; end else fvec=0; end e_b=input('4.1.-¿Desea usar ecualizador?: (Sí:1/No:0)\n ' ); e_b=compruebaValor(e_b,0); if(e_b==1) tipoeq=input('4.2.-¿Qué ecualizador?: (1:LMS/2:LMS_DD/3:CMA/4:todos)\n '); tipoeq=compruebaValor(tipoeq,4); N=input('4.3-Introduce el orden del ecualizador (nº impar)\n '); N=compruebaValor(N,11); if(N<3) N=4; end if(mod(N,2)==0) fprintf('Error: Número introducido no válido, ha sido corregido a %i\n',N-1); N=N-1; end mu=input('4.4.-Introduce el parámetro de convergencia mu\n '); mu=compruebaValor(mu,0.001); nIte=input('4.5.-Introduce el número de interaciones del ecualizador\n '); nIte=compruebaValor(nIte,3000); % DAtos del ecualizador delta=(N+1)/2; %retraso else tipoeq=0; end lc=input('5.1.-¿Desea usar el lazo de costas en el receptor?(Sí:1/No:0)\n '); lc=compruebaValor(lc,0); BL = 1000; zeta = 0.8; Ms=L*M; % Número de muestras por símbolo (factor de interpolación total) b=1; % Número de bits por símbolo (1 BPSK) %

Page 119: Diseño e implementación de un simulador de módem …bibing.us.es/proyectos/abreproy/12230/fichero/PFC... · 4.3.4 Canal 90 4.3.5 Ecualizadores 91 4.3.6 Salida de resultados . 92

119 Diseño e implementación de un simulador de módem BPSK.

vec=0:fvec; eval=zeros(1,length(vec)); evalLMS=zeros(1,length(vec)); evalDD=zeros(1,length(vec)); evalCMA=zeros(1,length(vec)); num_err=zeros(1,length(vec)); cont=1; % Vamos a simular a el sistema con distintos valores de ruido (k) para % obtener la curva de errores %for t=vec for k=vec % TRANSMISOR Bits=genera_bits(Nbits); %B.1:Generamos bits aleatorios bpsk=mod_BPSK(Bits); %B.2:Creamos los símbolos BPSK [s1,retardo_rrc]=interpolacion(M,L,bpsk);% B.3/4/5:interpolacion M/conformación de pulso/interpolación L [salidaCIC,retardo1]=filtroCIC(s1,0); % B.6: Filtro CIC. Elimina las frecuencias indeseadas introducidas con la interpolación [salida]=cambio_frecuencia(salidaCIC,0,FI,faseTx,0); %B.7: subida en frecuencia %RECEPTOR if(fvec==0 && ruido_v==1) EbNo_dB=input('6.1.-Introduzca el valor Eb/No (db):\n '); EbNo_dB=compruebaValor(EbNo_dB,3); else EbNo_dB=k; % Señal a ruido en recepción end if(ruido_v==1) [scanal,smulti,sru]=canal(salida,EbNo_dB,Ms,b,c); % B.8: simulación del canal else scanal=salida; end [r_pb,retardo_remez]=filtroRemez(scanal); % B.9;Filtro paso banda if(lc==1) [rbb]=my_lazo_costas_2orden(r_pb,fc+df,retardo_remez,BL,zeta,Fs,faseRx)'; else FI=(fc+df)/24e6; [rbb]=cambio_frecuencia(r_pb,retardo_remez,FI,faseRx,1); % B.10:Bajamos de frecuencia, multlicando por un coseno a FI end [rbb_f,retardo1]=filtroCIC(rbb,1); %B.11 simbolos=filtroadaptado(retardo1,retardo_rrc,rbb_f,L,M); % B.12/13/14:diezmado M/completamos el coseno alzado/diezmado L if((tipoeq==1) || (tipoeq==4)) %-- LMS [yLMS,wLMS,eLMS]=ecualiza_LMS_2(simbolos,bpsk,N,mu,nIte); % Ecualización LMS simbolosRx=decision(yLMS,delta); % B.16 Decisión de los símbolos BitsRec = (simbolosRx > 0) *1; % B.17 Pasamos a bits if(numel(BitsRec)> numel(Bits)) BitsRec=BitsRec(1:length(Bits)); end [neLMS,ber]=biterr(Bits(1:length(BitsRec)),BitsRec(1:end)); num_errLMS(k+1)=neLMS; evalLMS(cont)=ber;

119

Page 120: Diseño e implementación de un simulador de módem …bibing.us.es/proyectos/abreproy/12230/fichero/PFC... · 4.3.4 Canal 90 4.3.5 Ecualizadores 91 4.3.6 Salida de resultados . 92

Anexos 120

end if((tipoeq==2) || (tipoeq==4)) %-- LMS DD [yDD,wDD,eDD]=ecualiza_LMS_DD(simbolos,N,mu,nIte); % Ecualización LMS_DD simbolosRx=decision(yDD,delta); % B.16 Decisión de los símbolos BitsRec = (simbolosRx > 0) *1; % B.17 Pasamos a bits if(numel(BitsRec)>numel(Bits)) BitsRec=BitsRec(1:length(Bits)); end [neDD,ber]=biterr(Bits(1:length(BitsRec)),BitsRec(1:end)); num_errDD(k+1)=neDD; evalDD(cont)=ber; end if((tipoeq==3) || (tipoeq==4)) %-- CMA [yCMA,wCMA,eCMA]=ecualiza_CMA(simbolos,N,mu,nIte); % Ecualización CMA simbolosRx=decision(yCMA,delta); % B.16 Decisión de los símbolos BitsRec = (simbolosRx > 0) *1; % B.17 Pasamos a bits if(numel(BitsRec)>numel(Bits)) BitsRec=BitsRec(1:length(Bits)); end [neCMA,ber]=biterr(Bits(1:length(BitsRec)),BitsRec(1:end)); num_errCMA(k+1)=neCMA; evalCMA(cont)=ber; end if(tipoeq==0 || (tipoeq==4)) simbolosRx=decision(simbolos,0); BitsRec = (simbolosRx > 0) *1; % B.16 Pasamos a bits if(numel(BitsRec)>numel(Bits)) BitsRec=BitsRec(1:length(Bits)); end [ne,ber]=biterr(Bits(1:length(BitsRec)),BitsRec); % Contamos numero de errores recibidos num_err(k+1)=ne; % guardamos el numero de errores de cada iteración eval(cont)=ber; %keyboard end cont=cont+1; end if(k>0) %Curva teórica y simulada BER para BPSK ebn0_lin = 10.^((vec)/10); ber_teo= erfc(sqrt(ebn0_lin))/2; semilogy((vec), ber_teo); hold on grid on if (tipoeq==0) plot(vec, eval, 'og-.');%k %legend('teórica','simulada'); end if(tipoeq== 1) plot(vec, evalLMS, 'om-.'); legend('teórica','simulada con ecualización LMS'); end if(tipoeq== 2) plot(vec, evalDD, 'or-'); legend('teórica','simulada con ecualización LMSD');

Page 121: Diseño e implementación de un simulador de módem …bibing.us.es/proyectos/abreproy/12230/fichero/PFC... · 4.3.4 Canal 90 4.3.5 Ecualizadores 91 4.3.6 Salida de resultados . 92

121 Diseño e implementación de un simulador de módem BPSK.

end if(tipoeq== 3) plot(vec, evalCMA, 'og-'); legend('teórica','simulada con ecualización CMA'); end if (tipoeq==4) plot(vec, eval, 'ok-.'); plot(vec, evalLMS, 'om-.'); plot(vec, evalDD, 'or-'); plot(vec, evalCMA, 'og-'); legend('teórica','simulada sin ecualizador','simulada con ecualización LMS','simulada con ecualización LMSD', 'simulada con ecualización CMA'); end xlabel('E_b/N_0'); ylabel('BER'); title('Curva de probabilidad de error de bit para la modulación BPSK'); hold off if(c_v~=0) canalSimulado=c(1:24:end); figure(2) hold on stem(canalSimulado,'g') title('Canal Simulado'); axis([0 numc+1 -1.5 1.5]); hold off end if(tipoeq==0) figure(3) hold on plot(num_err,'g'); grid on xlabel('E_b/N_0'); ylabel('Numero de errores de la simulación'); str = sprintf('BPSK: Numero de bits erroneos de %d bits enviados',Nbits); title(str) hold off end if((tipoeq== 1) || (tipoeq==4)) figure plot(num_errLMS); grid on xlabel('E_b/N_0'); ylabel('Numero de errores de la simulación con LMS'); str = sprintf('BPSK: Numero de bits erroneos de %d bits enviados',Nbits); title(str) end if((tipoeq== 2) || (tipoeq==4)) figure plot(num_errDD); grid on xlabel('E_b/N_0'); ylabel('Numero de errores de la simulación con LMS DD'); str = sprintf('BPSK: Numero de bits erroneos de %d bits enviados',Nbits);

121

Page 122: Diseño e implementación de un simulador de módem …bibing.us.es/proyectos/abreproy/12230/fichero/PFC... · 4.3.4 Canal 90 4.3.5 Ecualizadores 91 4.3.6 Salida de resultados . 92

Anexos 122

title(str) end if((tipoeq== 3) || (tipoeq==4)) figure plot(num_errCMA); grid on xlabel('E_b/N_0'); ylabel('Numero de errores de la simulación con CMA'); str = sprintf('BPSK: Numero de bits erroneos de %d bits enviados',Nbits); title(str) end else fprintf('////////////////////////RESULTADOS/////////////////////////\n\n*Numero de bits erroneos (sobre %i bits):\n',Nbits); if((tipoeq==0)|| (tipoeq==4)) fprintf('\tSin ecualizador: %i\n',ne); end if((tipoeq== 1) || (tipoeq==4)) fprintf('\t\t\tLMS: %i\n',neLMS); end if((tipoeq== 2) || (tipoeq==4)) fprintf('\t\t\tLMSDD: %i\n',neDD); end if((tipoeq== 3) || (tipoeq==4)) fprintf('\t\t\tCMA: %i\n',neCMA); end end

Page 123: Diseño e implementación de un simulador de módem …bibing.us.es/proyectos/abreproy/12230/fichero/PFC... · 4.3.4 Canal 90 4.3.5 Ecualizadores 91 4.3.6 Salida de resultados . 92

123 Diseño e implementación de un simulador de módem BPSK.

BIBLIOGRAFÍA

Carrier Phase Recovery for BPSK, http://people.eecs.ku.edu/~esp/class/S06_690/simulink/crBPSK/

L. E. Franks, “Synchronization Subsystems: Analysis and Design,” Digital Communications:

Satellite/Earth Station Engineering,

D. L. Lyon, “Timing Recovery in Synchronous Equalized Data Communication,” IEEE

Trans. Commun, COM-23, no. 2, February 1975.

B. Ghosh and D. Messerchimitt, “Asynchronous Adaptative Equalization in Voiceband Data

Modems,” Prooceedings of the ICASSP, 1992, vol IV, pp. 485-488.

Luis Miguel Delgado Encinas “Diseño e implementación de un módem con modulación QPSK”,

John G. proakis Masoud Salehi, “Contemporary communication systems using MATLAB”

http://liquidsdr.org/

http://read.pudn.com/downloads80/doc/project/307210/CarrierRecoveryUsingaSecondOrderCostasLoop.pdf

Neil K. Jablon, “Joint Blind Equalization, Carrier Recovery, and Timing Recovery for

High-Order QA”

M. C. Jeruchim, “Simulation of Communication system”

123