Diseño y simulación de modem multitono discreto (DMT)

96
DISEÑO Y SIMULACIÓN DE MÓDEM MULTITONO DISCRETO (DMT)

Transcript of Diseño y simulación de modem multitono discreto (DMT)

DISEÑO Y SIMULACIÓN DE MÓDEM MULTITONO DISCRETO (DMT)

UNIVERSIDAD DE CASTILLA-LA MANCHA

ESCUELA SUPERIOR DE INFORMÁTICACIUDAD REAL

GRADO EN INGENIERÍA INFORMÁTICA

TRABAJO FIN DE GRADO

Diseño y simulación de módem multitono discreto (DMT)

David Valero Jiménez

Junio, 2015

UNIVERSIDAD DE CASTILLA-LA MANCHA

ESCUELA SUPERIOR DE INFORMÁTICACIUDAD REAL

Departamento de Tecnologías y Sistemas de Información

Tecnología específica de Computación

TRABAJO FIN DE GRADO

Diseño y simulación de módem multitono discreto (DMT)

Autor: David Valero JiménezDirector: Inocente Sánchez Ciudad

Junio, 2015

David Valero Jiménez

Ciudad Real – Spain

E-mail: [email protected]éfono: +34 686 54 64 17

c© 2015 David Valero Jiménez

Permission is granted to copy, distribute and/or modify this document under the terms of the GNUFree Documentation License, Version 1.3 or any later version published by the Free SoftwareFoundation; with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A copyof the license is included in the section entitled "GNU Free Documentation License".Se permite la copia, distribución y/o modificación de este documento bajo los términos de laLicencia de Documentación Libre GNU, versión 1.3 o cualquier versión posterior publicada porla Free Software Foundation; sin secciones invariantes. Una copia de esta licencia esta incluida enel apéndice titulado «GNU Free Documentation License».Muchos de los nombres usados por las compañías para diferenciar sus productos y servicios sonreclamados como marcas registradas. Allí donde estos nombres aparezcan en este documento, ycuando el autor haya sido informado de esas marcas registradas, los nombres estarán escritos enmayúsculas o como nombres propios.

TRIBUNAL:

Presidente:

Secretario:

Vocal:

FECHA DE DEFENSA:

CALIFICACIÓN:

PRESIDENTE SECRETARIO VOCAL

Fdo.: Fdo.: Fdo.:

Resumen

Los módems DMT (Discrete Multitone) son utilizados en tecnologías ampliamente ex-tendidas como el ADSL, WiFi, DVB (COFDM) o 4G. La técnica de modulación OFDMproporciona alta eficiencia espectral, robustez frente a interferencias cocanal en canales debanda estrecha e interferencia entre símbolos, facilita la adaptación a condiciones severasen el canal de transmisión, no requiere filtros sintonizados por subcanal y se logra una im-plementación eficiente haciendo uso del algoritmo FFT. En este Trabajo de Fin de Grado serealiza el estudio del esquema de modulación Discrete Multitone (DMT).

A tal efecto, se lleva a cabo un estudio inicial de las técnicas básicas de modulación yanálisis espectral relacionadas con DMT. En segundo lugar se aborda el desarrollo e im-plementación de un simulador genérico y configurable en lenguaje C. Dicho software desimulación sirve como herramienta para observar y entender los procesos de modulación ydemodulación, así como medir el impacto de los parámetros de modulación en la respuesta alruido del sistema. Adicionalmente se ha diseñado un prototipo hardware del modulador uti-lizando el lenguaje VHDL que genera una señal analógica a partir de una trama prefijada.

VII

Abstract

Discrete Multitone (DMT) modems are used in widespread technologies like ADSL, WiFi,DVB (COFDM) or 4G. OFDM modulation technique provides high spectral efficiency, narrow-band co-channel and inter-symbol interference robustness, easy adaptation to severe channelconditions, efficient implementation through FFT algorithm and not requirement of sub-channel tuned filters. This End-Of-Degree Project covers the study of DMT modulationtechnology basics.

The first task accomplished in this work is the study of the basic modulation and spectralanalysis techniques related to DMT. In second place, a generic and configurable DMT mo-dem simulator has been developed and implemented in C language. This simulator serves asa tool to observe and understand DMT modulation and demodulation processes, as well asto measure the impact of modulation parameters on the system noise response. Additionally,a modulator hardware prototype capable of generating an analog signal from a given framehas been designed in VHDL.

IX

Índice general

Resumen VII

Abstract IX

Índice general XI

Índice de cuadros XV

Índice de figuras XVII

Índice de listados XIX

Listado de acrónimos XXI

Agradecimientos XXIII

1. Introducción y antecedentes 1

2. Objetivos 3

3. Fundamentos teóricos 5

3.1. Conceptos básicos sobre bandas de frecuencias, señales y ondas en el espec-tro electromagnético . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5

3.2. Representación de ondas en los dominios del tiempo y de la frecuencia . . . 6

3.2.1. Desarrollo en serie de Fourier . . . . . . . . . . . . . . . . . . . . 7

3.2.2. Transformada de Fourier . . . . . . . . . . . . . . . . . . . . . . . 7

3.2.3. Transformada de Fourier Discreta . . . . . . . . . . . . . . . . . . 8

3.2.4. Propiedades interesantes de WN . . . . . . . . . . . . . . . . . . . 10

3.2.5. Propiedades interesantes de la DFT . . . . . . . . . . . . . . . . . 10

3.3. Cálculo de la DFT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11

3.3.1. Cálculo directo de la DFT . . . . . . . . . . . . . . . . . . . . . . 11

3.3.2. Cálculo de la DFT mediante FFT . . . . . . . . . . . . . . . . . . 13

XI

3.3.3. Comparación temporal de la DFT y la FFT base 2 . . . . . . . . . . 18

3.4. Análisis espectral . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19

3.4.1. Resolución espectral de la DFT y frecuencia de muestreo . . . . . . 19

3.4.2. Demostración: obtención de una señal discreta periódica a partir deuna señal continua . . . . . . . . . . . . . . . . . . . . . . . . . . 20

3.4.3. Teorema de muestreo de Nyquist-Shanon . . . . . . . . . . . . . . 22

3.5. Esquemas básicos de modulación . . . . . . . . . . . . . . . . . . . . . . . 23

3.6. Modulación Discreta Multitono (DMT) . . . . . . . . . . . . . . . . . . . 23

3.6.1. PSK . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25

3.6.2. QAM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25

3.7. Energía y potencia de una señal . . . . . . . . . . . . . . . . . . . . . . . . 27

3.8. Relación señal/ruido . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28

4. Simulación 29

4.1. Metodología de desarrollo de software . . . . . . . . . . . . . . . . . . . . 29

4.2. Decisiones de diseño del software de simulación . . . . . . . . . . . . . . . 30

4.2.1. Verificación de datos de entrada . . . . . . . . . . . . . . . . . . . 30

4.2.2. Codificación de tramas . . . . . . . . . . . . . . . . . . . . . . . . 30

4.2.3. Estructura . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30

4.3. Implementación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31

4.3.1. Tipos y estructuras de datos . . . . . . . . . . . . . . . . . . . . . 31

4.3.2. Enfoque de implementación del algoritmo FFT base 2 . . . . . . . 31

4.3.3. Generación de gráficas . . . . . . . . . . . . . . . . . . . . . . . . 31

4.4. Requisitos de compilación y ejecución . . . . . . . . . . . . . . . . . . . . 32

4.5. Uso del software de simulación . . . . . . . . . . . . . . . . . . . . . . . . 32

4.6. Ejecución de los casos de simulación propuestos . . . . . . . . . . . . . . . 36

4.7. Otros casos de simulación . . . . . . . . . . . . . . . . . . . . . . . . . . 39

5. Prototipado 41

5.1. Modelado hardware . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41

5.2. Software y hardware utilizado . . . . . . . . . . . . . . . . . . . . . . . . 43

5.3. Procesos de simulación del hardware . . . . . . . . . . . . . . . . . . . . . 44

5.4. Resultados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44

6. Conclusiones y líneas futuras 45

A. Implementación C del algoritmo de cálculo directo de la DFT 49

B. Implementación C del algoritmo FFT base 2 53

C. Repositorios 59

C.1. Comparador de algoritmos de cálculo de la DFT (lenguaje C) . . . . . . . . 59

C.2. Simulador del módem DMT (lenguaje C) . . . . . . . . . . . . . . . . . . . 59

C.3. Prototipo hardware (lenguaje VHDL) . . . . . . . . . . . . . . . . . . . . . 59

D. Delta de Dirac 61

E. Demostración: transformada de Fourier de un pulso rectangular 63

F. Demostración: transformada de Fourier de un tren de deltas 65

Bibliografía 67

Índice de cuadros

3.1. Correspondencia de las componentes frecuenciales . . . . . . . . . . . . . 9

3.2. Orden de bit invertido en una DFT de 8 puntos . . . . . . . . . . . . . . . . 15

3.3. Ejemplo de DIT base 2 para una DFT de 8 puntos. . . . . . . . . . . . . . . 16

3.4. Complejidad de los métodos de cálculo de la DFT . . . . . . . . . . . . . . 18

3.5. Resultados de la comparativa de algoritmos de cálculo de la DFT . . . . . . 18

3.6. Demostración: transformada de Fourier de una señal continua aperiódica . . 21

XV

Índice de figuras

3.1. Ecuación de onda sinusoidal pura . . . . . . . . . . . . . . . . . . . . . . . 6

3.2. Análisis de Fourier de una onda periódica compuesta . . . . . . . . . . . . 6

3.3. Fórmula de Euler . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6

3.4. Desarrollo en serie de Fourier . . . . . . . . . . . . . . . . . . . . . . . . . 7

3.5. Coeficiente espectral . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7

3.6. Transformada de Fourier aplicada al procesamiento de señales . . . . . . . 8

3.7. Transformada de Fourier Inversa aplicada al procesamiento de señales . . . 8

3.8. DFT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8

3.9. IDFT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8

3.10. DFT (Factor Twiddle) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9

3.11. IDFT (Factor Twiddle) . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9

3.12. Periodicidad de la DFT . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11

3.13. Simetría de la DFT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11

3.14. Cálculo directo de la DFT . . . . . . . . . . . . . . . . . . . . . . . . . . . 12

3.15. Caso base del DIT base 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . 13

3.16. División de X(k) en parte par e impar . . . . . . . . . . . . . . . . . . . . 14

3.17. Cálculo eficiente de la segunda mitad de la DFT . . . . . . . . . . . . . . . 14

3.18. DIT base 2 de ocho puntos . . . . . . . . . . . . . . . . . . . . . . . . . . 15

3.19. División de X(k) en cuatro partes . . . . . . . . . . . . . . . . . . . . . . . 17

3.20. Comparativa entre algoritmos para el cálculo de la DFT . . . . . . . . . . . 18

3.21. Frecuencia de muestreo . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19

3.22. Resolución espectral y frecuencia de muestreo . . . . . . . . . . . . . . . . 19

3.23. Función «sinc» normalizada o seno cardinal normalizada . . . . . . . . . . 20

3.24. Criterio de Nyquist para la frecuencia de muestreo . . . . . . . . . . . . . . 22

3.25. Comparación entre pulsos en frecuencias ortogonales y no ortogonales . . . 24

3.26. Frecuencias ortogonales superpuestas . . . . . . . . . . . . . . . . . . . . 24

3.27. Número de bits por portadora . . . . . . . . . . . . . . . . . . . . . . . . . 25

3.28. Número de bits por trama . . . . . . . . . . . . . . . . . . . . . . . . . . . 25

XVII

3.29. Ejemplo de diagrama de constelación para 16-QAM . . . . . . . . . . . . . 26

3.30. Energía de una señal discreta no periódica . . . . . . . . . . . . . . . . . . 27

3.31. Potencia de una señal discreta no periódica . . . . . . . . . . . . . . . . . 27

3.32. Potencia de una señal discreta (N muestras) . . . . . . . . . . . . . . . . . 27

3.33. Potencia de una señal sinusoidal . . . . . . . . . . . . . . . . . . . . . . . 28

3.34. Relación señal/ruido . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28

4.1. Configuración caso de simulación 1 . . . . . . . . . . . . . . . . . . . . . 36

4.2. Caso 1: Simulación del proceso de transmisión . . . . . . . . . . . . . . . 36

4.3. Caso 1: Simulación del proceso de transmisión con generación de gráfica . 36

4.4. Caso 1: Simulación del proceso de recepción . . . . . . . . . . . . . . . . 36

4.5. Caso 1: Estadísticas de respuesta al nivel de ruido . . . . . . . . . . . . . . 36

4.6. Configuración caso de simulación 2 . . . . . . . . . . . . . . . . . . . . . 37

4.7. Caso 2: Simulación del proceso de transmisión . . . . . . . . . . . . . . . 37

4.8. Caso 2: Simulación del proceso de transmisión con generación de gráfica . 37

4.9. Caso 2: Simulación del proceso de recepción . . . . . . . . . . . . . . . . 37

4.10. Caso 2: Estadísticas de respuesta al nivel de ruido . . . . . . . . . . . . . . 37

4.11. Resumen de estadísticas de respuesta al ruido (casos propuestos) . . . . . . 38

4.12. Gráficas de la seña simulada en el dominio temporal (casos propuestos) . . 38

5.1. Esquema de bloques del modelo hardware . . . . . . . . . . . . . . . . . . 41

5.2. Máquina de estados de la entidad tx_constellation_mapper . . . . . . . 42

