Desarrollo de Sistema OFDM sobre FPGA

Anuncio
Tesis de grado de Ingeniería Electrónica
Desarrollo de sistema OFDM sobre
FPGA
Autor: Marcos Cervetto
Directora: Dra. Ing. Cecilia Galarza
Julio de 2010
Índice general
I. Transmisión de datos sobre líneas de tensión
3
1. Problema general
1.1. El medio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
4
4
2. Alternativa: OFDM
6
3. OFDM. Fundamentos
3.1. Transmisión multiportadoras
3.2. Espacio de señales . . . . .
3.3. OFDM . . . . . . . . . . . .
3.4. DFT . . . . . . . . . . . . .
3.5. Prefijo Cíclico . . . . . . . .
.
.
.
.
.
8
8
9
11
15
16
4. Alfabetos
4.1. QAM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
4.2. ADPSK . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
21
21
23
5. Carga
27
II. Diseño de un transceiver OFDM para PLC
28
6. Idea
6.1.
6.2.
6.3.
6.4.
6.5.
6.6.
29
31
32
35
36
36
37
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
general
Etiquetamiento y mapeo . . . . . . . .
Manejo de carga . . . . . . . . . . . . .
IFFT / FFT . . . . . . . . . . . . . . .
Inserción y remoción del prefijo cíclico
Ecualizador . . . . . . . . . . . . . . .
Detección . . . . . . . . . . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
III. Herramientas de diseño
40
7. Plataforma de desarrollo
7.1. FPGAs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
41
41
i
Índice general
7.2. Elección de plataforma . . . . . . . . . . . . . . . . . . . . . . . . . .
7.3. Esquema de trabajo . . . . . . . . . . . . . . . . . . . . . . . . . . . .
8. Diseño: System Generator y MATLAB
8.1. Generalidades . . . . . . . . . . . .
8.1.1. Definiciones y conceptos . .
8.1.2. Tokens comunes . . . . . . .
8.1.3. Scripts en MATLAB . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
44
45
47
47
48
49
56
IV. Síntesis del transceiver
57
9. Esquema básico
9.1. Transmisor . . . . . . . . . . . . . . . . . . . . . .
9.1.1. IFFT / FFT . . . . . . . . . . . . . . . . .
9.1.2. Mapeo . . . . . . . . . . . . . . . . . . . .
9.1.3. Adquisición de datos . . . . . . . . . . . .
9.2. Receptor . . . . . . . . . . . . . . . . . . . . . . .
9.2.1. Remoción del prefijo Cíclico . . . . . . . .
9.2.2. Compensación del factor de escalaje . . . .
9.2.3. Ecualizador . . . . . . . . . . . . . . . . .
9.2.4. Detección . . . . . . . . . . . . . . . . . .
9.3. Sincronización y tiempos . . . . . . . . . . . . . .
9.3.1. Transmisor . . . . . . . . . . . . . . . . .
9.3.2. Receptor . . . . . . . . . . . . . . . . . . .
9.3.3. Sincronización entre transmisor y receptor
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
58
58
60
67
73
73
75
75
75
77
81
81
82
82
10.Simulaciones y resultados
10.1. Cascada IFFT/FFT . . . . . . . . . . . . . . . . . .
10.2. Truncamiento vs redondeo convergente en IFFT/FFT
10.3. Precisión y factores de fase en IFFT/FFT . . . . . .
10.4. Canal AWGN . . . . . . . . . . . . . . . . . . . . . .
10.5. Ruido de banda angosta . . . . . . . . . . . . . . . .
10.6. Ecualización con distintos CPs . . . . . . . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
83
83
84
85
86
87
87
.
.
.
.
.
.
.
.
.
.
.
.
.
V. Implementación
90
11.Plataforma de desarrollo
11.1. Características del kit de desarrollo . . . . . . . . . . . . . . . . . . .
11.2. Herramientas de software . . . . . . . . . . . . . . . . . . . . . . . . .
91
91
92
12.Implementación
12.1. Conexión del sistema . . . . . . . . . . . . . . . . . . . . . . . . . . .
93
94
ii
Índice general
12.1.1. Nivel MAC . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95
12.1.2. Lógica intermedia . . . . . . . . . . . . . . . . . . . . . . . . . 101
12.1.3. Conexión del módem . . . . . . . . . . . . . . . . . . . . . . . 102
Bibliografía
106
iii
Introducción
La modulación por multiportadoras (MultiCarrier Modulation, MCM), en particular, OFDM (Orthogonal Frequency Division Multiplexing), fue empleado con éxito
en un gran número de aplicaciones en los últimos años. Sin embargo, la teoría, los
algoritmos y las técnicas de implementación siguen siendo temas de interés en el área
de comunicaciones digitales.
Las aplicaciones de OFDM se presentan tanto en medios cableados como inalámbricos. En medios cableados, encontramos versiones de OFDM en ADSL, VDSL, y
en PLC (Power Line Communications). Esta última técnica involucra el desafío de
formar un canal de comunicaciones de banda ancha a través de líneas de tensión, con
las dificultades intrínsecas que este canal posee.
En sistemas inalámbricos es ampliamente usado, por citar algunos: DAB (Digital
Audio Brodcasting), DVB (Digital Video Broadcasting), Wireless LAN 802.11a, g, n
e HIPERLAN/2, entre otros.
OFDM es ideal para sistemas que requieran baja potencia irradiada, como es el
caso de BPL (Broadband over Power Lines), que se encuentra en bandas de baja
frecuencia y por lo tanto las radiaciones del enlace deben mantenerse al mínimo. Una
de las ventajas principales es su adaptación a medios con condiciones austeras por
medio de técnicas sencillas de ecualización. Existen diferentes técnicas de adaptación,
por medio de algoritmos de balanceo de carga y/o de energía, que son apropiadas
para sistemas OFDM.
Por los puntos arriba mencionados, resulta de particular interés desarrollar un sistema OFDM para poder estudiar, medir, comparar y contrastar resultados, creando un
vínculo entre los desarrollos teóricos y las cuestiones prácticas. Este trabajo permite
además profundizar sobre ciertas cuestiones de índole práctica, que promueven un
cabal entendimiento de las diferentes partes del sistema, así como enfrentar diversos
problemas que quedan fuera del marco de una exposición teórica, por rigurosa que
sea la misma.
El objetivo es desarrollar un módem OFDM en banda base siguiendo ciertas recomendaciones de estándares de BPL, pero sin someterse a los lineamientos de dichos
estándares. Esto permite tener flexibilidad a la hora de hacer las diferentes pruebas,
con distintos esquemas de modulación, configuraciones, canales, etc. Dado que el trabajo involucra la implementación del dispositivo sobre alguna plataforma digital, su
elección es un factor clave para el desarrollo del trabajo, así como para las futuras
pruebas y modificaciones que deseen hacerse.
En resumen, el objetivo de este trabajo es lograr un entendimiento necesario para
poder implementar el sistema OFDM en una plataforma física, y permitir flexibilidad
en la configuración del mismo, de manera de poder hacer pruebas de interés, y analizar
1
Índice general
los resultados obtenidos.
En la Parte I, se describe el problema general de transmisión sobre líneas de tensión,
la modulación OFDM como posible alternativa y algunos conceptos de constelaciones,
alfabetos, carga, etc.
En la Parte II, se trabaja a nivel sistema con un esquema OFDM teórico y se
explican algunas consideraciones de índole práctico que surgen a la hora de ajustar
el diseño a un modelo en particular.
En la Parte III, se explica con un cierto grado de profundidad las herramientas
utilizadas para diseñar, simular y sintetizar el módem en una plataforma digital.
También se fundamenta la plataforma elegida y el esquema de trabajo a seguir.
En la Parte IV, tomando las consideraciones de diseño explicadas en la Parte II
junto con las herramientas de trabajo enumeradas en la Parte III, se resuelva el
problema central de sintetizar el dispositivo en la plataforma elegida. Ademas, se
incluyen simulaciones y resultados encontrados durante la síntesis del mismo.
En la Parte V, se explica la plataforma de desarrollo utilizada, las herramientas de
software de implementación y las pruebas realizadas para la verificación del funcionamiento del dispositivo.
2
Parte I.
Transmisión de datos sobre líneas de
tensión
3
1. Problema general
La transmisión de información a través de líneas de tensión no es un tópico nuevo.
Las compañías de distribución de energía eléctrica han usado esta idea por muchos
años, pero la mayoría lo utilizan para propósitos de control o supervisión de las estaciones de trabajo. Es decir, las tasas de transmisión en estos enlaces son relativamente
bajas y ocupan una porción pequeña del espectro electromagnético.
La transmisión de datos a alta velocidad por líneas de tensión se ha convertido en
un tema de interés en los últimos años y representa una fuente de investigación y
desarrollo, así como de desafíos tecnológicos. Este tipo de comunicación se engloba
bajo las siglas PLC (Power Line Communication). Se han realizado varios esfuerzos
en busca de un estándar, entre ellos el de la IEEE [1] y OPERA [2].
El principal atractivo de este tipo de sistema es reutilizar la infraestructura de la
red eléctrica disponible, para la transmisión de datos a alta velocidad. La instalación
de estas redes en circuitos domésticos brinda la posibilidad de reducir el cableado
interno y permite utilizar un único conector para alimentación e información. Además,
en zonas poco accesibles o de bajos recursos, reutilizar el medio eléctrico resulta en
una reducción significativa de los costos de despliegue. Considerando estas ventajas,
es conveniente realizar un análisis somero del medio en cuestión, y evaluar posibles
alternativas que permitan hacer frente a las dificultades que presenta.
1.1.
El medio
Las líneas de tensión conforman un medio de transmisión dispersivo, afectado por
ruido coloreado y ruido impulsivo periódico y aperiódico [3]. Presenta un alto grado
de ramificación, por lo cual las reflexiones siempre serán una cuestión importante.
Una comunicación por este medio se vuelve susceptible al fenómeno de crosstalk,
debido a que los cables no presentan, de por sí, medidas para evitar este efecto. El
canal es variante en el tiempo, ya que puede modificarse abruptamente cuando la
topología de la red cambia, por ejemplo como consecuencia de variaciones de carga.
Adicionalmente, los cables suelen estar descubiertos, volviéndose fuente y objeto de
interferencia electromagnética (EMI).
Una estimación básica del canal se puede hacer suponiendo un ancho de banda de
1MHz ~ 30 MHz. En la realidad, nos encontraremos con limitaciones regulatorias y
técnicas. Para explotar las capacidades del medio, son preferibles canales con baja
atenuación y baja densidad espectral de potencia de ruido.
4
1. Problema general
En la figura 1.1, se observan las respuestas en frecuencia de cuatro canales de
referencia publicados en IEEE Communications Magazine [3].
Figura 1.1.: Canales de referencia
Los canales pueden ser clasificados como:
Canal de referencia 1: “excelente” largo ≈ 100 m, sin ramas
Canal de referencia 2: “bueno” largo ≈ 110 m, 6 ramas
Canal de referencia 3: “regular” largo ≈ 210 m, 8 ramas
Canal de referencia 4: “malo” Área residencial sin una estructura de red regular
(fuerte ramificación)
Debido a las regulaciones y las limitaciones técnicas impuestas por los canales, se
proponen distintas bandas de transmisión (0.5 MHz ~ 10 MHz, 0.5 MHz ~ 20 MHz,
10MHz ~ 30 MHz) y se sugieren diferentes ambientes para cada una (indoors, outdoors). Estos debates no están totalmente resueltos en la actualidad y varios esfuerzos
por completar un estándar son llevados a cabo por distintas organizaciones.
Existen limitaciones en el espectro y en las emisiones electromagnéticas, así como
disposiciones dictadas por consideraciones de EMC (ElectroMagnetic Compatibility).
5
2. Alternativa: OFDM
Frente a un canal con las características mencionadas en 1.1, se necesita un esquema
de modulación que cumpla con los siguientes requisitos:
Robusto frente a la Interferencia Intersimbólica (ISI). Debido a que el canal es
dispersivo, distintos símbolos que llegan al receptor se superponen y dificultan
la decisión símbolo a símbolo
Alta eficiencia espectral. Se dispone de un ancho de banda limitado y es deseable
utilizarlo eficientemente
Adaptativo. Debe ser capaz de adaptarse a los cambios del canal y ser adecuado
para realizar balance de carga y de energía
Poco sensible a ruidos impulsivos. Es deseable que los símbolos sean lo suficientemente largos en tiempo en comparación con la duración de los impulsos
La modulación por multiportadoras es una técnica ampliamente conocida para los
canales dispersivos y limitados en banda. Dentro de este conjunto de modulaciones,
OFDM (Orthogonal Frequency Domain Modulation) es el esquema más popular, tanto
por sus propiedades y virtudes, como por su relativa sencillez en comparación con
otras técnicas multiportadoras. Sus características permiten enfrentar canales con
deficiencias tales como las del canal PLC.
La idea principal de OFDM es usar canales para la transmision que sean ortogonales
entre si, lo que elimina el crosstalk (interferencia cocanal) y aumenta significativamente la eficiencia espectral. No se requieren bandas de guarda entre canales; de hecho,
existe una fuerte superposición entre ellos pero, debido a su ortogonalidad, es posible
su separación y posterior demodulación.
OFDM es un esquema ampliamente estudiado y ha sido utilizado en diversos estándares, tanto cableados como wireless:
ADSL, VDSL en par telefónico
DVB (Digital Video Broadcasting) en sus variantes -C2 (Cable), -T (Terrestrial)
-H (Handheld)
ISDB (Integrated Services Digital Broadcasting) en su variante -T (Terrestrial)
Wireless LAN (WLAN) en sus interfaces de radio IEEE 802.11a, g, n y HIPERLAN/2
6
2. Alternativa: OFDM
DAB (Digital Audio Broadcasting)
OFDM presenta la ventaja de ser un sistema flexible y adaptable y dadas las
capacidades del hardware actual es totalmente viable como una solución para canales
con fading selectivo en frecuencia y variantes en el tiempo, que requieren un esquema
elástico y de fácil reconfiguración.
En OFDM es fundamental que se conserve la ortogonalidad entre los canales o
subportadoras. De hecho, la inserción de un prefijo cíclico o de un intervalo de guarda
tiene como fin evitar la pérdida de dicha ortogonalidad. Por esta razón, las debilidades
principales de OFDM son:
La sensibilidad a sincronización en frecuencia
El corrimiento Doppler puede provocar problemas de sincronismo en frecuencia
La señal OFDM tiene un alto PAPR (Peak to Average Power Ratio). Esto
requiere conversores A/D y D/A de alta resolución, y una alta linealidad en el
sistema
Una alinealidad en el sistema genera distorsión por intermodulación conocida
como ICI (InterChannel Interference). Un efecto indeseado es la radiación de
componentes fuera de banda
7
3. OFDM. Fundamentos
3.1.
Transmisión multiportadoras
La modulación por multiportadoras puede entenderse conceptualmente como un
stream de datos que es dividido en K diferentes substreams, cada uno de los cuales
es modulado por una portadora fk , de la forma ej2πfk t .
En la figura 3.1 se ilustra la situación:
Figura 3.1.: Esquema conceptual de modulación por multiportadoras
donde skl representan los símbolos complejos provenientes de alguna constelación
(QAM, PSK, por ejemplo), en el instante l y modulando la subportadora k. Se puede
asumir que se tiene K subportadoras, por la tanto, k = 0 . . . K − 1
El bloque cuya respuesta al impulso es g(t) es una ventana conformadora del pulso,
que puede ocupar en duración más de un tiempo de símbolo, TS , y cuyo soporte puede
ser infinito, en el caso más general.
Por lo tanto la señal s(t) toma la forma:
s(t) =
K−1
X
∞
X
k=0
l=−∞
ej2πfk t
skl g(t − lTS )
(3.1.1)
Otra manera de ver el esquema de modulación por multiportadoras, es pensarlo
como un banco de filtros y definir gk (t) = ej2πfk t g(t), como el filtro, centrado en la
frecuencia correspondiente.
8
3. OFDM. Fundamentos
De esta manera, el esquema queda como muestra la figura 3.2:
Figura 3.2.: Esquema multiportadoras alternativo
por lo tanto, con esa definición, s(t) queda como:
s(t) =
∞ K−1
X
X
skl gk (t − lTS )
l=−∞ k=0
y haciendo gkl (t) = gk (t − lTS ) = ej2πfk (t−lTS ) g(t − lTS ), se obtiene
∞ K−1
X
X
skl gkl (t)
s(t) =
(3.1.2)
l=−∞ k=0
Los dos enfoques son similares: si se multiplican los símbolos de 3.1.2, por un factor
de fase ej2πfk lTS , se obtiene 3.1.1. Este factor de fase no cambia la performance del
sistema, por lo tanto se trata de sistemas equivalentes.
Antes de proseguir con la elección de g(t), es necesario introducir algunos conceptos
básicos y notación en el espacio de señales.
3.2.
Espacio de señales
Se consideran señales con energía finita, o sea señales que cumplan con:
ˆ ∞
|s(t)|2 dt < ∞
(3.2.1)
−∞
Introduciendo la notación de producto interno entre dos señales v(t) y w(t)
ˆ ∞
hs(t), w(t)i =
v ∗ (t)w(t)dt
(3.2.2)
−∞
9
3. OFDM. Fundamentos
se puede decir que todas las señales con energía finita cumplen con
ks(t)k2 = hs(t), s(t)i < ∞
(3.2.3)
Este producto cumple con todas las propiedades de un producto interno regular.
v(t) y r(t) se dicen ortogonales si y sólo si hv(t), r(t)i = 0.
Un conjunto de señales vk (t), forma una base ortonormal si y sólo si
hvi (t), vj (t)i = δij
donde
δij =

