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

Anuncio
D ISEÑO Y SIMULACIÓN DE MÓDEM MULTITONO DISCRETO (DMT)
UNIVERSIDAD DE CASTILLA-LA MANCHA
ESCUELA SUPERIOR DE INFORMÁTICA
CIUDAD 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ÁTICA
CIUDAD 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énez
Director: Inocente Sánchez Ciudad
Junio, 2015
David Valero Jiménez
Ciudad Real – Spain
E-mail: David.Valero1@alu.uclm.es
Telé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 GNU
Free Documentation License, Version 1.3 or any later version published by the Free Software
Foundation; with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy
of 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 la
Licencia de Documentación Libre GNU, versión 1.3 o cualquier versión posterior publicada por
la Free Software Foundation; sin secciones invariantes. Una copia de esta licencia esta incluida en
el apéndice titulado «GNU Free Documentation License».
Muchos de los nombres usados por las compañías para diferenciar sus productos y servicios son
reclamados como marcas registradas. Allí donde estos nombres aparezcan en este documento, y
cuando el autor haya sido informado de esas marcas registradas, los nombres estarán escritos en
mayúsculas o como nombres propios.
TRIBUNAL:
Presidente:
Secretario:
Vocal:
FECHA DE DEFENSA:
CALIFICACIÓN:
PRESIDENTE
Fdo.:
SECRETARIO
Fdo.:
VOCAL
Fdo.:
Resumen
Los módems DMT (Discrete Multitone) son utilizados en tecnologías ampliamente extendidas como el ADSL, WiFi, DVB (COFDM) o 4G. La técnica de modulación OFDM
proporciona alta eficiencia espectral, robustez frente a interferencias cocanal en canales de
banda estrecha e interferencia entre símbolos, facilita la adaptación a condiciones severas
en el canal de transmisión, no requiere filtros sintonizados por subcanal y se logra una implementación eficiente haciendo uso del algoritmo FFT. En este Trabajo de Fin de Grado se
realiza 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 y
análisis espectral relacionadas con DMT. En segundo lugar se aborda el desarrollo e implementación de un simulador genérico y configurable en lenguaje C. Dicho software de
simulación sirve como herramienta para observar y entender los procesos de modulación y
demodulación, así como medir el impacto de los parámetros de modulación en la respuesta al
ruido del sistema. Adicionalmente se ha diseñado un prototipo hardware del modulador utilizando 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, narrowband co-channel and inter-symbol interference robustness, easy adaptation to severe channel
conditions, efficient implementation through FFT algorithm and not requirement of subchannel tuned filters. This End-Of-Degree Project covers the study of DMT modulation
technology basics.
The first task accomplished in this work is the study of the basic modulation and spectral
analysis techniques related to DMT. In second place, a generic and configurable DMT modem simulator has been developed and implemented in C language. This simulator serves as
a tool to observe and understand DMT modulation and demodulation processes, as well as
to 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 frame
has 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 espectro 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 de
una 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 de
Grado en Ingeniería Informática y su ayuda para profundizar en algunos de los conocimientos que he adquirido estos años. A Julio Daniel Dondo Gazzano y Juan Carlos López López
por su ayuda en parte de este trabajo.
A mi familia, sin ellos esto hubiese sido tan fácil. A mis amigos, por servirme de referencia. A los compañeros y compañeras de tantos proyectos tan llenos de buenas intenciones
como carentes de entendimiento y apoyo.
A mi abuelo, que me inculcó la dedicación seria a las aficiones personales, tanto de manera
altruista 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
módem Multitono Discreto DMT (Discrete Multi Tone) codifica datos en varias
subportadoras, multiplexadas en la frecuencia, usando modulación tanto en amplitud como en fase para lograr una alta eficiencia espectral, lo que es útil tanto para lograr
canales por los que transmitir grandes volúmenes de datos por unidad de tiempo como para
aprovechar 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).
N
Una de las características de la modulación OFDM es la baja tasa de binaria que se necesita
al transmitir en varias subportadoras simultáneamente, lo que conlleva significativas ventajas
en comparación con otros esquemas de modulación de portadora única. Algunas de estas
ventajas permiten paliar, sin recurrir a técnicas avanzadas de filtrado, problemas como la
atenuación de las frecuencias altas en un cable e interferencias en bandas estrechas, además
de lograr una relativamente alta inmunidad al ruido.
Algunas de las aplicaciones de DMT se encuentran, por ejemplo, en el ADSL o la transmisión de datos sobre canales de banda estrecha. Por su parte, la modulación OFDM es usada
en 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 portadora única no evita que se necesite hacer en tiempo real una conversión de datos a señal
analógica en transmisión, y un muestreo y procesado de datos en recepción, en un espacio de
tiempo determinado. Con el objetivo de evitar retardos y hacer práctica la comunicación, se
recurre a un algoritmo para el cálculo rápido de la Transformada Discreta de Fourier, conocida 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 y
extender conocimientos adquiridos en los estudios de Grado en Ingeniería Informática. Para
ello 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. I NTRODUCCIÓN Y ANTECEDENTES
Teniendo lo anterior en cuenta se ha dividido el documento en los siguientes capítulos:
Capítulo 2: Objetivos
Finalidad del presente trabajo.
Capítulo 3: Fundamentos teóricos
Exposición de los fundamentos teóricos en relación a los objetivos marcados.
Capítulo 4: Simulación
Especificación y justificación de las simulaciones llevadas a cabo sobre el diseño.
Capítulo 5: Prototipado
Implementación y simulación de un prototipo del módem DMT en lenguaje VHDL.
Capítulo 6: Conclusiones y líneas futuras
Conclusiones finales y propuestas de continuación del trabajo.
Capítulo 2
Objetivos
L
objetivos generales que se marcan para lograr la finalidad propuesta en este TFG
son los siguientes:
OS
1. Realizar un estudio teórico de todos los aspectos relacionados con el tratamiento de la
señ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 (en
forma de fichero de datos) a partir de una trama binaria, y otro programa receptor que
obtiene la citada trama a partir de la señal analógica (leyendo el fichero de datos). Para
ello se utilizarían las herramientas matemáticas de la FFT, inversa y directa, respectivamente.
3. Usar un prototipo físico para mostrar el funcionamiento de alguno de los dos programas, 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 dominio de la frecuencia, así como los conceptos de muestreo, criterio de Nyquist, ancho
de banda, etc.
b. Estudiar las herramientas matemáticas de conversión entre ambos dominios, basada
en el análisis de Fourier, especialmente la Transformada de Fourier Discreta, en una
primera 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 tasa
binaria 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 de
una trama de bits una señal analógica, en forma de fichero de datos, similar a la que
generarí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 , la
duración de la misma o la cantidad de subportadoras, f , pueda variar a voluntad. El
archivo de datos llevará una cabecera donde se identificarán todos estos datos para que
el programa receptor los pueda conocer y sea capaz de interpretarlos.
3
4
2. O BJETIVOS
e. Realizar un programa simulador del proceso de recepción que, leyendo la cabecera del
fichero de datos, extraiga las características del módem y realice el adecuado análisis
espectral de las muestras para obtener la trama de datos binarios que se usaron para
general dicho archivo.
f. Probar distintas tramas, generar los ficheros correspondientes, y comprobar con el programa receptor recupera las tramas correctamente.
g. Realizar una simulación particularizada para los siguientes parámetros: 10 subportadoras 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 el
nú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 la
trama recuperada en función de la amplitud del ruido.
i. Comparar la inmunidad al ruido del esquema de modulación anterior (apartado g) y de
una modulación 8-PSK.
j. Construir un prototipo físico que genere la señal en transmisión a partir de una trama
de N bits y f subportadoras, comparando la forma de onda producida, que puede ser
vista a través de un osciloscopio, con la forma de onda simulada. Opcionalmente se
podría construir otro prototipo que realizase la función receptora, admitiendo como
señal de entrada la generada por el prototipo transmisor y presentando la trama que
generó 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 implementarán algoritmos para el cálculo de la DFT.
3.1
Conceptos básicos sobre bandas de frecuencias, señales y ondas
en el espectro electromagnético
Las frecuencias del espectro electromagnético usadas en telecomunicaciones se pueden
clasificar por bandas o por aplicaciones.
Una banda es un intervalo de frecuencias que se define para un determinado uso. Aparece
al tiempo el concepto de ancho de banda, que es la diferencia en Hz entre la frecuencia
má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 bandas
de paso. Una banda base se define como el rango de frecuencias de una señal que no ha sido
modificada desde su origen, relativa por tanto al tipo de señal utilizada para modular una
portadora generalmente de mayor frecuencia, mientras que una banda de paso es el rango
de 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 base
que necesita adaptarse a un medio para una comunicación, razón por la cual dicha onda
portadora 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 llamadas señales muestreadoras. La señal muestreadora ideal (sδ (t) ó IIIT s (t)) es un tren
de deltas, una función periódica definida en base la Delta de Dirac que se describe en el
anexo D. Sin embargo, en la práctica, se implementa el tren de deltas con un tren de pulsos
rectangulares con las consecuencias que se verán en el apartado 3.4.2.
5
6
3. F UNDAMENTOS TEÓRICOS
3.2
Representación de ondas en los dominios del tiempo y de la frecuencia
La ecuación 3.1 describe una onda sinusoidal pura, donde A es la amplitud, ω = 2πf la
velocidad 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 como
la suma de ondas sinusoidales cuyas frecuencias discretas son múltiplos de una determinada
frecuencia fundamental.
Las señales con las que se tratará son ondas de este tipo, por tanto representables por la
ecuación 3.2, donde f0 es la frecuencia fundamental o primer armónico, 2f0 el 2o armónico
de 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πf0 t + ϕ1 ) + A2 · sen(2π2f0 t + ϕ2 ) + A3 · sen(2π3f0 t + ϕ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 suma
importancia para el estudio y el tratamiento de señales.
ejα = cos(α) + jsen(α)
Para z = x + jy
ez = ex ejy = ex (cos(y) + jsen(y))
Donde j es la unidad imaginaria que cumple j 2 = −1 y α viene dado en radianes.
Figura 3.3: Fórmula de Euler
3. F UNDAMENTOS TEÓRICOS
3.2.1
7
Desarrollo en serie de Fourier
Teniendo 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 corresponden con frecuencias múltiplos de una misma frecuencia f0 = T10 . Usando una forma
exponencial compacta de la serie de Fourier se obtiene la expresión de la figura 3.4.
+∞
X
x(t) =
Cn ejnω0 t
n=−∞
Figura 3.4: Desarrollo en serie de Fourier
Donde el producto nω0 es la velocidad angular de la componente enésima. Los coeficientes espectrales Cn , representan el valor de las componentes de la señal en el dominio de
frecuencia y se calculan con la expresión:
T
1 Z 20
Cn =
x(t)e−jnω0 t dt
T0
T0 − 2
Figura 3.5: Coeficiente espectral
C0 es la componente continua, C1 la componente fundamental y los siguientes el resto de
armónicos.
Propiedades de los coeficientes espectrales Cn
Si x(t) es real, los coeficientes son complejos conjugados tal que C−n = Cn , con lo
que:
x(t) = C0 +
∞
X
2|Cn |cos(nω0 t + Φn )
n=1
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 Fourier
La 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 aplicable 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 al
desarrollo de la serie de Fourier se tiene la expresión 3.6 en la que transforma x(t) en X(ω).
8
3. F UNDAMENTOS TEÓRICOS
Se cumple que ω = 2πf , siendo X(ω) la función compleja que define una señal en el
dominio frecuencial y x(t) la función de la misma señal en el dominio temporal que en este
caso es real por motivos físicos.
X(ω) =
Z +∞
x(t)e−jωt dt
−∞
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) =
Z +∞
X(ω)ejωt dω
−∞
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 Inversa
es el signo opuesto de sus exponentes.
3.2.3
Transformada de Fourier Discreta
En el contexto de la codificación digital de señales transmitidas en el medio físico (variaciones de tensión en un cable, una antena, etc.), se utilizan las versiones discretas de la
Transformada 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 dominio del tiempo discreto y X(k) : 0 ≤ k ≤ N − 1 en el dominio frecuencial discreto, y
sustituyendo ω = 2πf , se relacionan entre sí mediante dichas transformadas.
X(k) =
N
−1
X
x(n)e
−j2πkn
N
n=0
Figura 3.8: DFT
x(n) =
−1
j2πkn
1 NX
X(k)e N
N k=0
Figura 3.9: IDFT
3. F UNDAMENTOS TEÓRICOS
9
Los exponentes y factores de normalización en la DFT y la IDFT se establecen por convenio según la aplicación. Se debe cumplir que dichos exponentes sean de signo opuesto y
que el producto de los factores de normalización sea N1 .
En el caso del procesamiento de señales, al aplicar los factores de normalización √1N y √1N
se obtienen transformadas unitarias. Mientras que al usar 1 y N1 sólo se realiza el escalado
en 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 algoritmo eficiente para el cálculo de la DFT y la IDFT se recurre al concepto del Factor Twiddle
−j2π
(factor de fase), WN = e N .
X(k) =
N
−1
X
x(n)WNkn
n=0
Figura 3.10: DFT (Factor Twiddle)
x(n) =
−1
1 NX
X(k)WN−kn
N k=0
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 transmisión se tiene un símbolo codificado para cada subportadora dando valores a X(k) según
la tabla 3.1, por lo que usaremos la IDFT para obtener las muestras discretas de x(n).
k
0
1
2
3
...
N/2
...
N-2
N-1
Símbolo correspondiente
Componente continua
Componente fundamental o 1a armónica
2a armónica
3a armónica
...
Componente de Nyquist
...
Conjugado de la 2a armónica
Conjugado de la fundamental o 1a armónica
Cuadro 3.1: Correspondencia de las componentes frecuenciales
10
3. F UNDAMENTOS 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 de
Nyquist (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 la
DFT no son iguales, de hecho en la sección 3.4.1 se especificarán los requisitos que debe
cumplir la DFT en función del número de subportadoras entre otros factores.
Propiedades interesantes de WN
3.2.4
El factor Twiddle tiene algunas propiedades interesantes para la optimización del cálculo
de la DFT, se verá su aplicación al estudiar la FFT.
Periodicidad (WNk+N = WNk )
WNk+N = e
−j2π(k+N )
N
=e
−j2πk
N
e−j2π = WNk
ya que e−j2π = 1
k+ N
2
Simetría (WN
k+ N
2
WN
=e
= −WNk )
−j2π(k+ N
2 )
N
=e
−j2πk
N
e−jπ = −WNk
ya que e−jπ = −1.
Las siguientes expresiones, en particular, pueden resultar útiles para el desarrollo de los
algoritmos existentes:
WNk = W N tal que k|N, N divisible entre k
k
WN = e
−j2π
N
k
k
n(k+ N
)
2
WN
−j2πk
N
= WNk
nk
= W N tal que 2|N
2
2
W
3.2.5
=e
n(k+ N
2
N
2
)
=e
−j2πn(k+ N
2 )
N
2
=e
−j2πnk
N
2
e−j2πn = W Nnk , ya que e−j2πn = 1
2
Propiedades interesantes de la DFT
Periodicidad
Se puede demostrar de forma trivial usando la fórmula de Euler (3.3) y la propiedad de
periodicidad de WN (sección 3.2.4).
3. F UNDAMENTOS 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 parte
real 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 DFT
El 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 hechos
matemáticos para definir otros algoritmos más rápidos que se engloban en la familia de algoritmos 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 FFT
base 2, siendo este último adecuado y suficientemente óptimo para nuestros objetivos. Dicha
tarea de implementación requiere el estudio y comprensión del método directo y de los fundamentos de FFT base 2 en sí mismo. No obstante, en el apartado 3.3.2, se describirán a
grandes rasgos FFT base 4 y FFT de base partida.
3.3.1
Cálculo directo de la DFT
El 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 exponente
del factor Twiddle ( −2π
) y será multiplicado por los valores correspondientes de k y n en
N
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 implementar con un mismo procedimiento con muy pocas modificaciones. Para la IDFT, según
12
3. F UNDAMENTOS TEÓRICOS
el convenio elegido para este diseño, se debe cambiar de signo el factor Twiddle y se debe
aplicar 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
X
x(n)e
−j2πkn
N
n=0
N
−1
X
"
!
2πkn
2πkn
=
x(n) cos −
+ j · sen −
N
N
n=0
N
−1
X
"
!
2πkn
2πkn
=
x(n) cos
− j · sen
N
N
n=0
!#
=
!#
Por tanto si x(n) = x< (n) + j · x= (n):
X< (k) =
N
−1
X
n=0
"
!
2πkn
2πkn
x< (n)cos
+ x= (n)sen
N
N
!#
(a) Parte real
X= (k) =
N
−1
X
n=0
"
!
2πkn
2πkn
−x< (n)sen
+ x= (n)cos
N
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 los
sumandos en los que aparece la función seno, por lo que, en este aspecto, tampoco hay
ningú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álculo
básico de la DFT y su inversa.
3. F UNDAMENTOS TEÓRICOS
3.3.2
13
Cálculo de la DFT mediante FFT
El cálculo directo de la DFT es ineficiente ya que no aprovecha las propiedades del factor Twiddle para reducir el coste computacional. Dicho cálculo incluye 2N 2 operaciones
trigonométricas, 4N 2 multiplicaciones y 4N (N − 1) sumas con números reales. A este gran
número de operaciones hay que sumar las necesarias para indexación y direccionamiento de
variables.
Los algoritmos FFT más comunes para el cálculo de la DFT están basados en el de CooleyTukey. Dicho algoritmo, de tipo «divide y vencerás», se basa en expresar una DFT de N
puntos 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 los
casos 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 (diezmado en tiempo) en base 2, base 4 y base partida. Existen otros algoritmos similares a los de
diezmado en tiempo que se basan en dividir recursivamente la secuencia de salida en lugar
de 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 para
el 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 una
DFT trivial de dos puntos (figura 3.15).
X(0) =
1
X
x(n)W20·n = x(0) + x(1)
n=0
X(1) =
1
X
x(n)W21·n = x(0) − x(1)
n=0
Figura 3.15: Caso base del DIT base 2
El desarrollo de la DFT se realiza dividiendo la transformada en otras dos cuyos elementos
se corresponden con los pares en un caso y los impares en otro, es decir:
14
3. F UNDAMENTOS TEÓRICOS
X(k) =
N
−1
X
N
2
x(n)WNkn
=
n=0
N
2
−1
X
k(2n)
x(2n)WN
+
n=0
−1
X
k(2n+1)
x(2n + 1)WN
n=0
k(2n+1)
k(2n)
Si se tiene en cuenta que WN
= WN
· WNk , que el segundo factor de fase no
depende de n y que por tanto se puede sacar del sumatorio; queda la siguiente expresión para
un punto X(k):
N
2
X(k) =
N
2
−1
x(2n)WN2kn
X
+
WNk
n=0
−1
X
x(2n + 1)WN2kn
n=0
Además, aplicando la tercera propiedad de las enunciadas en el apartado 3.2.4 y considerando la definición de la DFT (3.8), es posible obtener la expresión 3.16; que junto con
la 3.15 es fundamental para la programación del algoritmo.
N
2
X(k) =
N
2
−1
X
kn
x(2n)W N +
2
n=0
WNk
−1
X
x(2n + 1)W Nkn
2
n=0
X(k) = Y (k) + WNk · 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 pueden
resolver de forma recursiva.
Se puede ver que para cada k solamente se debe calcular explícitamente el factor de fase
WNk . Ya que el cálculo de los factores de fase WN2kn , que aparecen en los dos sumandos de la
expresió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 segunda
mitad de la secuencia de salida:
X k+
N
2
=Y k+
X k+
N
2
N
2
k+ N
2
+ WN
·Z k+
N
2
= Y (k) − WNk · 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 mismos
sumandos que en la primera.
3. F UNDAMENTOS TEÓRICOS
15
La representación gráfica de las operaciones de este algoritmo se puede realizar mediante
un diagrama de «mariposa». La figura 3.18 es un ejemplo para una DFT de 8 puntos.
ETAPA 1
x(0)
x(4)
ETAPA 3
X(1)
-1
W80
W80
W82
-1
X(3)
-1
W80
-1
W80
W81
-1
-1
W80
x(3)
x(7)
X(2)
-1
x(1)
x(5)
X(0)
W80
x(2)
x(6)
ETAPA 2
W82
-1
W80
W82
-1
-1
W83
-1
-1
X(4)
X(5)
X(6)
X(7)
Figura 3.18: DIT base 2 de ocho puntos
Como se ve en el diagrama, las sucesivas operaciones sobre la transformada original cambian el orden de los índices en el resultado. Para facilitar el indexado eficiente de los datos
de entrada del algoritmo se puede aprovechar el hecho de que si se toman como índices las
cadenas binarias invertidas correspondientes a cada uno de los índices originales, el orden
creciente de los elementos según estos nuevos índices coincide con el que aparece al aplicar
las «mariposas». Esto se conoce como orden de bit invertido (bit-reversed order).
Índice de entrada
x(0) → x(0002 )
x(4) → x(1002 )
x(2) → x(0102 )
x(6) → x(1102 )
x(1) → x(0012 )
x(5) → x(1012 )
x(3) → x(0112 )
x(7) → x(1112 )
Índice de salida
X(0) → x(0002 )
X(1) → x(0012 )
X(2) → x(0102 )
X(3) → x(0112 )
X(4) → x(1002 )
X(5) → x(1012 )
X(6) → x(1102 )
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/2
factores 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. F UNDAMENTOS TEÓRICOS
A modo de ejemplo, sea x(n) una secuencia de 8 puntos de una señal en el dominio
temporal, x0 (n) la misma secuencia en orden de bit invertido y X(k) su transformada de
Fourier. En la tabla 3.3 se puede ver el resultado de cada una de las tres etapas del algoritmo
DIT de base 2 para dicha secuencia.
x0 (n)
1,00000
0,56472
0,75148
0,42437
0,86688
0,48954
0,65144
0,36788
x(n)
1,00000
0,86688
0,75148
0,65144
0,56472
0,48954
0,42437
0,36788
Etapa 1
1,56472
0,43528
1,17585
0,32711
1,35642
0,37734
1,01932
0,28356
Etapa 2
2,74057
0,435 − 0,327j
0,389
0,435 + 0,327j
2,3757
0,377 − 0,283j
0,337
0,337 + 0,283j
Etapa 3
5,11631
0,500 − 0,794j
0,389 − 0,337j
0,369 − 0,140j
0,36483
0,369 + 0,140j
0,369 + 0,337j
0,500 + 0,794j
Cuadro 3.3: Ejemplo de DIT base 2 para una DFT de 8 puntos.
Cálculo de los factores Twiddle:
W80 = 1
W81 = e
W82 = e
W83
=e
√
−j2π
8
=
−j4π
8
= −j
−j6π
4
=−
√
2
2
−
2
2 j
√
2
2
√
−
2
2 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 + W80 · 1,17585 = 2,74057
0,43528 + W82 · 0,32711 = 0,43528 − 0,32711j
1,56472 − W80 · 1,17585 = 0,389
0,43528 − W82 · 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 Twiddle
de orden 8 que han sido calculados.
3. F UNDAMENTOS 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 puntos
N potencia de 4 en cuatro transformadas de tamaño N/4. El resultado es la disminución
del número de multiplicaciones y el aumento del número de sumas. Para una DFT de las
caracterí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 obtienen 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.
N
4
X(4k) =
−1
X n=0
N
x(n) + x n +
4
N
4
−1
X X(4k + 1) =
N
x(n) − jx n +
4
n=0
N
4
−1
X X(4k + 2) =
X(4k + 3) =
N
x(n) + jx n +
4
−1
X n=0
N
+x n+
2
N
x(n) − x n +
4
n=0
N
4
3N
+x n+
4
N
−x n+
2
N
+x n+
2
N
−x n+
2
4
3N
+ jx n +
4
3N
−x n+
4
WNn W Nkn
4
3N
− jx n +
4
WN0 W Nkn
WN2n W Nkn
4
WN3n W Nkn
4
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 los
puntos pares e impares de una DFT para optimizar aún más el cálculo. Dado que la parte par
solamente requiere operaciones de suma puede realizarse más eficientemente usando DIT
base 2. Sin embargo para la parte impar resulta más eficiente hacerlo mediante DIT base 4
ya que contiene las operaciones de multiplicación.
Ya que DIT base 4 tiene la «mariposa» más grande libre de multiplicaciones, para este
método, es óptimo tomar casos base de cuatro puntos. Una base mayor que 4 no resulta en
mayor eficiencia, ver [PM03].
***
Como se ha explicado al principio de esta sección y a pesar de las mejoras expuestas, los
algoritmos FFT base 4 y FFT de base partida no se compararán ni serán implementados.
18
3. F UNDAMENTOS TEÓRICOS
3.3.3
Comparación temporal de la DFT y la FFT base 2
En la tabla 3.4 se comparan las complejidades del cálculo directo de la DFT frente al
cálculo usando la FFT base 2.
DFT directa
FFT base 2
Sumas complejas
N (N − 1)
N · log2 N
Multiplicaciones complejas
N2
N
2 · log2 N
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 datos
han sido obtenidos por el programa del anexo C.1 para los algoritmos directos y los de la
FFT base 2.
DFT
106,14ms
387,08ms
1,52s
23,99s
1024
2048
4096
16384
IDFT
100,38ms
387,22ms
1,52s
24,11s
FFT base 2
184,26µs
353,43µs
726,24µs
3,26ms
IFFT base 2
178,16µs
358,84µs
759,09µs
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 cada
algoritmo 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 menor
en función del número de puntos de la transformada.
24.1 s
Coste temporal
DFT
IDFT
FFT
IFFT
106 ms
3 ms
178 µs
1024
2048
4096
16384
Número de puntos
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 el
número de operaciones a realizar y su importancia para el tiempo de ejecución tienen bastante peso en la comparación de éstos.
3. F UNDAMENTOS TEÓRICOS
3.4
19
Análisis espectral
En esta sección se revisarán algunos de los conceptos vitales para la comprensión del proceso 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 muestreo
Para una DFT de N puntos se llama resolución espectral 4f0 a la diferencia de frecuencia
entre dos puntos de X(k).
Siendo T0 el tiempo de observación (T0 = 4f1 0 ) de la señal, supuesta periódica. Y la
frecuencia de muestreo fs , inversa del periodo de muestreo Ts . Teniendo en cuenta que T0 =
N Ts se puede calcular:
fs =
N
1
=
Ts
T0
Figura 3.21: Frecuencia de muestreo
4f0 =
1
1
fs
=
=
T0
N Ts
N
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 de
muestreo.
Por otro lado, teniendo en cuenta 4f0 y la frecuencia máxima sobre la que codificar información, se tendrá que obtener una fs mínima válida. Tampoco convendrá aumentar dicha
frecuencia más de lo necesario ya que se obtendría una DFT de más puntos. El Teorema de
Muestreo (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ñal
discretizada y periódica a partir de una señal continua de ejemplo, se puede apreciar gráficamente el papel la resolución espectral y de la frecuencia de muestreo utilizadas.
20
3. F UNDAMENTOS TEÓRICOS
3.4.2
Demostración: obtención de una señal discreta periódica a partir de
una señal continua
Dada una señal x(t) y su transformada de Fourier X(f ), ambas representadas en la tabla
3.6-1, se procede a explicar el proceso por el cual la señal continua se muestrea y trunca para
obtener 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 temporal
implica la convolución de sus espectros en el dominio frecuencial. Ver [PM03] para más
información.
En primer lugar, en la tabla 3.6-2 aparecen la representación de un tren de deltas de periodo Ts en el dominio temporal y su espectro, otro tren deltas de periodo inverso fs . La
demostración de esta transformada de Fourier se adjunta en el anexo F. Dicho tren de deltas
es la función muestreadora ideal.
En la tabla 3.6-3 se representa, también en ambos dominios, la señal muestreada. En el
dominio del tiempo la función resultante es el producto de x(t) y IIITs (t). Y de forma
análoga, en el dominio frecuencial, se obtiene la convolución de X(f ) y IIIfs (f ). Se obtiene
una función periódica en el dominio frecuencial, ya que la convolución de una señal con una
delta 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 Fourier
es la función «sinc» normalizada (figura 3.23), se incluye la demostración en el anexo E. Sus
representaciones se encuentran en la tabla 3.6-4.
sinc(x) =
sen(xπ)
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 truncada donde podemos ver que en el dominio frecuencial aparece un «rizado» como consecuencia de la convolución con la función «sinc».
Finalmente, para obtener una función periódica en el dominio temporal y una función
discretizada en el dominio frecuencial (tabla 3.6-7), se utilizan de nuevo las correspondientes
operaciones de multiplicación y convolución con sendos trenes de deltas de periodos T0 en
el dominio del tiempo y ∆f0 en el dominio de la frecuencia (tabla 3.6-6).
3. F UNDAMENTOS TEÓRICOS
21
Dominio del tiempo
Dominio de la frecuencia
x(t)
X(f)
1
t
f
0
0
IIITs(t)
IIITs(f)
1
fs
2
t
-Ts 0 Ts
f
0
-fs
x(t) x IIITs(t)
fs
X(f) * IIITs(f)
3
t
-Ts 0 Ts
f
-fs
0
-fs/2
(t)
fs/2
fs
sinc(f)
1
T0
4
t
0
-Ts/2
f
Ts/2
0
x(t) x IIITs(t) x Π(t)
X(f) * IIITs(f) * sinc(f)
f
5
t
-fs
0
0
-fs/2
IIIT0(t)
fs/2
fs
IIIT0(f)
1
T0
6
t
-T0
0
T0
f
- f0 0
x(n)
f0
X(k)
7
t
N muestras
f
N muestras
Cuadro 3.6: Demostración: transformada de Fourier de una señal continua aperiódica
22
3. F UNDAMENTOS TEÓRICOS
3.4.3
Teorema de muestreo de Nyquist-Shanon
El teorema de muestreo de Whittaker-Nyquist-Kotelnikov-Shannon demuestra que es posible 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áxima
de 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 frecuencias
inferiores. Este efecto, por el que dos señales distintas se hacen indistinguibles, se llama
aliasing, Efecto Nyquist o error de solapamiento.
Sin embargo, en la práctica es usual definir frecuencias de muestreo superiores a la indicada por el criterio de Nyquist en función de la eficacia de los circuitos de filtro de la señal
y de otros requisitos que se puedan presentar en base a los algoritmos utilizados. Como se
verá más adelante, muestrear a frecuencias muy superiores a las que establece el criterio de
Nyquist 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 del
teorema de muestreo. Sobre el gráfico de la tabla 3.6-3 en el dominio frecuencial, si no se
hubiese respetado el criterio de Nyquist, se solaparían las repeticiones del espectro original
X(f ).
En el caso que nos ocupa, un módem DMT, tendremos que tener en cuenta que para
cada código transmitido se asignará un par de valores para la amplitud y para la fase. Se ha
mencionado anteriormente que tanto el valor de X(k) para la componente continua como
para k = N2 son reales, por lo que no portarán datos.
3. F UNDAMENTOS TEÓRICOS
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á usada
como onda portadora para codificar en ella la información de una comunicación. De las
propiedades de una onda se deducen los esquemas básicos de modulación, que se basan en
producir 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, FM
y PM; y en señales digitales sus correspondientes discretos: ASK, FSK y PSK; en inglés
Analog, Frequency y Phase Shift Keying.
Los esquemas de modulación en frecuencia y fase reciben el nombre de modulaciones
angulares.
La modulación analógica en amplitud es usualmente de doble banda lateral, es decir, la
moduladora 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 portadora
suprimida), más eficientes energéticamente al no reinsertar la portadora y en el caso de SSBSC 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-SC
conlleve mayor coste ya que se requiere circuitería más compleja en el receptor, que entre
otras cosas, tiene que volver a generar la portadora.
Otros tipos de modulación como QAM (estudiado en el siguiente apartado) o la modulación polar son esquemas más complejos que combinan varias formas de modulación básicas
como 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 información que consiste en la utilización de un conjunto de ondas subportadoras de diferentes
frecuencias, 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ñal
multitono de frecuencias no ortogonales, otra en la que las frecuencias sí que lo son y otra
con la señal resultante; en ese orden.
23
24
3. F UNDAMENTOS 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 observamos
que, pese a las diferentes frecuencias de las componentes, para un número entero de ciclos
el 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 que
aún así se puedan obtener los símbolos codificados en cada subportadora.
3. F UNDAMENTOS TEÓRICOS
3.6.1
PSK
La Modulación por Desplazamiento de Fase (Phase Shift Keying) es un esquema de modulación digital que consiste en hacer variar la fase de la señal portadora entre un número
determinado de valores discretos.
Algunos de los tipos de modulación PSK más comunes son BPSK (PSK binario con separación de 180o ) y QPSK (PSK cuaternario o en cuadratura, con separación de 90o ). BPSK
y QPSK, en la práctica, son equivalentes a 2-QAM y 4-QAM.
3.6.2
QAM
La Modulación de Amplitud en Cuadratura (Quadrature Amplitude Modulation) es un esquema 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 sumando
señales desplazadas en fase previamente moduladas en amplitud. La variación del número de
valores discretos para las amplitudes y las fases define el número de símbolos que se pueden
codificar, 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 codificar 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 la
expresión 3.27.
BIT S_SU BP ORT ADORA = 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ón
3.27 el tamaño de la secuencia de bits por trama (3.28).
BIT S_T RAM A = cn · BIT S_SU BP ORT ADORA = 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 QAM
mediante un diagrama de constelación. Para ello se representan los símbolos o puntos de
constelación usando coordenadas cartesianas, donde usualmente el eje de las abscisas es
llamado «I» (en fase) y el de ordenadas «Q» (en cuadratura, 90o ).
25
26
3. F UNDAMENTOS TEÓRICOS
Q
0000
0100
1100
1000
0001
0101
1101
1001
0011
0111
1111
1011
0010
0110
1110
1010
I
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 fase
dados, de hecho un esquema QAM de un determinado número de puntos puede ser implementado con diversas constelaciones. Se pueden considerar esquemas de QAM digital
rectangulares, circulares con diversas distribuciones, etc. Cada constelación tiene sus consecuencias 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 puntos
pero es más sencilla su implementación. Los esquemas circulares son óptimos ya que requieren la mínima potencia promedio para una determinada «distancia» mínima entre dos
puntos.
Con QAM, cuanto menor es el número de valores posibles para las amplitudes y las fases mayor es la «distancia» a la que se pueden colocar los símbolos para una determinada
potencia de transmisión.
Gráficamente, si en un diagrama de constelación se representan los valores muestreados
según sus coordenadas se puede comprobar a cuál de los símbolos está más cercano cada
uno de ellos. Por tanto, cuanto mayor sea la densidad de símbolos en el diagrama más difícil
será decidir con exactitud la correspondencia con las muestras de la señal, menor será la
inmunidad al ruido del sistema.
Este hecho es de suma importancia ya que, junto con el número de subportadoras utilizadas, la cantidad de símbolos que se pueden codificar en cada una de ellas afecta a la
cantidad de datos que se pueden transmitir por unidad de tiempo. Pero también afecta, de
forma inversa, a la inmunidad frente al ruido en la señal a la hora de muestrearla en recepción. Dicha relación podrá ser medida en la simulación del diseño.
3. F UNDAMENTOS TEÓRICOS
3.7
27
Energía y potencia de una señal
El 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 en
este trabajo.
La potencia de una señal es una magnitud medida en vatios (W att = J/s) e indica la
energí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. Mientras 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, y
su potencia promedio total Px igual a 0. Por otro lado, si una señal x(t) tiene una Ex infinita
y 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 una
impedancia de 1Ω se cumplen las siguientes expresiones (ver [Alv11]):
Ex =
∞
X
|x(n)|2
n=−∞
Figura 3.30: Energía de una señal discreta no periódica


N
X
1
Px = lı́m 
|x(n)|2 
N →∞ 2N + 1
n=−N
Figura 3.31: Potencia de una señal discreta no periódica
Para un número determinado de muestras, N :
−1
1 NX
Px =
|x(n)|2
N n=0
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. F UNDAMENTOS TEÓRICOS
Dada una señal sinusoidal x(t) = A · cos(2πf0 t), periódica y continua, tiene una energía
total infinita y una potencia promedio total dada por la expresión:
1
A2
A2
Px =
·
· T0 =
T0
2
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 la
señal en el dominio temporal.
3.8
Relación señal/ruido
La 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 de
transmisión. Esta relación medida en decibelios (dB), viene dada por la expresión 3.34 donde
S es la potencia de la señal y R la potencia del ruido.
S
= 10 · log
R
SN RdB
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ón
del módem a cierto nivel de ruido.
Capítulo 4
Simulación
U
NA
4.1
Metodología de desarrollo de software
vez expuestos los fundamentos teóricos del diseño de un módem DMT se procede
a 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 durante la simulación permitirá experimentar de forma aislada la influencia de los parámetros
de modulación en la inmunidad al ruido.
En esta fase del trabajo se utilizará la metodología de prototipado que se basa en una investigación inicial previa a varios ciclos de investigación de requisitos, diseño y codificación que
llevan de forma progresiva a un modelo del software que cumpla con todos los requisitos.
Codificación
Investigación
inicial
Modelo a
implementar
Investigación
de requisitos
Diseño
Dicha metodología permite evaluar de forma exhaustiva la satisfacción de requisitos y
funcionalidades 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 del
software ya que el hecho de reutilizar dicho modelo repercute negativamente en la calidad
final de la implementación.
29
30
4. S IMULACIÓN
4.2
Decisiones de diseño del software de simulación
En 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, por
tanto, 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 han
dado forma al modelo implementado.
4.2.1
Verificación de datos de entrada
Durante 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 con
el número de estados de codificación.
Del mismo modo, dados los requisitos que impone el algoritmo FFT base 2, se comprueba
que el número de muestras a tratar sea potencia de dos. Si no lo es, se adapta a la potencia de dos inmediatamente superior y se utiliza la frecuencia de muestreo proporcionada
por el usuario para adaptar la resolución espectral. Dicha operación modifica, por tanto, las
frecuencias reales de los canales y será notificada al usuario.
4.2.2
Codificación de tramas
Para 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 ese
orden, 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. Mientras
que en recepción se inicializa una matriz de símbolos para comparar las muestras espectrales
recibidas y determinar los bits correspondientes.
4.2.3
Estructura
El 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 y
salida, cálculo de la Transformada Discreta de Fourier (anexos A y B), codificación y el de
simulación y análisis de ruido. Un tercer programa permite generar estadísticas útiles para
valorar 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 órdenes
y el propio diseño, haciendo uso de las técnicas de reutilización de código que posibilita la
estructura modular elegida para evitar redundancia en el código fuente.
4. S IMULACIÓN
4.3
Implementación
Debido 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 de
datos que se requieren, se opta por la implementación en lenguaje C. Una implementación
en C++ se ha estimado demasiado compleja considerando el uso de las estructuras de datos
definidas en los tres programas principales, tanto en implementación como en el uso de
recursos.
El código fuente generado se puede consultar en el repositorio correspondiente (apéndice
C.2).
A continuación se explican las principales decisiones de implementación.
4.3.1
Tipos y estructuras de datos
Los 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 de
implementación se ha tomado considerando el tipo de operaciones a realizar con los datos y
en las posibilidades de optimización en los cálculos que requieren partes reales, imaginarias
o ambas.
Para minimizar el número de parámetros de las funciones y para las estructuras de datos
definidas para la entrada del módem y de la línea de órdenes se ha recurrido a las estructuras
del lenguaje C, ya que solamente se requiere agrupar variables de tipos diferentes.
4.3.2
Enfoque de implementación del algoritmo FFT base 2
Se 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áficas
Para 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 gnuplot
del directorio activo durante la ejecución, por lo que es recomendable ejecutar el software
desde el directorio principal de compilación.
31
32
4. S IMULACIÓN
4.4
Requisitos de compilación y ejecución
Los 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 la
aplicació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 en
cada sistema operativo si se usan los scripts «Makefile.32» o «Makefile.64» incluidos para
tal efecto en el código fuente.
4.5
Uso del software de simulación
Los 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ñadido
a la señal generada para transmisión.
El esquema de modulación y el resto de parámetros del módem DMT pueden especificarse
tanto con un archivo de texto como de forma interactiva. Las posibilidades de modulación
incluyen QAM circular no optimizado, ASK y PSK; dependiendo del número de valores
posibles de amplitud y fase indicados en los parámetros de configuración.
Uso del programa de simulación del proceso de transmisión
El 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 >]
[−f < normalization_method >] [−n < noise_peak_amplitude >] [−p ] [−
h]
4
6
7
8
9
10
11
Options :
−i : Optional configuration file .
If not specified program will ask for
configuration
parameters .
−o : Required output file .
−a : DFT algorithm to use : dft or fft ( lower case ) .
4. S IMULACIÓN
12
13
14
15
16
17
18
19
20
21
22
24
25
26
27
28
29
30
32
33
33
( default : fft )
−f : Normalization factor to use ( lower case ) :
unitary : Unitary transform .
direct : Divides by N in direct transform .
inverse : Divides by N in inverse transform .
force <M >: Calculates normalization factor to
produce a
time−domain amplitude not greater
than M .
( default : inverse )
−n : Noise maximum amplitude ( V ) . ( default : 0)
−p : If specified , program will plot results ( gnuplot
required ) .
−h : This help message .
Configuration file format :
< frame > ( dec | hex | oct )
< number_of_subcarriers >
< number_of_amplitude_values >
< number_of_phase_values >
< sampling_frequency > ( Hz )
< spectral_resolution > ( will be adapted ) ( Hz )
David Valero Jimenez
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.2
se 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
6
7
8
9
10
11
12
Options :
−i : Required input file .
−a : DFT algorithm to use : dft or fft ( lower case ) .
( default : fft )
−f : Normalization factor to use ( lower case ) :
unitary : Unitary transform .
direct : Divides by N in direct transform .
inverse : Divides by N in inverse transform .
34
13
14
15
16
18
19
20
21
22
23
24
25
26
27
29
30
4. S IMULACIÓN
force <M >: Calculates normalization factor to
produce a
time−domain amplitude not greater
than M .
( default : inverse )
−h : This help message .
Input file format ( as generated by transmission program ) :
< number_of_subcarriers >
< number_of_amplitude_values >
< number_of_phase_values >
< sampling_frequency > ( Hz )
< spectral_resolution > ( will be adapted ) ( Hz )
< xR (0) >
< xR (1) >
...
< xR (N−1)>
David Valero Jimenez
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.3
se 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 >]
[−a < algorithim >] [−f < normalization_method >] [−h ]
4
6
7
8
9
10
11
12
13
14
15
16
Options :
−t : Number of tests to run .
−n : Noise maximum amplitude ( V ) .
−i : Optional configuration file .
If not specified program will ask for
configuration
parameters .
−a : DFT algorithm to use : dft or fft ( lower case ) .
( default : fft )
−f : Normalization factor to use ( lower case ) :
unitary : Unitary transform .
direct : Divides by N in direct transform .
4. S IMULACIÓN
17
18
19
20
21
23
24
25
26
27
28
29
31
32
35
inverse : Divides by N in inverse transform .
force <M >: Calculates normalization factor to
produce a
time−domain amplitude not greater
than M .
( default : inverse )
−h : This help message .
Configuration file format :
< frame > ( dec | hex | oct )
< number_of_subcarriers >
< number_of_amplitude_values >
< number_of_phase_values >
< sampling_frequency > ( Hz )
< spectral_resolution > ( will be adapted ) ( Hz )
David Valero Jimenez
University of Castilla − La Mancha , Ciudad Real , Spain
Listado 4.3: Uso de simu-stats
36
4. S IMULACIÓN
4.6
Ejecución de los casos de simulación propuestos
Se 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 de
ruido que se elijan, se ejecutarán 10000 pruebas para generar las estadísticas de cada caso de
simulación.
Caso de simulación 1
Dados 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
Rango
Amplitudes
Fases
Bits de trama
Trama
10
200-2000 Hz
2
4
30
0x1682BD39
1
2
3
4
5
6
(a) Parámetros
0 x1682BD39
10
2
4
12800
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. S IMULACIÓN
37
Caso de simulación 2
Se simulará un esquema de modulación 8-PSK estableciendo un solo valor para la amplitud y ocho posibles para la fase. Se utilizará la misma frecuencia de muestreo y la misma
trama de datos que en el caso anterior.
Subportadoras
Rango subportadoras
Amplitudes
Fases
Bits de trama
Trama
10
200-2000 Hz
1
8
30
0x1682BD39
1
2
3
4
5
6
(a) Parámetros
0 x1682BD39
10
1
8
12800
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. S IMULACIÓN
Comparación de los casos propuestos
Se 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 )
2
4
6
8
SNR (dB)
37.4259
23.5746
15.4705
9.7
% éxito
100.0 %
93.4 %
52.51 %
18.48 %
Ruido (V )
2
4
6
8
(a) Caso de simulación 1
SNR (dB)
27.1353
13.2755
5.17064
-0.598219
% éxito
99.84 %
52.38 %
7.46 %
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 simulación 1 ofrecen mejores resultados. Para un test individual cualquiera de cada una de las
simulaciones se pueden obtener gráficas del tipo:
amplitude
Time-domain signal
0.5
0.4
0.3
0.2
0.1
0
-0.1
-0.2
-0.3
Noisy signal
Clean signal
0
10
20
30
40
50
60
70
samples
amplitude
Noise signal
0.08
0.06
0.04
0.02
0
-0.02
-0.04
-0.06
Isolated noise
0
10
20
30
40
50
60
70
samples
(a) Caso de simulación 1
amplitude
Time-domain signal
0.25
0.2
0.15
0.1
0.05
0
-0.05
-0.1
-0.15
-0.2
Noisy signal
Clean signal
0
10
20
30
40
50
60
70
samples
amplitude
Noise signal
0.08
0.06
0.04
0.02
0
-0.02
-0.04
-0.06
-0.08
Isolated noise
0
10
20
30
40
50
60
70
samples
(b) Caso de simulación 2
Figura 4.12: Gráficas de la señal simulada en el dominio temporal (casos propuestos)
4. S IMULACIÓN
Mientras que sería posible realizar un estudio más detallado de los resultados, a priori, se
pueden relacionar directamente con el hecho de que el segundo caso de simulación utiliza
un mayor número de valores discretos de fase, esto aumenta la posibilidad de error en el
reconocimiento de símbolos.
4.7
Otros casos de simulación
Con el objetivo de completar las conclusiones ya extraídas o verificadas, se toma un conjunto de pruebas mayor. Se puede observar en los resultados que, por ejemplo, el hecho de
aumentar 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.
39
Capítulo 5
Prototipado
E
5.1
esta fase del trabajo se se abordará de forma elemental el diseño de un prototipo en
lenguaje VHDL que genere una señal analógica a partir de otra señal digital.
N
Modelado hardware
Para estructurar el modelo hardware correctamente, en una primera aproximación sin optimizaciones, se ha utilizado el modelo software de alto nivel. El diagrama de bloques resultante puede verse en la figura 5.1.
modem
modulator
<frame>
tx_constellation_mapper
<spectrum>
fft_r2 (ifft)
<time-domain signal>
spi_master
<SPI data>
(to DAC)
demodulator
<SPI data>
(from ADC)
spi_master
<time-domain signal>
fft_r2 (fft)
<spectrum>
rx_constellation_mapper
<frame>
Figura 5.1: Esquema de bloques del modelo hardware
41
42
5. P ROTOTIPADO
En el contexto de este trabajo se ha optado por modelar únicamente el subsistema encargado del proceso de modulación. Las decisiones principales de diseño de las entidades
hardware 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 sintetizable
saldría del ámbito de este trabajo, en esta memoria se omiten detalles del diseño que en su
lugar 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 la
máquina de estados correspondiente en la figura 5.2.
init
zeroMatrix
mapping
Figura 5.2: Máquina de estados de la entidad tx_constellation_mapper
Los estados quedan definidos de la siguiente manera:
zeroMatrix
Asignación de cero a la salida.
init
Estado inicial de sincronización.
mapping
Asignació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 transformada
directa o la inversa.
5. P ROTOTIPADO
43
Init
Compute
next
iteration
Assign
end
Output
Figura 5.3: Máquina de estados de la entidad fft_r2
Los estados quedan definidos de la siguiente manera:
Init
Estado inicial de sincronización, inicialización de los contadores y obtención de la
secuencia de entrada en orden de bit invertido.
Compute
Cálculo de la operación correspondiente de la transformada.
Assign
Asignación del resultado a la señal interna y actualización de los contadores.
Output
Asignació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, se
ha optado por una implementación básica que genera estrictamente la señal requerida por el
conversor digital analógico.
Además de dichas entidades se han definido paquetes para la definición de un tipo de
datos 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 la
parametrización del modelo en función de los parámetros de modulación (modem_config.vhd).
5.2
Software y hardware utilizado
Se ha utilizado el software Libero SoC v11.4 de Microsemi Corporation para el desarrollo en VHDL con la licencia gratuita Microsemi Libero de un año. Este software cubre
tanto la simulación como la generación del bitstream para programar la FPGA. Los procesos
de síntesis, compilación y generación del bitstream pueden ser completamente automatizados.
44
5. P ROTOTIPADO
Por otro lado el hardware que se ha utilizado incluye la FPGA AGLP125V2 289CS fabricada por Actel Corporation y el conversor digital-analógico PmodDA4 fabricado por Diligent 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 del
software de simulación, pues no se tienen que tomar en cuenta decisiones aritméticas ni estructurales a nivel del hardware. Además la potencia que, en general, brinda una FPGA es
superior incluso para un diseño hardware no óptimo como el del presente trabajo.
5.3
Procesos de simulación del hardware
Para 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, sin
considerar 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 simulación post-layout, de nuevo con las restricciones que se apliquen, para verificar el diseño
una 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 la
simulación funcional del diseño. No obstante, sigue siendo de vital importancia en casos en
los que cobra mayor importancia el hecho de que existan múltiples dominios de reloj o la
consideración de límites asíncronos.
Las restricciones que se aplican al diseño incluyen la configuración del reloj y de los puertos de entrada y salida.
5.4
Resultados
Tras 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éndice
C.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 empírica analizando la señal generada en un osciloscopio, requiere un proceso de adaptación
del diseño a los requisitos genéricos de síntesis o a los propios de la herramienta utilizada
para dicho proceso y excede el propósito de este trabajo.
Capítulo 6
Conclusiones y líneas futuras
T
la realización de este trabajo es posible extraer resultados y comprobar algunos
hechos 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.
RAS
El uso del algoritmo de la Transformada Rápida de Fourier (FFT) resulta vital para la
viabilidad 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 una
inmunidad 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 al
ruido, de tal forma que, al incrementar el tamaño de la transformada por encima de lo
necesario, se reduce la influencia del ruido.
El incremento del número de valores discretos de amplitud utilizados en la modulación, manteniendo o aumentando la separación de estos, puede facilitar el reconocimiento de símbolos, pero conlleva un incremento de potencia no asumible para mejoras
significativas.
El incremento del número de valores discretos de fase, fijado el número de valores
discretos de amplitud, dificulta el reconocimiento de símbolos.
Un diseño hardware óptimo requiere un estudio más exhaustivo de la aritmética utilizada y de la propia estrategia de diseño. Dicho estudio sería fundamental para lograr
un hardware de complejidad asumible que proporcionase un ancho de banda y una
frecuencia de funcionamiento funcionales u óptimos para un ámbito de aplicación determinado.
El diseño hardware VHDL, además, debe adaptarse a las los requisitos generales o específicos de las herramientas de síntesis.
45
46
6. C ONCLUSIONES Y LÍNEAS FUTURAS
Entre las líneas futuras para continuar el estudio realizado en este trabajo se encuentran:
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 de
comportamiento 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 software
desarrollado y Gnuplot.
Utilización de un módulo SPI genérico que proporcione mayor fiabilidad y versatilidad
en 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 directo
de la DFT
Para simplificar el código se ha utilizado una estructura csignal que almacena las matrices 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
2
#ifndef DFT_H
#define DFT_H
5
#include < stdlib .h >
#include < math .h >
7
#include " complex_signal . h "
4
10
11
12
13
14
15
18
19
20
22
23
24
27
28
typedef enum { DFT , FFTR2 } DFT_algorithm ;
typedef enum {
UNITARY ,
DIVN_DIRECT ,
DIVN_INVERSE
} no rm al iz at io n_ ty pe ;
/∗ Direct DFT algorithm implementation ∗/
csignal ∗ _dft_idft ( csignal ∗ input , int inv ,
no rm aliz at io n_ ty pe norm_method ) ;
/∗ Driver functions for DFT and IDFT ∗/
csignal ∗ dft ( csignal ∗ x , n or ma li za ti on _t yp e norm_method ) ;
csignal ∗ idft ( csignal ∗X , no rma li za ti on _t yp e norm_method ) ;
/∗ DFT normalization function ∗/
void normalize ( csignal ∗ signal , int inv , no rma li za ti on _t yp e
norm_method ) ;
49
50
31
A. I MPLEMENTACIÓN C DEL ALGORITMO DE CÁLCULO DIRECTO DE LA DFT
#endif
Listado A.1: Archivo fuente «dft.h»
Archivo fuente «dft.c»
1
#include " dft . h "
4
csignal ∗ dft ( csignal ∗x , nor ma li za ti on _t yp e norm_method ) {
return _dft_idft (x , 0 , norm_method ) ;
}
5
6
8
9
10
12
13
15
16
17
18
19
20
22
23
24
25
27
28
30
31
32
33
34
35
36
37
38
39
csignal ∗ idft ( csignal ∗ X , n or ma li za ti on _t yp e norm_method ) {
return _dft_idft (X , 1 , norm_method ) ;
}
csignal ∗ _dft_idft ( csignal ∗ input , int inv ,
no rm al iz at io n_ ty pe norm_method ) {
unsigned int N = input −>size ;
double WN__ , WN_ , WN ;
csignal ∗ output ;
double ∗ oR , ∗ oI , ∗ iR , ∗ iI ;
double c , s ;
int k , n ;
/∗ Allocate output matrix memory ∗/
output = csignal_alloc ( N ) ;
oR = output −>real ;
oI = output −>imag ;
WN__ = −2∗ M_PI / N ;
WN__ = inv?−WN__ : WN__ ;
for( k =0; k < N ; k ++) {
∗ oR = 0;
∗ oI = 0;
WN_ = WN__ ∗ k ;
iR = input −>real ;
iI = input −>imag ;
for( n =0; n < N ; n ++) {
WN = WN_ ∗ n ;
c = cos ( WN ) ;
s = sin ( WN ) ;
/∗ IDFT ∗/
A. I MPLEMENTACIÓN C DEL ALGORITMO DE CÁLCULO DIRECTO DE LA DFT
∗ oR += ∗ iR ∗ c − ∗ iI ∗ s ;
∗ oI += ∗ iR ∗ s + ∗ iI ∗ c ;
iR ++;
iI ++;
40
41
42
43
44
}
46
oR ++;
oI ++;
47
48
}
50
/∗ Normalize output ∗/
normalize ( output , inv , norm_method ) ;
51
return output ;
53
54
}
57
void normalize ( csignal ∗ signal , int inv , no rma li za ti on _t yp e
norm_method ) {
unsigned int N = signal −>size ;
double factor ;
int i ;
59
60
61
switch( norm_method ) {
case UNITARY :
/∗ Unitary transform ∗/
factor = 1/ sqrt ( N ) ;
break;
case DIVN_DIRECT :
/∗ Divides by N in direct transform ∗/
factor = inv ? 1 : 1/( double) N ;
break;
case DIVN_INVERSE :
/∗ Divides by N in inverse transform ∗/
factor = inv ? 1/( double) N : 1 ;
break;
}
63
64
65
66
67
68
69
70
71
72
73
74
75
76
for( i =0; i < N ; i ++) {
signal −>real [ i ] ∗= factor ;
if( signal −>type == COMPLEX_T ) {
signal −>imag [ i ] ∗= factor ;
}
}
78
79
80
81
82
83
85
}
51
52
A. I MPLEMENTACIÓ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 sencillo
desglosar y particularizar el cálculo al de un posterior diseño hardware en VHDL. También se
han hecho otras consideraciones como el uso de la aritmética de punteros para optimizar el
cá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 algoritmo
definido en [AF05].
Para simplificar el código se ha utilizado una estructura csignal que almacena las matrices 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
2
4
5
7
8
11
12
13
#ifndef FFT_H
#define FFT_H
#include < stdlib .h >
#include < math .h >
#include " complex_signal . h "
#include " dft . h "
/∗ Radix −2 Fast Fourier Transform algorithm implementation ∗/
csignal ∗ _fft_ifft_r2 ( csignal ∗ input , int inv ,
n orm al iz at io n_ ty pe norm_method ) ;
17
/∗ Driver function for radix −2 FFT and IFFT ∗/
csignal ∗ fft_r2 ( csignal ∗x , no rma li za ti on _t yp e norm_method ) ;
csignal ∗ ifft_r2 ( csignal ∗ X , nor ma li za ti on _t yp e norm_method ) ;
20
/∗ BIT−REVERSE ∗/
15
16
53
54
22
B. I MPLEMENTACIÓN C DEL ALGORITMO FFT BASE 2
/∗
23
bi t_ re ve rs ed _i nd ex ( unsigned int ∗ bri , int N ) implements :
25
" Reverse bits in word by lookup table "
27
By Sean Eron Anderson
seander@cs . stanford . edu
28
30
On July 14 , 2009 Hallvard Furuseth suggested the macro compacted
table .
32
−−−
34
The function initializes the unsigned integer matrix " bri " ( size N )
with the bit reversed index value of each element .
35
37
∗/
void bi t_ re ve rs ed _i nd ex (unsigned int ∗ bri , unsigned int N ) ;
40
/∗
36
41
In−place complex matrix bit−reverse function
43
This function reorders the input complex matrix by using
∗ bitReversedIndex ( int N ) to calculate a bit−reversed index matrix of
size N
44
46
∗/
void bit_reverse ( csignal ∗ input ) ;
49
#endif
45
Listado B.1: Archivo fuente «fft.h»
B. I MPLEMENTACIÓN C DEL ALGORITMO FFT
BASE
2
Archivo fuente «fft.c»
1
#include " fft . h "
4
csignal ∗ fft_r2 ( csignal ∗x , no rma li za ti on _t yp e norm_method ) {
return _fft_ifft_r2 (x , 0 , norm_method ) ;
}
5
6
8
9
10
12
13
csignal ∗ ifft_r2 ( csignal ∗ X , nor ma li za ti on _t yp e norm_method ) {
return _fft_ifft_r2 (X , 1 , norm_method ) ;
}
csignal ∗ _fft_ifft_r2 ( csignal ∗ input , int inv ,
n orm al iz at io n_ ty pe norm_method ) {
15
if( input == NULL ) return NULL ;
17
unsigned int N = input −>size ;
double WN__ , WN_ , ∗∗ WN , ∗ WNr , ∗ WNi ;
csignal ∗ output , ∗ input_br , ∗ swap ;
double ∗ o1R , ∗ o1I , ∗ o2R , ∗ o2I , ∗ i1R , ∗ i1I , ∗ i2R , ∗ i2I ;
double mult [2];
int i , b , k ;
int S , B , Nb , MED = N > >1 , MEDb ;
18
19
20
21
22
23
26
27
28
29
30
31
32
33
34
35
36
39
40
41
43
44
/∗ PHASE FACTOR COMPUTING ∗/
WN__ = −2∗ M_PI / N ;
WN__ = inv?−WN__ : WN__ ; /∗ IFFT ∗/
WN = (double ∗∗) malloc (sizeof(double ∗) ∗2) ; /∗ k ={0 ,... , N/2−1} ∗/
WN [ REAL ] = (double ∗) malloc (sizeof(double) ∗ MED ) ;
WN [ IMAG ] = (double ∗) malloc (sizeof(double) ∗ MED ) ;
for( k =0; k < MED ; k ++) {
WN_ = WN__ ∗ k ;
WN [ REAL ][ k ] = cos ( WN_ ) ;
WN [ IMAG ][ k ] = sin ( WN_ ) ;
}
/∗ Input bitreverse ordering ∗/
input_br = csignal_clone ( input ) ;
bit_reverse ( input_br ) ;
/∗ Input and output matrices will swap in each stage ∗/
output = csignal_alloc ( N ) ;
55
56
47
48
49
50
51
52
53
54
55
56
58
59
60
61
62
63
64
66
67
70
71
72
74
75
76
B. I MPLEMENTACIÓN C DEL ALGORITMO FFT BASE 2
/∗
S : number of stages
B : number of butterflies in each stage
Nb : size of butterfly in each stage
∗/
S = round ( log ( N ) / M_LN2 ) ;
B = MED ;
Nb = N / B ;
for( i =0; i < S ; i ++) { /∗ for each stage ∗/
MEDb = Nb > >1;
if( i %2 == 0) { /∗ input and output assignment ∗/
i1R = i2R = input_br −>real ; i1I = i2I = input_br −>imag ;
o1R = o2R = output −>real ; o1I = o2I = output −>imag ;
} else {
i1R = i2R = output −>real ; i1I = i2I = output −>imag ;
o1R = o2R = input_br −>real ; o1I = o2I = input_br −>imag ;
}
i2R += MEDb ; i2I += MEDb ;
o2R += MEDb ; o2I += MEDb ;
for( b =0; b < B ;) { /∗ for each butterfly ∗/
WNr = WN [ REAL ];
WNi = WN [ IMAG ];
for( k =0; k < MEDb ; k ++) {
∗ o1R = ∗ o2R = ∗ i1R ;
∗ o1I = ∗ o2I = ∗ i1I ;
if( k ==0) {
∗ o1R += ∗ i2R ; ∗ o1I += ∗ i2I ;
∗ o2R −= ∗ i2R ; ∗ o2I −= ∗ i2I ;
} else {
mult [ REAL ] = ∗ WNr ∗ ∗ i2R − ∗ WNi ∗ ∗ i2I ;
mult [ IMAG ] = ∗ WNr ∗ ∗ i2I + ∗ WNi ∗ ∗ i2R ;
∗ o1R += mult [ REAL ]; ∗ o1I += mult [ IMAG ];
∗ o2R −= mult [ REAL ]; ∗ o2I −= mult [ IMAG ];
}
78
79
80
81
82
83
84
85
86
i1R ++; i1I ++; i2R ++; i2I ++;
o1R ++; o1I ++; o2R ++; o2I ++;
88
89
WNr += B ; WNi += B ;
91
92
}
B. I MPLEMENTACIÓN C DEL ALGORITMO FFT
BASE
2
b ++;
i1R += MEDb ; i1I += MEDb ; i2R += MEDb ; i2I += MEDb ;
o1R += MEDb ; o1I += MEDb ; o2R += MEDb ; o2I += MEDb ;
94
95
96
}
98
B = B > >1;
Nb = Nb < <1;
100
101
103
}
105
if( S %2 == 0) { /∗ swap input_br and output if needed ∗/
swap = output ;
output = input_br ;
input_br = swap ;
}
106
107
108
109
/∗ Normalize output ∗/
normalize ( output , inv , norm_method ) ;
111
112
csignal_free ( input_br ) ;
free ( WN [ REAL ]) ;
free ( WN [ IMAG ]) ;
free ( WN ) ;
115
116
117
118
return output ;
121
122
}
125
void b it_ re ve rs ed _i nd ex (unsigned int ∗ bri , unsigned int N ) {
/∗
By Sean Eron Anderson . See fft . h header file for details .
∗/
126
127
128
130
132
133
134
135
136
137
139
140
unsigned int i ;
static const unsigned char b i t _ r e v e r s e _ t a b l e 2 5 6 [256] = {
#define R2 ( n )
n,
n + 2∗64 ,
n + 1∗64 ,
n + 3∗64
#define R4 ( n ) R2 ( n ) , R2 ( n + 2∗16) , R2 ( n + 1∗16) , R2 ( n + 3∗16)
#define R6 ( n ) R4 ( n ) , R4 ( n + 2∗4 ) , R4 ( n + 1∗4 ) , R4 ( n + 3∗4 )
R6 (0) , R6 (2) , R6 (1) , R6 (3)
};
for( i =0; i < N ; i ++) {
unsigned char ∗ p = (unsigned char ∗) & i ;
57
58
B. I MPLEMENTACIÓN C DEL ALGORITMO FFT BASE 2
141
unsigned char ∗ q = (unsigned char ∗) ( bri + i ) ;
143
q [3]
q [2]
q [1]
q [0]
144
145
146
=
=
=
=
b i t _ r e v e r s e _ t a b l e 2 5 6 [ p [0]];
b i t _ r e v e r s e _ t a b l e 2 5 6 [ p [1]];
b i t _ r e v e r s e _ t a b l e 2 5 6 [ p [2]];
b i t _ r e v e r s e _ t a b l e 2 5 6 [ p [3]];
/∗ Fix position ∗/
int s = sizeof(int)∗8− round ( log (N−1)/ M_LN2 ) ;
∗( bri + i ) = ∗( bri + i ) >>s ;
148
149
150
}
151
153
}
156
void bit_reverse ( csignal ∗ input ) {
unsigned int N = input −>size ;
csignal ∗ output ;
double ∗ oR , ∗ oI , ∗ iR , ∗ iI ;
int k , i ;
157
158
159
160
163
unsigned int ∗ bri = (unsigned int ∗) malloc (sizeof(unsigned int) ∗ N ) ;
bi t_ re ve rs ed _i nd ex ( bri , N ) ;
165
output = csignal_alloc ( N ) ;
167
iR
iI
oR
oI
162
168
169
170
=
=
=
=
input −>real ;
input −>imag ;
output −>real ;
output −>imag ;
177
for( k =0; k < N ; k ++) {
i = bri [ k ];
∗ oR = iR [ i ];
∗ oI = iI [ i ];
oR ++; oI ++;
}
179
csignal_copy ( input , output ) ;
181
free ( bri ) ;
csignal_free ( output ) ;
172
173
174
175
176
182
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 al
software 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
0, t =
6 t0
δ(t − 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.
Z ∞
δ(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ón
x(t) cumple:
x(t) ∗ δ(t − t0 ) = x(t − t0 )
61
Anexo E
Demostración: transformada de Fourier de un pulso
rectangular
Sea una función rectangular x(t) de amplitud A como el representado en la siguiente
figura:
(t)
A
t
0
- /2
/2
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 calcula:
X(f ) =
Z ∞
x(t)e
−∞
=
=
−jωt
dt = A
Z
τ
2
− τ2
e−j2πf t
dt = A
−jω
"
e
−jωt
#τ
2
=
− τ2
jA −jπf τ
e
− ejπf τ =
ω
jA
(cos(−πf τ ) + j · sen(−πf τ ) − cos(πf τ ) − j · sen(πf τ )) =
ω
jA
sen(πf τ )
sen(πf τ )
(−2j · sen(πf τ )) = A ·
=A·τ ·
= A · τ · sinc(f τ )
2πf
πf
πf τ
Siendo una representación genérica de la función «sinc» la siguiente:
sinc(f)
f
0
Figura E.2: Función «sinc»
63
Anexo F
Demostración: transformada de Fourier de un tren
de deltas
Sea la función de muestreo ideal sδ (t) de periodo Ts :
∞
X
sδ (t) =
δ (t − kTs )
k=−∞
La función de muestreo ideal sδ (t) es un tren de Deltas de Dirac (ver anexo D) separadas
por el periodo Ts . Como sδ (t) es periódica de periodo Ts , admite un Desarrollo en Serie de
Fourier de la forma:
sδ (t) =
∞
X
Cn ejkωs t
n=−∞
donde ωs =
2π
.
Ts
Los coeficientes espectrales se calculan como:
T
T
1 Z 2s
1 Z 2s
1
1
−jnωs t
Cn =
sδ (t)e
dt =
δ(t)e−jnωs t dt = e−jnωs 0 =
= fs
Ts
Ts
Ts − 2
Ts − 2
Ts
Ts
Por tanto, la señal muestreadora ideal se puede volver a expresar como:
sδ (t) =
∞
X
n=−∞
Cn ejnωs t =
∞
X
fs ejnωs t = fs
n=−∞
∞
X
ejnωs t
n=−∞
Y como la transformada de la suma es la suma de las transformadas:
T F [sδ (t)] = Sδ (f ) = fs
∞
X
n=−∞
65
δ (f − nfs )
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/
de9f41d4-b3b1-4842-aa1f-19b7d30e5c81@4.3.
[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 comunicación, 4a edición. McGraw-Hill, 2007.
[Doi11]
Jonny Doin. SPI Master/Slave Interface. OpenCores, 2011.
opencores.org/project,spi master slave.
[Ell87]
Douglas F. Elliot. Handbook of Digital Signal Processing / Engineering Applications. Academic Press, 1987.
[HR80]
José María Hernando Rábanos. Teoría de la comunicación, v. 1. Departamento
de 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. Editorial
Centro de Estudios Ramón Areces, 2006.
[IJ93]
E. C. Ifeachor and B. W. Jervis. Digital Signal Processing – A Practical Approach. Addison-Wesley, 1993.
[Jon07]
Douglas L. Jones.
The DFT, FFT, and Practical Spectral Analysis.
OpenStax CNX, 2007.
http://cnx.org/contents/
d2c6d393-3590-403d-8a18-c892055b046b@2.2.
67
http://
68
BIBLIOGRAFÍA
[ME96]
Craig Marven and Gillian Ewers. A Simple Approach to Digital Signal Processing. 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 LATEX
empleando una modificación de la plantilla que se puede encontrar en:
https://bitbucket.org/arco group/
[Respeta esta atribución al autor]
Descargar