5.3. Máquina de estados de la entidad fft_r2 . . . . . . . . . . . . . . . . . . 43

D.1. Delta de Dirac . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61

E.1. Función rectangular de amplitud A . . . . . . . . . . . . . . . . . . . . . . 63

E.2. Función «sinc» . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63

Índice de listados

4.1. Uso de simu-tx . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32

4.2. Uso de simu-rx . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33

4.3. Uso de simu-stats . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34

A.1. Archivo fuente «dft.h» . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49

A.2. Archivo fuente «dft.c» . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50

B.1. Archivo fuente «fft.h» . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53

B.2. Archivo fuente «fft.c» . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55

XIX

Listado de acrónimos

DMT Discrete Multitone

ADSL Asymmetric Digital Subscriber Line

DVB Digital Video Broadcasting

OFDM Orthogonal Frequency Division Multiplexing

COFDM Coded Orthogonal Frequency Division Multiplexing

AM Amplitude Modulation

DSB-SC Double-Sideband modulation Suppressed-Carrier

SSB-SC Single-Sideband modulation Suppressed-Carrier

USB Upper Sideband

LSB Lower Sideband

PM Phase Modulation

FM Frequency Modulation

ASK Amplitude Shift Keying

PSK Phase Shift Keying

FSK Frequency Shift Keying

QAM Quadrature Amplitude Modulation

DFT Discrete Fourier Transform

IDFT Inverse Discrete Fourier Transform

FFT Fast Fourier Transform

IFFT Inverse Fast Fourier Transform

DIT Decimation In Time

DIF Decimation In Frequency

SRFFT Split Radix Fast Fourier Transform

XXI

Agradecimientos

Quiero agradecer a algunas personas su ayuda para haber logrado esto.

A Inocente Sánchez Ciudad por haberme tendido esta escalera al fin de mis estudios deGrado en Ingeniería Informática y su ayuda para profundizar en algunos de los conocimien-tos que he adquirido estos años. A Julio Daniel Dondo Gazzano y Juan Carlos López Lópezpor su ayuda en parte de este trabajo.

A mi familia, sin ellos esto hubiese sido tan fácil. A mis amigos, por servirme de refer-encia. A los compañeros y compañeras de tantos proyectos tan llenos de buenas intencionescomo carentes de entendimiento y apoyo.

A mi abuelo, que me inculcó la dedicación seria a las aficiones personales, tanto de maneraaltruista como para hacer de ellas algo de lo que vivir.

Y a ti Almudena, por tantas cosas que sería inútil intentar escribirlas todas.

David

XXIII

A todos aquellos que lucharon por la Idea, a los que aún lo hacen.

Capítulo 1

Introducción y antecedentes

U N módem Multitono Discreto DMT (Discrete Multi Tone) codifica datos en variassubportadoras, multiplexadas en la frecuencia, usando modulación tanto en ampli-

tud como en fase para lograr una alta eficiencia espectral, lo que es útil tanto para lograrcanales por los que transmitir grandes volúmenes de datos por unidad de tiempo como paraaprovechar mejor bandas relativamente estrechas. Para el desarrollo de este proyecto se usarála técnica de modulación digital con portadoras ortogonales, conocida como OFDM [HR06](Orthogonal Frecuency Division Multiplexing).

Una de las características de la modulación OFDM es la baja tasa de binaria que se necesitaal transmitir en varias subportadoras simultáneamente, lo que conlleva significativas ventajasen comparación con otros esquemas de modulación de portadora única. Algunas de estasventajas permiten paliar, sin recurrir a técnicas avanzadas de filtrado, problemas como laatenuación de las frecuencias altas en un cable e interferencias en bandas estrechas, ademásde lograr una relativamente alta inmunidad al ruido.

Algunas de las aplicaciones de DMT se encuentran, por ejemplo, en el ADSL o la trans-misión de datos sobre canales de banda estrecha. Por su parte, la modulación OFDM es usadaen WiFi, la tecnología móvil 4G o DVB (COFDM).

El hecho de que se requiera una menor tasa de modulación que en los esquemas de por-tadora única no evita que se necesite hacer en tiempo real una conversión de datos a señalanalógica en transmisión, y un muestreo y procesado de datos en recepción, en un espacio detiempo determinado. Con el objetivo de evitar retardos y hacer práctica la comunicación, serecurre a un algoritmo para el cálculo rápido de la Transformada Discreta de Fourier, cono-cida como Transformada Rápida de Fourier [Jon07] o FFT (Fast Fourier Transform).

En el presente Trabajo de Fin de Grado se diseñará un módem DMT con el fin de afianzar yextender conocimientos adquiridos en los estudios de Grado en Ingeniería Informática. Paraello se estudiarán las bases teóricas, se hará una propuesta de diseño totalmente configurable,se realizarán simulaciones y se particularizará dicho diseño para realizar un prototipo.

1

2 1. INTRODUCCIÓN Y ANTECEDENTES

Teniendo lo anterior en cuenta se ha dividido el documento en los siguientes capítulos:

Capítulo 2: ObjetivosFinalidad del presente trabajo.

Capítulo 3: Fundamentos teóricosExposición de los fundamentos teóricos en relación a los objetivos marcados.

Capítulo 4: SimulaciónEspecificación y justificación de las simulaciones llevadas a cabo sobre el diseño.

Capítulo 5: PrototipadoImplementación y simulación de un prototipo del módem DMT en lenguaje VHDL.

Capítulo 6: Conclusiones y líneas futurasConclusiones finales y propuestas de continuación del trabajo.

Capítulo 2

Objetivos

L OS objetivos generales que se marcan para lograr la finalidad propuesta en este TFGson los siguientes:

1. Realizar un estudio teórico de todos los aspectos relacionados con el tratamiento de laseñal, análisis espectral y las técnicas de codificación digital.

2. Realizar una pareja de programas, uno transmisor que genera la señal analógica (enforma de fichero de datos) a partir de una trama binaria, y otro programa receptor queobtiene la citada trama a partir de la señal analógica (leyendo el fichero de datos). Paraello se utilizarían las herramientas matemáticas de la FFT, inversa y directa, respecti-vamente.

3. Usar un prototipo físico para mostrar el funcionamiento de alguno de los dos progra-mas, o de ambos, sobre placas físicas.

Los objetivos específicos desarrollados son los siguientes:

a. Analizar el concepto de señal en el dominio del tiempo y su representación en el do-minio de la frecuencia, así como los conceptos de muestreo, criterio de Nyquist, anchode banda, etc.

b. Estudiar las herramientas matemáticas de conversión entre ambos dominios, basadaen el análisis de Fourier, especialmente la Transformada de Fourier Discreta, en unaprimera aproximación y la variante rápida para realizar cálculos en tiempo real.

c. Estudiar la técnica OFDM, su necesidad de ancho de banda en relación con la tasabinaria y los distintos esquemas de modulación: QPSK, 8-PSK, 16-QAM, 64-QAM,etc.

d. Realizar un programa simulador del proceso de transmisión que genere a partir deuna trama de bits una señal analógica, en forma de fichero de datos, similar a la quegeneraría un módem real. Este programa tendrá todos sus parámetros configurables,de manera que cualquier dato, como puede ser el número de bits de la trama N , laduración de la misma o la cantidad de subportadoras, f , pueda variar a voluntad. Elarchivo de datos llevará una cabecera donde se identificarán todos estos datos para queel programa receptor los pueda conocer y sea capaz de interpretarlos.

3

4 2. OBJETIVOS

e. Realizar un programa simulador del proceso de recepción que, leyendo la cabecera delfichero de datos, extraiga las características del módem y realice el adecuado análisisespectral de las muestras para obtener la trama de datos binarios que se usaron parageneral dicho archivo.

f. Probar distintas tramas, generar los ficheros correspondientes, y comprobar con el pro-grama receptor recupera las tramas correctamente.

g. Realizar una simulación particularizada para los siguientes parámetros: 10 subporta-doras entre 200 y 2000 Hz con un esquema de modulación de 3 bits por subportadora,usando 2 amplitudes y 4 fases. Las tramas serán de 30 bits. El número de bits N , es elnúmero de subportadoras, f , multiplicado por el número de bits por subportadora, p.

h. Añadir ruido aleatorio a los ficheros generados y ver hasta qué punto es correcta latrama recuperada en función de la amplitud del ruido.

i. Comparar la inmunidad al ruido del esquema de modulación anterior (apartado g) y deuna modulación 8-PSK.

j. Construir un prototipo físico que genere la señal en transmisión a partir de una tramade N bits y f subportadoras, comparando la forma de onda producida, que puede servista a través de un osciloscopio, con la forma de onda simulada. Opcionalmente sepodría construir otro prototipo que realizase la función receptora, admitiendo comoseñal de entrada la generada por el prototipo transmisor y presentando la trama quegeneró dicha señal. Los valores de N y f dependerán del hardware utilizado.

Capítulo 3

Fundamentos teóricos

E N primer lugar se realizará un estudio de los fundamentos de la generación y el tratamien-to de señales en los que se basa DMT explicando los esquemas de modulación básicos.

A continuación se describirá el citado método de multiplexación y se explicarán e implemen-tarán algoritmos para el cálculo de la DFT.

3.1 Conceptos básicos sobre bandas de frecuencias, señales y ondasen el espectro electromagnético

Las frecuencias del espectro electromagnético usadas en telecomunicaciones se puedenclasificar por bandas o por aplicaciones.

Una banda es un intervalo de frecuencias que se define para un determinado uso. Apareceal tiempo el concepto de ancho de banda, que es la diferencia en Hz entre la frecuenciamáxima y la frecuencia mínima de una banda.

Dos tipos de banda a tener en cuenta, por su importancia, son las bandas base y las bandasde paso. Una banda base se define como el rango de frecuencias de una señal que no ha sidomodificada desde su origen, relativa por tanto al tipo de señal utilizada para modular unaportadora generalmente de mayor frecuencia, mientras que una banda de paso es el rangode frecuencias que, en teoría, pasarán por un filtro sin ser atenuadas.

Una onda portadora es una onda definida y periódica que se modula con una señal baseque necesita adaptarse a un medio para una comunicación, razón por la cual dicha ondaportadora es de mayor frecuencia que la máxima frecuencia de la banda base.

A la hora de muestrear señales analógicas para su tratamiento digital se utilizan las lla-madas señales muestreadoras. La señal muestreadora ideal (sδ(t) ó IIITs(t)) es un trende deltas, una función periódica definida en base la Delta de Dirac que se describe en elanexo D. Sin embargo, en la práctica, se implementa el tren de deltas con un tren de pulsosrectangulares con las consecuencias que se verán en el apartado 3.4.2.

5

6 3. FUNDAMENTOS TEÓRICOS

3.2 Representación de ondas en los dominios del tiempo y de la fre-cuencia

La ecuación 3.1 describe una onda sinusoidal pura, donde A es la amplitud, ω = 2πf lavelocidad angular, f es la frecuencia y ϕ la fase de oscilación inicial, todas constantes.

y(t) = A · sen(ωt+ ϕ)

Figura 3.1: Ecuación de onda sinusoidal pura

Según el análisis de Fourier cualquier onda periódica compuesta puede representarse comola suma de ondas sinusoidales cuyas frecuencias discretas son múltiplos de una determinadafrecuencia fundamental.

Las señales con las que se tratará son ondas de este tipo, por tanto representables por laecuación 3.2, donde f0 es la frecuencia fundamental o primer armónico, 2f0 el 2o armónicode f0, 3f0 el tercero, etc. Y el sumando A0 representa la componente continua de la señal,que se supone nula.

y(t) = A0 + A1 · sen(2πf0t+ ϕ1) + A2 · sen(2π2f0t+ ϕ2) + A3 · sen(2π3f0t+ ϕ3) + ...

Figura 3.2: Análisis de Fourier de una onda periódica compuesta

Lo anterior junto a las implicaciones de la fórmula de Euler (figura 3.3) son de sumaimportancia para el estudio y el tratamiento de señales.

ejα = cos(α) + jsen(α)

Para z = x+ jy

ez = exejy = ex(cos(y) + jsen(y))

Donde j es la unidad imaginaria que cumple j2 = −1 y α viene dado en radianes.

Figura 3.3: Fórmula de Euler

3. FUNDAMENTOS TEÓRICOS 7

3.2.1 Desarrollo en serie de FourierTeniendo en cuenta las ecuaciones 3.2 y 3.3, en términos generales una señal periódica

x(t) se puede expresar como combinación lineal de exponenciales complejas que se corres-ponden con frecuencias múltiplos de una misma frecuencia f0 = 1

T0. Usando una forma

exponencial compacta de la serie de Fourier se obtiene la expresión de la figura 3.4.

x(t) =+∞∑

n=−∞Cne

jnω0t

Figura 3.4: Desarrollo en serie de Fourier

Donde el producto nω0 es la velocidad angular de la componente enésima. Los coefi-cientes espectrales Cn, representan el valor de las componentes de la señal en el dominio defrecuencia y se calculan con la expresión:

Cn =1

T0

∫ T02

−T02

x(t)e−jnω0tdt

Figura 3.5: Coeficiente espectral

C0 es la componente continua, C1 la componente fundamental y los siguientes el resto dearmónicos.

Propiedades de los coeficientes espectrales CnSi x(t) es real, los coeficientes son complejos conjugados tal que C−n = Cn, con loque:

x(t) = C0 +∞∑n=1

2|Cn|cos(nω0t+ Φn)

Si x(t) es par (x(−t) = x(t)), los coeficientes Cn son reales.

