Máster en Electrónica, Tratamiento de la Señal y Comunicaciones 2012...

18
Máster en Electrónica, Tratamiento de la Señal y Comunicaciones 2012/2013 4 Implementación del sistema Miguel Cordero Limón 61

Transcript of Máster en Electrónica, Tratamiento de la Señal y Comunicaciones 2012...

Page 1: Máster en Electrónica, Tratamiento de la Señal y Comunicaciones 2012 ...bibing.us.es/proyectos/abreproy/70428/fichero/Capítulo+4.pdf · de Simulink que integran IP cores de Xilinx

Máster en Electrónica, Tratamiento de la Señal y Comunicaciones 2012/2013

4 Implementación del sistema

Miguel Cordero Limón 61

Page 2: Máster en Electrónica, Tratamiento de la Señal y Comunicaciones 2012 ...bibing.us.es/proyectos/abreproy/70428/fichero/Capítulo+4.pdf · de Simulink que integran IP cores de Xilinx

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

Page 3: Máster en Electrónica, Tratamiento de la Señal y Comunicaciones 2012 ...bibing.us.es/proyectos/abreproy/70428/fichero/Capítulo+4.pdf · de Simulink que integran IP cores de Xilinx

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.

Page 4: Máster en Electrónica, Tratamiento de la Señal y Comunicaciones 2012 ...bibing.us.es/proyectos/abreproy/70428/fichero/Capítulo+4.pdf · de Simulink que integran IP cores de Xilinx

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.

Page 5: Máster en Electrónica, Tratamiento de la Señal y Comunicaciones 2012 ...bibing.us.es/proyectos/abreproy/70428/fichero/Capítulo+4.pdf · de Simulink que integran IP cores de Xilinx

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

Page 6: Máster en Electrónica, Tratamiento de la Señal y Comunicaciones 2012 ...bibing.us.es/proyectos/abreproy/70428/fichero/Capítulo+4.pdf · de Simulink que integran IP cores de Xilinx

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.

Page 7: Máster en Electrónica, Tratamiento de la Señal y Comunicaciones 2012 ...bibing.us.es/proyectos/abreproy/70428/fichero/Capítulo+4.pdf · de Simulink que integran IP cores de Xilinx

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 .

Page 8: Máster en Electrónica, Tratamiento de la Señal y Comunicaciones 2012 ...bibing.us.es/proyectos/abreproy/70428/fichero/Capítulo+4.pdf · de Simulink que integran IP cores de Xilinx

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.

Page 9: Máster en Electrónica, Tratamiento de la Señal y Comunicaciones 2012 ...bibing.us.es/proyectos/abreproy/70428/fichero/Capítulo+4.pdf · de Simulink que integran IP cores de Xilinx

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.

Page 10: Máster en Electrónica, Tratamiento de la Señal y Comunicaciones 2012 ...bibing.us.es/proyectos/abreproy/70428/fichero/Capítulo+4.pdf · de Simulink que integran IP cores de Xilinx

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.

Page 11: Máster en Electrónica, Tratamiento de la Señal y Comunicaciones 2012 ...bibing.us.es/proyectos/abreproy/70428/fichero/Capítulo+4.pdf · de Simulink que integran IP cores de Xilinx

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.

Page 12: Máster en Electrónica, Tratamiento de la Señal y Comunicaciones 2012 ...bibing.us.es/proyectos/abreproy/70428/fichero/Capítulo+4.pdf · de Simulink que integran IP cores de Xilinx

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.

Page 13: Máster en Electrónica, Tratamiento de la Señal y Comunicaciones 2012 ...bibing.us.es/proyectos/abreproy/70428/fichero/Capítulo+4.pdf · de Simulink que integran IP cores de Xilinx

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

Page 14: Máster en Electrónica, Tratamiento de la Señal y Comunicaciones 2012 ...bibing.us.es/proyectos/abreproy/70428/fichero/Capítulo+4.pdf · de Simulink que integran IP cores de Xilinx

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.

Page 15: Máster en Electrónica, Tratamiento de la Señal y Comunicaciones 2012 ...bibing.us.es/proyectos/abreproy/70428/fichero/Capítulo+4.pdf · de Simulink que integran IP cores de Xilinx

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.

Page 16: Máster en Electrónica, Tratamiento de la Señal y Comunicaciones 2012 ...bibing.us.es/proyectos/abreproy/70428/fichero/Capítulo+4.pdf · de Simulink que integran IP cores de Xilinx

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

Page 17: Máster en Electrónica, Tratamiento de la Señal y Comunicaciones 2012 ...bibing.us.es/proyectos/abreproy/70428/fichero/Capítulo+4.pdf · de Simulink que integran IP cores de Xilinx

Máster en Electrónica, Tratamiento de la Señal y Comunicaciones 2012/2013

Miguel Cordero Limón 77

Page 18: Máster en Electrónica, Tratamiento de la Señal y Comunicaciones 2012 ...bibing.us.es/proyectos/abreproy/70428/fichero/Capítulo+4.pdf · de Simulink que integran IP cores de Xilinx

Máster en Electrónica, Tratamiento de la Señal y Comunicaciones 2012/2013

Miguel Cordero Limón 78