1
(3.2.4)
i=j
i 6= j
0
es la delta de Kronecker.
Dada una base ortonormal de señales vk (t), con k = 1, 2, . . . cualquier señal de
energía finita s(t) puede escribirse como
s(t) =
∞
X
αk vk (t)
(3.2.5)
k=1
es decir, como una combinación lineal de las funciones base. Los coeficientes αk se
obtienen haciendo
αk = hvk , si
(3.2.6)
Esto quiere decir que el coeficiente αk representa el grado de similitud o la cantidad
de vk (t) que es necesaria para reconstruir en conjunto la señal s(t).
En el nivel más básico de una comunicación digital, existe un transmisor de la
forma
s(t) =
K−1
X
sk gk (t)
(3.2.7)
k=0
donde los símbolos sk representan la información y las señales gk (t) son las funciones
base usadas para transmitir los símbolos.
La tarea del detector es recuperar los símbolos sk enviados, a partir de las señal
recibida s̃(t). Si se cuenta con un canal ideal de transmisión, es decir s(t) = s̃(t),
entonces los símbolos pueden ser recuperados, proyectando la señal recibida sobre las
funciones base:
ˆ ∞
sk = hs, gk i =
gk∗ (t)s(t)dt
(3.2.8)
−∞
10
3. OFDM. Fundamentos
que se puede escribir como
#
"
ˆ ∞
∗
sk =
gk (τ − t)s(τ )dτ
−∞
= [gk∗ (−t) ∗ s(t)]t=0
(3.2.9)
t=0
Esto quiere decir que la detección de los símbolos transmitidos sk , a través de la
base gk (t), se realiza por medio de un filtro, denominado filtro adaptado (o matched
filter), cuya respuesta impulsiva es gk∗ (−t).
Este tipo de demodulación maximiza la relación señal a ruido en el extremo receptor frente a un símbolo corrupto con ruido blanco únicamente (no necesariamente
gaussiano).
3.3.
OFDM
La función g(t) vista previamente, no sólo estipula el tipo de modulación, sino que
además define las propiedades de ese sistema de transmisión, tanto en frecuencia como
en tiempo. Resulta conveniente tomar una base ortogonal de funciones, de manera
que cumpla con
hgkl , gk0 l0 i = δkk0 δll0
(3.3.1)
gkl (t) = gk (t − lTS ) = ej2πfk (t−lTS ) g(t − lTS )
(3.3.2)
En esta forma, se exige ortogonalidad en frecuencia y en tiempo simultáneamente.
Esto permite que el receptor pueda recuperar un símbolo skl sin ISI, proyectando la
señal recibida r(t) de la siguiente manera:
ŝkl = hgkl , ri
(3.3.3)
siendo ŝkl la salida del filtro adaptado, muestreada en el instante correspondiente.
Hay dos maneras de satisfacer la condición de ortogonalidad impuesta por la ecuación 3.3.1. Tomando pulsos limitados en tiempo y ortogonales en frecuencia (OFDM)
o tomando pulsos limitados en frecuencia y ortogonales en tiempo (base de Nyquist).
En particular, para OFDM, los pulsos son exponenciales complejas limitadas por una
ventana rectangular. Es útil introducir la siguiente función:

1
− 12 ≤ t ≤ 12
Π(t) = 
0 para otro t
Si se define fk =
k
TS
(3.3.4)
, y planteando:
gk (t) = ej2πfk t g(t) = ej2πfk t Π
11
t
TS
(3.3.5)
3. OFDM. Fundamentos
se puede ver que g(t) = Π TtS es una ventana rectangular centrada en el origen de
ancho TS .
Gráficamente, y para K = 8, las funciones gk (t) tienen la forma que muestra la
figura 3.3:
Figura 3.3.: Funciones base gk (t) para k = 0, 1, 2 y 7 y para K = 8
En el dominio de la frecuencia:
Gk (f ) = G(f − fk ) = F[g](f − fk )
(3.3.6)
donde F[] es el operador transformada de Fourier. Por lo tanto, se obtiene la transformada F[g] y se evalúa en f − fk
F[Π](f ) =
Usando este resultado y x(at) ↔
que1
Π
1
t
TS
sen(πf )
= sinc(f )
πf
1
X( fa )
|a|
,siendo F[x](f ) = X(f ), se puede ver
↔ TS sinc(f TS )
La notación ↔ implica la relación entre una función y su transformada de Fourier
12
(3.3.7)
(3.3.8)
3. OFDM. Fundamentos
Por lo tanto,
Gk (f ) = F[g](f − fk ) = TS sinc((f − fk )TS )
(3.3.9)
siendo fk = TkS , con k = 0, 1 . . . , K − 1
Estas funciones, gráficamente, tienen la forma que muestra la figura 3.4:
Figura 3.4.: Funciones base Gk (f ) para k = 0, 1, 2, . . . 7 y para K = 8
La elección de funciones gk (t) = ej2πfk t Π( TtS ) no es casual. Al tratarse de la base
de Fourier, se cumple
hgk (t), gk0 (t)i = δkk0
(3.3.10)
Sabemos por el teorema de Plancharel o la ecuación de Parseval que se cumple la
siguiente equivalencia entre los dominios del tiempo y la frecuencia:
hGk (f ), Gk0 (f )i = hgk (t), gk0 (t)i = δkk0
lo que era de esperarse, dado que la base de Fourier es ortogonal.
13
(3.3.11)
3. OFDM. Fundamentos
Si, a su vez, se define
gkl (t) = gk (t − lTS )
(3.3.12)
los pulsos no se superponen en tiempo y se garantiza 3.3.1:
hgkl , gk0 l0 i = δkk0 δll0
Entonces se puede que las funciones base del esquema OFDM, son las siguientes:
s
gk (t) =
t
1 j2π Tk t
1
S Π
e
−
TS
TS
2
(3.3.13)
donde se ha efectuado un desplazamiento de los símbolos de 0 a TS , lo cual no afecta
lo enunciado anteriormente. Por lo tanto, un transmisor OFDM, no es más que una
síntesis de Fourier en cada intervalo de tiempo TS , donde skl son los símbolos que
transportan la información.
Por claridad, se llama TS al tiempo total del símbolo OFDM, el cual, cuando se
introduzca el concepto de intervalo de guarda, será mayor al tiempo de integración
del receptor T . Sin intervalo de guarda, será T = TS . Por lo tanto,
s
gk (t) =
1
1 j2π k t
t
e T Π
−
T
T
2
(3.3.14)
El receptor realiza un análisis de Fourier, por medio de la proyección de la señal
recibida r(t), sobre las funciones gk (t)
s
hgk0 , ri =
1
T
ˆ
T
k
e−j2π T t r(t)dt
(3.3.15)
0
El cual recupera sk0 , debido a que el tiempo de integración es de 0 a T , si r(t) = s(t).
Para un l cualquiera, hgkl , ri, representa una integración desde lT hasta (l + 1)T .
Frente a ruido blanco, este tipo de estimación, maximiza la relación señal a ruido en
la entrada del receptor, como se dijo anteriormente.
14
3. OFDM. Fundamentos
3.4.
DFT
Los beneficios y conceptos básicos de OFDM ya eran conocidos a comienzos de los
años 60. En un principio, sintetizadores analógicos eran utilizados para generar las
distintas componentes en frecuencia. Esto hacía la implementación costosa, sumado
al hecho de que no es sencillo mantener completamente estables a los osciladores.
En 1971, Weinstein y Ebert [4] propusieron usar la DFT como forma de generar la
modulación. Sin embargo, OFDM encontró su lugar en el mercado cuando las técnicas
de procesamiento digital y las tecnologías utilizadas redujeron suficientemente sus
costos y permitieran una implementación eficiente.
A partir de la señal OFDM ideal
s(t) =
∞ K−1
X
X
skl gkl (t)
(3.4.1)
l=−∞ k=0
q
con gkl (t) = gk (t − lT ) =
1 j2π Tk (t−lT )
e
Π
T
t−lT
T
1
2
−
.
Se puede considerar sólo el símbolo inicial, cuando l = 0, pero los resultados obtenidos son aplicables a cualquier símbolo, ya que el procesamiento se realiza símbolo
a símbolo, en una ventana de largo T .
Entonces,
s(t) =
y gk (t) =
q
1 j2π Tk t
e
Π
T
t
T
−
1
2
K−1
X
K−1
X
k=0
k=0
sk0 gk0 (t) =
sk gk (t)
Por lo tanto,
s
s(t) =
X
k
t
1
1 K−1
sk ej2π T t Π
−
T k=0
T
2
(3.4.2)
Pasando esta señal a su equivalente en banda base, es decir, considerando un tiempo
T
de muestreo Tsamp = K
, se observa que
s(t)
T
t=n K
s
X
k T
1 K−1
nT
1
sk ej2π T n K Π
−
T k=0
KT
2
s
X
2π
1 K−1
n
1
sk ej K kn Π
−
T k=0
K 2
=
=
Se puede reconocer esta expresión como la IDFT de la señal sk . La ventana sólo
dice que la salida es válida en n = − K2 . . . 0 . . . K2 , con K par, como es usual. Se puede
15
3. OFDM. Fundamentos
notar que los símbolos enviados sk , tomados de a K, necesitan ser transformados
mediante la IDFT en otro conjunto de K símbolos, que conforman el símbolo OFDM
en banda base. Resumiendo:
s[n] = s(t)
3.5.
T
t=n K
= IDF T {sk }
(3.4.3)
Prefijo Cíclico
En el desarrollo hecho hasta ahora, hemos supuesto que el transmisor y el receptor
se encuentran perfectamente sincronizados y que el canal es ideal, por lo tanto, no
tenemos ICI (InterCarrier Interference) y tampoco ISI (InterSymbol Interference). El
ICI se refiere a la interferencia causada por la dispersión de los símbolos llevados por
las portadoras, dentro del mismo símbolo OFDM. Esto se debe principalmente a una
respuesta no ideal del canal. Por otro lado, el ISI es la perturbación que causa un
símbolo OFDM sobre los adyacentes. Puede ser eliminado si se añade un intervalo
temporal entre símbolos OFDM, denominado intervalo de guarda. Lo que contiene
este bloque es irrelevante a fines de eliminar el ISI, ya que en el receptor es descartado
sin observarlo. No obstante, la adición de un contenido especial en este segmento
ayuda enormemente a la eliminación de ICI por medio de una ecualización sencilla.
Adicionar un prefijo cíclico a un símbolo OFDM consiste en realizar la operación
de copia, ilustrada en la figura 3.5.
Figura 3.5.: Prefijo cíclico
A continuación, se explican los beneficios de la adición de un prefijo cíclico entre
símbolos OFDM.
Suponiendo que a la salida de nuestro modulador OFDM, se tiene un símbolo
xl =
h
xl (0) xl (1) · · · xl (N − 1)
iT
∈ CN
donde N es el tamaño de la IFFT y l es el índice del símbolo OFDM.
Adicionalmente, dejando que el canal no ideal tenga una respuesta finita de largo
L, dada por los coeficientes
h=
h
h0 h1 · · · hL−1
16
iT
∈ CL
3. OFDM. Fundamentos
Se puede escribir lo que llega al receptor por medio del producto de convolución;
se supone ausencia de ruido en el canal:














yk (0)
yk (1)
..
.
..
.
..
.
yk (N − 1)













=
















h0
..
.
..
.
hL−1
0
..
.
0
0 ···
.. ..
.
.
...
..
..
.
.
···
..
0
0
...
...
.
hL−1
0 ···
.. ..
.
.
...
...
..
.
..
..
.
0 
.. 
. 


0
0
..
.
. 0
· · · · · · h0













xk (0)
xk (1)
..
.
..
.
..
.
xk (N − 1)













(3.5.1)
En lo subsiguiente, se supone que la duración del prefijo cíclico ν es mayor a la
duración de la respuesta impulsiva del canal L. En la figura 3.6 se puede ver el prefijo
cíclico, aplicado sólo a dos portadoras.
Figura 3.6.: Prefijo cíclico para dos portadoras
La incorporación del prefijo cíclico implica hacer
xk (−i) = xk (N − i) para i = 1, 2, . . . , ν
17
3. OFDM. Fundamentos
Se puede interpretar como una convolución con una matriz circular de la siguiente
forma:














yk (0)
yk (1)
..
.
..
.
..
.
yk (N − 1)













=
















h0
..
.
..
.
hL−1
0
..
.
0
0 ···
... ..
.
...
..
..
.
.
···
..
0
0
...
...
.
hL−1
hL−1 · · · h1
..
..
..
.
.
.
...
hL−1
...
0
..
..
..
.
.
.
..
.
0
· · · · · · h0


















xk (0)
xk (1)
..
.
..
.
..
.
xk (N − 1)













y = Hx
donde H es la matriz circular en cuestión.
El proceso completo se aprecia en la figura 3.7:
Figura 3.7.: Inserción y remoción del CP en sistema OFDM
Asumiendo que el canal es invariante en el tiempo (y con ausencia de ruido, como
se estableció anteriormente), se puede escribir
rl = WHWH sl
donde W ∈ CN ×N es la matriz de transformación de Fourier normalizada dada por
18
3. OFDM. Fundamentos

1
W= √
N










1
1
1
1
..
.
1
W
W2
W3
..
.
1
W2
W4
W6
..
.
1
W3
W6
W9
..
.
···
···
···
···
1
W N −1
W 2(N −1)
W 3(N −1)
..
.
1 W N −1 W 2(N −1) W 3(N −1) · · · W (N −1)(N −1)