Si x(t) es impar (x(−t) = −x(t)), los coeficientes Cn son imaginarios puros.

3.2.2 Transformada de FourierLa transformada de Fourier es una aplicación que hace corresponder una función compleja

en el dominio del tiempo (o el espacio), otra función en el dominio de la frecuencia. Es apli-cable en multitud de casos en ciencia e ingeniería y está normalizada según su aplicación.

Se puede usar la transformada de Fourier para el procesamiento de la señal. En base aldesarrollo de la serie de Fourier se tiene la expresión 3.6 en la que transforma x(t) en X(ω).

8 3. FUNDAMENTOS TEÓRICOS

Se cumple que ω = 2πf , siendo X(ω) la función compleja que define una señal en eldominio frecuencial y x(t) la función de la misma señal en el dominio temporal que en estecaso es real por motivos físicos.

X(ω) =∫ +∞

−∞x(t)e−jωtdt

Figura 3.6: Transformada de Fourier aplicada al procesamiento de señales

La aplicación inversa se define como en la figura 3.7.

x(t) =∫ +∞

−∞X(ω)ejωtdω

Figura 3.7: Transformada de Fourier Inversa aplicada al procesamiento de señales

La única diferencia entre la Transformada de Fourier y la Transformada de Fourier Inversaes el signo opuesto de sus exponentes.

3.2.3 Transformada de Fourier DiscretaEn el contexto de la codificación digital de señales transmitidas en el medio físico (varia-

ciones de tensión en un cable, una antena, etc.), se utilizan las versiones discretas de laTransformada de Fourier, Discrete Fourier Transform (figura 3.8) e Inverse Discrete Fourier

Transform (figura 3.9). Dadas secuencias de N muestras x(n) : 0 ≤ n ≤ N − 1 en el do-minio del tiempo discreto y X(k) : 0 ≤ k ≤ N − 1 en el dominio frecuencial discreto, ysustituyendo ω = 2πf , se relacionan entre sí mediante dichas transformadas.

X(k) =N−1∑n=0

x(n)e−j2πkn

N

Figura 3.8: DFT

x(n) =1

N

N−1∑k=0

X(k)ej2πknN

Figura 3.9: IDFT

3. FUNDAMENTOS TEÓRICOS 9

Los exponentes y factores de normalización en la DFT y la IDFT se establecen por con-venio según la aplicación. Se debe cumplir que dichos exponentes sean de signo opuesto yque el producto de los factores de normalización sea 1

N.

En el caso del procesamiento de señales, al aplicar los factores de normalización 1√N

y 1√N

se obtienen transformadas unitarias. Mientras que al usar 1 y 1N

sólo se realiza el escaladoen la IDFT por lo que es menos costoso computacionalmente.

Tanto por simplificación de la expresión como para facilitar la programación de un algo-ritmo eficiente para el cálculo de la DFT y la IDFT se recurre al concepto del Factor Twiddle(factor de fase), WN = e

−j2πN .

X(k) =N−1∑n=0

x(n)W knN

Figura 3.10: DFT (Factor Twiddle)

x(n) =1

N

N−1∑k=0

X(k)W−knN

Figura 3.11: IDFT (Factor Twiddle)

Teniendo en cuenta las propiedades de la DFT (en la sección 3.2.5), en el caso de la trans-misión se tiene un símbolo codificado para cada subportadora dando valores a X(k) segúnla tabla 3.1, por lo que usaremos la IDFT para obtener las muestras discretas de x(n).

k Símbolo correspondiente0 Componente continua1 Componente fundamental o 1a armónica2 2a armónica3 3a armónica... ...N/2 Componente de Nyquist... ...N-2 Conjugado de la 2a armónicaN-1 Conjugado de la fundamental o 1a armónica

Cuadro 3.1: Correspondencia de las componentes frecuenciales

10 3. FUNDAMENTOS TEÓRICOS

Como se ve en la tabla, X(0) es la componente continua (parte constante de la señal)que no porta información. X(N/2) se corresponde con la componente en la frecuencia deNyquist (explicado más adelante en 3.4.3). Los valores desde X(N/2 + 1) a X(N − 1) son,en orden inverso, los conjugados de X(1) a X(N/2− 1).

Se debe tener en cuenta que el número de subportadoras utilizadas y el de puntos de laDFT no son iguales, de hecho en la sección 3.4.1 se especificarán los requisitos que debecumplir la DFT en función del número de subportadoras entre otros factores.

3.2.4 Propiedades interesantes de WN

El factor Twiddle tiene algunas propiedades interesantes para la optimización del cálculode la DFT, se verá su aplicación al estudiar la FFT.

Periodicidad (W k+NN = W k

N )

W k+NN = e

−j2π(k+N)N = e

−j2πkN e−j2π = W k

N

ya que e−j2π = 1

Simetría (W k+N2

N = −W kN )

Wk+N

2N = e

−j2π(k+N2 )

N = e−j2πkN e−jπ = −W k

N

ya que e−jπ = −1.

Las siguientes expresiones, en particular, pueden resultar útiles para el desarrollo de losalgoritmos existentes:

(W kN = WN

ktal que k|N, N divisible entre k

)WN

k= e

−j2πNk = e

−j2πkN = W k

N

(W

n(k+N2)

N2

= W nkN2

tal que 2|N)

Wn(k+N

2)

N2

= e−j2πn(k+N2 )

N2 = e

−j2πnkN2 e−j2πn = W nk

N2

, ya que e−j2πn = 1

3.2.5 Propiedades interesantes de la DFT

Periodicidad

Se puede demostrar de forma trivial usando la fórmula de Euler (3.3) y la propiedad deperiodicidad de WN (sección 3.2.4).

3. FUNDAMENTOS TEÓRICOS 11

X(k) = X(k +N)

Figura 3.12: Periodicidad de la DFT

Simetría

La DFT de una señal real x(n) en tiempo discreto, X(k), presenta simetría par en su partereal y simetría impar en su parte imaginaria, lo que a su vez implica que X(0) y X(N/2)

son reales.

Generalizando y teniendo en cuenta la propiedad de periodicidad:

X(k) = X(N − k)

Figura 3.13: Simetría de la DFT

donde X(N − k) representa el conjugado de X(N − k).

3.3 Cálculo de la DFTEl algoritmo que se obtiene directamente a partir de la expresión matemática de la DFT

(apartado 3.3.1) es costoso computacionalmente, por lo que se aprovechan diversos hechosmatemáticos para definir otros algoritmos más rápidos que se engloban en la familia de algo-ritmos FFT (Fast Fourier Transform), se estudiarán algunos de ellos en el apartado 3.3.2.

En este trabajo se abordará únicamente la implementación del algoritmo directo y el FFTbase 2, siendo este último adecuado y suficientemente óptimo para nuestros objetivos. Dichatarea de implementación requiere el estudio y comprensión del método directo y de los fun-damentos de FFT base 2 en sí mismo. No obstante, en el apartado 3.3.2, se describirán agrandes rasgos FFT base 4 y FFT de base partida.

3.3.1 Cálculo directo de la DFTEl cálculo directo de la DFT se puede hacer mediante dos bucles recorriendo los valores

de k y n en los rangos correspondientes (ver sección 3.2.3). Se usará el valor del exponentedel factor Twiddle (−2π

N) y será multiplicado por los valores correspondientes de k y n en

cada iteración para realizar los cálculos según la fórmula de Euler (3.3).

Tal y como se ha expuesto en la sección 3.2.2 el cálculo de la DFT y la IDFT se puede im-plementar con un mismo procedimiento con muy pocas modificaciones. Para la IDFT, según

12 3. FUNDAMENTOS TEÓRICOS

el convenio elegido para este diseño, se debe cambiar de signo el factor Twiddle y se debeaplicar el factor de normalización 1/N .

Operando en el caso de la DFT para realizar el cálculo directo tenemos:

X(k) =N−1∑n=0

x(n)e−j2πkn

N =N−1∑n=0

x(n)

[cos

(−2πkn

N

)+ j · sen

(−2πkn

N

)]=

=N−1∑n=0

x(n)

[cos

(2πkn

N

)− j · sen

(2πkn

N

)]

Por tanto si x(n) = x<(n) + j · x=(n):

X<(k) =N−1∑n=0

[x<(n)cos

(2πkn

N

)+ x=(n)sen

(2πkn

N

)]

(a) Parte real

X=(k) =N−1∑n=0

[−x<(n)sen

(2πkn

N

)+ x=(n)cos

(2πkn

N

)]

(b) Parte imaginaria

Figura 3.14: Cálculo directo de la DFT

En el caso de la IDFT solamente cambian los roles de X(k) y x(n), y el signo de lossumandos en los que aparece la función seno, por lo que, en este aspecto, tampoco hayningún inconveniente en usar un procedimiento común para el cálculo de la DFT y la IDFT.Y como se ha mencionado, al tratar con señales físicas, la secuencia x(n) es real.

En el anexo A se adjunta una implementación en lenguaje C de una función para el cálculobásico de la DFT y su inversa.

3. FUNDAMENTOS TEÓRICOS 13

3.3.2 Cálculo de la DFT mediante FFT

El cálculo directo de la DFT es ineficiente ya que no aprovecha las propiedades del fac-tor Twiddle para reducir el coste computacional. Dicho cálculo incluye 2N2 operacionestrigonométricas, 4N2 multiplicaciones y 4N(N − 1) sumas con números reales. A este grannúmero de operaciones hay que sumar las necesarias para indexación y direccionamiento devariables.

Los algoritmos FFT más comunes para el cálculo de la DFT están basados en el de Cooley-Tukey. Dicho algoritmo, de tipo «divide y vencerás», se basa en expresar una DFT de Npuntos en términos de varias transformadas de tamaños N1, N2, ..., NM , de forma recursiva,tal que N = N1 ·N2 · . . . ·NM .

En el caso de la FFT el algoritmo de Cooley-Tukey se particulariza principalmente para loscasos en que los factores son iguales a un determinado número r llamado base del algoritmo:N = rM .

Los algoritmos FFT más utilizados, en el caso de la DFT, reciben el nombre de DIT (diez-mado en tiempo) en base 2, base 4 y base partida. Existen otros algoritmos similares a los dediezmado en tiempo que se basan en dividir recursivamente la secuencia de salida en lugarde la de entrada, motivo por el que son llamados algoritmos de diezmando en frecuencia(DIF). De hecho se obtiene un DIF al usar el DIT con las modificaciones necesarias parael cálculo de la IDFT: cambiar el signo de los factores de fase y dividir el resultado por N(según el factor de normalización que hemos elegido).

Algoritmo de diezmado en tiempo base 2 (DIT Radix-2)

El algoritmo DIT base 2, divide una transformada de N puntos (para N potencia de 2)en otras dos de tamaño N/2 de forma recursiva hasta llegar al caso base donde se tiene unaDFT trivial de dos puntos (figura 3.15).

X(0) =1∑

n=0

x(n)W 0·n2 = x(0) + x(1)

X(1) =1∑

n=0

x(n)W 1·n2 = x(0)− x(1)

Figura 3.15: Caso base del DIT base 2

El desarrollo de la DFT se realiza dividiendo la transformada en otras dos cuyos elementosse corresponden con los pares en un caso y los impares en otro, es decir:

14 3. FUNDAMENTOS TEÓRICOS

X(k) =N−1∑n=0

x(n)W knN =

N2−1∑

n=0

x(2n)Wk(2n)N +

N2−1∑

n=0

x(2n+ 1)Wk(2n+1)N

Si se tiene en cuenta que W k(2n+1)N = W

k(2n)N · W k

N , que el segundo factor de fase nodepende de n y que por tanto se puede sacar del sumatorio; queda la siguiente expresión paraun punto X(k):

X(k) =

N2−1∑

n=0

x(2n)W 2knN +W k

N

N2−1∑

n=0

x(2n+ 1)W 2knN

Además, aplicando la tercera propiedad de las enunciadas en el apartado 3.2.4 y con-siderando la definición de la DFT (3.8), es posible obtener la expresión 3.16; que junto conla 3.15 es fundamental para la programación del algoritmo.

X(k) =

N2−1∑

n=0

x(2n)W knN2

+W kN

N2−1∑

n=0

x(2n+ 1)W knN2

X(k) = Y (k) +W kN · Z(k)

Figura 3.16: División de X(k) en parte par e impar

En la expresión anterior, Y (k) y Z(k) son transformadas de tamaño N/2 que se puedenresolver de forma recursiva.

Se puede ver que para cada k solamente se debe calcular explícitamente el factor de faseW kN . Ya que el cálculo de los factores de fase W 2kn

N , que aparecen en los dos sumandos de laexpresión, es implícito y se obtiene en último término a partir del caso base (3.15).

Se cumple, por la propiedad de simetría del factor Twiddle (3.2.4), que para la segundamitad de la secuencia de salida:

X(k + N

2

)= Y

(k + N

2

)+W

k+N2

N · Z(k + N

2

)X(k + N

2

)= Y (k)−W k

N · Z(k)

Figura 3.17: Cálculo eficiente de la segunda mitad de la DFT

Es decir, el cálculo de la segunda mitad se puede realizar con la diferencia de los mismossumandos que en la primera.

3. FUNDAMENTOS TEÓRICOS 15

La representación gráfica de las operaciones de este algoritmo se puede realizar medianteun diagrama de «mariposa». La figura 3.18 es un ejemplo para una DFT de 8 puntos.

x(0)

x(1)

x(2)

x(3)

x(4)

x(5)

x(6)

x(7)

X(0)

X(1)

X(2)

X(3)

X(4)

X(5)

X(6)

