Máster en Electrónica, Tratamiento de la Señal y Comunicaciones 2012...
-
Upload
truongthuan -
Category
Documents
-
view
219 -
download
0
Transcript of Máster en Electrónica, Tratamiento de la Señal y Comunicaciones 2012...
Máster en Electrónica, Tratamiento de la Señal y Comunicaciones 2012/2013
4 Implementación del sistema
Miguel Cordero Limón 61
Máster en Electrónica, Tratamiento de la Señal y Comunicaciones 2012/2013
4.1 Descripción del entorno de desarrollo.
4.1.1 Descripción de la plataforma hardware.
En el presente trabajo se va a realizar una implementación digital del sistema conformador en una
plataforma FPGA (Field Programmable Gate Array). Una FPGA no es más que un dispositivo
hardware con lógica reprogramable por el usuario lo que aporta un grado de flexibilidad que la
hace ideal para prototipado de sistemas. Una FPGA se compone básicamente de los siguientes
elementos:
• Bloques lógicos, que implementan operaciones lógicas definidas por el usuario.
• Recursos de interconexión que permiten conectar los bloques lógicos entre sí.
• Bloques de entrada/salida (bloques I/O) para la conexión de la lógica a los pines del
encapsulado para la comunicación con el exterior.
En la figura 26 se representa la estructura básica de una FPGA. Las FPGAs basadas en tecnologías
de interconexión SDRAM (las que presentan mayor penetración en el mercado) no mantienen su
configuración cuando se interrumpe la alimentación (es decir, la configuración de la misma no es
persistente) por lo que en la placa que contiene la FPGA se suele incluir algún dispositivo de
almacenamiento persistente (normalmente una memoria EPROM) que contiene el archivo de
configuración de la FPGA y que permite que este se cargue automáticamente en la FPGA al
alimentarla.
Miguel Cordero Limón 62
Máster en Electrónica, Tratamiento de la Señal y Comunicaciones 2012/2013
La estructura de los bloques lógicos es lo que diferencia distintas familias de FPGAs por lo que se
suele denominar arquitectura de la FPGA.El desarrollo inicial se probó en una placa Microboard
LX9 del fabricante Avnet la cual incorpora una FPGA Spartan-6 (XC6SLX9-2CSG324C) de Xilinx. La
elección de esta plataforma atendió principalmente a aspectos económicos (la placa cuesta unos
70 €), su pequeño tamaño y su facilidad de uso ya que la comunicación con el PC de desarrollo
puede realizarse por medio de cables USB y miniUSB estándares gracias a los chips de conversión
de JTAG-USB y UART-USB. Sin embargo, conforme se fue avanzando en la implementación del
algoritmo de conformado se fueron agotando los recursos hardware de la FPGA por lo que
finalmente fue necesario cambiar la plataforma a otra que contara con un mayor número de
recursos hardware. Por motivos de disponibilidad se empleó una placa XtremeDSP ML506 de
Xilinx, la cual cuenta con una FPGA Virtex-5 (en concreto la XC5VSX50TFFG1136) la cual se
programa empleando un cable JTAG.
Miguel Cordero Limón 63
Figura 26. Estructura general de una FPGA.
Máster en Electrónica, Tratamiento de la Señal y Comunicaciones 2012/2013
4.1.2 Descripción de la metodología y herramientas de desarrollo.
Todo el diseño digital ha sido realizado mediante el software System Generator for DSP de la casa
Xilinx, permitiendo así la integración con Matlab y Simulink para la realización de pruebas de
comportamiento en tiempo de simulación e incluso en tiempo de ejecución real en la FPGA
mediante herramientas de depuración y verificación como co-simulación hardware y Chipscope.
System Generator for DSP es una herramienta que proporciona por un lado una librería de bloques
Miguel Cordero Limón 64
Figura 28. Vista superior de la placa XtremeDSP ML506 de Xilinx.
Figura 27. Vista superior de la placa Microboard LX9 de Avnet.
Máster en Electrónica, Tratamiento de la Señal y Comunicaciones 2012/2013
de Simulink que integran IP cores de Xilinx los cuales implementan distintas funciones o sistemas
(desde simples puertas lógicas hasta bloques que implementan transformadas de Fourier). La
herramienta también proporciona un bloque especial denominado Black Box el cual permite al
usuario implementar la funcionalidad del bloque en lenguajes HDL (VHDL o Verilog). Todo el
proceso de generación del archivo bitstream (que es el que finalmente se carga en la FPGA para su
configuración) es llamado de forma transparente al usuario desde el bloque Sysgen Token. El
diseño basado en modelos es más intuitivo y sencillo que el tradicional diseño basado en
codificación HDL lo que permite reducir los tiempos y ciclos de desarrollo. Como contrapartida, al
trabajar con un mayor nivel de abstracción el uso de recursos es menos eficiente que lo que se
podría conseguir realizando la codificación con un nivel de abstracción menor.
4.1.3 Conversión de punto flotante a punto fijo.
En un sistema digital los números se almacenan en palabras binarias de una longitud finita. El tipo
de dato determina la forma en la que se interpreta la palabra binaria existiendo dos tipos
fundamentales: los datos en punto flotante y los datos en punto fijo. Los datos en punto flotante
permiten mayores precisiones al expresar los números como una mantisa y un exponente. Los
programas de cálculo numérico como MATLAB trabajan por defecto en punto flotante (aunque
pueden incorporar mecanismos para trabajar en punto fijo) y muchos microprocesadores (no
todos) también lo hacen. Sin embargo en muchos sistemas hardware digital es necesario trabajar
con aritmética de punto fijo en la cual la parte más significativa de la palabra binaria corresponde a
la parte entera y la menos significativa a la parte fraccional.
Los algoritmos de conformado de haz simulados hasta el momento en capítulos anteriores han
empleado aritmética de punto flotante en MATLAB. Sin embargo, las plataformas FPGA trabajan en
punto fijo por lo que es necesario realizar la conversión de un formato al otro. Esta tarea se suele
realizar analizando la señal en cada punto del flujo de procesamiento y teniendo en cuenta el
rango de la misma. Es importante analizar el efecto que tiene la cuantización en los pesos del
conformador y en el apuntamiento del haz lo cual se analizará en el apartado 4.3.
4.2 Descripción de la implementación.
En la implementación realizada se ha considerado que la dirección de apuntamiento (elevación y
Miguel Cordero Limón 65
Máster en Electrónica, Tratamiento de la Señal y Comunicaciones 2012/2013
acimut) con respecto al sistema de referencia del array son conocidos. Con el objetivo de
desarrollar un sistema operacional es necesario implementar también el algoritmo de cálculo de la
dirección de apuntamiento a partir de la posición de la estación de tierra (fija y conocida por el
sistema) y los datos de posición y orientación de la aeronave proporcionados por el sistema de
navegación de la misma. Esta es una de las líneas de trabajo que quedan abiertas.
La implementación del algoritmo de cálculo de los pesos óptimos del conformador se basa
principalmente en la implementación de la expresión w*=v*(ks) , con v (ks)=e− j2πGa s / λ donde
G es la matriz cuyas filas son las coordenadas de cada elemento del array en el sistema de
referencia del mismo y as es el vector unitario que indica la dirección de apuntamiento deseada.
El primer cálculo que se realiza permite calcular las componentes del vector unitario en la
dirección de apuntamiento a partir de los ángulos de elevación y acimut de acuerdo a la expresión
as=[ cos(ϕ s)sen (θs) sen (ϕ s) sen (θs) sen(θs) ]T
. La implementación de las funciones
trigonométricas se ha realizado mediante LUTs como de detallará en el apartado 4.2.1.
Miguel Cordero Limón 66
Figura 29. Diagrama de bloques del cálculo de las componentes del vector dirección deseada.
Máster en Electrónica, Tratamiento de la Señal y Comunicaciones 2012/2013
Dado que todos los elementos del array se encuentran en el mismo plano (en el plano z=0), el
elemento del vector sen(θs) no afecta a la multiplicación G as ya que todos los elementos de
la última columna de la matriz G que los multiplica son cero. En la figura 29 se muestra el
diagrama de bloques que implementa los dos primeros elementos del vector as .
Miguel Cordero Limón 67
Figura 30. Bloques que implementan el producto G as .
Máster en Electrónica, Tratamiento de la Señal y Comunicaciones 2012/2013
El siguiente paso consiste en realizar la multiplicación G as la cual se ha realizado con la
implementación representada en la figura 30. La gran cantidad de bloques no permite apreciar la
funcionalidad de ellos con claridad en la figura por lo que vamos a pasar a describirlos. En primer
lugar nótese que las señales que aparecen representadas por los trazos de la parte superiores de la
figura se corresponden con las de los trazos de la parte inferior de la figura 29. Los 16 bloques que
aparecen a la izquierda de la figura se corresponden con las coordenadas de los 8 elementos del
array en los ejes x e y del sistema de referencia del mismo. La siguiente hilera vertical de bloques
son multiplicadores que realizan las multiplicaciones entre elementos de la matriz G y las dos
primeras componentes del vector as . La última hilera realiza las sumas de los productos
resultantes dando lugar a los fases de los 8 pesos del conformador. Para obtener las componentes
real e imaginaria de los pesos con los que se multiplicarán la señal a conformar, se hace uso de
nuevo de LUTs que implementan las funciones trigonométricas de seno y coseno como se muestra
en la figura 32 (en la figura 31 se muestra una de las filas ampliada).
La última hilera de bloques que se observa en la misma son bloques de conversión paralelo serie
que permite serializar los bits con los que se representa cada peso para que puedan ser enviados a
un DAC de entrada serie. En realidad, la señal que debería enviarse a los conversores paralelo-serie
sería la resultante de realizar la multiplicación compleja de la señal a conformar por los pesos del
conformador. El uso de DACs serie permite ahorrar muchas líneas de conexionado lo que simplifica
enormemente el de por sí complejo proceso de rutado de la FPGA. Cada señal necesita dos DACs,
uno para la parte real y otro para la parte imaginaria necesitándose por tanto un total de 16 DACs
(u 8 DACs de canal dual) necesitándose una línea de rutado por DAC. En el proyecto se han elegido
Miguel Cordero Limón 68
Figura 31. Detalle de la etapa de salida del conformador.
Máster en Electrónica, Tratamiento de la Señal y Comunicaciones 2012/2013
DACs de 12 bits serie con interfaz SPI necesitándose. La misma implementación empleando DACs
de 12 bits con entrada en paralelo hubiera requerido un total de 12x16 = 192 líneas lo que hace
esa implementación prácticamente irrealizable.
Miguel Cordero Limón 69
Figura 32. Cálculo de las partes real e imaginaria de los pesos del conformador.
Máster en Electrónica, Tratamiento de la Señal y Comunicaciones 2012/2013
4.2.1 Implementación de funciones trigonométricas.
Las funciones de seno y coseno se han implementado mediante LUTs (Look Up Tables). Esta
aproximación tiene la ventaja de insertar un retardo mucho menor que mediante bloques CORDIC
(COrdinate ROtation DIgital Computer).
La LUT se ha implementado empleando una memoria ROM que contiene los valores del seno
únicamente de los ángulos correspondientes al primer cuadrante. La señal que direcciona la
memoria corresponde al ángulo de entrada cuyo seno o coseno se desea obtener habiéndose
empleado 12 bits por lo que la resolución de los ángulos es de 2−12⋅π/2 rad. A partir de los
valores del seno del primer cuadrante se pueden obtener los del resto de cuadrantes así como los
valores del coseno lo que permite reducir la cantidad de memoria necesaria a costa de emplear
lógica adicional para el direccionamiento de la misma.
El primer paso consiste en realizar la adaptación del ángulo de entrada en el caso de querer
calcular el coseno en lugar del seno. La relación entre ambos es sen(θ)=cos(θ+π /2) por lo que
si se desea calcular el coseno se suma π /2 al ángulo de entrada y se reduce el ángulo resultante
al intervalo [0,2π] (módulo π ). En la figura 33 se muestran los bloques que realizan esta
tarea.
Acto seguido, se realiza la conversión del ángulo de entrada al primer cuadrante de acuerdo al
esquema mostrado en la figura 34. La lógica de la transformación es la siguiente:
Miguel Cordero Limón 70
Figura 33. Lógica de transformación del ángulo según se desee calcular el seno o el coseno.
Máster en Electrónica, Tratamiento de la Señal y Comunicaciones 2012/2013
• Si θ<π/2 (el ángulo corresponde al primer cuadrante), entonces el ángulo no se
modifica.
• Si π /2<θ<π (el ángulo corresponde al segundo cuadrante), entonces el nuevo ángulo se
calcula como θ=π−θ .
• Si π<θ<3π /2 (el ángulo corresponde al tercer cuadrante), entonces el nuevo ángulo se
calcula como θ=θ−π .
• Si 3π/ 2<θ<2π (el ángulo corresponde al cuarto cuadrante), entonces el nuevo ángulo
se calcula como θ=π/ 2−θ .
Miguel Cordero Limón 71
Figura 34. Lógica que transforma el ángulo de entrada en el ángulo equivalente del primer cuadrante.
Máster en Electrónica, Tratamiento de la Señal y Comunicaciones 2012/2013
Finalmente se direcciona la memoria ROM que implementa la LUT conviertiendo el ángulo
resultante en una dirección válida en el rango [0,212−1] multiplicando el ángulo por
(212−1)/(π/2) y se elige el signo del seno/coseno en función del cuadrante del ángulo original.
Este bloque se muestra en la figura 35.
4.3 Simulaciones en Simulink.
La herramienta System Generator for DSP de Xilinx permite simular la implementación realizada en
el entorno de Simulink simulando los bloques de Xilinx usando por debajo simuladores como el
XST de Xilinx.
En el presente trabajo se han realizado simulaciones en las que se han calculado los pesos óptimos
de un array circular de ocho elementos para una dirección de apuntamiento deseada y se han
almacenado los valores obtenidos en el workspace. Con esos valores se ha empleado el toolbox
ArrayCalc para calcular el patrón de radiación resultante. Con el objetivo de analizar cómo ha
afectado el proceso de cuantización empleado para convertir el algoritmo en punto flotante a la
implementación en punto fijo, se han realizado simulaciones en el entorno de MATLAB con
ArrayCalc y las simulaciones equivalentes con el modelo en punto fijo desarrollado con System
Generator. La simulación que aquí se muestra se ha realizado apuntando a un acimut de 30o y una
Miguel Cordero Limón 72
Figura 35. Etapa de salida con la memoria ROM que implementa la LUT.
Máster en Electrónica, Tratamiento de la Señal y Comunicaciones 2012/2013
elevación de 20o para un array circular de ocho monopolos sobre plano de tierra. En la figura 36 se
representan en azul los pesos del conformador obtenidos mediante el algoritmo en punto flotante
y en rojo los obtenidos empleando 12 bits con 11 bits para la parte fraccionaria. En la figura 37 se
ha representado la magnitud y fase de los errores correspondientes a cada peso. Como puede
observarse el error en magnitud puede estar en torno a 1,5⋅10−3 mientras que el error de fase
puede estar en torno a los 0,5o (0,0087 rad).
Miguel Cordero Limón 73
Figura 36. Representación de los pesos del conformador calculados en punto flotante (azules) y en punto fijo con 12 bits (rojo).
Máster en Electrónica, Tratamiento de la Señal y Comunicaciones 2012/2013
Miguel Cordero Limón 74
Figura 38. Patrón de radiación obtenido con la implementación en punto fijo.
Figura 37. Magnitud y fase de los vectores de error para cada uno de los pesos.
Máster en Electrónica, Tratamiento de la Señal y Comunicaciones 2012/2013
Finalmente en las figuras 38 y 39 se muestran los patrones de radiación obtenidos mediante las
simulaciones de la implementación en punto fijo y la equivalente en punto flotante. Como puede
apreciarse el comportamiento del apuntamiento es muy similar apreciándose únicamente
diferencias en cuanto a los lóbulos secundarios.
4.4 Resumen.
El sistema de conformado de haz ha sido implementado para una plataforma FPGA. En el presente
capítulo se ha presentado la plataforma de desarrollo empleada: una XtremeDSP ML506 de Xilinx.
La implementación en una plataforma FPGA requiere adaptar el algoritmo de conformado en
punto flotante desarrollado en MATLAB a la implementación en punto fijo requerida por la FGPA.
En el capítulo se ha presentado la implementación realizada en System Generaotr for DSP la cual
consiste principalmente en implementar la expresión w*=v*(ks) , con v (ks)=e− j2πGa s/ λ . Uno
d ellos bloques necesarios para implementar dicha expresión es el de un DDS (Direct Digital
Synthesizer) para el cálculo de senos y cosenos el cual se ha realizado mediante una LUT (Look Up
Table). Finalmente el modelo en punto fijo se ha simulado en el entorno de Simulink y se han
Miguel Cordero Limón 75
Figura 39. Patrón de radiación obtenido con la implementación en punto flotante.
Máster en Electrónica, Tratamiento de la Señal y Comunicaciones 2012/2013
comparado los resultados con los obtenidos simulando la implementación en punto flotante de
MATLAB observándose que los resultados son similares de forma que las desviaciones introducidas
por la cuantización son perfectamente asumibles.
Miguel Cordero Limón 76
Máster en Electrónica, Tratamiento de la Señal y Comunicaciones 2012/2013
Miguel Cordero Limón 77
Máster en Electrónica, Tratamiento de la Señal y Comunicaciones 2012/2013
Miguel Cordero Limón 78