(3.5.2)
2π
y W = e−j N . La matriz es unitaria, o sea, cumple con la propiedad WWH = IN
Si se usa la descomposición en autovalores de una matriz circular puede demostrarse
[5] que H puede escribirse como
H = WH ΛW
y
"
"
Λ =diag W
h
##
0N −L
(3.5.3)
por tanto, Λ es la DFT de N puntos del canal, es decir su respuesta en frecuencia.
Reemplazando, se puede ver que
H
rl = WWH ΛWW sl = Λsl
(3.5.4)
El resultado obtenido permite ver que cada portadora es afectada en forma independiente por un coeficiente complejo igual a la respuesta en la frecuencia de dicha
portadora. La inserción de un prefijo cíclico adecuado, por tanto, permite independizar los canales y dar lugar a una ecualización trivial, que consiste en invertir los
coeficientes de cada subcanal. Un algoritmo de aprendizaje se ocuparía en tal caso
de la estimación de dichos coeficientes y, dada la variabilidad temporal del canal, su
actualización tendría que ser dinámica.
Desde otro punto de vista, es posible demostrar que el prefijo cíclico convierte la
convolución tradicional con el canal en una convolución circular. Esto se debe a que
la señal con un prefijo suficiente “parece” periódica, a fines de convolucionarse con
un canal de respuesta impulsiva finita.
Para un símbolo OFDM l cualquiera, sucede que
yl (m) =
L−1
X
xl (m − i)h(i) para 0 ≤ m ≤ N − 1
(3.5.5)
i=0
y dado que
xl =
h
xl (N − L + 1) · · · xl (N − 2) xl (N − 1) xl (0) xl (1) · · · xl (N − 1)
19
iT
∈ CN
3. OFDM. Fundamentos
en la convolución xl (m − i) se convierte en xl ((m − i) mod N), lo que implica una
convolución circular entre xl y h
yl (n) = xl (n) ⊗ h(n)
(3.5.6)
En el receptor, se realiza la DFT de yl , entonces
Yl (k) = Xl (k)H(k)
(3.5.7)
por el teorema de convolución. Esto hace que cada coeficiente del canal H(k) se
multiplique punto a punto con los símbolos enviados Xl (k) en cada subportadora k,
de manera que el ICI existente es nulo y la ecualización se realiza en forma separada
1
.
para cada canal, simplemente multiplicando por el peso complejo H(k)
20
4. Alfabetos
Hasta ahora no se ha dicho nada de los símbolos skl que ingresan a la IFFT,
salvo que se trata de números complejos. En un esquema más realista, estos números
provienen de un mapa complejo reducido, con puntos específicos correspondientes a
valores binarios concretos. Estos mapas se denominan constelaciones y en el presente
trabajo se utilizan de dos tipos: QAM (Quadrature Amplitude Modulation) y ADPSK
(Amplitude Differential Phase Shift Keying).
4.1.
QAM
Las constelación QAM (Quadrature Amplitude Modulation), es una combinación
de modulación en amplitud y en fase. En particular, la QAM cuadrada1 , distribuye
los bits en una matriz ordenada, de puntos equiespaciados, como muestra la figura
4.1, para el caso de 16 símbolos:
Figura 4.1.: QAM de 16 puntos con etiquetamiento Gray
1
QAM representa un conjunto de modulaciones más general, pero la más ampliamente utilizada es
la QAM cuadrada
21
4. Alfabetos
La constelación está normalizada de manera que
−1 ≤ <(sk ) ≤ 1
−1 ≤ =(sk ) ≤ 1
En la figura se incluye el etiquetamiento. El en este caso se realiza con código Gray,
de manera que el salto al símbolo más cercano, involucra sólo un cambio de bit. Al
hacerlo de esta manera, se logra aumentar la performance en la tasa de error de bit,
frente a un canal AWGN. Con otros tipos de etiquetamientos, el cambio de un símbolo
al más cercano no implica el cambio de un único bit. El etiquetamiento de tipo Gray
no es único.
La ventaja de usar QAM rectangular radica en el hecho de que la detección de los
símbolos recibidos es sencilla, ya que se puede pensar como la superposición de dos
PAMs (Pulse Amplitude Modulation). Los umbrales de decisión de una constelación
PAM son simples y fácilmente implementables.
Los tipos de constelaciones QAM usadas en este trabajo son: 4QAM, 16QAM, y
256QAM. Es decir, constelaciones de 2, 4 u 8 bits.
22
4. Alfabetos
4.2.
ADPSK
A diferencia de QAM, ADPSK no es un tipo de constelación ordinaria, pero posee
la virtud de un esquema diferencial en fase, con lo cual es poco susceptible a las
rotaciones de fase que el canal introduzca.
ADPSK es recomendado por OPERA [2] en su especificación. Básicamente es DPSK
de varios anillos. Una constelación DPSK se puede observar en la figura 4.2
Figura 4.2.: ADPSK de 1 anillo y 4 fases
Esta constelación se puede denominar 4DPSK, o 1D4PSK. La codificación diferencial se hace de la siguiente manera
θk = (θk−1 + (
2π
)bk )
M
(4.2.1)
donde bk ∈ [0, 1, . . . M − 1]. M puede tomar valores como 4, 8, 32 y representa la
cantidad de fases que tendrá la constelación. La codificación diferencial se realiza
entre tonos o subportadoras y no entre símbolos OFDM. Esto tiene la ventaja de
que si las variaciones de fase son lo suficientemente lentas, la codificación diferencial
podrá contrarrestar esas rotaciones y recuperar exitosamente los símbolos enviados.
23
4. Alfabetos
ADPSK es similar a DPSK, pero con varios anillos, codificados en forma no diferencial, por ejemplo: 2AD8PSK, 8AD32PSK. Los diagramas de dichas constelaciones
se ven en las figuras 4.3 y 4.4 respectivamente.
Figura 4.3.: ADPSK de 2 anillos y 8 fases
24
4. Alfabetos
Figura 4.4.: ADPSK de 8 anillos y 32 fases
Las constelaciones ADPSK usadas en este trabajo son 1AD4PSK (1 anillo y 4 fases),
2AD8PSK (2 anillos y 8 fases), 8AD32PSK (8 anillos y 32 fases). Están normalizadas
de manera que los valores máximos sean de módulo unitario.
25
4. Alfabetos
El etiquetamiento de dichas constelaciones separa la amplitud de la fase como
muestra la figura 4.5.
Figura 4.5.: Codificación de amplitud y fase utilizada en ADPSK
Se observa que para niveles de carga crecientes, la codificación de la palabra ADPSK
varía para acomodar los nuevos valores binarios.
26
5. Carga
Un algoritmo de carga computa el número de bits bn y la energía εn para todo
subcanal en un conjunto de canales paralelos. Estos algoritmos tienen por objetivo
aprovechar la información disponible del medio y lograr un balance entre los subcanales con respuestas óptimas y aquellos con respuestas pobres. En la figura 5.1 se
observa una respuesta en frecuencia típica de un canal BPL [6]:
Figura 5.1.: Respuesta en frecuencia de canal BPL
Cuando el número de subcanales es grande, cada subcanal tendrá una respuesta
aproximadamente plana y el objetivo de los algoritmos de carga es calcular la energía
y la cantidad de bits que viajarán en tales canales. Además, estos algoritmos toman
en cuenta la variabilidad temporal del canal, por lo cual son totalmente dinámicos y
actúan en colaboración con los algoritmos de aprendizaje.
En el presente trabajo, se desarrolla el concepto de carga pero no se implementan los
algoritmos de carga correspondientes. En particular, se realiza una parametrización
en carga de bits. En lo sucesivo, cuando se haga referencia a carga, se estará hablando
de dicha parametrización.
27
Parte II.
Diseño de un transceiver OFDM para
PLC
28
6. Idea general
Basándose en las ideas expuestas en la parte I, se crea un modelo de transceiver a
alto nivel y son fijados los parámetros del sistema, las constelaciones a utilizar y los
bloques constitutivos fundamentales que sentarán las bases del diseño escogido. En
particular en este trabajo se focalizará en el núcleo OFDM del transceiver. De esta
manera, quedará definido el esquema a implementar y en la parte IV se explicará la
síntesis del mismo en la plataforma elegida.
Observando el sistema completo en su forma más básica, vemos que existen al
menos dos enfoques posibles desde el punto de vista de diseño. En la figura 6.1, se
muestra uno de ellos, donde se señala la ubicación del diseño en el sistema completo.
En este caso, la funciones de down conversion y de up conversion son relegadas a un
frente analógico y únicamente la modulación en banda base es realizada en el sistema
digital.
Figura 6.1.: Diseño con mixers analógicos
29
6. Idea general
Otra alternativa es plantear las etapas de corrimiento en frecuencia dentro del
sistema digital y, de esta manera, se requiere un solo conversor, aunque de mayor
velocidad. Este enfoque se puede ver en la figura 6.2.
Figura 6.2.: Diseño con mixers digitales
Independientemente del enfoque utilizado, en ambos gráficos se indica la parte del
sistema estudiada en el presente trabajo.
En la figura 6.3 vemos una idea básica del sistema a diseñar con un nivel de detalle
mayor.
Figura 6.3.: Sistema OFDM básico
Es importante señalar que el alcance del presente trabajo es realizar la modulación
y demodulación en banda base. Es decir, las partes que conforman el sistema son:
Adquisición de datos en formato binario de alguna fuente (una PC, por ejemplo)
Adaptación de datos binarios al formato de datos del módem
Etiquetamiento y mapeo de palabras binarias en símbolos de constelación
Manejo de carga
30
6. Idea general
IFFT
Inserción de prefijo cíclico
Remoción de prefijo cíclico
FFT
Ecualizador, dados los coeficientes de la respuesta en frecuencia del canal H(k)
Detección y posterior armado de palabra según constelación
Reencapsulamiento en formato de fuente destino
Se deja la discusión sobre la adquisición de datos y el reencapsulamiento para
otra sección, ya que no es un elemento determinante en la configuración general del
módem.
6.1.
Etiquetamiento y mapeo
Las constelaciones a utilizar son QAM y ADPSK. Adicionalmente, en cada familia
de constelaciones se dispone de 3 niveles de carga: 2, 4 u 8 bits por símbolo. Las
constelaciones están normalizadas a la unidad, es decir,
|sk | ≤ 1 ∀k
El etiquetamiento se realiza asignándole a cada símbolo de la constelación un valor
binario de la cantidad de dígitos correspondiente. La operación de mapeo convierte la
palabra binaria en un número complejo, de acuerdo al etiquetamiento pre-establecido.
Dependiendo del mapeo, para una misma tasa de error de símbolo, es posible tener
varias tasas de error de bit. Por lo tanto, equivocarse en la elección del símbolo recibido
implica equivocarse en uno o más de los bits correspondientes a dicho símbolo. La tasa
de error de bit, para una tasa de error de símbolo determinada, depende directamente
del etiquetamiento elegido. Dado que todas las constelaciones son bidimensionales,
existe un canal real y un canal imaginario.
Cada uno de los puntos se carga en una portadora. En el caso de utilizar la constelación QAM, un símbolo es independiente de los demás. En ADPSK, esto no es así
debido a la naturaleza diferencial del mapeo. Por lo tanto un símbolo por separado no
lleva ninguna información: es necesario saber la fase del símbolo anterior para poder
decodificar el mensaje.
No se manejan símbolos OFDM mixtos con portadoras cargadas con QAM y otras
con ADPSK. Una implementación de este tipo, requiere un mayor seguimiento sobre
la carga de las portadoras y necesita un conjunto de lógica adicional, cuyo costo de
realización excede los beneficios de la misma.
31
6. Idea general
En el caso de QAM, el mapeo se realiza teniendo los símbolos almacenados en dos
tablas: una para la parte real y otra para la imaginaria. De manera que, una palabra
se mapea en dos números reales, que conforman el símbolo en cuestión.
En la figura 6.4 se muestra la idea simple detrás del mapeo QAM.
Figura 6.4.: Mapeo QAM
El mapeo ADPSK, en cambio, no puede ser realizado en forma tan sencilla. La
amplitud y la fase se codifican por separado, lo que involucra un slicer 1 para dividir la
palabra. La amplitud se mapea normalmente, como en el caso de QAM. Por otra lado,
la fase, al codificarse de forma diferencial, requiere de una lógica adicional que realice
la operación y como veremos en el apartado siguiente, aparecen problemas sutiles
a la hora de implementarlo. Una vez codificada la amplitud y la fase diferencial, es
necesario ensamblar el símbolo y transmitirlo en partes (real e imaginaria). La figura
6.5 muestra el mapeo ADPSK.
Figura 6.5.: Mapeo ADPSK
6.2.
Manejo de carga
El manejo del balance de carga se tiene que realizar tanto en la lectura como en el
mapeo de los símbolos. Para una carga determinada, es necesario obtener una palabra
del largo adecuado y mapearse con el tipo de constelación correspondiente.
Para la lectura, la idea es utilizar un slicer configurable, que divida la palabra en
varias subpalabras de largo menor. Evidentemente, a menor carga corresponde una
1
Se refiere a un sistema digital que divide una palabra digital en subpalabras de largo menor
32
6. Idea general
mayor latencia, por lo cual, debe cesar la lectura de nuevas palabras hasta haber
finalizado la actual.
La idea se ve en la figura 6.6, donde se aprecia una lectura desde una memoria
RAM para una carga de 4 bits.
Figura 6.6.: Lectura con carga de 4 bits
Para 2 bits, el esquema sería como muestra la figura 6.7
Figura 6.7.: Lectura con carga de 2 bits
33
6. Idea general
Se observa que a menor carga corresponde menor tasa de vaciamiento del banco de
datos (una memoria RAM en las figuras). Esto involucra un riesgo de overflow o de
underflow en el sistema, que debe ser manejado apropiadamente. Se deja para más
adelante, la discusión de estos problemas.
Por otro lado, el mapeo es diferente de acuerdo a la carga elegida. Por ejemplo,
una carga de 4 bits necesita una constelación de 16 puntos, una de 8 bits precisa una
de 256 puntos, etc. Esta cuestión se puede resolver utilizando una tabla para cada
nivel de carga y multiplexando la elección adecuadamente. En este trabajo se opta
por una segunda posibilidad que consiste en usar una única tabla para todos los tipos
de carga, con todas las constelaciones almacenadas y usar un offset que redireccione
el puntero al lugar adecuado.
La figura 6.8 ilustra la situación para el caso QAM y se muestra la elección de dos
constelaciones:
Figura 6.8.: Mapeo con distintas cargas
34
6. Idea general
Así como la carga afecta a la lectura, al mapeo y al etiquetamiento en el transmisor,
de manera similar impacta a la escritura, a la detección y al reencapsulamiento en el
receptor. Por lo tanto, el mapeo como la detección están parametrizados con el valor
de la carga.
6.3.
IFFT / FFT
Uno de los principales atractivos de OFDM es que existen algoritmos muy eficientes
para calcular la DFT y la IDFT. Este conjunto de algoritmos y técnicas se conocen
colectivamente como FFT (Fast Fourier Transform) y fueron ampliamente estudiados
desde su descubrimiento por Cooley y Tukey [7].
De hecho, la FFT2 es la parte central de un sistema OFDM, ya que realiza la
modulación y demodulación en sí. Por lo tanto, sus propiedades y configuraciones
determinan las características principales de cualquier sistema OFDM.
Los parámetros en el presente trabajo fueron tomados principalmente del consorcio
europeo OPERA [2]. Los valores relevantes para la modulación en 30 MHz (Tipo I)
son los siguientes:
NIDF T = 2048
TIDF T = 51,2µs
donde NIDF T es la cantidad de puntos de la IDFT (cantidad de portadoras o canales)
y TIDF T es el segmento de tiempo que corresponde a la IDFT (que no es igual al
tiempo de símbolo OFDM debido al prefijo cíclico).
Además, en el estándar se define una magnitud para cuantizar el error causado por
el procesamiento digital y la conversión D/A y A/D, denominada EVM (Error Vector
Magnitude):
EV M =
v
u
N
u 1 P
2
u
u N k=1 |S(k) − S0 (k)|
u
u
N
t
2
1 P
N
k=1
|S0 (k)|
× 100 %
Donde:
N denota el número de subportadoras
S(k) representa la medición del símbolo complejo transportado por la k-ésima
portadora
S0 (k) es el símbolo ideal que tendría que llevar la k-ésima portadora
2
Cuando se menciona a la FFT de esta manera, se hace referencia a la IFFT también
35
6. Idea general
Este valor no debe superar el 1 %. Esta restricción será tenida en cuenta en la
elección de las precisiones numéricas del sistema, de forma que el error numérico
introducido se mantenga, por lo menos, en un orden de magnitud por debajo de tal
valor. El factor limitante debe ser la conversión A/D y D/A.
El parámetro TIDF T permite tener una idea de la tasa de clock a la cual debe
trabajar el sistema. El procesamiento debe ser lo suficientemente rápido como para
poder alcanzar dicha tasa de transmisión. Haciendo un cálculo estimativo, se obtiene
lo siguiente:
tasa de clock ≥
1
= 40M Hz
2048 × 51,2µs
Por lo tanto, el sistema debe trabajar a más de 40M Sps y la plataforma elegida
para la implementación debe poseer las capacidades para este tipo de tasas y aún
mayores.
6.4.
Inserción y remoción del prefijo cíclico
Como se explicó en la sección 3.5, la inserción de un prefijo cíclico es obligatoria
en un esquema OFDM que sufre de propagación multicamino. Es deseable, además,
no contar con un único prefijo cíclico, sino que sea intercambiable de acuerdo a las
condiciones que presente el canal. Esto brinda un grado de flexibilidad extra al sistema
y permite realizar un balance entre eficiencia y performance. OPERA propone dejar
el largo del prefijo invariante en el tiempo. Debido a que hay 3 tasas de transmisión
o sea, 3 tipos de símbolos OFDM completos, la cantidad de muestras cambia en cada
prefijo, para mantener la duración constante.
En el sistema actual contamos con 4 opciones de prefijo:
40 % de N
26 % de N
13 % de N
Sin prefijo
Es posible cambiar este largo durante la comunicación, aunque normalmente se
mantiene el mismo prefijo en una cantidad elevada de símbolos OFDM.
6.5.
Ecualizador
Si se dispone de la respuesta en frecuencia del canal, que puede ser estimada por un
algoritmo de aprendizaje [8, 9] y, dado un prefijo cíclico adecuado, es posible realizar
36
6. Idea general
una ecualización sencilla. Se realiza portadora a portadora (canales independientes)
simplemente dividiendo por el coeficiente correspondiente de ese canal. La estimación puede (y debe) ser dinámica y el ecualizador usará la vigente para realizar la
operación.
6.6.
Detección
El proceso de detección consiste en asignar al punto recibido una palabra binaria
de la constelación. Para esto, se definen lo que se denominan regiones de decisión,
que se determinan por cercanía, y con ellas se escoge el simbolo enviado.
Se comienza haciendo la razonable suposición de que el punto transmitido, en
promedio, se modifica por una cantidad determinada de ruido lo suficientemente
pequeña como para que la distancia con el punto recibido sea mínima. En otras
palabras, si se calcula la distancia del punto recibido con todos los puntos de la
constelación, en promedio, se tendría que obtener que la distancia mínima es la del
punto originalmente enviado.
Para ilustrar lo dicho anteriormente, mostramos en las figuras 6.9, 6.10 y 6.11 tres
constelaciones, una QAM y dos ADPSK, con los límites de las regiones de decisión
señaladas.
Figura 6.9.: QAM con las regiones de decisión señaladas
37
6. Idea general
Figura 6.10.: ADPSK de 4 puntos con regiones de decisión indicadas
Figura 6.11.: ADPSK de 16 puntos con las regiones de decisión indicadas
En particular, se puede ver en el etiquetado QAM que las regiones adyacentes
sugieren el cambio de un solo bit en la palabra. Esto hace que un error de símbolo
con los adyacentes, resulte únicamente en un error de bit. Una etapa de codificación
puede ser capaz de detectar dichos errores y hasta corregirlos.
En el caso de la detección QAM, el detector puede realizar la tarea estimando por
separado la parte real y la imaginaria. Lo anterior se puede hacer porque los límites de
las regiones de decisión son colineales con los ejes real e imaginario. De esta forma, el
38
6. Idea general
proceso de detección se vuelve separable, lo cual permite una implementación sencilla,
por medio de una serie de comparadores.
En el caso de la detección en una constelación ADPSK y, dado un punto recibido del
plano complejo con coordenadas binómicas, no es posible separar el proceso a causa de
la distribución de las regiones de decisión con respecto a los ejes. Sin embargo, debido
a que la simetría es circular en este tipo de constelación, es conveniente disponer de
los puntos en un sistema de coordenadas polar, expresados en función de la magnitud
y la fase.
Teniendo en cuenta que el envío de datos es en forma diferencial en fase y utilizando
la codificación explicada en la sección 4.2, donde la magnitud es separada de la fase
en la palabra binaria, planteamos el detector que se muestra en la figura 6.12 para la
constelación ADPSK.
Figura 6.12.: Detección conceptual ADPSK
El conformador de símbolo se encarga de convertir el número en coordenadas binómicas a coordenadas polares. La amplitud se trata en forma directa por medio de un
decisor similar al utilizado en el caso QAM. En cambio, para recuperar la fase original
α, debe realizarse la operación inversa a la aplicada en el transmisor. Con los valores
ak (subpalabra binaria proveniente de la decisión en magnitud) y bk (subpalabra binaria proveniente de la decisión en fase) obtenidos , es posible reensamblar la palabra
original.
39
Parte III.
Herramientas de diseño
40
7. Plataforma de desarrollo
Un proyecto en hardware de un sistema experimental de comunicaciones de este
tipo requiere una plataforma de desarrollo que contenga las facilidades necesarias que
permitan:
Alcanzar los requisitos exigidos por el diseño, en velocidad y tamaño
Diseñar las partes del sistema y comprobar su funcionalidad en forma gradual
Ajustar los parámetros de forma dinámica
Interconectar los subsistemas como “cajas negras”, que impulsen un diseño jerárquico
Realizar simulaciones y obtener datos que se asemejen a su comportamiento en
el dispositivo físico real, tanto en tiempo como en precisión numérica
Implementar el sistema en una plataforma física real y comprobar su funcionalidad
Documentar el desarrollo para futuras referencias
Debido a que cuenta con modelos orientados a este tipo de proyecto, con el software apropiado y además con kits de desarrollo que facilitan la puesta en marcha de
prototipos, el tipo de plataforma elegida es FPGA (Field Programmable Gate Array).
Antes de describir la plataforma de trabajo en detalle, se da una breve introducción
a los FPGAs.
7.1.
FPGAs
Los FPGAs son circuitos integrados digitales que contienen bloques de lógica programables e interconexiones programables entre ellos. El objetivo es que dichos bloques puedan ser configurados de distintas maneras para poder lograr una amplia
variedad de tareas. “Field Programming” se refiere al hecho de que el dispositivo es
configurado en el laboratorio (in the field) por el usuario en lugar de ser configurado
por el fabricante. En general, cuentan con la posibilidad de ser programadas miles de
veces y en sistema (ISP, In System Programming).
Un ASIC (Application-Specific Integrated Circuit) es un circuito integrado hecho a
medida para un uso en particular. No son reconfigurables ya que su propósito es único.
Representan la solución óptima en cuanto a velocidad y complejidad para una tarea
41
7. Plataforma de desarrollo
específica. Aunque los ASICs ofrecen el mejor compromiso entre tamaño, performance
y complejidad, el proceso de diseño y construcción es costoso y extremadamente largo,
con la desventaja adicional de que el sistema queda congelado en el chip y puede
cambiarse sólo haciendo una nueva versión del mismo.
Un PLD (Programmable Logic Device) es un dispositivo electrónico usado para
construir circuitos digitales reconfigurables. En términos generales, se puede decir que
un PLD apunta a sistemas más simples o con gran cantidad de lógica combinacional,
en comparación a un FPGA.
Los FPGAs ocupan un espacio entre los ASICs y los PLDs, porque su funcionalidad
puede ser configurada como la de los PLDs, pero contienen millones de compuertas
con las cuales se pueden desarrollar funciones complejas y elaboradas, que antes sólo
eran posible con ASICs. El costo de un FPGA es muchísimo más bajo que el de un
ASIC (aunque en producción a gran escala, se abarata el costo de los ASICs). La
realización de cambios en el diseño es mucho más sencilla y versátil en un FPGA.
Actualmente, los FPGAs poseen muchas capacidades extra además de su extensa
área y velocidad, que van desde núcleos para procesamiento embebido hasta interfaces
I/O de alta velocidad, múltiples interfaces lógicas, etc.
Figura 7.1.: FPGA Spartan 3 de Xilinx
Tienen una gran cantidad de aplicaciones en distintos campos, a saber:
ASICs y chips a medida: se usan para funciones que antes sólo eran implementadas por ASICs
Procesamiento digital de señal (DSP): el procesamiento digital a alta velocidad
tradicionalmente era manejado por chips especializados llamados DSPs (Digital
Signal Processors). Hoy en día, los FPGAs contienen muchas características
deseables (grandes cantidades de On-chip RAM, multiplicadores embebidos,
etc.), que permiten realizar tareas de procesamiento digital a velocidades mucho
mayores
Microcontroladores embebidos: las capacidades actuales y las herramientas de
42
7. Plataforma de desarrollo
software están convirtiendo a los FPGAs en atractivos para tareas tradicionalmente manejadas por microcontroladores
Comunicaciones de capa física: los FPGAs contienen transceivers de alta velocidad que permiten unir las funciones de comunicación y networking en un solo
dispositivo
43
7. Plataforma de desarrollo
7.2.
Elección de plataforma
Teniendo en cuenta lo anteriormente expuesto, la plataforma elegida para el proyecto actual es la ofrecida por Xilinx 1 , que cuenta con el siguiente conjunto de
herramientas a nivel software y hardware:
Xilinx ISE Design Suite 10.1. El paquete de software contiene una variedad
de aplicaciones. En particular, son de interés para el presente proyecto, Xilinx System Generator 10.1, Project Navigator, el simulador ModelSim XE, el
sintetizador XST y el programador iMPACT
El kit de desarrollo XUPV5-LX110T, que incorpora un FPGA Xilinx Virtex®-5
XC5VLX110T, múltiples interfaces I/O, USB2, DVI/VGA, Ethernet 10/100/1000,
etc.
Una imagen del kit utilizado se muestra en la figura 7.2
Figura 7.2.: Kit XUPV5-LX110T de Xilinx
1
Junto con Altera, Xilinx es uno de los mayores productores de FPGAs y de soluciones basadas en
FPGA
44
7. Plataforma de desarrollo
7.3.
Esquema de trabajo
En este apartado, se explica el esquema de trabajo seguido y se da una descripción
de las herramientas de software utilizadas en el desarrollo del transceiver OFDM. La
figura 7.3 muestra un camino a seguir o workflow de las principales tareas a realizar
para la realización del prototipo.
Figura 7.3.: Camino a seguir o workflow
La figura 7.3 es un diagrama temporal o lógico de las tareas a realizar; sin embargo,
no es evidente la forma que toma la estructura del proyecto, en cuanto a sus partes.
45
7. Plataforma de desarrollo
Se puede observar en la figura 7.4 una idea de la conexión entre las distintas porciones del proyecto, y sus dependencias.
Figura 7.4.: Conexión de las distintas partes del proyecto
El esquema muestra dos caminos que confluyen; uno de ellos, corresponde al diseño
realizado con System Generator y el otro al conjunto de lógica adicional que encapsula
y brinda conectividad al sistema. El esquema OFDM en sí es es realizado con System
Generator. En la parte superior de la figura y de forma independiente, se arma un
sistema que acogerá al primero y lo conectará con el exterior. Esta porción consta
de un conjunto de lógica adicional programada en VHDL, restricciones de velocidad,
área y la configuración del kit del FPGA en particular. Este sistema se realiza con el
programa ISE, en VHDL. Su objetivo es encapsular el sistema realizado con System
Generator el cual actúa como caja negra en el esquema completo.
46
8. Diseño: System Generator y
MATLAB
System Generator es una herramienta creada por Xilinx, que agrega un conjunto
de toolboxes al software Simulink que acompaña a cualquier versión de MATLAB.
Este programa brinda la posibilidad de diseñar y simular a nivel lógico una gran
variedad de sistemas digitales desde una óptica que aisla al diseñador de los detalles
y problemas de bajo nivel. A su vez, cuenta con muchos bloques prediseñados que
se pueden conectar entre sí, para lograr el funcionamiento requerido. Cada bloque es
configurable, tanto en su funcionamiento como en algunos detalles de implementación1 . Algunos de ellos permiten definir su funcionalidad, sus entradas, sus salidas,
sus elementos de memoria y su lógica interna. Su función es dar flexibilidad para crear
elementos como máquinas de estado o decisores lógicos, por ejemplo.
Una vez realizadas las simulaciones y obtenidos los resultados esperados, se da paso
al proceso de síntesis, que consiste en volcar el sistema en una unidad funcional en
código VHDL para su posterior utilización en una estructura de mayor jerarquía.
Los sistemas digitales que permite crear System Generator son sincrónicos (aquellos
gobernados por señales de clock) y la representación de los números es en punto fijo.
En un proyecto particular creado en System Generator se definen entradas (Gateway
In) y salidas (Gateway Out), que serán las conexiones que tendrá la entidad final con
el exterior.
8.1.
Generalidades
En System Generator, como en una entidad en VHDL, es necesario definir entradas
y salidas con los bloques especiales Gateway In y Gateway Out. Estas unidades no
sólo representan los límites del sistema, sino que además proporcionan la conversión
de tipo numérico correspondiente para la interacción con los datos provenientes de
Simulink (o de MATLAB).
1
Cuando se habla de implementación, se refiere a ciertos parámetros que son tomados en cuenta al
momento de generar una representación más cercana al circuito lógico final
47
8. Diseño: System Generator y MATLAB
En la figura 8.1, se ve un sistema realizado en System Generator.
Figura 8.1.: Sistema en System Generator
En el centro de la figura se ven bloques comunes, que representan un sistema que
cumple alguna función deseada. En general, es posible definir cualquier número de
entradas y salidas de distinto tipo.
Sin embargo, observando la figura 8.1, se nota que hay un bloque que permanece
aislado del resto, llamado System Generator. Este bloque especial tiene la función de
configurar parámetros generales del sistema, que son importantes la hora de sintetizarlo. Debe estar presente en todo diseño en el que se utilice el toolbox de System
Generator.
8.1.1.
Definiciones y conceptos
Algunos conceptos son generales a todos los bloques. A continuación, se enumeran
los más utilizados:
Tiempo de ejecución Así se denomina a los instantes de tiempo durante los cuales
la simulación está ejecutándose. Ciertos parámetros no son modificables mientras la
simulación se encuentre en este estado.
Precisión Indica la cantidad de bits reservados para representar un número. El
sistema trabaja en punto fijo, por lo tanto, al especificar la precisión, se asignan el
largo total de la palabra y la posición del punto decimal. Por ejemplo, para denotar
una palabra de 16 bits con 2 bits de parte entera y 14 bits de parte fraccionaria, se
escribe 16_14.
Tipo Aritmético
ned) o boolean.
Se refiere al tipo de número: con signo (signed), sin signo (unsig-
48
8. Diseño: System Generator y MATLAB
Pulso de Clock Es una unidad de ejecución normalizada. Puede especificarse de
acuerdo a las necesidades durante la etapa de sintesis.
Truncamiento o redondeo convergente Al realizar operaciones con números descriptos en punto fijo, sucede a veces que el resultado excede la cantidad de bits
disponible para su almacenamiento. En estos casos, es necesario hacer una operación
de redondeo o truncado en los datos. El truncamiento de los datos no representa costo
en recursos alguno, ya que es implementado por la misma estructura del hardware,
mientras que el redondeo convergente requiere lógica extra, debido a que involucra
una comparación.
Wrap o Saturate En caso de overflow, se pueden tomar dos opciones: saturar al
valor máximo o mínimo permitido por el tipo numérico o hacer un wrap, en el cual
se utiliza el valor de overflow como resultado. Saturate implica recursos extra porque
requiere de lógica adicional para realizar las comparaciones.
8.1.2.
Tokens comunes
En este apartado se listan algunos de los bloques o tokens simples usados en el
diseño, provistos por la librería de System Generator. En la mayoría de los tokens es
posible ajustar el tipo y precisión de los datos de salida, así como configurar detalles
de implementación.
System Generator Controla los parámetros de sistema y de síntesis. También es
posible definir y ejecutar la generación de código. Es necesario incluir este token si se
utilizan los bloques del toolbox de System Generator.
Figura 8.2.: Token System Generator
Para el proyecto actual es de interés configurar los siguientes valores:
Compilation: especifica el tipo de compilación cuando el generador de código es
invocado. En este caso, elegimos HDL Netlist para crear código descriptor de
hardware
Part: representa la FPGA destino del diseño. Para el proyecto actual, Virtex 5
xc5vlx110t -3ff1136
49
8. Diseño: System Generator y MATLAB
Target directory: especifica el lugar físico en el disco duro donde se guardarán
los resultados de la síntesis
Synthesis Tool: es la herramienta de síntesis. Se usa la herramienta de Xilinx,
XST
Hardware Description Language: es el lenguaje HDL objetivo. VHDL en este
caso
FPGA Clock Period(ns): define el clock del sistema. Este valor es presentado
como una Constraint a las herramientas de implementación de Xilinx. Para el
presente trabajo, establecemos que el valor adecuado es 8 (en el apartado de
implementación se explica esta decisión)
Multirate Implementation: la opción Expose Clock Ports es la adecuada porque
permite generar el clock del sistema en forma externa
Simulink System Period: define la cantidad de segundos que determinan el período de simulación. Este valor es el máximo común divisor de los períodos de
muestreo que están presentes en el modelo. Por ejemplo, si se dispone de un
bloque que hace Up sampling por un factor de 4, entonces el período tiene que
especificarse como 41 , que es el máximo común divisor entre 41 y 1 (suponiendo
que los demás bloques no presentan conversión de tasa)
Gateway In Estos bloques son las entradas a la parte desarrollada en System Generator del modelo de Simulink. Su propósito es doble: convertir los valores provenientes
de Simulink a una precisión determinada (por ejemplo: de double a 16_8 unsigned) y
definir los puertos y el tipo de cada puerto de la top-level entity generada por System
Generator. Además, se establece el nombre que tendrán dichos puertos en la entidad
final.
Figura 8.3.: Token Gateway In
50
8. Diseño: System Generator y MATLAB
Gateway Out Estos bloques son las salidas de la entidad generada en System Generator del modelo de Simulink. Su propósito es doble: convertir las salidas provenientes
del sistema en System Generator a precisión double, manejada por Simulink y definir
los puertos y el tipo de cada puerto de la top-level entity generada por System Generator. Es útil también para establecer el nombre que tendrán dichos puertos en la
entidad final.
Figura 8.4.: Token Gateway Out
Constant Permite almacenar y generar una constante especificada por el usuario
y no modificable durante el tiempo de ejecución. Es posible ajustar la precisión y el
tipo aritmético para la representación de la constante.
Figura 8.5.: Token Constant
Delay Este bloque implementa un delay de L ciclos, donde L representa un entero
mayor a 1. Cualquier valor provisto en la entrada aparece L ciclos después en la salida.
Figura 8.6.: Token Delay
51
8. Diseño: System Generator y MATLAB
Convert Este bloque permite hacer una conversión al tipo numérico especificado.
Por ejemplo, un número puede ser convertido a unsigned o signed, con una precisión determinada. Este tipo de conversiones, a veces, resultan en pérdida de datos o
requieren padding a derecha o a izquierda.
Figura 8.7.: Token Convert
Inverter Este operador ejecuta la inversión bit a bit del número en su entrada. Si
la entrada es bool, simplemente se trata de una compuerta lógica NOT.
Figura 8.8.: Token Inverter
Logical Permite efectuar una función lógica (OR, AND, NAND, NOR, XOR, XNOR)
bit a bit, en un número de entradas.
Figura 8.9.: Token Logical
52
8. Diseño: System Generator y MATLAB
Cmult Este bloque es un operador de ganancia, es decir, multiplica la entrada por un
valor constante en el tiempo de ejecución. Este multiplicador puede ser una expresión
MATLAB, evaluada durante el tiempo de compilación.
Figura 8.10.: Token Cmult
Mux Este bloque implementa un multiplexor de hasta 32 entradas. Posee una señal
de selección del tipo unsigned, que permite la selección de la entrada deseada en la
salida.
Figura 8.11.: Token Mux
53
8. Diseño: System Generator y MATLAB
MCode Con este módulo se puede definir una función (codificada en un código
similar a MATLAB) y ejecutarla para calcular las salidas durante cada ciclo de simulación. El código es traducido en forma directa a su equivalente en VHDL (o Verilog)
para su posterior implementación.
Figura 8.12.: Token Mcode
Las herramientas de programación principales posibilitan implementar operaciones
como las siguientes:
Entradas y salidas de la función
Conversión entre tipos de datos
Instrucciones de asignación
Contrucciones if/else/elseif
Construcciones switch
Adición, substracción, multiplicación
Operadores relacionales
Operadores lógicos
Funciones shift, concatenate y slice
Variables internas de estado (elementos de memoria). Esto es útil para desarrollar máquinas de estado
Funciones de debugging
54
8. Diseño: System Generator y MATLAB
ROM Este bloque permite especificar una memoria de sólo lectura (Read Only Memory, ROM ). Es necesario definir el ancho de la memoria (tipo de dato), la profundidad (cantidad de direcciones) y el valor de inicialización. También es posible asignar
la latencia de la lectura.
Figura 8.13.: Token ROM
Single Port RAM Este bloque implementa una memoria RAM, con un puerto de
entrada y otro de salida. Contiene las mismas opciones de configuración que la memoria ROM y agrega un puerto de datos para escribir y un write enable para habilitar
la escritura. Dispone de 3 modos de escritura: Read after Write, Read before Write,
No Read on Write.
Figura 8.14.: Token Single Port RAM
55
8. Diseño: System Generator y MATLAB
WaveScope Este bloque especial permite visualizar las señales lógicas deseadas en
forma de analizador lógico. Es muy útil a la hora de encontrar errores en los datos
o en el sincronismo (timing) de las señales. Ofrece varios formatos de visualización:
binario, hexadecimal y decimal. En la figura 8.15, vemos su símbolo y un ejemplo de
una simulación mostrando varias señales.
Figura 8.15.: Token WaveScope
Es posible realizar este tipo de simulaciones dentro del entorno de Project Navigator
una vez sintetizado el código en VHDL. Una alternativa es el software ModelSim de
Mentor Graphics, provisto en ISE Design Suite 10.1.
8.1.3.
Scripts en MATLAB
Para facilitar la realización de simulaciones es deseable poder cambiar las variables
del sistema en forma parámetrica, así como modificar los datos de entrada. Por medio
de MATLAB, y su conexión con Simulink, es posible realizar estas operaciones eficazmente. La mayor parte de los bloques permiten cierta parametrización en sus valores,
lo cual aumenta la flexibilidad en el momento de efectuar simulaciones iterativas.
56
Parte IV.
Síntesis del transceiver
57
9. Esquema básico
Con las herramientas explicadas en la parte III y las ideas planteadas en la parte II,
se explica en este apartado el proceso de diseño del transceiver, su síntesis, su puesta
en marcha, las dificultades surgidas y las simulaciones y resultados adquiridos en el
transcurso.
Los modelos usados en la simulación difieren ligeramente de los usados finalmente
para la síntesis. Este hecho se debe en parte a que en los análisis llevados a cabo
mediante simulaciones, la fuente de datos es proveniente de MATLAB. En cambio,
en la implementación debe provenir de una interfaz estándar (Ethernet por ejemplo). Estas diferencias serán revisadas en la sección correspondiente del apartado de
implementación.
En estas secciones se usará el modelo de simulación, ya que resulta equivalente
desde un punto de vista conceptual.
9.1.
Transmisor
En la figura 9.1, vemos un esquema del transmisor realizado con bloques de System
Generator
58
9. Esquema básico
Figura 9.1.: Esquema del transmisor
59
9. Esquema básico
A continuación, se explican en forma consecutiva las diferentes partes del sistema.
9.1.1.
IFFT / FFT
El bloque IFFT y su contraparte (FFT) son los módulos centrales en el sistema
OFDM. Su función es realizar la DFT (Discrete Fourier Transform) y la IDFT (Inverse Discrete Fourier Transform) con un algoritmo computacionalmente eficiente,
respectivamente.
El core usado es el FFT v5.0 provisto dentro de las herramientas de Xilinx. Estos
módulos son llamados IP (Intellectual Property) y están diseñados de tal forma de ser
óptimos con los recursos disponibles en FPGAs de Xilinx. En la figura 9.2 se observa
el token, tal como fue usado en el diseño.
Figura 9.2.: token IFFT
A seguir se explican los modos de funcionamiento y las posibles opciones y configuraciones tanto de la IFFT como de la FFT, ya que su implementación no incluye
diferencias significativas. Más adelante se incluyen tablas que resumen en detalle la
función de cada entrada y salida.
Descripción Hay varios aspectos a tener en cuenta a la hora de poner en funcionamiento este subsistema:
Entrada de datos: tipo, precisión, modo
Salida de datos: tipo, precisión, modo
Arquitectura: implementación y algoritmo utilizado
60
9. Esquema básico
Número de puntos: N
Orden: Bit reversed, Natural Order
Cuantización: truncado o redondeo convergente
Factores de fase (Twiddle factors): precisión
Escalaje: Unscaled, Scaled, Block Floating Point
Sincronización
Prefijo Cíclico: CP
Entrada de datos El modo de entrada es serie, es decir, los datos entran uno tras
otro, en paquetes o bloques, de forma ordenada y debidamente sincronizados. Los
datos entran por dos canales (real e imaginario) en forma paralela.
La precisión de los datos de entrada puede ser elegida entre 8 y 24 bits en complemento a 2. Un requisito fundamental es que sea de la forma Fix_S_(S-1), por
ejemplo Fix_8_7, Fix_24_23. Como consecuencia, la entrada debe estar en el rango
normalizado [-1;1). Los datos son presentados en orden natural; por ejemplo, para
N = 2048, entrarán ordenadamente las muestras 0, 1 · · · 2047.
Salidas de datos El modo de salida es serie pero es posible especificar el orden:
natural o bit reversed. Cuenta con dos canales (real e imaginario) que salen en forma
paralela, similar a la entrada. La salida en forma natural implica mayores recursos
o mayor tiempo de unloading, según la arquitectura elegida. En el caso de elegir
Pipelined, Streaming I/O, se penalizan los recursos, ya que es necesaria una memoria
RAM extra para realizar el reordenamiento.
La precisión depende del tipo de escalaje hecho. En en presente caso, al usar el modo
Unscaled, la precisión es máxima (full precision) y para una entrada con precisión del
modo Fix_S_(S-1) toma la forma: Fix_(S+log2 N + 1)_(S-1). Por ejemplo, para una
precisión de entrada de Fix_16_15, y N = 2048, la precisión obtenida a la salida es
Fix_28_15. Este crecimiento en la parte entera permite alojar cualquier valor posible
de la salida sin truncamiento en la parte entera. En el ejemplo citado el rango citado
sería [-2048;2048).
Arquitectura El core permite cuatro tipos de arquitetura. A continuación resumimos brevemente sus propiedades y diferencias:
Pipelined, Streaming I/O: esta configuración tiene la posibilidad de cargar datos en la entrada, realizar los cálculos necesarios, y descargarlos en la salida,
simultáneamente. El usuario puede cargar datos continuamente y luego de la
latencia de cálculo, descargarlos a la salida también en forma continua. Soporta
unscaled (para full precision) o escalaje con punto fijo y permite orden natural
o bit reversed a la salida.
61
9. Esquema básico
Radix-4, Burst I/O: en este caso, la carga y descarga de datos no se puede
hacer simultáneamente con el cálculo de la transformada. Sólo se pueden superponer los procesos de carga y descarga si la salida se especifica en orden
bit reversed. Los tres modos de escalaje son permitidos. Usa menos recursos
que la arquitectura Pipelined, Streaming I/O pero la transformada tiene mayor
latencia.
Radix-2, Burst I/O: es similar en cuanto a la relación costo/velocidad que Radix4, Burst I/O, ya que al utilizar otro tipo de butterfly se disminuye tanto el área
como la velocidad de cálculo.
Radix-2, Lite Burst I/O: Esta arquitectura es la alternativa a elegir si se quiere
minimizar recursos. Reutiliza un sumador/restador a costa de un delay extra
en cada butterfly.
La elección de la arquitectura está principalmente determinada por el compromiso
existente entre velocidad y recursos utilizados. Según la hoja de datos de Xilinx [10],
la relación que existe entre recursos - tasa de salida viene dada en forma aproximada
por un gráfico como el que muestra la figura 9.3. Dado el FPGA disponible, es posible
utilizar (al menos en esta primera implementación) el core de mayor throughput, ya
que los recursos son suficientes y posee la mejor relación costo/velocidad.
Figura 9.3.: Recursos vs throughput del core FFT
Número de puntos El número de puntos puede ser: 2m con m = 3, 4 · · · 16. Debido a
consideraciones dictadas por el estándar de Opera [2], se toma N = 2048. La cantidad
62
9. Esquema básico
de puntos N es dinámica, es decir, puede variarse de bloque a bloque. Esta opción
no es utilizada en el presente trabajo.
Truncado o redondeo convergente Al realizar operaciones con precisión finita es
frecuente que los resultados tengan que ser acomodados en una longitud de palabra
menor al largo del número obtenido. Se pueden descartar las cifras menos significativas
haciendo truncamiento o redondeo. El comportamiento del ruido numérico cambia
de forma poco aparente si tomamos una u otra opción como forma de aproximar
decimales.
El método seleccionado es el de redondeo convergente, que utiliza más recursos
pero logra un mejor perfil de ruido numérico. Vemos que:
Las componentes de baja frecuencia, que llevan la información en la portadoras
de menor índice, presentan un ruido de magnitud mayor a las demás portadoras,
debido al truncamiento en los cálculos realizados
Usando redondeo convergente, este ruido desaperece y se normaliza a un nivel
compatible con las demás portadoras
Se realizaron simulaciones (ver sección 10.2) para obtener estos resultados.
Factores de fase (Twiddle factors) Los factores de fase en el algoritmo de la FFT
se refieren a las constantes trigonométricas que son multiplicadas por los datos en el
transcurso del algoritmo. Con el token utilizado es posible escoger factores de fase de
hasta 24 bits de precisión. Por lo tanto, disponemos de dos tipos de precisiones con
las que podemos modificar el comportamiento del ruido numérico introducido por
la IFFT (o la FFT, cuyo perfil de ruido es esencialmente el mismo): la precisión de
los datos de entrada y la de los de factores de fase (twiddle factors). Para estudiar
dicho comportamiento se realizaron una serie de simulaciones donde se puede observar
MSE (Mean Square Error) versus precisión del factor de fase, parametrizado con la
precisión de los datos de entrada. Se pueden ver los resultados de estas simulaciones
en la sección 10.3.
Como conclusión, se puede decir que si deseamos que el factor limitante sea la
precisión de los datos de entrada, la de los factores de fase debe ser escogida de
manera que la curva de MSE ya se haya estabilizado. Se observa además que este
comportamiento se manifiesta notablemente con precisiones de entrada mayores a 12
bits y para precisiones menores el efecto se enmascara.
Escalaje Es posible proporcionar a cada etapa interna de la FFT su factor de escalaje, para que la salida se mantenga en un rango determinado. Se confecciona un
“programa de escalaje” o “agenda de escalaje” que puede ajustar los coeficientes divisores en forma dinámica para obtener, en promedio, un nivel deseado a la salida.
En este trabajo se optó por el modo Unscaled (full precision) y la salida luego es
acondicionada por medio de un escalaje externo a la FFT.
63
9. Esquema básico
Si tenemos en cuenta el rango máximo posible de valores que puede asumir la salida
1
de la IFFT ([-2048 ; 2048) para N = 2048), tendríamos que multiplicar por F = 2048
a la salida, para garantizar valores normalizados entre [-1 ; 1). De esta manera se
logra dimensionar los datos, aunque no en forma eficiente en cuanto a la utilización
óptima de la longitud de palabra en punto fijo disponible.
En la figura 9.4 se observa la precisión de datos de entrada de la IFFT y la precisión
obtenida a la salida en el modo Unscaled, para P = 8 y para N = 2048.
Figura 9.4.: Precisión de datos antes y después de IFFT en modo Unscaled
El problema radica en el hecho de que si los valores obtenidos a la salida de la
1
elimina información
IFFT ocupan un rango mucho menor, multiplicar por F = 2048
útil, dado que la longitud de palabra es finita.
Claro está que encontrar un multiplicando óptimo no es sencillo, porque puede
4
1
provocar pérdida de información. Por ejemplo, si se multiplica por F = 2048
= 512
y
2048
en la salida se presentan números mayores a 4 = 512, se recortan estos número por
1
exceso. Pero en caso de no presentarse números mayores a 512 y se divide por F = 2048
,
se descartan cifras significativas del resultado. Un análisis estadístico permite ver
que el multiplicando depende de la constelación usada y de la aleatoridad de los
datos de entrada. Por medio de experimentaciones y para palabras de naturaleza
8
2
16
, 2048
y 2048
para las
uniforme, se encuentra que los multiplicandos adecuados son 2048
constelaciones de 256, 16 y 4 símbolos utilizadas, respectivamente.
64
9. Esquema básico
Por ejemplo, para una precisión P = 8, la figura 9.5 muestra qué sucede con los
diferentes divisores empleados y cuáles son los bits perdidos. Se observa la palabra
inicial con full precision, como la devuelve el modo Unscaled. Las siguientes palabras
corresponden a multiplicaciones por factores 21k con k = 11 . . . 0 y posterior ajuste a
la precisión del sistema P .
tenemos
Figura 9.5.: Efecto de multiplicación y posterior truncado para P = 8
k
Por supuesto se debe que invertir este efecto en el receptor. Si se utiliza 2048
en el
transmisor, entonces en el receptor luego de la FFT, se tiene que multiplicar por k1
para obtener datos normalizados. Se puede pensar que la cascada IFFT/FFT tiene
que resultar en un sistema identidad, sin tener en cuenta el ruido numérico.
65
9. Esquema básico
Una consideración a tener en cuenta es que conviene tomar k una potencia de
2, de forma que la operación resulte sólo en un truncamiento de las cifras menos
significativas y no involucre errores por el cálculo de la multiplicación.
Sincronización Para poder comunicarse con el token de la IFFT en forma efectiva
se recurre al diagrama de tiempos provisto por el fabricante, que se muestra en la
figura 9.6.
Figura 9.6.: Sincronización IFFT
66
9. Esquema básico
El análisis del sincronismo debe hacerse de forma conjunta, conociendo las distintas
partes del sistema. En la sección 9.3 se detallan los pormenores que tienen que ver
con el sincronismo y los tiempos involucrados.
Prefijo Cíclico (CP) La forma de añadir el prefijo cíclico es sencilla ya que el core
provisto por Xilinx cuenta con la posibilidad de activarlo. Al escoger la inserción del
prefijo cíclico, forzamos a que los datos de salida aparezcan en orden natural y no es
posible escoger bit-reversed. El prefijo cíclico se puede cambiar de bloque en bloque y
los valores que puede tomar van desde 0 hasta N − 1. Como se sugirió en la sección
6.4, se utilizaron 4 prefijos (40 %, 26 %, 13 % y nulo) y la forma de escogerlos es a
través de una variable. La figura 9.7 muestra la implementación en System Generator
de dicho selector.
Figura 9.7.: Elección de Prefijo Cíclico
El módulo Convert se usa para adecuar la longitud de los datos a la requerida por
el token IFFT (log2 N en este caso).
9.1.2.
Mapeo
Así como en la detección, el mapeo ADPSK representa un desafío mayor que el
mapeo QAM, como veremos en esta sección. Primero se examina el mapeo QAM y
luego el ADPSK.
QAM Como se trató en las secciones 6.1 y 6.2, el mapeo QAM es directo y parametrizado con la variable carga. Debemos disponer de una tabla con los valores de
los puntos de la constelación almacenados, llamada tabla de mapeo.
En este caso, cada tabla se implementa con una memoria ROM inicializada adecuadamente cuyas direcciones corresponden al mapeo teórico de la constelación. Es decir,
el valor de la palabra es el mismo valor binario de la dirección en memoria donde se
67
9. Esquema básico
halla el valor del punto de la contelación correspondiente. Ya que las constelaciones
son complejas, por cada valor de palabra se deben producir dos valores reales, uno
para la parte real y otro para la parte imaginaria. Para lograr esto se montan en
tándem dos memorias ROM, donde una dirección determinada corresponde, en una,
a la parte real del punto, y en la otra, a la parte imaginaria.
En la figura 9.8 se muestra el bloque que implementa esta función:
Figura 9.8.: Mapeo QAM
Como se puede ver dispone de una entrada que corresponde a la palabra a ser
mapeada, dos salidas para las partes real e imaginaria respectivamente y una entrada
que permite la parametrización por carga. Dentro de este bloque se encuentra el
subsistema que muestra la figura 9.9
Figura 9.9.: Subsistema de mapeo QAM
Consta de dos memorias ROM y un Mcode llamado Offset_QAM. Este bloque
implementa el offset de memoria que se mencionó en la seccion 6.2. Dado que por
cada nivel de carga tenemos un tamaño de constelación diferente, el bloque Mcode sencillamente agrega un offset para apuntar al banco de direcciones donde se
encuentran los puntos de la constelación correspondiente. Es decir, en la memoria llamada ROM_REAL se almacenan las partes reales de todos los puntos de
68
9. Esquema básico
las constelaciones QAM empleadas (4QAM, 16QAM, 256QAM) y análogamente con
ROM_IMAG.
Se puede observar además que las memorias presentan una latencia de 1. Esta
latencia es posible a configurarla a valores mayores o iguales a 1.
ADPSK La implementación del mapeo en ADPSK se basa en el mismo principio
usado en el mapeo QAM, pero teniendo en cuenta, además, los siguientes factores:
La magnitud y la fase se codifican por separado
Existen dos tablas: una para la magnitud del símbolo y otra para la fase
La fase, al tratarse de forma incremental, acarrea consecuencias debido a la
aditividad del ruido numérico
Una vez escogidas la magnitud y la fase a enviar, se debe conformar el símbolo
nuevamente en coordenadas binómicas
En la figura 9.10 se observa el bloque que se encarga de realizar todas estas tareas.
Figura 9.10.: Mapeo ADPSK
El sistema ADPSK cuenta con el mismo número de entradas que el bloque de
mapeo QAM de la figura 9.8, a excepción de una entrada adicional enable, que tiene
la función de indicar el momento en el cual los datos disponibles son válidos. Esta
entrada en el mapeo QAM no es necesaria, ya que en este caso no hay necesidad de
recordar el estado anterior de ninguna variable. En cambio, en ADPSK, debido a que
la fase actual depende de la anterior, dicho mapeo requiere conocer el momento de
inicio de los cálculos, como se mencionó en la sección 6.1.
La operación realizada corresponde a la indicada en la ecuación 4.2.1, que se repite
a continuación:
θk = (θk−1 + (
2π
)bk )
M
La fase inicial toma un valor nulo θ−1 = 0, pero podría tomar cualquier otro,
mientras que el receptor lo conozca de antemano.
69
9. Esquema básico
En la figura 9.11 se muestra el contenido del bloque ADPSK.
Figura 9.11.: Subsistema de mapeo ADPSK
70
9. Esquema básico
La parte superior del subsistema corresponde al mapeo de la magnitud del símbolo
y la inferior, a la fase. Inicialmente, hay un bloque Mcode denominado Slicer, que
se ocupa de dividir la palabra en dos subpalabras, según sugiere la figura 4.5. Para la
magnitud, el procedimiento es similar al del sistema QAM: offset y tabla de mapeo. En
cuanto a la fase, a partir de la subpalabra bk se obtiene un ángulo αk , correspondiente
al mapeo uno a uno en la constelación. Lo que realmente se envía es la suma de esta
fase αk con la fase θk−1 realizada en el bloque Mcode PhaseDiff. De esta forma, se
obtiene la fase θk , se elige una dirección de mapeo y se guarda θk−1 ⇐ θk . Con la
nueva dirección, se apunta a una nueva tabla de mapeo que contiene la fase en forma
binómica (números complejos de módulo unitario).
Para conformar el símbolo ADPSK se multiplica la magnitud por la fase θk , por
medio de dos multiplicadores: uno para la parte real y otro para la imaginaria. Debido
a la operación recursiva dada por la ecuación 4.2.1, se genera dentro del bloque
PhaseDiff un ruido aditivo que causará un error en la detección cuando éste sea lo
suficientemente grande. Para solucionar este problema, el bloque PhaseDiff realiza
una tercera tarea que consiste básicamente en un proceso de detección mediante un
premapeo de fase. Para entender mejor esta cuestión, se plantean las ecuaciones que
se llevan a cabo. Primero, se obtiene θk de la siguiente manera:
θk = (θk−1 + (
2π
)bk ) = (θk−1 + αk )
M
Se empieza con una fase inicial θk−1 = θ−1 = 0 y αk toma el valor de un punto de
la constelación αk = α0 . Esta operación produce θ˜1 = θ1 + η1 , donde η1 es el error
de la operación debido a la precisión finita. Si se continúa con el proceso sin tener
ninguna otra precaución, se obtiene
θ˜2 = (θ˜1 + α2 ) = θ1 + η1 + α2 = θ2 + η1 + η2
θ˜3 = (θ˜2 + α3 ) = θ2 + η1 + η2 + α3 = θ3 + η1 + η2 + η3
.. .. ..
. . .
θ˜k = θk +
k
X
ηi
i=1
En algún momento, la sumatoria de ruido numérico ki=1 ηi excederá el umbral de
decisión y se optará por enviar la fase del símbolo en forma errónea. Para evitar esto,
se realiza una predetección que “limpia” la fase en cuestión. Si se denota por L[ ] a
esta operación, lo que se obtiene es:
P
θ˜1 = θ1 + η1
L[θ˜1 ] = θ1
71
9. Esquema básico
Lo cual elimina la acumulación de ruido, ya que se remueve ηk para todo k.
En cuanto a la sincronización, la latencia debe ser igual en ambos recorridos: se fija
una latencia de 2 clocks en la memoria ROM que mapea la magnitud, a fin de igualar
los tiempos. La latencia total del conjunto es de 2 clocks y como la del camino QAM
es unitaria, se agrega un delay de 1 clock a la salida para asegurar el sincronismo. En
la figura 9.12 se observa esta corrección, donde también se muestra cómo se selecciona
una constelación por medio de dos multiplexores, a través de una variable boolean.
Se usan bloques Convert a la salida de los mapeadores con el objetivo de ajustar la
precisión a lo exigido por el core de la IFFT (fix_S_(S-1)).
Figura 9.12.: Mapeo QAM y ADPSK
72
9. Esquema básico
9.1.3.
Adquisición de datos
Para los propósitos de simulación los datos son generados mediante scripts de
MATLAB y son insertados al sistema por medio de los tokens Gateway In. Los
datos son almacenados en una memoria RAM de la capacidad adecuada y leídos por
medio del bloque AdaptativeLoading a través de su salida address. En la figura
9.13 se puede ver la conexión entre dichos bloques.
Figura 9.13.: Adquisición de datos
El bloque AdaptativeLoading tiene la tarea de obtener los datos de la memoria
RAM y proporcionarlos a la siguiente etapa en el tamaño de palabra especificado por
carga. Dado que el tamaño de palabra de la memoria RAM es de 16 bits y las cargas
disponibles son de 8, 4 y 2 bits, el bloque AdaptativeLoading tardará 2, 4 u 8 ciclos
en realizar la siguiente lectura, respectivamente.
La operación del bloque se resume en la sección 6.2. Cabe aclarar que este sistema es
usado sólo para propósitos de simulación y en la implementación se usa otro esquema,
como se verá más adelante.
9.2.
Receptor
En la figura 9.14 se ve un esquema del receptor realizado con bloques de System
Generator:
73
9. Esquema básico
Figura 9.14.: Esquema del receptor
74
9. Esquema básico
En las siguientes secciones se describen las partes principales del receptor. El bloque
FFT es totalmente análogo al de la IFFT, así que los resultados y configuraciones
halladas conservan su aplicabilidad.
9.2.1.
Remoción del prefijo Cíclico
El prefijo cíclico es removido por medio del Mcode denominado CPR. Dado el valor
de N y del prefijo L, se remueve la redundancia agregada, ya que en esta instancia
es innecesaria. Adicionalmente, sincroniza los datos recibidos con el inicio de la FFT.
9.2.2.
Compensación del factor de escalaje
Luego de realizar la FFT hay que compensar el factor multiplicativo aplicado en el
transmisor 9.1.1, como muestra la figura 9.1.1.
Figura 9.15.: Compensación del factor de escalaje
Si no hay problemas de saturación en ninguna parte de la línea y se dispone de
un canal ideal, el factor multiplicativo aplicado confinará los datos a [−1; 1). Por
la existencia de atenuación y amplificación en el canal, es necesario dar lugar al
crecimiento numérico por encima de este rango de valores.
9.2.3.
Ecualizador
La etapa de ecualización se encarga de deshacer los efectos de la respuesta impulsiva
del canal. Para su funcionamiento es necesaria una estimación de la respuesta en
frecuencia del mismo. Con un prefijo cíclico adecuado y una estimación razonable
del canal, es posible deshacer de manera sencilla su efecto sobre los datos, como se
analizó en las sección 3.5. Dado un coeficiente de canal H(k), se debe multiplicar
1
para ecualizarlo correctamente. Desde el punto de vista de la
el símbolo por H(k)
implementación, se supone disponible una estimación de la respuesta en frecuencia del
canal cuyos coeficientes son almacenados en dos memorias RAM. Lo que se almacena
en las memorias no son directamente los coeficientes, sino factores que faciliten la
operación.
75
9. Esquema básico
A fines de efectuar la división de forma eficiente, se desarrolla la operación de
división entre dos números complejos de la siguiente manera:
a + jb
(a + jb) (c − jd)
(ac + bd) + j(bc − ad)
=
=
c + jd
(c + jd) (c − jd)
cc + dd
= a(
d
c
d
c
) + b(
) + jb(
) − ja(
)
cc + dd
cc + dd
cc + dd
cc + dd
= aC1 + bC2 + j(bC1 − aC2 )
siendo C1 y C2 de la forma
C1 =
c
cc + dd
C2 =
d
cc + dd
Expresándolos en términos de la respuesta en frecuencia del canal H(k), de los
f
datos corruptos en esa portadora D(k)
y de los datos corregidos D(k), se obtiene
C1 =
< [H(k)]
|H(k)|2
C2 =
= [H(k)]
|H(k)|2
h
i
h
i
h
i
h
i
f
f
< [D(k)] = < D(k)
C1 + = D(k)
C2
f
f
= [D(k)] = = D(k)
C1 − < D(k)
C2
Si se almacenan los coeficientes C1 y C2 en las memorias, solamente se deben efectuar 4 productos y 2 sumas para realizar la división compleja. Estos valores, en futuras
versiones del trabajo, deberán ser suministrados por un algoritmo de estimación de
canal.
76
9. Esquema básico
En la figura 9.16 se pueden ver los bloques encargados de esta función. Las entradas
x_re_in y x_im_in, corresponden a la salida de la FFT ya escalada.
Figura 9.16.: Ecualizador en System Generator
En la sección 10.6 se pueden apreciar los resultados obtenidos para una ecualización
con distintos prefijos cíclicos, en algunos casos, insuficientes.
9.2.4.
Detección
Los detectores QAM y ADPSK difieren en la implementación de la misma forma
que los respectivos mapeadores. El detector QAM posee una implementación lineal,
mientras que el detector ADPSK requiere transformar los datos antes de poder decidir
correctamente.
77
9. Esquema básico
En la figura 9.17 se ven los dos detectores. El detector QAM consiste únicamente en
un bloque Mcode que decide por regiones, utilizando comparadores, como se sugiere
en la sección 6.6. Dispone de una entrada carga que permite la parametrización de
la constelación. La entrada en indica el momento en que los datos son válidos, para
proceder a su detección.
Figura 9.17.: Detectores QAM y ADPSK
ADPSK En el caso de la detección ADPSK, tal como se explicó en la sección 6.6,
se necesita un conformador de símbolo que convierta las coordenadas binómicas a
coordenadas polares, adecuadas para la decisión. En la figura 9.18, se observa el
contenido del bloque detector ADPSK.
Figura 9.18.: Subsistema detector ADPSK
78
9. Esquema básico
Para transformar las coordenadas se usa el core CORDIC [11, 12], provisto dentro
del toolbox de System Generator. A continuación se explica su principio de funcionamiento.
CORDIC
CORDIC (COordinate Rotation DIgital Computer) es un algoritmo simple y eficiente que sirve para calcular funciones trigonométricas e hiperbólicas. Las únicas
operaciones que usa son adiciones, sustracciones, desplazamientos y operaciones con
LUTs. La idea principal gira en torno a rotaciones de la fase de un número complejo,
multiplicándolo por una sucesión de valores constantes. Sin embargo, las multiplicaciones son todas por potencias de 2, por lo tanto se pueden realizar por medio de
desplazamientos; no se necesita un multiplicador real.
Principio Los símbolos que se usan son:
un número complejo: p = a + jb
su versión rotada:
pr = ar + jbr
valor de rotación:
r = x + jz
Para sumar la fase de r a p, se multiplican entre sí; para sustraerla, se multiplica
a p por el conjugado de r, r∗ = x − jz. Las partes real e imaginaria quedan de la
siguiente forma, en el caso de la adición de fase:
ar = ax − bz
br = bx + az
En sustracción:
ar = ax + bz
br = bx − az
Para rotar la fase +90°, se multiplica por r = 0 + j1; para rotar -90°, se multiplica
por r = 0 − j1.
La operación queda entonces:
pr = pr = (a + jb)(x + jz) = (a + jb)(0 ± j1)
pr = ∓b ± ja
Para rotar en fases menores a 90°, se multiplica por un número de la forma r =
1 + jK. K asume valores de potencias decrecientes de 2, es decir: 1, 21 , 14 . . .. La fase
de r = 1 + jK es arctan(K), y la de r = 1 − jK es arctan(−K) = − arctan(K). Para
sumar fase usamos r = 1 + jK y para restar r = 1 − jK. Entonces las operaciones
quedan, en el caso de la adición:
79
9. Esquema básico
ar = a − bK = a − b(2−L ) = a − (b L)
br = b + aK = b + a(2−L ) = b + (a L)
donde L es el exponente de la potencia de 2 y representa la operación de desplazamiento binaria. Para restar la fase, las operaciones quedan:
ar = a + bK = a + b(2−L ) = a + (b L)
br = b − aK = b − a(2−L ) = b − (a L)
La siguiente tabla muestra, para distintos valores de L, los valores correspondientes
de K, fase, magnitud y la ganancia CORDIC.
L
0
1
2
3
4
5
6
7
...
K = 2−L
1,0
0,5
0,25
0,125
0,0625
0,03125
0,015625
0,007813
...
r = 1 + jK
1 + j1,0
1 + j0,5
0,25
0,125
0,0625
0,03125
0,015625
0,007813
...
arctan(K)
45,00000
26,5650
14,03624
7,12502
3,57633
1,78991
0,89517
0,44761
...
|r|
1,41421356
1,11803399
1,03077641
1,00778222
1,00195122
1,00048816
1,00012206
1,00003052
...
Ganancia CORDIC
1,414213562
1,581138830
1,629800601
1,642484066
1,645688916
1,646492279
1,646693254
1,646743507
...
Observaciones:
Se puede ver que, empezando por 45°, los siguientes ángulos son un poco más
que la mitad del valor anterior. La clave del algoritmo es acercarse al valor
deseado por medio de aproximaciones sucesivas, sumando y restando, como si
se tratara de una búsqueda binaria.
La suma de la fase hasta L = 3 es aproximadamente 92°. Por lo tanto, se puede
rotar hasta 90° si se realizan 4 o más operaciones de multiplicación con r / r∗ . Si
se tiene en cuenta la posibilidad de rotar ángulos en ±90°, entonces, se pueden
lograr rotaciones de ±180°.
Cada rotación tiene una ganancia indeseable mayor a 1. La ganancia CORDIC
en la última columna de la tabla se obtiene simplemente multiplicando la ganancia anterior con la actual. Este número converge a 1.647, aunque en realidad la
ganancia depende del número de iteraciones realizadas; no depende de la suma
o resta de fases porque la magnitud de un número es igual a la de su conjugado.
80
9. Esquema básico
En particular, se usa la variante CORDIC ATAN, que entrega el módulo y la fase de un
número complejo a partir de sus coordenadas binómicas. Para obtener la magnitud y
la fase de un número complejo, se lo rota hasta que tenga fase cero. El valor que queda
en ar es el módulo (afectado por la ganancia CORDIC) y la fase es la acumulación de
todas las rotaciones hechas para llevarlo hasta fase cero. Es por esa razón que, según
la hoja del fabricante, es necesario corregir el módulo por un factor multiplicativo, lo
que se logra con un bloque CMult. En lo que respecta a la amplitud, se procede a su
detección por regiones, de forma similar a la detección QAM. La operación anterior
produce una subpalabra que se integrará con la palabra generada por el detector de
fase. Esta tarea la realiza el bloque Concat, que es un Mcode parametrizado con
la variable carga. La detección de fase se realiza haciendo la diferencia entre la fase
entrante y la anterior. Como resultado se obtiene un número contenido en alguna
región de la constelación y luego se decide la subpalabra enviada. La fase que se
almacena para el próximo símbolo no es el resultado de la operación diferencia, sino
el resultado de la detección. De esta manera, se elimina el ruido numérico que se
acumula por las operaciones.
9.3.
Sincronización y tiempos
En esta sección se estudian en forma resumida las consideraciones tenidas en cuenta
para lograr la sincronización de los datos y de las señales de control en el transmisor,
en el receptor y entre ambos.
La sincronización en el modelo de simulación difiere del de la implementación, ya
que deben controlarse otros factores de lógica y sincronismo a la hora de sintetizar el
sistema final. Por ahora, se restringe el análisis al modelo de simulación.
9.3.1.
Transmisor
El sincronismo en el transmisor está subordinado principamente a la latencia del
core de la IFFT y a sus señales de control. La secuencia básica puede enumerarse de
la siguiente manera:
Se sube la señal start, para empezar a calcular la IFFT
La señal rfd de la IFFT sube un ciclo después y exactamente 3 ciclos antes que
la carga de datos en las entradas xk_re y xk_im.
Dicha señal (rfd) es utilizada para darle inicio a AdaptativeLoading y al
bloque de mapeo ADPSK
El bloque AdaptativeLoading tiene una latencia de 1 clock, debido a la lectura
de la memoria RAM
El bloque de mapeo (QAM o ADPSK) dispone de una latencia de 2 clocks. Esto
crea una latencia de 3 clocks hasta que los datos llegan a la entrada de la IFFT.
81
9. Esquema básico
Cuando se inserta el prefijo cíclico, rfd baja. Luego, se detiene la lectura de
datos
9.3.2.
Receptor
El sincronismo en el receptor está subordinado principalmente a la latencia del
core de la FFT y a sus señales de control. La secuencia básica puede enumerarse de
la siguiente manera:
Sube la señal start, que entra en el bloque CPR
La señal done se activa o no, dependiendo de la presencia del prefijo cíclico
Se calcula la FFT con los datos provistos
Cuando se completa el cálculo de la FFT, sube vout. Esta señal se utiliza para
habilitar el ecualizador y los detectores
Además, se utiliza xk_index para saber cuándo termina un bloque OFDM y
resetear el mecanismo diferencial del detector ADPSK.
9.3.3.
Sincronización entre transmisor y receptor
Para los fines de este trabajo, el sincronismo entre el transmisor y el receptor es
transparente, ya que no existen las etapas de conversión A/D y D/A ni las de up
conversion y down conversion. Solamente se utiliza la señal vout para indicar la
salida válida en la IFFT. Si se introduce un canal en la simulación, debe ajustarse el
token delay, para introducir la latencia del mismo.
El sincronismo en un sistema OFDM es un tema complejo y no será analizado en
el presente trabajo. Existen varios estudios publicados que profundizan sobre esta
cuestión [13, 14, 15].
82
10. Simulaciones y resultados
10.1.
Cascada IFFT/FFT
Las simulaciones fueron efectuadas con System Generator y en la mayoría de ellas
fue considerado como sistema base la cascada IFFT/FFT. En esta simulación se
registran, para distintas precisiones del sistema, los valores de MSE entre IFFT/FFT
(MSE IFFT/FFT ) y entre el mapeo y la detección (MSE Sistema). Además, se analiza
el efecto de recortar la precisión de salida a 14 bits, simulando el efecto en la precisión
que tendría un DAC con ese ancho de palabra.
Figura 10.1.: MSE vs Precisión
Observando el gráfico, se percibe una saturación en el MSE Sistema y MSE IFFT/FFT.
Es posible fijar la precisión en 16 bits, poniéndola, por lo menos, un orden de magnitud por debajo del ruido del DAC/ADC. El BER se mantuvo en 0 (cero) para todas
las iteraciones.
83
10. Simulaciones y resultados
10.2.
Truncamiento vs redondeo convergente en
IFFT/FFT
Esta simulación permite observar el perfil de ruido numérico obtenido para el caso
de truncamiento y de redondeo convergente en una cascada IFFT/FFT. En la figura
10.2, se puede apreciar que el redondeo convergente elimina el ruido numérico presente
en el truncamiento, en las portadoras bajas. Por esta razón, se escogió el modo de
redondeo para realizar la IFFT y la FFT.
Figura 10.2.: Truncado vs redondeo convergente
84
10. Simulaciones y resultados
10.3.
Precisión y factores de fase en IFFT/FFT
Esta simulación permite obtener una mejor idea de la variabilidad del ruido numérico en una cadena IFFT/FFT, al cambiar la precisión de los factores de fase y
las precisiones de los datos de entrada. Las curvas obtenidas, son las que muestra la
figura 10.3.
Figura 10.3.: Variación del MSE con precisiones de entrada y de factores de fase
El propósito de estas curvas es doble: en primer lugar, dan una idea del ruido
numérico presente con las precisiones especificadas. En segundo lugar, ayudan a la
optimización de recursos, ya que el hecho de elegir una precisión de factores de fase
excesiva no resulta en una ganancia en performance numérica, para una precisión de
entrada determinada.
85
10. Simulaciones y resultados
10.4.
Canal AWGN
En el sigueinte gráfico se muestra la performance del sistema para un canal AWGN,
obteniendo MSE y BER, en función de SNR del canal:
Figura 10.4.: MSE vs SNR Canal
Se observa en la figura 10.4 que el MSE disminuye exponencialmente a medida que
aumenta la relación señal a ruido de 10 dB en 10 dB.
En la simulación de la figura 10.5 se aprecia la interpolación de una curva de BER
versus SNR del canal.
Figura 10.5.: BER vs SNR Canal
86
10. Simulaciones y resultados
10.5.
Ruido de banda angosta
En este caso, se insertó ruido de banda angosta, que consiste en un tono senoidal
entre dos tonos OFDM consecutivos. Lo que se observa en la figura 10.6 es el SER
(Symbol Error rate) frente a la posición relativa del ruido. En los extremos el ruido
se halla en la frecuencia de la portadora y en 0, 5 se encuentra exactamente en la
frecuencia central entre los tonos.
Figura 10.6.: SER vs ruido de banda angosta
Es posible concluir que altos valores de SER son producidos cuando el ruido se
encuentra posicionado en el centro de las dos portadoras y va disminuyendo a medida
que se acerca a una de ellas.
10.6.
Ecualización con distintos CPs
Para comprobar la función del ecualizador (y la del prefijo cílico) se realizaron
una serie de simulaciones que ilustran la relación entre el largo del canal y un CP
adecuado. La respuesta impulsiva del canal usado fue:

0,1(e−0,007n
h(n) = 
0
+ je−0,007n ) 0 ≤ n ≤ L − 1
para otro n
El parámetro L toma los valores 300 y 400. Se muestran los resultados obtenidos
antes y después de ecualizar. La constelación usada fue 8AD32PSK.
87
10. Simulaciones y resultados
Figura 10.7.: Largo de canal: 400 CP:0
Figura 10.8.: Largo de canal: 300 CP:164
Figura 10.9.: Largo de canal: 400 CP: 268
88
10. Simulaciones y resultados
Figura 10.10.: Largo de canal: 300 CP:532
Figura 10.11.: Largo de canal: 400 CP:532
Como conclusión, se observa que la función del ecualizador es fundamental en caso
de no disponer de un canal ideal y siempre y cuando el prefijo cíclico sea suficiente
para que se cumplan las condiciones estipuladas en la sección 3.5.
89
Parte V.
Implementación
90
11. Plataforma de desarrollo
11.1.
Características del kit de desarrollo
Se referencian las características principales del kit de desarrollo utilizado:
Figura 11.1.: Kit de desarrollo XUPV5-LX110T
Nombre: XUPV5-LX110T1
IC: Xilinx Virtex®-5 XC5VLX110T
1
También se conoce como ML509, dado que pertenece a la serie ML50x de Xilinx
91
11. Plataforma de desarrollo
Conectores:
• USB (2) Host and Peripheral
• PS/2 (2) Keyboard, Mouse
• RJ-45 10/100/1000 Networking
• RS-232 (Male) Serial port
• Audio In (2) Line, Microphone
• Audio Out (2) – Line, Amp, SPDIF
• Video Input
• Video (DVI/VGA) Output
• Single-Ended and Differential I/O Expansion
Xilinx XCF32P Platform Flash PROMs(2) 32 Mbyte cada una para almacenar
configuraciones del dispositivo grandes
Xilinx SystemACE Compact Flash
64-bit wide 256Mbyte DDR2 small outline DIMM (SODIMM)
On-board 32-bit ZBT synchronous SRAM e Intel P30 StrataFlash
Programmable system clock generator
16x2 character LCD, and many other I/O devices and ports
11.2.
Herramientas de software
Las herramientas de software principales usadas para la implementación fueron:
Xilinx ISE Design Suite 10.1 - Project Navigator
Modelsim XE 6.5
Con la herramienta de Xilinx se logra integrar las partes desarrolladas en System
Generator y los segmentos de código VHDL, que son necesarios para las interfaces y
la configuración final del FPGA. Además, permite programar el dispositivo luego de
la sintesis y la implementación.
El programa de simulación Modelsim puede ser invocado a través del Project Navigator y, por medio de un testbench adecuado, puede simular el comportamiento
del sistema total o de algunas partes del mismo. Resulta de particular utilidad como paso previo a la configuración del FPGA, ya que se detectan errores lógicos en
forma prematura, que de otra manera serían muy difíciles de detectar en el sistema
sintetizado.
92
12. Implementación
Una vez sintetizado el sistema con System Generator, es necesario proveerle conectividad con alguna fuente de datos, para comprobar su funcionamiento en la FPGA.
El tipo de conexión escogido es Ethernet, por las siguientes razones:
El kit cuenta con un chip Marvell 88e1111 10/100/1000 Ultra Gigabit Transceiver que se ocupa del nivel físico de Ethernet (Ethernet PHY)
La FPGA en cuestión dispone de un core presintetizado1 en hardware, que
implementa la capa MAC del nivel Ethernet (Ethernet MAC)
Cualquier PC moderna dispone de una conexión Ethernet de alguna velocidad
(10/100/1000), lo que facilita la compatibilidad
Existe software gratuito para analizar lo que sucede en una conexión Ethernet
a nivel bit (Wireshark, por ejemplo)
En las siguientes secciones se analiza el desarrollo de dicha conexión con el módulo
sintetizado en System Generator y las pruebas que se llevaron a cabo para validar el
diseño.
1
Presintetizado quiere decir que forma parte de la FPGA en forma física, no como una entidad
sintetizable
93
12. Implementación
12.1.
Conexión del sistema
La idea básica consiste en conectar el diseño a una PC como indica la figura 12.1,
en donde se observan las partes que constituyen la interfaz. Dentro de la FPGA, se
crea una instancia del core TEMAC, encargado de proporcionar las funciones de este
nivel Ethernet.
El kit cuenta con un chip Marvell encargado de la capa física Ethernet, conectado
adecuadamente a un RJ-45.
Figura 12.1.: Conexión con PC
Para verificar el funcionamiento de los distintos módulos en forma gradual, se
divide la implementación en tres etapas consecutivas, donde cada una depende del
funcionamiento de la anterior. Es decir, únicamente se avanza a la siguiente etapa
habiendo garantizado el correcto funcionamiento de la anterior. Las etapas y las
respectivas pruebas son:
Nivel MAC. Se realiza un loop a nivel cliente, a fin de verificar la transmisión
y la recepción a nivel PHY y MAC de Ethernet
Lógica intermedia. Esta etapa actúa como front end para simplificar la conexión al enlace Ethernet. Se realiza un loop a este nivel para comprobar el
correcto funcionamiento
Conexión del módem. Se conecta el sistema creado en System Generator a
la etapa anterior y se realiza un loop a este nivel para comprobar el correcto
funcionamiento
A continuación, se describe en detalle la configuración del core TEMAC, su conexión
con el nivel PHY y con el módem.
94
12. Implementación
12.1.1.
Nivel MAC
El nombre del core utilizado es: Virtex5 Embedded Tri-mode Ethernet MAC Wrapper. Al ser un tipo de core Wrapper, se instancia no sólo el núcleo del dispositivo,
sino todo un conjunto de lógica adicional que permite ponerlo en marcha, facilita su
configuración y es útil en la mayoría de los diseños. Como se observa en la figura
12.2 siguiente, el core cuenta con muchos puertos (además de muchos parámetros de
configuración) y es necesario estudiar las capacidades que posee y cómo ajustarlas al
proyecto actual.
95
12. Implementación
Figura 12.2.: Core TEMAC
96
12. Implementación
Las principales características del módulo se listan a continuación:
Permite la selección de una o dos MACs (EMAC0 o EMAC1)
Provee capacidad de conexión a distintas interfaces físicas: MII, GMII, RGMII,
SGMII y1000BASE-X PCS/PMA
Posee un ejemplo para realizar una prueba de loopback a nivel cliente
Velocidad: Tri-Speed: 10/100/1000 Mbps autonegociable con host
Full Duplex
Soporta Frame Pause para control de flujo
Cumple con especificación IEEE 802.3-2002
IFG (Interframe Gap) configurable
Auto Padding en transmisión y Auto stripping en recepción
Realiza FCS en recepción y transmisión e informa el resultado
En este caso, se usa una conexión Tri-Speed 10/100/1000 Mbps y GMII como interfaz
física. Para probar la funcionalidad del nivel MAC, se dispuso de un loop, como
muestra la figura 12.3
Figura 12.3.: Loop Ethernet
97
12. Implementación
En la figura se muestran los sistemas que se encuentran en el interior de la FPGA.
Como se puede observar, además de producir el core MAC, se crean instancias de
FIFOs de transmisión y de recepción. El tamaño de las FIFOs es un parámetro de
diseño y está configurado en forma predeterminada en 4 kilobytes.
También posee un generador de clocks, que provee los relojes de transmisión y
recepción (necesarios para la capa física) y un reloj para implementar delays internos,
útiles en el sincronismo.
El módulo Swap intercambia las direcciones source y destination y envía los datos
nuevamente a la interfaz MAC. Este módulo, una vez probada la funcionalidad a nivel
MAC, se reemplaza por el nivel físico constituido por el módem OFDM.
Consideraciones generales Con la unidad de loopback ya sintetizada, es necesario
brindarle conectividad con el exterior y funcionalidad, mediante los clocks adecuados.
Esto se realiza instanciando una entidad superior que:
Presente las conexiones correspondientes con los pines físicos del FPGA
Instancie la lógica de clock adecuada (DCMs, buffers, etc)
Enmascare los pines que no son usados
Además, es necesaria una lista de Constraints que especifique la ubicación de los
puertos de la entidad en relación con los pines de la FPGA y las consideraciones de
tiempo y de área a tener en cuenta.
Las herramientas de simulación permiten verificar el funcionamiento a nivel lógico
de las entidades creadas. Un testbench es una entidad especial creada para fines
de simulación. Su objetivo es instanciar a las entidades bajo prueba, proporcionar
estímulos (señales de entrada) y verificar su comportamiento (señales internas y de
salida). Dado que es una prueba de nivel superior, es recomendable hacerla antes de
programar el dispositivo en hardware, ya que es sencillo detectar errores a nivel lógico
en esta etapa. Es posible, además, simular en forma jerárquica las diferentes entidades
del sistema, lo que permite aislar los errores encontrados en cada una de ellas. El
software de simulación utilizado fue el ModelSim provisto por Mentor Graphics, en
la distribución de Xilinx.
98
12. Implementación
Una vez creado el archivo de programación y configurado el FPGA mediante el
software iMPACT, se debe comprobar la funcionalidad del sistema generado. Se
utiliza el software WireShark, que facilita el análisis a nivel físico de lo que sucede
en el enlace Ethenet. En la figura 12.4 se observa una captura con el detalle del
encapsulado Ethernet.
Figura 12.4.: Captura de Wireshark
Mediante Wireshark, se intenta verificar la funcionalidad del loop . Para enviar los
paquetes de ejemplo, se usa un software llamado nemesis, que corre bajo Linux. Es
una aplicación de línea de comando que, entre otras cosas, permite mandar paquetes
Ethernet sin necesidad de utilizar la cabecera IP (raw Ethernet Packets). Para las
pruebas, no es preciso contar con los mecanismos de networking provistos por los
niveles superiores.
99
12. Implementación
Clocking El esquema de sincronismo básico se puede observar en la figura 12.5.
Como se aprecia, existen dos clocks para el nivel físico (TX clock to PHY y RX clock
from PHY ) y dos que comunican con la interfaz cliente (TX client clock y RX client
clock).
Figura 12.5.: Conexiones de los clocks del nivel MAC
Por otro lado, se requieren dos clocks adicionales: MII_TX_CLK y GTXCLK.
El primero lo provee el nivel PHY y el segundo debe generarlo un circuito externo.
Por esa razón, se utiliza un DCM (Digital Clock Manager) para sintetizar los clocks
requeridos a partir de un cristal provisto en el kit. Además de GTXCLK, se debe suministrar un clock de referencia, CLKREF, indispensable para los buffers del FPGA.
GTXCLK es de 125Mhz y CLKREF de 200Mhz en este caso. El cristal utilizado oscila
a una frecuencia de 100Mhz. El clock de 125MHz (y sus divisores por 10, 12.5MHz y
1.25Mhz) se usa con el fin de obtener las velocidades de transmisión y recepción del
enlace:
1Gbps = 125 Mhz . 8 bits
100Mbps = 12.5Mhz . 8 bits
10 Mbps = 1.25Mhz . 8 bits
100
12. Implementación
12.1.2.
Lógica intermedia
En esta etapa se agrega lógica para lograr una comunicación sencilla con el enlace
Ethernet, creado en la etapa anterior. En la figura 12.6 se encuentran los bloques que
fueron agregados en este segundo paso de implementación.
Figura 12.6.: Lógica intermedia
El objetivo es crear una interfaz de escritura y lectura versátil para poder conectar
sistemas como el diseñado con System Generator o de otras características.
La unidad Frame Out se encarga de remover la cabecera Ethernet antes de escribir
en la FIFO de lectura. Es decir, a partir del mensaje Ethernet entregado por el nivel
MAC, se obtiene el payload de dicha trama. Si la FIFO de lectura se encuentra llena
(con su indicador de full en alto), los datos enviados se descartarán. En la figura 12.7
se observa un paquete Ethernet con sus campos.
Figura 12.7.: Trama Ethernet
El campo de datos puede ser de hasta 1500 bytes, según el estándar Ethernet.
La unidad Frame In toma los datos de la FIFO de escritura y ensambla parte
del encabezado Ethernet para transmitirlo a la unidad MAC. Se deben insertar tres
parámetros: dirección destino, dirección fuente y largo/tipo. Estos campos, en una
primera aproximación, se implementaron en forma fija, o sea, hard-coded. Si la FIFO
de escritura se encuentra vacía, con su indicador de empty en alto, no se transmiten
tramas. Si el indicador de empty se pone en alto en medio de una operación de lectura,
se cierra el mensaje y se agrega el padding, según corresponda.
Las unidades FIFO fueron creadas con el core FIFO Generator v4.4 provisto por
Xilinx. La arquitectura permite poseer dominios de clocks independientes en lectura y
101
12. Implementación
escritura. El tamaño es un parámetro de diseño y fue configurado como 64kB. El loop
simplemente actúa como mecanismo de reenvío si hay datos en la FIFO de lectura.
12.1.3.
Conexión del módem
La última etapa consiste en conectar el sistema diseñado en System Generator a
la interface de lectura/escritura creada en código VHDL. Como se había aclarado
anteriormente, el modelo en System Generator para simulación difiere levemente del
usado en la implementación. Los cambios apuntan fundamentalmente a la conexión
con la interfaz de lectura de datos.
Hay varios factores que afectan al sincronismo en la lectura de datos:
Si hay datos, debe armarse un símbolo OFDM leyendo las palabras en forma
sincronizada con la adquisición de las mismas por medio de la IFFT
Si los datos son insuficientes para un símbolo completo, debe generarse un
padding que rellene el símbolo hasta completarlo
En caso de enviar el prefijo cíclico, debe cesar la lectura en esos instantes
Con carga variable, la lectura debe hacerse con latencias diferentes
La combinación de estos efectos, en particular el de carga variable, requiere de una
lógica de lectura adecuada y versátil, que no puede ser resuelta de forma eficiente por
una máquina de estado. Un microcontrolador embebido que conjuntamente realice
las tareas de control con el periférico Ethernet, parece ser una solución escalable y
deseable. Además, en futuros diseños, gobernar y sincronizar las diferentes partes
sugiere la utilización de un circuito central para comandar el sistema.
En el modelo de implementación actual, la carga se mantuvo constante y todos los
demás parámetros son gobernados por un Mcode llamado sincro, como muestra la
figura 12.8.
102
12. Implementación
Figura 12.8.: Transmisor orientado a síntesis
103
12. Implementación
Adicionalmente, se introdujo la lógica necesaria que reemplaza al bloque Mcode
AdaptativeLoading, usado en el sistema de simulación. Una vez sintetizado el subsistema con el token System Generator y las opciones correspondientes (en particular,
con Multirate implementation en Expose Clocks Ports), se coloca la unidad como una
“caja negra” dentro del sistema creado en la etapa anterior. La figura 12.9 ilustra la
ubicación del nuevo subsistema en el diseño completo.
Figura 12.9.: Sistema final con subsistema de System Generator
Al funcionar esta última parte, se garantiza que todos los componentes internos del
sistema funcionan correctamente y se verifica la integridad del diseño.
104
Conclusiones
Durante el desarrollo del sistema, se introdujo poco a poco el problema, hasta entenderlo y poder delimitar así los alcances y objetivos del presente trabajo. Acercarse
de forma gradual al desafío de diseño permite descubrir y dejar en evidencia numerosos factores que son fundamentales a la hora de tomar decisiones que afectarán al
sistema a desarrollar.
Se concluye que las herramientas utilizadas ayudaron en gran medida a comprender
dichos problemas y suministraron, además, suficiente resguardo de cuestiones físicas
relativas al dispositivo o a problemas en la lógica de bajo nivel. De esta manera, es
posible tomar decisiones a nivel sistema sin tener que preocuparse, en principio, por
detalles que apuntan a una optimización del diseño sintetizado.
Es cierto que un acercamiento de este modo, recayendo sobre arquitecturas preensambladas, deja de lado el costoso trabajo de optimizar los recursos utilizados y de
obtener una implementación óptima. Si bien la lógica provista por el fabricante está
diseñada para funcionar eficientemente en sus propios dispositivos, una implementación que busca la optimización de los recursos no sólo explora el ámbito lógico local,
sino también el sistema a nivel global.
Más allá del enfoque tomado, las FPGAs demuestran ser dispositivos capaces de
una amplia variedad de proyectos que demanden complejidad y velocidad, puesto
que proveen suficientes grados de libertad para permitir diversas soluciones y configuraciones. Esto es precisamente su principal característica y es la razón por la cual
los fabricantes desarrollan potentes softwares que posibilitan trabajar en un proyecto
a distintos niveles de abstracción. El desarrollo realizado permitió, por sobre todas
las cosas, pasar de una visión ideal de un sistema de comunicaciones a una visión
experimental y real que revela desafíos no visibles desde el nivel conceptual.
Dado que OFDM representa un sistema de modulación altamente configurable, el
diseño fue realizado pensando en futuras etapas que completen y expandan la idea
original. Si bien se toman referencias en cuanto a los parámetros de modulación, es
fácilmente adaptable a otros proyectos, con otras especificaciones. La facilidad de
parametrización es otra de las ventajas de trabajar a alto nivel.
Al formar parte de un trabajo que participa como pieza de un diseño de mayor
tamaño, surge la necesidad de organizarse grupalmente y definir los límites y objetivos
de cada parte. El trabajo adquirió desde un principio este tipo de esquema y fomentó
la división de tareas, así como la organización grupal e individual.
105
Bibliografía
[1] IEEE P1901™ Broadband Over Power Lines Standard, 2010
[2] The OPERA Consortium, “First Draft of the OPERA specification version 2”,
2007
[3] Matthias Gotz, Manuel Rapp and Klaus Dostert, “Power line channel characteristics and their effect on communication system design” IEEE Commun., Magazine, pp78-85, Apr 2004.
[4] Weinstein, S.B., Ebert P.M. "Data Transmission By Frequency Division Multiplexing Using the Discrete Fourier Transform." IEEE Trans. Commun., Oct
1971; COM-19; 5: 628-634}
[5] Robert M. Gray, “Toeplitz and Circulant Matrices: A review,” Department of
Electrical Engineering, Stanford University, 1971.
[6] Holger Philipps, “Modelling of Powerline Communication Channels”,. IEEE ISPLC, pp. 14 – 21, 1999.
[7] Cooley, James W., and John W. Tukey, 1965, "An algorithm for the machine
calculation of complex Fourier series," Math. Comput. 19: 297–301.
[8] Y. Shen and E. F. Martinez. “Channel Estimation in OFDM Systems,” AN3059,
Freescale Semiconductor, Inc., Jan. 2006.
[9] Y. (Geoffrey) Li, "Pilot-symbol-aided channel estimation for OFDM in wireless
systems," IEEE Transactions on Vehicular Technology, vol. 49, July 2000.
[10] Fast Fourier Transform v5.0, Product Specification, DS260, October 2007.
[11] Jack E. Volder, The CORDIC Trigonometric Computing Technique, IRE Transactions on Electronic Computers, pp330-334, September 1959
[12] Yu Hen Hu, "CORDIC-Based VLSI Architectures for Digital Signal Processing,"
IEEE Signal Processing Mag., 1992, pp. 16-35
[13] J.-J. van de Beek, P. O. Börjesson, M.-L. Boucheret, D. Landström, J. Martinez
Arenas, P. Ödling, C. Östberg, M.Wahlqvist, and S. K.Wilson, “A time and
frequency synchronization scheme for multiuser OFDM,” IEEE J. Select. Areas
Commun., vol. 17, pp. 1900–1914, Nov. 1999.
106
Bibliografía
[14] E. Bala and L.J. Cimini, Jr. “On the uplink synchronization of OFDMA system,”
in Proc. IEEE Military Communications Conference 2005, Oct. 2005.
[15] J. Maya y C. Galarza “Problemas de Sincronismo en UWB-OFDM” Facultad de
Ingeniería de la Universidad de Buenos Aires, 2009, Febrero.
[16] Virtex-5 FPGA Embedded Tri-Mode Ethernet MAC User Guide [ug194.pdf]
[17] Virtex-5 FPGA Embedded Tri-Mode Ethernet MAC Wrapper Getting Started
Guide [ug340.pdf]
[18] Virtex-5 FPGA Embedded Tri-Mode Ethernet MAC Wrapper Product Specification [ds550.pdf]
107
Descargar