X(7)

W80

W80

W80

W80

-1

-1

-1

-1

W80

W80

W82

W82

-1

-1

-1

-1

-1

-1

-1

-1

W80

W82

W81

W83

ETAPA 1 ETAPA 2 ETAPA 3

Figura 3.18: DIT base 2 de ocho puntos

Como se ve en el diagrama, las sucesivas operaciones sobre la transformada original cam-bian el orden de los índices en el resultado. Para facilitar el indexado eficiente de los datosde entrada del algoritmo se puede aprovechar el hecho de que si se toman como índices lascadenas binarias invertidas correspondientes a cada uno de los índices originales, el ordencreciente de los elementos según estos nuevos índices coincide con el que aparece al aplicarlas «mariposas». Esto se conoce como orden de bit invertido (bit-reversed order).

Índice de entrada Índice de salidax(0)→ x(0002) X(0)→ x(0002)

x(4)→ x(1002) X(1)→ x(0012)

x(2)→ x(0102) X(2)→ x(0102)

x(6)→ x(1102) X(3)→ x(0112)

x(1)→ x(0012) X(4)→ x(1002)

x(5)→ x(1012) X(5)→ x(1012)

x(3)→ x(0112) X(6)→ x(1102)

x(7)→ x(1112) X(7)→ x(1112)

Cuadro 3.2: Orden de bit invertido en una DFT de 8 puntos

En teoría el orden de los factores Twiddle es igual al tamaño de la mariposa en cada etapa,en la práctica y como se ve en la figura 3.18, es suficiente con calcular los primeros N/2factores de orden N por equivalencia según las propiedades enumeradas en la sección 3.2.4.En el anexo B se adjunta una implementación en lenguaje C del algoritmo FFT base 2.

16 3. FUNDAMENTOS TEÓRICOS

A modo de ejemplo, sea x(n) una secuencia de 8 puntos de una señal en el dominiotemporal, x′(n) la misma secuencia en orden de bit invertido y X(k) su transformada deFourier. En la tabla 3.3 se puede ver el resultado de cada una de las tres etapas del algoritmoDIT de base 2 para dicha secuencia.

x(n) x′(n) Etapa 1 Etapa 2 Etapa 31,00000 1,00000 1,56472 2,74057 5,11631

0,86688 0,56472 0,43528 0,435− 0,327j 0,500− 0,794j

0,75148 0,75148 1,17585 0,389 0,389− 0,337j

0,65144 0,42437 0,32711 0,435 + 0,327j 0,369− 0,140j

0,56472 0,86688 1,35642 2,3757 0,36483

0,48954 0,48954 0,37734 0,377− 0,283j 0,369 + 0,140j

0,42437 0,65144 1,01932 0,337 0,369 + 0,337j

0,36788 0,36788 0,28356 0,337 + 0,283j 0,500 + 0,794j

Cuadro 3.3: Ejemplo de DIT base 2 para una DFT de 8 puntos.

Cálculo de los factores Twiddle:

W 08 = 1

W 18 = e

−j2π8 =

√22 −

√22 j

W 28 = e

−j4π8 = −j

W 38 = e

−j6π4 = −

√22 −

√22 j

Obtención de la etapa 1:

1,00000 + 0,56472 = 1,56472 1,00000− 0,56472 = 0,43528

0,75148 + 0,42437 = 1,17585 0,75148− 0,42437 = 0,32711

0,86688 + 0,48954 = 1,35642 0,86688− 0,48954 = 0,37734

0,65144 + 0,36788 = 1,01932 0,65144− 0,36788 = 0,28356

Obtención de la etapa 2:

Siguiendo la primera mariposa de la etapa 2 tenemos:

1,56472 +W 08 · 1,17585 = 2,74057

0,43528 +W 28 · 0,32711 = 0,43528− 0,32711j

1,56472−W 08 · 1,17585 = 0,389

0,43528−W 28 · 0,32711 = 0,43528+ 0,32711j

La segunda mariposa se realiza de forma análoga.

Para la tercera etapa, como puede verse en la figura 3.18, se utilizan los 4 factores Twiddlede orden 8 que han sido calculados.

3. FUNDAMENTOS TEÓRICOS 17

Algoritmo de diezmado en tiempo base 4 (DIT Radix-4)

De forma similar al caso anterior, DIT base 4 divide una DFT con número de puntosN potencia de 4 en cuatro transformadas de tamaño N/4. El resultado es la disminucióndel número de multiplicaciones y el aumento del número de sumas. Para una DFT de lascaracterísticas indicadas es más eficiente que usar DIT base 2.

En [PM03], tras estudiar el algoritmo y definir las particiones de la transformada, se ob-tienen las expresiones de la figura 3.19 para el cálculo de la FFT. Donde X(4k) y X(4k+ 2)

agrupan los elementos pares, y X(4k + 1) junto con X(4k + 3) los impares.

X(4k) =

N4−1∑

n=0

[x(n) + x

(n+

N

4

)+ x

(n+

N

2

)+ x

(n+

3N

4

)]W 0NW

knN4

X(4k + 1) =

N4−1∑

n=0

[x(n)− jx

(n+

N

4

)− x

(n+

N

2

)+ jx

(n+

3N

4

)]W nNW

knN4

X(4k + 2) =

N4−1∑

n=0

[x(n)− x

(n+

N

4

)+ x

(n+

N

2

)− x

(n+

3N

4

)]W 2nN W kn

N4

X(4k + 3) =

N4−1∑

n=0

[x(n) + jx

(n+

N

4

)− x

(n+

N

2

)− jx

(n+

3N

4

)]W 3nN W kn

N4

Figura 3.19: División de X(k) en cuatro partes

Algoritmo FFT de base partida (SRFFT)

Es posible aprovechar el hecho de que se puedan calcular de forma independiente lospuntos pares e impares de una DFT para optimizar aún más el cálculo. Dado que la parte parsolamente requiere operaciones de suma puede realizarse más eficientemente usando DITbase 2. Sin embargo para la parte impar resulta más eficiente hacerlo mediante DIT base 4ya que contiene las operaciones de multiplicación.

Ya que DIT base 4 tiene la «mariposa» más grande libre de multiplicaciones, para estemétodo, es óptimo tomar casos base de cuatro puntos. Una base mayor que 4 no resulta enmayor eficiencia, ver [PM03].

* * *

Como se ha explicado al principio de esta sección y a pesar de las mejoras expuestas, losalgoritmos FFT base 4 y FFT de base partida no se compararán ni serán implementados.

18 3. FUNDAMENTOS TEÓRICOS

3.3.3 Comparación temporal de la DFT y la FFT base 2En la tabla 3.4 se comparan las complejidades del cálculo directo de la DFT frente al

cálculo usando la FFT base 2.

Sumas complejas Multiplicaciones complejasDFT directa N(N − 1) N2

FFT base 2 N · log2N N2 · log2N

Cuadro 3.4: Complejidad de los métodos de cálculo de la DFT

Teniendo esto en cuenta se pueden esperar resultados como los de la tabla 3.5. Los datoshan sido obtenidos por el programa del anexo C.1 para los algoritmos directos y los de laFFT base 2.

DFT IDFT FFT base 2 IFFT base 21024 106,14ms 100,38ms 184,26µs 178,16µs

2048 387,08ms 387,22ms 353,43µs 358,84µs

4096 1,52s 1,52s 726,24µs 759,09µs

16384 23,99s 24,11s 3,26ms 3,37ms

Cuadro 3.5: Resultados de la comparativa de algoritmos de cálculo de la DFT

En la figura 3.20, en la que está representada la tabla 3.5, se puede apreciar que en cadaalgoritmo la transformada y su inversa quedan prácticamente superpuestas y que el FFT,además de suponer un importante ahorro en coste computacional, tiene una pendiente menoren función del número de puntos de la transformada.

178 µs

3 ms106 ms

24.1 s

1024 2048 4096 16384

Coste

tem

pora

l

Número de puntos

DFTIDFTFFTIFFT

Figura 3.20: Comparativa entre algoritmos para el cálculo de la DFT

La eficiencia de los algoritmos puede variar con la implementación del circuito, pero elnúmero de operaciones a realizar y su importancia para el tiempo de ejecución tienen bas-tante peso en la comparación de éstos.

3. FUNDAMENTOS TEÓRICOS 19

3.4 Análisis espectralEn esta sección se revisarán algunos de los conceptos vitales para la comprensión del pro-

ceso de muestreo de una señal que posibilita su análisis de Fourier en un sistema digital.

3.4.1 Resolución espectral de la DFT y frecuencia de muestreoPara una DFT de N puntos se llama resolución espectral4f0 a la diferencia de frecuencia

entre dos puntos de X(k).

Siendo T0 el tiempo de observación (T0 = 14f0 ) de la señal, supuesta periódica. Y la

frecuencia de muestreo fs, inversa del periodo de muestreo Ts. Teniendo en cuenta que T0 =

NTs se puede calcular:

fs =1

Ts=N

T0

Figura 3.21: Frecuencia de muestreo

4f0 =1

T0=

1

NTs=fsN

Figura 3.22: Resolución espectral y frecuencia de muestreo

Como se puede observar, la resolución espectral es N veces menor que la frecuencia demuestreo.

Por otro lado, teniendo en cuenta 4f0 y la frecuencia máxima sobre la que codificar in-formación, se tendrá que obtener una fs mínima válida. Tampoco convendrá aumentar dichafrecuencia más de lo necesario ya que se obtendría una DFT de más puntos. El Teorema deMuestreo (sección 3.4.3) proporciona un criterio para elegir fs.

En el siguiente apartado (3.4.2) que describe el proceso por el cual se obtiene una señaldiscretizada y periódica a partir de una señal continua de ejemplo, se puede apreciar gráfica-mente el papel la resolución espectral y de la frecuencia de muestreo utilizadas.

20 3. FUNDAMENTOS TEÓRICOS

3.4.2 Demostración: obtención de una señal discreta periódica a partir deuna señal continua

Dada una señal x(t) y su transformada de Fourier X(f), ambas representadas en la tabla3.6-1, se procede a explicar el proceso por el cual la señal continua se muestrea y trunca paraobtener una señal discreta periódica y su transformada en la tabla 3.6-7.

Resulta oportuno aclarar que la multiplicación de dos señales en el dominio temporalimplica la convolución de sus espectros en el dominio frecuencial. Ver [PM03] para másinformación.

En primer lugar, en la tabla 3.6-2 aparecen la representación de un tren de deltas de pe-riodo Ts en el dominio temporal y su espectro, otro tren deltas de periodo inverso fs. Lademostración de esta transformada de Fourier se adjunta en el anexo F. Dicho tren de deltases la función muestreadora ideal.

En la tabla 3.6-3 se representa, también en ambos dominios, la señal muestreada. En eldominio del tiempo la función resultante es el producto de x(t) y IIITs(t). Y de formaanáloga, en el dominio frecuencial, se obtiene la convolución deX(f) y IIIfs(f). Se obtieneuna función periódica en el dominio frecuencial, ya que la convolución de una señal con unadelta centrada en un punto cualquiera es la señal original desplazada a dicho punto.

La señal se trunca con un pulso rectangular de longitud T0 cuya transformada de Fourieres la función «sinc» normalizada (figura 3.23), se incluye la demostración en el anexo E. Susrepresentaciones se encuentran en la tabla 3.6-4.

sinc(x) =sen(xπ)

Figura 3.23: Función «sinc» normalizada o seno cardinal normalizada

Por otro lado, en la tabla 3.6-5, se representan las funciones resultantes para la señal trun-cada donde podemos ver que en el dominio frecuencial aparece un «rizado» como conse-cuencia de la convolución con la función «sinc».

Finalmente, para obtener una función periódica en el dominio temporal y una funcióndiscretizada en el dominio frecuencial (tabla 3.6-7), se utilizan de nuevo las correspondientesoperaciones de multiplicación y convolución con sendos trenes de deltas de periodos T0 enel dominio del tiempo y ∆f0 en el dominio de la frecuencia (tabla 3.6-6).

3. FUNDAMENTOS TEÓRICOS 21

Dominio del tiempo Dominio de la frecuencia

1 0

x(t)

t

0

X(f)

f

2

1

-Ts Ts 0

IIITs(t)

t

fs

-fs fs 0

IIITs(f)

f

3 -Ts Ts 0

x(t) x IIITs(t)

t

-fs -fs/2 fs/2 fs 0

X(f) * IIITs(f)

f

4

1

-Ts/2 Ts/2 0

(t)

t

T0

0

sinc(f)

f

5 0

x(t) x IIITs(t) x Π(t)

t

-fs -fs/2 fs/2 fs 0

X(f) * IIITs(f) * sinc(f)

f

6

T0

-T0 T0 0

IIIT0(t)

t

1

- f0 f0 0

IIIT0(f)

f

7 N muestras

x(n)

t

N muestras

X(k)

f

Cuadro 3.6: Demostración: transformada de Fourier de una señal continua aperiódica

22 3. FUNDAMENTOS TEÓRICOS

3.4.3 Teorema de muestreo de Nyquist-ShanonEl teorema de muestreo de Whittaker-Nyquist-Kotelnikov-Shannon demuestra que es posi-

ble reconstruir de forma exacta una señal periódica continua en banda base si la señal estálimitada en banda y la frecuencia de muestreo es, al menos, el doble de la frecuencia máximade sus componentes.

fs ≥ 2fmax

Figura 3.24: Criterio de Nyquist para la frecuencia de muestreo

Lo descrito en la figura 3.24 es equivalente a decir que la máxima frecuencia a considerar(la del último tono) sea precisamente la frecuencia de Nyquist (índice N/2 para N par).Si se consideran frecuencias superiores a la de Nyquist se distorsionan las frecuenciasinferiores. Este efecto, por el que dos señales distintas se hacen indistinguibles, se llamaaliasing, Efecto Nyquist o error de solapamiento.

Sin embargo, en la práctica es usual definir frecuencias de muestreo superiores a la indi-cada por el criterio de Nyquist en función de la eficacia de los circuitos de filtro de la señaly de otros requisitos que se puedan presentar en base a los algoritmos utilizados. Como severá más adelante, muestrear a frecuencias muy superiores a las que establece el criterio deNyquist dota al diseño del módem objeto de este trabajo de gran inmunidad al ruido.

Es decir, los tres primeros puntos de la tabla 3.6 son también la demostración gráfica delteorema de muestreo. Sobre el gráfico de la tabla 3.6-3 en el dominio frecuencial, si no sehubiese respetado el criterio de Nyquist, se solaparían las repeticiones del espectro originalX(f).

En el caso que nos ocupa, un módem DMT, tendremos que tener en cuenta que paracada código transmitido se asignará un par de valores para la amplitud y para la fase. Se hamencionado anteriormente que tanto el valor de X(k) para la componente continua comopara k = N

2son reales, por lo que no portarán datos.

3. FUNDAMENTOS TEÓRICOS 23

3.5 Esquemas básicos de modulación

La modulación es el proceso por el cual se modifica una determinada señal que será usadacomo onda portadora para codificar en ella la información de una comunicación. De laspropiedades de una onda se deducen los esquemas básicos de modulación, que se basan enproducir cambios en la amplitud, la frecuencia o la fase de la señal portadora.

En señales analógicas tenemos respectivamente los esquemas de modulación AM, FMy PM; y en señales digitales sus correspondientes discretos: ASK, FSK y PSK; en inglésAnalog, Frequency y Phase Shift Keying.

Los esquemas de modulación en frecuencia y fase reciben el nombre de modulacionesangulares.

La modulación analógica en amplitud es usualmente de doble banda lateral, es decir, lamoduladora se transmite en dos bandas diferentes de forma redundante, por encima (USB)y por debajo (LSB) de la portadora.

Existen otros esquemas de modulación analógica en amplitud entre los que están DSB-SC(doble banda lateral con portadora suprimida) y SSB-SC (banda lateral única con portadorasuprimida), más eficientes energéticamente al no reinsertar la portadora y en el caso de SSB-SC se elimina además información redundante al modular la señal en una sola banda lateral.Pero esto tiene como consecuencia que la fabricación de dispositivos DSB-SC o SSB-SCconlleve mayor coste ya que se requiere circuitería más compleja en el receptor, que entreotras cosas, tiene que volver a generar la portadora.

Otros tipos de modulación como QAM (estudiado en el siguiente apartado) o la modula-ción polar son esquemas más complejos que combinan varias formas de modulación básicascomo las descritas en este apartado.

3.6 Modulación Discreta Multitono (DMT)

La Modulación Discreta Multitono, en inglés Discrete Multi-tone Modulation (DMT),también llamada Multiplexación por División de Frecuencias Ortogonales, en inglés OFDM

(Orthogonal Frequency Division Multiplexing) es un método de multiplexación de infor-mación que consiste en la utilización de un conjunto de ondas subportadoras de diferentesfrecuencias, en cada una de las cuales se modula la información en QAM o PSK.

En la figura 3.25 se pueden ver comparadas las componentes frecuenciales de una señalmultitono de frecuencias no ortogonales, otra en la que las frecuencias sí que lo son y otracon la señal resultante; en ese orden.

24 3. FUNDAMENTOS TEÓRICOS

f

f

Figura 3.25: Comparación entre pulsos en frecuencias ortogonales y no ortogonales

Se puede observar en la segunda gráfica que en cada pico generado para una subportadora,marcado por una barra roja vertical, la amplitud para el resto de señales es nula.

Para otro grupo de señales de ejemplo en función del tiempo en la figura 3.26 observamosque, pese a las diferentes frecuencias de las componentes, para un número entero de ciclosel valor total si integramos las áreas es nulo.

t

Figura 3.26: Frecuencias ortogonales superpuestas

El hecho de que las frecuencias sean ortogonales hace posible que puedan solaparse y queaún así se puedan obtener los símbolos codificados en cada subportadora.

3. FUNDAMENTOS TEÓRICOS 25

3.6.1 PSKLa Modulación por Desplazamiento de Fase (Phase Shift Keying) es un esquema de mo-

dulación digital que consiste en hacer variar la fase de la señal portadora entre un númerodeterminado de valores discretos.

Algunos de los tipos de modulación PSK más comunes son BPSK (PSK binario con sep-aración de 180o) y QPSK (PSK cuaternario o en cuadratura, con separación de 90o). BPSKy QPSK, en la práctica, son equivalentes a 2-QAM y 4-QAM.

3.6.2 QAMLa Modulación de Amplitud en Cuadratura (Quadrature Amplitude Modulation) es un es-

quema de modulación tanto digital como analógico que combina la modulación en amplitud(doble banda lateral con supresión de portadora) con la modulación en fase.

En caso que nos ocupa, las comunicaciones digitales, se combinan ASK y PSK sumandoseñales desplazadas en fase previamente moduladas en amplitud. La variación del número devalores discretos para las amplitudes y las fases define el número de símbolos que se puedencodificar, según esto se habla de 8-QAM, 16-QAM, 256-QAM, etc.

Por ejemplo, si fijamos el número de amplitudes an a 2 y el de fases pn a 4 podremos codi-ficar 8 símbolos diferentes. Para secuencias de bits esto supondría cubrir el rango [0002, 1112].En general, cada subportadora puede codificar secuencias binarias de longitud dada por laexpresión 3.27.

BITS_SUBPORTADORA = log2(an · pn)

Figura 3.27: Número de bits por portadora

Volviendo a DMT, el número de subportadoras cn determinará a partir de la expresión3.27 el tamaño de la secuencia de bits por trama (3.28).

BITS_TRAMA = cn ·BITS_SUBPORTADORA = cn · log2(an · pn)

Figura 3.28: Número de bits por trama

Se puede representar gráficamente la codificación para un esquema de modulación QAMmediante un diagrama de constelación. Para ello se representan los símbolos o puntos deconstelación usando coordenadas cartesianas, donde usualmente el eje de las abscisas esllamado «I» (en fase) y el de ordenadas «Q» (en cuadratura, 90o).

26 3. FUNDAMENTOS TEÓRICOS

I

Q

0000 0100

0001

0010

0011

0101

0110

0111

10001100

1001

1010

1011

1101

1110

1111

Figura 3.29: Ejemplo de diagrama de constelación para 16-QAM

A menudo no se utilizan todos los estados posibles para unos valores de amplitud y fasedados, de hecho un esquema QAM de un determinado número de puntos puede ser im-plementado con diversas constelaciones. Se pueden considerar esquemas de QAM digitalrectangulares, circulares con diversas distribuciones, etc. Cada constelación tiene sus conse-cuencias en cuanto a la complejidad de procesamiento o la tasa de error de bit.

En la figura 3.29 se puede apreciar un diagrama de constelación para 16-QAM cuadrado.Las constelaciones QAM cuadradas no maximizan la utilización del espacio de los puntospero es más sencilla su implementación. Los esquemas circulares son óptimos ya que re-quieren la mínima potencia promedio para una determinada «distancia» mínima entre dospuntos.

Con QAM, cuanto menor es el número de valores posibles para las amplitudes y las fas-es mayor es la «distancia» a la que se pueden colocar los símbolos para una determinadapotencia de transmisión.

Gráficamente, si en un diagrama de constelación se representan los valores muestreadossegún sus coordenadas se puede comprobar a cuál de los símbolos está más cercano cadauno de ellos. Por tanto, cuanto mayor sea la densidad de símbolos en el diagrama más difícilserá decidir con exactitud la correspondencia con las muestras de la señal, menor será lainmunidad al ruido del sistema.

Este hecho es de suma importancia ya que, junto con el número de subportadoras uti-lizadas, la cantidad de símbolos que se pueden codificar en cada una de ellas afecta a lacantidad de datos que se pueden transmitir por unidad de tiempo. Pero también afecta, deforma inversa, a la inmunidad frente al ruido en la señal a la hora de muestrearla en recep-ción. Dicha relación podrá ser medida en la simulación del diseño.

3. FUNDAMENTOS TEÓRICOS 27

3.7 Energía y potencia de una señalEl estudio riguroso de los conceptos de energía y potencia de una señal se extendería

demasiado, por lo que en esta sección se darán expresiones básicas para entender su uso eneste trabajo.

La potencia de una señal es una magnitud medida en vatios (Watt = J/s) e indica laenergía necesaria por unidad de tiempo para enviar dicha señal. La potencia limita además,dado un cierto factor de atenuación del medio de propagación, el alcance de la señal. Mien-tras que la energía, siendo una magnitud asociada, es atemporal y medida en julios (J).

Se dice que una señal x(t) es de energía si su energía total Ex es finita y mayor que cero, ysu potencia promedio total Px igual a 0. Por otro lado, si una señal x(t) tiene una Ex infinitay una Px finita y mayor que cero, se dice que es una señal de potencia.

En particular, para la energía y potencia de una señal discreta x(n) y suponiendo unaimpedancia de 1Ω se cumplen las siguientes expresiones (ver [Alv11]):

Ex =∞∑

n=−∞|x(n)|2

Figura 3.30: Energía de una señal discreta no periódica

Px = lımN→∞

1

2N + 1

N∑n=−N

|x(n)|2

Figura 3.31: Potencia de una señal discreta no periódica

Para un número determinado de muestras, N :

Px =1

N

N−1∑n=0

|x(n)|2

Figura 3.32: Potencia de una señal discreta (N muestras)

La expresión 3.32 es aplicable en el módem DMT a la señal en el dominio temporal.

28 3. FUNDAMENTOS TEÓRICOS

Dada una señal sinusoidal x(t) = A · cos(2πf0t), periódica y continua, tiene una energíatotal infinita y una potencia promedio total dada por la expresión:

Px =1

T0·(A2

2· T0

)=A2

2

Figura 3.33: Potencia de una señal sinusoidal

La expresión 3.33 es aplicable en el módem DMT a las componentes del espectro de laseñal en el dominio temporal.

3.8 Relación señal/ruidoLa relación señal/ruido o SNR (Signal-to-Noise Ratio), se define como la proporción entre

la potencia de una señal y la potencia del ruido que afecta a dicha señal en el medio detransmisión. Esta relación medida en decibelios (dB), viene dada por la expresión 3.34 dondeS es la potencia de la señal y R la potencia del ruido.

SNRdB = 10 · log(S

R

)

Figura 3.34: Relación señal/ruido

Se utilizará el concepto de la relación señal/ruido para valorar la respuesta en simulacióndel módem a cierto nivel de ruido.

Capítulo 4

Simulación

U NA vez expuestos los fundamentos teóricos del diseño de un módem DMT se procedea la implementación del software de simulación y posteriormente a la ejecución de

los casos de simulación marcados como objetivo. La medición de la relación señal/ruido du-rante la simulación permitirá experimentar de forma aislada la influencia de los parámetrosde modulación en la inmunidad al ruido.

4.1 Metodología de desarrollo de softwareEn esta fase del trabajo se utilizará la metodología de prototipado que se basa en una inves-

tigación inicial previa a varios ciclos de investigación de requisitos, diseño y codificación quellevan de forma progresiva a un modelo del software que cumpla con todos los requisitos.

Investigacióninicial

Investigaciónde requisitos

Codificación

Modelo aimplementar

Diseño

Dicha metodología permite evaluar de forma exhaustiva la satisfacción de requisitos yfuncionalidades en cada modelo generado, del más simple al más complejo que incluirátodas las funcionalidades previstas y servirá para llevar a cabo la implementación.

Es importante que el modelo final sirva de referencia para una implementación limpia delsoftware ya que el hecho de reutilizar dicho modelo repercute negativamente en la calidadfinal de la implementación.

29

30 4. SIMULACIÓN

4.2 Decisiones de diseño del software de simulaciónEn este punto se puede considerar el estudio de los fundamentos teóricos realizado en

capítulo 3 como un análisis del problema y un establecimiento inicial de requisitos, portanto, se procede con el diseño del software de simulación.

Tras el proceso de desarrollo, se extrae el resumen de las decisiones de diseño que handado forma al modelo implementado.

4.2.1 Verificación de datos de entradaDurante la ejecución de los programas se comprueba que los parámetros de configuración

respeten el criterio de Nyquist (3.4.3) y que el número de bits de la trama sea coherente conel número de estados de codificación.

Del mismo modo, dados los requisitos que impone el algoritmo FFT base 2, se compruebaque el número de muestras a tratar sea potencia de dos. Si no lo es, se adapta a la poten-cia de dos inmediatamente superior y se utiliza la frecuencia de muestreo proporcionadapor el usuario para adaptar la resolución espectral. Dicha operación modifica, por tanto, lasfrecuencias reales de los canales y será notificada al usuario.

4.2.2 Codificación de tramasPara realizar la codificación de tramas, o mapeo de constelación, se toman las tuplas de

la menos significativa a la más significativa (little-endian) en el tipo de datos. Siguiendo eseorden, se hacen corresponder las tuplas con las subportadoras en orden creciente.

En transmisión se emplea la expresión 3.2 simplificada para generar el espectro. Mientrasque en recepción se inicializa una matriz de símbolos para comparar las muestras espectralesrecibidas y determinar los bits correspondientes.

4.2.3 EstructuraEl simulador consiste en dos programas principales que comparten el código del módem

dividido en varios módulos, siendo los más importantes el de manejo de datos de entrada ysalida, cálculo de la Transformada Discreta de Fourier (anexos A y B), codificación y el desimulación y análisis de ruido. Un tercer programa permite generar estadísticas útiles paravalorar la respuesta del módem DMT a cierto nivel de ruido.

Las tres partes del software de simulación serán implementadas en ejecutables separados(simu-tx, simu-rx y simu-stats respectivamente) para simplificar las líneas de órdenesy el propio diseño, haciendo uso de las técnicas de reutilización de código que posibilita laestructura modular elegida para evitar redundancia en el código fuente.

4. SIMULACIÓN 31

4.3 ImplementaciónDebido a las necesidades de hacer operaciones de bajo nivel y de tener la capacidad de

poder tratar con grandes volúmenes de datos, y dada la simplicidad de las estructuras dedatos que se requieren, se opta por la implementación en lenguaje C. Una implementaciónen C++ se ha estimado demasiado compleja considerando el uso de las estructuras de datosdefinidas en los tres programas principales, tanto en implementación como en el uso derecursos.

El código fuente generado se puede consultar en el repositorio correspondiente (apéndiceC.2).

A continuación se explican las principales decisiones de implementación.

4.3.1 Tipos y estructuras de datosLos tipos de la biblioteca estándar de C son suficientes para abordar el diseño propuesto,

sin embargo, no se utilizará el tipo complex sino matrices bidimensionales. Esta decisión deimplementación se ha tomado considerando el tipo de operaciones a realizar con los datos yen las posibilidades de optimización en los cálculos que requieren partes reales, imaginariaso ambas.

Para minimizar el número de parámetros de las funciones y para las estructuras de datosdefinidas para la entrada del módem y de la línea de órdenes se ha recurrido a las estructurasdel lenguaje C, ya que solamente se requiere agrupar variables de tipos diferentes.

4.3.2 Enfoque de implementación del algoritmo FFT base 2Se ha optado por un enfoque iterativo y el aprovechamiento de la aritmética de punteros.

Se hace una descripción más detallada de dicha implementación en el anexo B.

4.3.3 Generación de gráficasPara la generación opcional de gráficas en la simulación del proceso de transmisión se hace

uso de gnuplot. Los scripts para gnuplot se encuentran en el directorio llamado gnuplotdel directorio activo durante la ejecución, por lo que es recomendable ejecutar el softwaredesde el directorio principal de compilación.

32 4. SIMULACIÓN

4.4 Requisitos de compilación y ejecuciónLos requisitos de compilación son el compilador gcc y la utilidad make. Y los de ejecución

un emulador de terminal POSIX y, opcionalmente, gnuplot.

En un sistema operativo GNU/Linux con gestor de paquetes dpkg y haciendo uso de laaplicación aptitude basta ejecutar:

1 # aptitude install gcc make gnuplot−qt

Para la instalación con gestor de paquetes rpm y haciendo uso de la aplicación yum:

1 # yum install gcc make gnuplot−qt

También deberán de ser instalados los paquetes necesarios para la compilación cruzada encada sistema operativo si se usan los scripts «Makefile.32» o «Makefile.64» incluidos paratal efecto en el código fuente.

4.5 Uso del software de simulaciónLos ejecutables pueden ser configurados en cuanto al algoritmo usado para el cálculo de

la DFT, el factor de normalización utilizado en dichos algoritmos y el nivel de ruido añadidoa la señal generada para transmisión.

El esquema de modulación y el resto de parámetros del módem DMT pueden especificarsetanto con un archivo de texto como de forma interactiva. Las posibilidades de modulaciónincluyen QAM circular no optimizado, ASK y PSK; dependiendo del número de valoresposibles de amplitud y fase indicados en los parámetros de configuración.

Uso del programa de simulación del proceso de transmisiónEl programa debe usarse en un sistema compatible con la interfaz POSIX. En el listado 4.1

se detallan los argumentos que puede recibir el ejecutable.

1 Simulation program for DMT modem transmission process .

3 Usage: [−i <configuration_file >] −o <output_file > [−a <algorithim >]4 [−f <normalization_method >] [−n <noise_peak_amplitude >] [−p] [−

h]

6 Options :7 −i: Optional configuration file.8 If not specified program will ask for

configuration9 parameters .

10 −o: Required output file.11 −a: DFT algorithm to use: dft or fft (lower case).

4. SIMULACIÓN 33

12 ( default : fft)13 −f: Normalization factor to use (lower case):14 unitary : Unitary transform .15 direct : Divides by N in direct transform .16 inverse : Divides by N in inverse transform .17 force <M>: Calculates normalization factor to

produce a18 time−domain amplitude not greater

than M.19 ( default : inverse )20 −n: Noise maximum amplitude (V). ( default : 0)21 −p: If specified , program will plot results ( gnuplot

required ).22 −h: This help message .

24 Configuration file format :25 <frame > ( dec | hex | oct )26 <number_of_subcarriers >27 <number_of_amplitude_values >28 <number_of_phase_values >29 <sampling_frequency > (Hz)30 <spectral_resolution > (will be adapted ) (Hz)

32 David Valero Jimenez33 University of Castilla − La Mancha , Ciudad Real , Spain

Listado 4.1: Uso de simu-tx

Uso del programa de simulación del proceso de recepción

El programa debe usarse en un sistema compatible con la interfaz POSIX. En el listado 4.2se detallan los argumentos que puede recibir el ejecutable.

1 Simulation program for DMT modem reception process .

3 Use: −i <input_file > [−a <algorithim >] [−f <normalization_factor >] [−h]

5 Options :6 −i: Required input file.7 −a: DFT algorithm to use: dft or fft (lower case).8 ( default : fft)9 −f: Normalization factor to use (lower case):

10 unitary : Unitary transform .11 direct : Divides by N in direct transform .12 inverse : Divides by N in inverse transform .

34 4. SIMULACIÓN

13 force <M>: Calculates normalization factor toproduce a

14 time−domain amplitude not greaterthan M.

15 ( default : inverse )16 −h: This help message .

18 Input file format (as generated by transmission program ):19 <number_of_subcarriers >20 <number_of_amplitude_values >21 <number_of_phase_values >22 <sampling_frequency > (Hz)23 <spectral_resolution > (will be adapted ) (Hz)24 <xR (0) >25 <xR (1) >26 ...27 <xR(N−1)>

29 David Valero Jimenez30 University of Castilla − La Mancha , Ciudad Real , Spain

Listado 4.2: Uso de simu-rx

Uso del programa generador de estadísticas

El programa debe usarse en un sistema compatible con la interfaz POSIX. En el listado 4.3se detallan los argumentos que puede recibir el ejecutable.

1 Simulation statistics program for DMT modem.

3 Usage: −t <number_of_tests > −n <noise_peak_amplitude > [−i <configuration_file >]

4 [−a <algorithim >] [−f <normalization_method >] [−h]

6 Options :7 −t: Number of tests to run.8 −n: Noise maximum amplitude (V).9 −i: Optional configuration file.

10 If not specified program will ask forconfiguration

11 parameters .12 −a: DFT algorithm to use: dft or fft (lower case).13 ( default : fft)14 −f: Normalization factor to use (lower case):15 unitary : Unitary transform .16 direct : Divides by N in direct transform .

4. SIMULACIÓN 35

17 inverse : Divides by N in inverse transform .18 force <M>: Calculates normalization factor to

produce a19 time−domain amplitude not greater

than M.20 ( default : inverse )21 −h: This help message .

23 Configuration file format :24 <frame > ( dec | hex | oct )25 <number_of_subcarriers >26 <number_of_amplitude_values >27 <number_of_phase_values >28 <sampling_frequency > (Hz)29 <spectral_resolution > (will be adapted ) (Hz)

31 David Valero Jimenez32 University of Castilla − La Mancha , Ciudad Real , Spain

Listado 4.3: Uso de simu-stats

36 4. SIMULACIÓN

4.6 Ejecución de los casos de simulación propuestosSe procede a definir los archivos de configuración para los dos casos de simulación que se

compararán, así como a especificar los comandos para lanzar la simulación.

Se usará el algoritmo FFT base 2 (algoritmo por defecto) y, para cada uno de niveles deruido que se elijan, se ejecutarán 10000 pruebas para generar las estadísticas de cada caso desimulación.

Caso de simulación 1Dados los parámetros de configuración (figura 4.1a) y eligiendo una frecuencia de muestreo

de 12800Hz, se obtiene una transformada de 64 puntos.

Subportadoras 10Rango 200-2000 HzAmplitudes 2Fases 4Bits de trama 30Trama 0x1682BD39

(a) Parámetros

1 0x1682BD392 103 24 45 128006 200

(b) Archivo «test1.dat»

Figura 4.1: Configuración caso de simulación 1

Comandos para la ejecución de las pruebas

1 $ bin/simu−tx −i test1.dat −o samples1 .dat

Figura 4.2: Caso 1: Simulación del proceso de transmisión

1 $ bin/simu−tx −i test1.dat −o samples1 .dat −p

Figura 4.3: Caso 1: Simulación del proceso de transmisión con generación de gráfica

1 $ bin/simu−rx −i samples1 .dat

Figura 4.4: Caso 1: Simulación del proceso de recepción

1 $ bin/simu−stats −i test1.dat −n <amplitud_maxima_ruido > −t <numero_tests >

Figura 4.5: Caso 1: Estadísticas de respuesta al nivel de ruido

4. SIMULACIÓN 37

Caso de simulación 2Se simulará un esquema de modulación 8-PSK estableciendo un solo valor para la ampli-

tud y ocho posibles para la fase. Se utilizará la misma frecuencia de muestreo y la mismatrama de datos que en el caso anterior.

Subportadoras 10Rango subportadoras 200-2000 HzAmplitudes 1Fases 8Bits de trama 30Trama 0x1682BD39

(a) Parámetros

1 0x1682BD392 103 14 85 128006 200

(b) Archivo «test2.dat»

Figura 4.6: Configuración caso de simulación 2

Comandos para la ejecución de las pruebas

1 $ bin/simu−tx −i test2.dat −o samples2 .dat

Figura 4.7: Caso 2: Simulación del proceso de transmisión

1 $ bin/simu−tx −i test2.dat −o samples2 .dat −p

Figura 4.8: Caso 2: Simulación del proceso de transmisión con generación de gráfica

1 $ bin/simu−rx −i samples2 .dat

Figura 4.9: Caso 2: Simulación del proceso de recepción

1 $ bin/simu−stats −i test2.dat −n <amplitud_maxima_ruido > −t <numero_tests >

Figura 4.10: Caso 2: Estadísticas de respuesta al nivel de ruido

38 4. SIMULACIÓN

Comparación de los casos propuestosSe procede a la ejecución de simulaciones de 10000 test con los niveles de ruido indicados

en la tabla para los dos casos de simulación propuestos.

Ruido (V ) SNR (dB) % éxito2 37.4259 100.0 %4 23.5746 93.4 %6 15.4705 52.51 %8 9.7 18.48 %

(a) Caso de simulación 1

Ruido (V ) SNR (dB) % éxito2 27.1353 99.84 %4 13.2755 52.38 %6 5.17064 7.46 %8 -0.598219 1.1 %

(b) Caso de simulación 2

Figura 4.11: Resumen de estadísticas de respuesta al ruido (casos propuestos)

Como se puede apreciar en las tablas, los parámetros de configuración del caso de simu-lación 1 ofrecen mejores resultados. Para un test individual cualquiera de cada una de lassimulaciones se pueden obtener gráficas del tipo:

-0.3-0.2-0.1

00.10.20.30.40.5

0 10 20 30 40 50 60 70

am

plitu

de

samples

Time-domain signal

Noisy signalClean signal

-0.06-0.04-0.02

00.020.040.060.08

0 10 20 30 40 50 60 70

am

plitu

de

samples

Noise signal

Isolated noise

(a) Caso de simulación 1

-0.2-0.15

-0.1-0.05

00.05

0.10.15

0.20.25

0 10 20 30 40 50 60 70

am

plitu

de

samples

Time-domain signal

Noisy signalClean signal

-0.08-0.06-0.04-0.02

00.020.040.060.08

0 10 20 30 40 50 60 70

am

plitu

de

samples

Noise signal

Isolated noise

(b) Caso de simulación 2

Figura 4.12: Gráficas de la señal simulada en el dominio temporal (casos propuestos)

4. SIMULACIÓN 39

Mientras que sería posible realizar un estudio más detallado de los resultados, a priori, sepueden relacionar directamente con el hecho de que el segundo caso de simulación utilizaun mayor número de valores discretos de fase, esto aumenta la posibilidad de error en elreconocimiento de símbolos.

4.7 Otros casos de simulaciónCon el objetivo de completar las conclusiones ya extraídas o verificadas, se toma un con-

junto de pruebas mayor. Se puede observar en los resultados que, por ejemplo, el hecho deaumentar la frecuencia de muestreo mejora la respuesta al ruido.

Los archivos con las configuraciones de modulación de cada caso de simulación, asícomo sus resultados correspondientes se pueden encontrar en el repositorio del simulador(apéndice C) y las conclusiones resumidas en el capítulo 6.

Capítulo 5

Prototipado

E N esta fase del trabajo se se abordará de forma elemental el diseño de un prototipo enlenguaje VHDL que genere una señal analógica a partir de otra señal digital.

5.1 Modelado hardwarePara estructurar el modelo hardware correctamente, en una primera aproximación sin op-

timizaciones, se ha utilizado el modelo software de alto nivel. El diagrama de bloques resul-tante puede verse en la figura 5.1.

tx_constellation_mapper

fft_r2 (ifft)

<frame>

<SPI data>spi_master

<spectrum>

<time-domain signal>

modulator

modem

rx_constellation_mapper

fft_r2 (fft)

<frame>

<SPI data> spi_master

<spectrum>

<time-domain signal>

demodulator

(to DAC)

(from ADC)

Figura 5.1: Esquema de bloques del modelo hardware

41

42 5. PROTOTIPADO

En el contexto de este trabajo se ha optado por modelar únicamente el subsistema en-cargado del proceso de modulación. Las decisiones principales de diseño de las entidadeshardware que componen dicho subsistema se detallan en los siguientes apartados.

Por simplicidad, y dado que la tarea de un diseño VHDL completo, genérico y sintetizablesaldría del ámbito de este trabajo, en esta memoria se omiten detalles del diseño que en sulugar irán comentados en el código.

Entidad «tx_constellation_mapper»La entidad tx_constellation_mapper ha sido implementada en el prototipo de forma

particularizada para unos tamaños de trama y transformada determinados. Se puede ver lamáquina de estados correspondiente en la figura 5.2.

initzeroMatrix

mapping

Figura 5.2: Máquina de estados de la entidad tx_constellation_mapper

Los estados quedan definidos de la siguiente manera:

zeroMatrixAsignación de cero a la salida.

initEstado inicial de sincronización.

mappingAsignación del espectro correspondiente a la trama de entrada.

Entidad «fft_r2»La entidad fft_r2 ha sido implementada de forma genérica tomando como parámetros el

tamaño de la transformada y un valor lógico que indica si se debe calcular la transformadadirecta o la inversa.

5. PROTOTIPADO 43

Compute

Init

Assign

Output

nextiteration

end

Figura 5.3: Máquina de estados de la entidad fft_r2

Los estados quedan definidos de la siguiente manera:

InitEstado inicial de sincronización, inicialización de los contadores y obtención de lasecuencia de entrada en orden de bit invertido.

ComputeCálculo de la operación correspondiente de la transformada.

AssignAsignación del resultado a la señal interna y actualización de los contadores.

OutputAsignación del resultado a la señal de salida y normalización de la misma si procede.

Para la comunicación con un conversor digital-analógico mediante el protocolo SPI, seha optado por una implementación básica que genera estrictamente la señal requerida por elconversor digital analógico.

Además de dichas entidades se han definido paquetes para la definición de un tipo dedatos de coma fija (types.vhd), para el cálculo de los factores Twiddle (twiddle.vhd),para una versión particularizada de algoritmo bit-reverse (bit_reverse_8.vhd) y para laparametrización del modelo en función de los parámetros de modulación (modem_con-fig.vhd).

5.2 Software y hardware utilizadoSe ha utilizado el software Libero SoC v11.4 de Microsemi Corporation para el de-

sarrollo en VHDL con la licencia gratuita Microsemi Libero de un año. Este software cubretanto la simulación como la generación del bitstream para programar la FPGA. Los procesosde síntesis, compilación y generación del bitstream pueden ser completamente automatiza-dos.

44 5. PROTOTIPADO

Por otro lado el hardware que se ha utilizado incluye la FPGA AGLP125V2 289CS fabrica-da por Actel Corporation y el conversor digital-analógico PmodDA4 fabricado por Dili-gent Inc.

Aunque también se ha considerado la opción de usar un microcontrolador como Arduino,la programación para un microcontrolador no difiere ni en técnica ni en concepto de la delsoftware de simulación, pues no se tienen que tomar en cuenta decisiones aritméticas ni es-tructurales a nivel del hardware. Además la potencia que, en general, brinda una FPGA essuperior incluso para un diseño hardware no óptimo como el del presente trabajo.

5.3 Procesos de simulación del hardwarePara verificar un diseño VHDL se llevan a cabo tres procesos de simulación. El primero

es el de la simulación pre-synthesis, en la cual se verifica el diseño de forma funcional, sinconsiderar las restricciones del hardware. El segundo proceso de simulación, post-synthesis,se lleva a cabo con las restricciones correspondientes y a nivel de puerta lógica. Finalmente,tras la ubicación y el enrutado de los componentes (compilación), se ejecuta el proceso de si-mulación post-layout, de nuevo con las restricciones que se apliquen, para verificar el diseñouna vez añadidos el árbol de relojes, los buffers, etc.

La simulación post-layout puede ser sustituida por cálculos y estadísticas realizadas en lasimulación funcional del diseño. No obstante, sigue siendo de vital importancia en casos enlos que cobra mayor importancia el hecho de que existan múltiples dominios de reloj o laconsideración de límites asíncronos.

Las restricciones que se aplican al diseño incluyen la configuración del reloj y de los puer-tos de entrada y salida.

5.4 ResultadosTras depurar la implementación del diseño se puede comprobar la salida digital que debe

recibir el conversor digital-analógico en la simulación presíntesis. En el repositorio del apéndiceC.3 se puede encontrar el diseño en este estado de implementación.

La carga del bitstream en el dispositivo de prototipado, que posibilita la verificación em-pírica analizando la señal generada en un osciloscopio, requiere un proceso de adaptacióndel diseño a los requisitos genéricos de síntesis o a los propios de la herramienta utilizadapara dicho proceso y excede el propósito de este trabajo.

Capítulo 6

Conclusiones y líneas futuras

T RAS la realización de este trabajo es posible extraer resultados y comprobar algunoshechos ya previstos en los fundamentos teóricos (capítulo 3) junto a otros más especí-

ficos de las condiciones del diseño y la configuración del módem.

El uso del algoritmo de la Transformada Rápida de Fourier (FFT) resulta vital para laviabilidad de un módem funcional en la mayoría de los ámbitos de aplicación.

La técnica de modulación utilizada en los módems objeto de estudio proporciona unainmunidad al ruido considerable en comparación con otros esquemas más simples.

Fijado un nivel de ruido, el tamaño de la transformada influye en la inmunidad alruido, de tal forma que, al incrementar el tamaño de la transformada por encima de lonecesario, se reduce la influencia del ruido.

El incremento del número de valores discretos de amplitud utilizados en la modula-ción, manteniendo o aumentando la separación de estos, puede facilitar el reconocimien-to de símbolos, pero conlleva un incremento de potencia no asumible para mejorassignificativas.

El incremento del número de valores discretos de fase, fijado el número de valoresdiscretos de amplitud, dificulta el reconocimiento de símbolos.

Un diseño hardware óptimo requiere un estudio más exhaustivo de la aritmética uti-lizada y de la propia estrategia de diseño. Dicho estudio sería fundamental para lograrun hardware de complejidad asumible que proporcionase un ancho de banda y unafrecuencia de funcionamiento funcionales u óptimos para un ámbito de aplicación de-terminado.

El diseño hardware VHDL, además, debe adaptarse a las los requisitos generales o es-pecíficos de las herramientas de síntesis.

45

46 6. CONCLUSIONES Y LÍNEAS FUTURAS

Entre las líneas futuras para continuar el estudio realizado en este trabajo se encuen-tran:

La utilización del algoritmo FFT base 4 o FFT base partida.

La ampliación del programa de generación de estadísticas para encontrar defectos decomportamiento del sistema para una configuración en unas condiciones dadas.

Interfaz gráfica de usuario para el simulador que facilite la integración entre el softwaredesarrollado y Gnuplot.

Utilización de un módulo SPI genérico que proporcione mayor fiabilidad y versatilidaden la comunicación.

La optimización de la aritmética utilizada en el hardware.

La reestructuración del diseño hardware a más bajo nivel.

ANEXOS

Anexo A

Implementación C del algoritmo de cálculo directode la DFT

Para simplificar el código se ha utilizado una estructura csignal que almacena las matri-ces de números reales para la la parte real e imaginaria de las señales así como su tamaño.También se ha implementado una función para la normalización estándar de la DFT.

Archivo fuente «dft.h»1 #ifndef DFT_H2 #define DFT_H

4 #include <stdlib .h>5 #include <math.h>

7 #include " complex_signal .h"

10 typedef enum DFT , FFTR2 DFT_algorithm ;11 typedef enum 12 UNITARY ,13 DIVN_DIRECT ,14 DIVN_INVERSE15 normalization_type ;

18 /∗ Direct DFT algorithm implementation ∗/19 csignal ∗ _dft_idft ( csignal ∗input , int inv ,20 normalization_type norm_method );

22 /∗ Driver functions for DFT and IDFT ∗/23 csignal ∗dft( csignal ∗x, normalization_type norm_method );24 csignal ∗idft( csignal ∗X, normalization_type norm_method );

27 /∗ DFT normalization function ∗/28 void normalize ( csignal ∗signal , int inv , normalization_type

norm_method );

49

50 A. IMPLEMENTACIÓN C DEL ALGORITMO DE CÁLCULO DIRECTO DE LA DFT

31 #endif

Listado A.1: Archivo fuente «dft.h»

Archivo fuente «dft.c»1 #include "dft.h"

4 csignal ∗dft( csignal ∗x, normalization_type norm_method ) 5 return _dft_idft (x, 0, norm_method );6

8 csignal ∗idft( csignal ∗X, normalization_type norm_method ) 9 return _dft_idft (X, 1, norm_method );

10

12 csignal ∗ _dft_idft ( csignal ∗input , int inv ,13 normalization_type norm_method )

15 unsigned int N = input−>size;16 double WN__ , WN_ , WN;17 csignal ∗output ;18 double ∗oR , ∗oI , ∗iR , ∗iI;19 double c, s;20 int k, n;

22 /∗ Allocate output matrix memory ∗/23 output = csignal_alloc (N);24 oR = output−>real;25 oI = output−>imag;

27 WN__ = −2∗M_PI/N;28 WN__ = inv?−WN__:WN__; /∗ IDFT ∗/

30 for(k=0;k<N;k++) 31 ∗oR = 0;32 ∗oI = 0;33 WN_ = WN__ ∗ k;34 iR = input−>real;35 iI = input−>imag;36 for(n=0;n<N;n++) 37 WN = WN_ ∗ n;38 c = cos(WN);39 s = sin(WN);

A. IMPLEMENTACIÓN C DEL ALGORITMO DE CÁLCULO DIRECTO DE LA DFT 51

40 ∗oR += ∗iR∗c − ∗iI∗s;41 ∗oI += ∗iR∗s + ∗iI∗c;42 iR ++;43 iI ++;44

46 oR ++;47 oI ++;48

50 /∗ Normalize output ∗/51 normalize (output , inv , norm_method );

53 return output ;54

57 void normalize ( csignal ∗signal , int inv , normalization_typenorm_method )

59 unsigned int N = signal−>size;60 double factor ;61 int i;

63 switch( norm_method ) 64 case UNITARY :65 /∗ Unitary transform ∗/66 factor = 1/ sqrt(N);67 break;68 case DIVN_DIRECT :69 /∗ Divides by N in direct transform ∗/70 factor = inv ? 1 : 1/(double)N ;71 break;72 case DIVN_INVERSE :73 /∗ Divides by N in inverse transform ∗/74 factor = inv ? 1/(double)N : 1 ;75 break;76

78 for(i=0;i<N;i++) 79 signal−>real[i] ∗= factor ;80 if(signal−>type == COMPLEX_T ) 81 signal−>imag[i] ∗= factor ;82 83

85

52 A. IMPLEMENTACIÓN C DEL ALGORITMO DE CÁLCULO DIRECTO DE LA DFT

Listado A.2: Archivo fuente «dft.c»

Anexo B

Implementación C del algoritmo FFT base 2

En esta implementación se ha utilizado un enfoque iterativo con el que será más sencillodesglosar y particularizar el cálculo al de un posterior diseño hardware en VHDL. También sehan hecho otras consideraciones como el uso de la aritmética de punteros para optimizar elcálculo al tratar con matrices considerablemente grandes.

Por otro lado, se ha utilizado una solución genérica, para matrices en lenguaje C estándar,para el problema del orden de bit invertido. La función es una adaptación del algoritmodefinido en [AF05].

Para simplificar el código se ha utilizado una estructura csignal que almacena las matri-ces de números reales para la la parte real e imaginaria de las señales así como su tamaño.

Archivo fuente «fft.h»1 #ifndef FFT_H2 #define FFT_H

4 #include <stdlib .h>5 #include <math.h>

7 #include " complex_signal .h"8 #include "dft.h"

11 /∗ Radix−2 Fast Fourier Transform algorithm implementation ∗/12 csignal ∗ _fft_ifft_r2 ( csignal ∗input , int inv ,13 normalization_type norm_method );

15 /∗ Driver function for radix−2 FFT and IFFT ∗/16 csignal ∗fft_r2 ( csignal ∗x, normalization_type norm_method );17 csignal ∗ifft_r2 ( csignal ∗X, normalization_type norm_method );

20 /∗ BIT−REVERSE ∗/

53

54 B. IMPLEMENTACIÓN C DEL ALGORITMO FFT BASE 2

22 /∗23 bit_reversed_index ( unsigned int ∗bri , int N) implements :

25 " Reverse bits in word by lookup table"

27 By Sean Eron Anderson28 seander@cs . stanford .edu

30 On July 14, 2009 Hallvard Furuseth suggested the macro compactedtable.

32 −−−

34 The function initializes the unsigned integer matrix "bri" (size N)35 with the bit reversed index value of each element .36 ∗/37 void bit_reversed_index (unsigned int ∗bri , unsigned int N);

40 /∗41 In−place complex matrix bit−reverse function

43 This function reorders the input complex matrix by using44 ∗ bitReversedIndex (int N) to calculate a bit−reversed index matrix of

size N45 ∗/46 void bit_reverse ( csignal ∗input);

49 #endif

Listado B.1: Archivo fuente «fft.h»

B. IMPLEMENTACIÓN C DEL ALGORITMO FFT BASE 2 55

Archivo fuente «fft.c»1 #include "fft.h"

4 csignal ∗fft_r2 ( csignal ∗x, normalization_type norm_method ) 5 return _fft_ifft_r2 (x, 0, norm_method );6

8 csignal ∗ifft_r2 ( csignal ∗X, normalization_type norm_method ) 9 return _fft_ifft_r2 (X, 1, norm_method );

10

12 csignal ∗ _fft_ifft_r2 ( csignal ∗input , int inv ,13 normalization_type norm_method )

15 if(input == NULL) return NULL;

17 unsigned int N = input−>size;18 double WN__ , WN_ , ∗∗WN , ∗WNr , ∗WNi;19 csignal ∗output , ∗input_br , ∗swap;20 double ∗o1R , ∗o1I , ∗o2R , ∗o2I , ∗i1R , ∗i1I , ∗i2R , ∗i2I;21 double mult [2];22 int i, b, k;23 int S, B, Nb , MED = N>>1, MEDb;

26 /∗ PHASE FACTOR COMPUTING ∗/27 WN__ = −2∗M_PI/N;28 WN__ = inv?−WN__:WN__; /∗ IFFT ∗/29 WN = (double ∗∗) malloc (sizeof(double ∗) ∗2); /∗ k=0 ,... ,N/2−1 ∗/30 WN[REAL] = (double ∗) malloc (sizeof(double)∗MED);31 WN[IMAG] = (double ∗) malloc (sizeof(double)∗MED);32 for(k=0;k<MED;k++) 33 WN_ = WN__ ∗ k;34 WN[REAL ][k] = cos(WN_);35 WN[IMAG ][k] = sin(WN_);36

39 /∗ Input bitreverse ordering ∗/40 input_br = csignal_clone (input);41 bit_reverse ( input_br );

43 /∗ Input and output matrices will swap in each stage ∗/44 output = csignal_alloc (N);

56 B. IMPLEMENTACIÓN C DEL ALGORITMO FFT BASE 2

47 /∗48 S: number of stages49 B: number of butterflies in each stage50 Nb: size of butterfly in each stage51 ∗/52 S = round(log(N)/M_LN2);53 B = MED;54 Nb = N/B;55 for(i=0;i<S;i++) /∗ for each stage ∗/56 MEDb = Nb >>1;

58 if(i %2 == 0) /∗ input and output assignment ∗/59 i1R = i2R = input_br−>real; i1I = i2I = input_br−>imag;60 o1R = o2R = output−>real; o1I = o2I = output−>imag;61 else 62 i1R = i2R = output−>real; i1I = i2I = output−>imag;63 o1R = o2R = input_br−>real; o1I = o2I = input_br−>imag;64

66 i2R += MEDb; i2I += MEDb;67 o2R += MEDb; o2I += MEDb;

70 for(b=0;b<B;) /∗ for each butterfly ∗/71 WNr = WN[REAL ];72 WNi = WN[IMAG ];

74 for(k=0;k<MEDb;k++) 75 ∗o1R = ∗o2R = ∗i1R;76 ∗o1I = ∗o2I = ∗i1I;

78 if(k==0) 79 ∗o1R += ∗i2R; ∗o1I += ∗i2I;80 ∗o2R −= ∗i2R; ∗o2I −= ∗i2I;81 else 82 mult[REAL] = ∗WNr ∗ ∗i2R − ∗WNi ∗ ∗i2I;83 mult[IMAG] = ∗WNr ∗ ∗i2I + ∗WNi ∗ ∗i2R;84 ∗o1R += mult[REAL ]; ∗o1I += mult[IMAG ];85 ∗o2R −= mult[REAL ]; ∗o2I −= mult[IMAG ];86

88 i1R ++; i1I ++; i2R ++; i2I ++;89 o1R ++; o1I ++; o2R ++; o2I ++;

91 WNr +=B; WNi +=B;92

B. IMPLEMENTACIÓN C DEL ALGORITMO FFT BASE 2 57

94 b++;95 i1R += MEDb; i1I += MEDb; i2R += MEDb; i2I += MEDb;96 o1R += MEDb; o1I += MEDb; o2R += MEDb; o2I += MEDb;

98

100 B = B>>1;101 Nb = Nb <<1;

103

105 if(S %2 == 0) /∗ swap input_br and output if needed ∗/106 swap = output ;107 output = input_br ;108 input_br = swap;109

111 /∗ Normalize output ∗/112 normalize (output , inv , norm_method );

115 csignal_free ( input_br );116 free(WN[REAL ]);117 free(WN[IMAG ]);118 free(WN);

121 return output ;122

125 void bit_reversed_index (unsigned int ∗bri , unsigned int N) 126 /∗127 By Sean Eron Anderson . See fft.h header file for details .128 ∗/

130 unsigned int i;

132 static const unsigned char bit_reverse_table256 [256] = 133 #define R2(n) n, n + 2∗64 , n + 1∗64 , n + 3∗64134 #define R4(n) R2(n), R2(n + 2∗16) , R2(n + 1∗16) , R2(n + 3∗16)135 #define R6(n) R4(n), R4(n + 2∗4 ), R4(n + 1∗4 ), R4(n + 3∗4 )136 R6 (0) , R6 (2) , R6 (1) , R6 (3)137 ;

139 for(i=0;i<N;i++) 140 unsigned char ∗ p = (unsigned char ∗) &i;

58 B. IMPLEMENTACIÓN C DEL ALGORITMO FFT BASE 2

141 unsigned char ∗ q = (unsigned char ∗) (bri+i);

143 q[3] = bit_reverse_table256 [p[0]];144 q[2] = bit_reverse_table256 [p[1]];145 q[1] = bit_reverse_table256 [p[2]];146 q[0] = bit_reverse_table256 [p[3]];

148 /∗ Fix position ∗/149 int s = sizeof(int)∗8−round(log(N−1)/M_LN2);150 ∗( bri+i) = ∗( bri+i)>>s;151

153

156 void bit_reverse ( csignal ∗input) 157 unsigned int N = input−>size;158 csignal ∗output ;159 double ∗oR , ∗oI , ∗iR , ∗iI;160 int k, i;

162 unsigned int ∗bri = (unsigned int ∗) malloc (sizeof(unsigned int)∗N);163 bit_reversed_index (bri , N);

165 output = csignal_alloc (N);

167 iR = input−>real;168 iI = input−>imag;169 oR = output−>real;170 oI = output−>imag;

172 for(k=0;k<N;k++) 173 i = bri[k];174 ∗oR = iR[i];175 ∗oI = iI[i];176 oR ++; oI ++;177

179 csignal_copy (input , output );

181 free(bri);182 csignal_free ( output );

184

Listado B.2: Archivo fuente «fft.c»

Anexo C

Repositorios

A continuación se proporcionan enlaces a los repositorios en los que se puede acceder alsoftware generado en este trabajo.

C.1 Comparador de algoritmos de cálculo de la DFT (lenguaje C)https://bitbucket.org/david valero jimenez/edp-dmt-modem-dft-benchmark/

C.2 Simulador del módem DMT (lenguaje C)https://bitbucket.org/david valero jimenez/edp-dmt-modem-simulator

C.3 Prototipo hardware (lenguaje VHDL)https://bitbucket.org/david valero jimenez/edp-dmt-modem-prototype .tex

59

Anexo D

Delta de Dirac

La Delta de Dirac es una función generalizada introducida por el físico Paul Dirac.

Centrada en un punto t0, se define como:

δ(t− t0) =

∞, t = t00, t 6= t0

Figura D.1: Delta de Dirac

Algunas propiedades importantes de la Delta de Dirac

a. Cualquier integral que incluya una Delta de Dirac en su interior vale 1.

∫ ∞−∞

δ(t) = 1

b. El producto de una Delta de Dirac centrada en un determinado t0 y una función x(t)

cumple:x(t)δ(t− t0) = x(t0)δ(t− t0)

c. La convolución de una Delta de Dirac centrada en un determinado t0 y una funciónx(t) cumple:

x(t) ∗ δ(t− t0) = x(t− t0)

61

Anexo E

Demostración: transformada de Fourier de un pulsorectangular

Sea una función rectangular x(t) de amplitud A como el representado en la siguientefigura:

A

- /2 /2 0

(t)

t

Figura E.1: Función rectangular de amplitud A

Teniendo en cuenta las expresiones 3.3, 3.6 y 3.23, su transformada de Fourier se calcu-la:

X(f) =∫ ∞−∞

x(t)e−jωtdt = A∫ τ

2

− τ2

e−jωtdt = A

[e−j2πft

−jω

] τ2

− τ2

=jA

ω

(e−jπfτ − ejπfτ

)=

=jA

ω(cos(−πfτ) + j · sen(−πfτ)− cos(πfτ)− j · sen(πfτ)) =

=jA

2πf(−2j · sen(πfτ)) = A · sen(πfτ)

πf= A · τ · sen(πfτ)

πfτ= A · τ · sinc(fτ)

Siendo una representación genérica de la función «sinc» la siguiente:

0

sinc(f)

f

Figura E.2: Función «sinc»

63

Anexo F

Demostración: transformada de Fourier de un trende deltas

Sea la función de muestreo ideal sδ(t) de periodo Ts:

sδ(t) =∞∑

k=−∞δ (t− kTs)

La función de muestreo ideal sδ(t) es un tren de Deltas de Dirac (ver anexo D) separadaspor el periodo Ts. Como sδ(t) es periódica de periodo Ts, admite un Desarrollo en Serie deFourier de la forma:

sδ(t) =∞∑

n=−∞Cne

jkωst

donde ωs = 2πTs

.

Los coeficientes espectrales se calculan como:

Cn =1

Ts

∫ Ts2

−Ts2

sδ(t)e−jnωstdt =

1

Ts

∫ Ts2

−Ts2

δ(t)e−jnωstdt =1

Tse−jnωs0 =

1

Ts= fs

Por tanto, la señal muestreadora ideal se puede volver a expresar como:

sδ(t) =∞∑

n=−∞Cne

jnωst =∞∑

n=−∞fse

jnωst = fs∞∑

n=−∞ejnωst

Y como la transformada de la suma es la suma de las transformadas:

TF [sδ(t)] = Sδ(f) = fs∞∑

n=−∞δ (f − nfs)

65

Bibliografía

[AF05] Sean Eron Anderson and Hallvard Furuseth. Reverse bits in word by lookup

table. Sean Eron Anderson, 2005. https://graphics.stanford.edu/~seander/bithacks.html#BitReverseTable.

[Alv11] José Miguel Hobaica Alvarado. Señales y Sistemas en MATLAB

y LabVIEW. OpenStax CNX, 2011. http://cnx.org/contents/[email protected].

[BMO+94] C. S. Burrus, J. H. McClelland, A. V. Oppenheim, T. W. Parks, R. W. Schafer,and H. W. Schuessler. Computer-Based Excercises for Signal Processing using

MATLAB. Prentice Hall, 1994.

[CCR07] A. Bruce Carlson, Paul B. Crilly, and Janet C. Rutledge. Sistemas de comuni-

cación, 4a edición. McGraw-Hill, 2007.

[Doi11] Jonny Doin. SPI Master/Slave Interface. OpenCores, 2011. http://opencores.org/project,spi master slave.

[Ell87] Douglas F. Elliot. Handbook of Digital Signal Processing / Engineering Appli-

cations. Academic Press, 1987.

[HR80] José María Hernando Rábanos. Teoría de la comunicación, v. 1. Departamentode Publicaciones, Escuela Técnica Superior de Ingenieros de Telecomunicación,1980.

[HR06] José María Hernando Rábanos. Transmisión por radio, 5a Edición. EditorialCentro de Estudios Ramón Areces, 2006.

[IJ93] E. C. Ifeachor and B. W. Jervis. Digital Signal Processing – A Practical Ap-

proach. Addison-Wesley, 1993.

[Jon07] Douglas L. Jones. The DFT, FFT, and Practical Spectral Anal-

ysis. OpenStax CNX, 2007. http://cnx.org/contents/[email protected].

67

68 BIBLIOGRAFÍA

[ME96] Craig Marven and Gillian Ewers. A Simple Approach to Digital Signal Process-

ing. Wiley, 1996.

[OS11] Alan V. Oppenheim and Roland W. Schafer. Tratamiento de señales en tiempo

discreto. Prentice Hall, 2011.

[OW98] Alan V. Oppenheim and Alan S. Willsky. Señales y sistemas. Prentice Hall,1998.

[PM03] John G. Proakis and Dimitris G. Manolakis. Tratamiento digital de señales /

Principios, algoritmos y aplicaciones. Prentice-Hall, 2003.

[Tom96] Wayne Tomasi. Sistemas de comunicaciones electrónicas. Prentice Hall, 1996.

BIBLIOGRAFÍA 69

Este documento fue editado y tipografiado con LATEXempleando una modificación de la plantilla que se puede encontrar en:

https://bitbucket.org/arco group/

[Respeta esta atribución al autor]