Instituto Politécnico Nacional
CENTRO DE INVESTIGACIÓN EN COMPUTACIÓN
FPGA’s
ERNESTO SAÚL GUTIÉRREZ MORALES JOSÉ NOEL ROSALES PÉREZ GABRIEL BALTAZAR PÉREZ DANIEL VERGARA MONTES 26 de Noviembre Noviembre de 2013
i
CONTENIDO 1
2
INTRODUCCIÓN ........................................................................................................................... 1 1.1
Visión general ...................................................................................................................... 1
1.2
Partes de un FPGA ............................................................................................................... 1
1.3
Herramientas de Diseño ...................................................................................................... 2
1.3.1
Herramientas Tradicionales de Diseño de FPGA ......................................................... 3
1.3.2
Herramientas para Diseño de Síntesis de Alto Nivel................... ............................ .................. .................. .............. ..... 3
1.4
Beneficios Principales de la Tecnología FPGA ..................................................................... 5
1.5
Tipos de FPGA...................................................................................................................... 6
Desarrollo .................................................................................................................................... 8 2.1
3
FPGA’s ................................................................................................................................. 8
2.1.1
Arquitectura de los FPGA’s .......................................................................................... 8
2.1.2
Bloques Lógicos ........................................................................................................... 8
2.1.3
Interconexión entre bloques programables............... programables........................ .................. .................. .................. .................. ........... .. 10
2.1.4
Bloques de Entrada/Salida ........................................................................................ 11
2.1.5
Tiempos de propagación ........................................................................................... 11
2.2
FPGA vs Microcontrolador ................................................................................................ 13
2.3
Aplicaciones FPGA’s .......................................................................................................... 14
2.3.1
FPGA’s para la industria aeroespacial ....................................................................... 14
2.3.2
FPGA’s para el Supercomputo ................................................................................... 15
2.3.3
FPGA’s para el Análisis de Video ............................................................................... 15
2.3.4
FPGA’s para Criptografía de Alto Re ndimiento ......................................................... 15
2.3.5
FPGA’s para Detección y Prevención de Intrusos ..................................................... 16
Conclusiones.............................................................................................................................. 16 Ernesto Saúl Gutiérrez Morales .................................................................................................... 16 Gabriel Baltazar Pérez ................................................................................................................... 16 Daniel Vergara Montes ................................................................................................................. 16 José Noel Rosales Pérez ................................................................................................................ 17
4
Referencias ................................................................................................................................ 18
ii
1 INTRODUCCIÓN 1.1 VISIÓN GENERAL En el nivel más alto, los arreglos de compuertas programables en campo FPGA’s son chips de silicio reprogramables. Ross Freeman, el cofundador de Xilinx, inventó el primer FPGA en 1985. Al utilizar bloques de lógica pre-construidos y recursos para r uteo programables, se puede configurar estos chips para implementar funcionalidades personalizadas en hardware sin tener que utilizar una tablilla de prototipos o un cautín. Sólo se deberá desarrollar tareas de cómputo digital en software y compilarlas en un archivo de configuración o bitstream que contenga información de cómo deben conectarse los componentes. Además, los FPGA ’s son completamente reconfigurables y al instante toman una nueva “personalidad” cuando se compila una diferente configuración de
circuitos. Anteriormente sólo los ingenieros con un profundo entendimiento de diseño de hardware digital podían trabajar con la tecnología FPGA. Sin embargo, el aumento de herramientas de diseño de alto nivel está cambiando las reglas de programación de FPGA ’s, con nuevas tecnologías que convierten los diagramas a bloques gráficos, o hasta el código ANSI C a circuitos de hardware digital. La adopción de chips FPGA en la industria ha sido impulsada por el hecho de que los FPGA ’s combinan lo mejor de los ASIC ’s y de los sistemas basados en procesadores. Ofrecen velocidades temporizadas por hardware y fiabilidad, pero sin requerir altos volúmenes de recursos para compensar el gran gasto que genera un diseño personalizado de ASIC. El silicio reprogramable tiene la misma capacidad de ajustarse que un software que se ejecuta en un sistema basado en procesadores, pero no está limitado por el número de núcleos disponibles. A diferencia de los procesadores, los FPGA’s llevan a cabo diferentes operaciones de manera paralela, por lo que éstas no necesitan competir por los mismos recursos. Cada tarea de procesos independientes se asigna a una sección dedicada del chip, y puede ejecutarse de manera autónoma sin ser afectada por otros bloques de lógica. Como resultado, el rendimiento de una parte de la aplicación no se ve afectado cuando se agregan otros procesos.
1.2 PARTES DE UN FPGA Cada chip de FPGA está hecho de un número limitado de recursos predefinidos con interconexiones programables para implementar un circuito digital reconfigurable y bloques de E/S que permitan que los circuitos tengan acceso al mundo exterior. Las especificaciones de recursos de FPGA a menudo incluyen el número de bloques de lógica configurables, número de bloques de lógica de función fijos como multiplicadores y el tamaño de los recursos de memoria como RAM en bloques embebidos. De las muchas partes del chip FPGA, estos son generalmente los más importantes cuando se seleccionan y comparan FPGA’s para una aplicación en particular.
pág. 1
Fig. 1.2-1 Uno de los beneficios de los FPGA’ s ante los sistemas basados en procesador es que la lógica de aplicación es implementada en circuitos de hardware en lugar de ejecutarse aparte de un SO, controladores y software de aplicación.
Fig. 1.2-2 Las Diferentes Partes de un FPGA
Los bloques de lógica configurables (CLB´s) son la unidad de lógica básica de un FPGA. Algunas veces referido como segmentos o células de lógica, los CLB´s están hechos de dos componentes básicos: flip-flops y tablas de consulta ( LUT’s). Es importante tomar esto en cuenta porque distintas familias de FPGA’s se diferencian en la manera en que los flip-flops y las LUT’s están empacados.
1.3 HERRAMIENTAS DE DISEÑO Ahora que se conocen los bloques de construcción de un chip FPGA, la pregunta es "¿Cómo configurar todos estos millones de componentes para construir la lógica que necesita ejecutar?" La respuesta es que el usuario deberá desarrollar tareas de cómputo digital en software usando herramientas de desarrollo y después compilarlas en un archivo de configuración o una 2
escritura de bits que contenga información sobre cómo los componentes deben estar cableados. En el pasado el reto con la tecnología FPGA era que las herramientas de diseño FPGA de bajo nivel podían ser usadas solamente por los ingenieros con un profundo conocimiento del diseño de hardware digital. Sin embargo, el surgimiento de las herramientas de diseño de la síntesis de alto nivel (HLS), como software de diseño de sistemas NI LabVIEW o Vivado HSL, cambia las reglas de la programación de FPGA’s y ofrece nuevas tecnologías que convierten los diagramas de bloques gráficos en circuitos de hardware digital.
1.3.1
Herramientas Tradicionales de Diseño de FPGA
Durante los primeros 20 años del desarrollo del FPGA, los lenguajes de descripción de hardware (HDL’s) como VHDL y Verilog evolucionaron como los lenguajes elementales para diseñar los algoritmos que se ejecutan en el chip FPGA. Estos lenguajes de bajo nivel integran algunos de los beneficios ofrecidos por otros lenguajes de texto con el entendimiento de que en un FPGA, usted está diseñando un circuito. La sintaxis híbrida que resulta requiere que las señales sean mapeadas o conectadas desde los puertos de E/S externos hasta las señales internas, las cuales finalmente son cableadas a las funciones que alojan a los algoritmos. Estas funciones se ejecutan secuencialmente y pueden hacer referencia a otras funciones en el FPGA. Sin embargo, la naturaleza paralela real de la ejecución de tareas en un FPGA es difícil de visualizar en un flujo secuencial línea por línea. Los HDL’s reflejan algunos de los atributos de otros lenguajes textuales, pero difieren considerablemente porque están basados en un modelo de flujo de datos dónde la E/S es conectada a una serie de bloques de función a través de las señales. Para verificar la lógica creada por un programador de FPGA, es común escribir bancos de pruebas en HDL para abarcar y practicar el diseño de FPGA al afirmar entradas y verificar salidas. El banco de pruebas y el código FPGA se ejecutan en un entorno de simulación que modela el comportamiento de temporización de hardware del chip FPGA y muestra al diseñador todas las señales de entrada y salida para validación de pruebas. El proceso de crear el banco de pruebas HDL y ejecutar la simulación generalmente requiere más tiempo que crear el diseño original de FPGA HDL. Una vez que ha creado un diseño de FPGA usando HDL y que lo ha verificado, necesita integrarlo en una herramienta de compilación que toma la lógica basada en texto y después de varios pasos bastante complejos, sintetiza su HDL en un archivo de configuración o escritura de bits que contiene información sobre cómo los componentes deben estar cableados. Como parte de este proceso manual de varios pasos, usted generalmente requiere especificar un mapeo de los nombres de señales hasta los pines en el chip FPGA que está usando.
1.3.2
Herramientas para Diseño de Síntesis de Alto Nivel
El surgimiento de herramientas de diseño HLS gráfico, como LabVIEW, ha eliminado algunos de los principales obstáculos del proceso de diseño HDL tradicional. El entorno de programación LabVIEW es claramente adecuado para programación FPGA ya que representa paralelismo y flujo de datos, así los usuarios experimentados y sin experiencia en los procesos de diseño FPGA pueden impulsar a la tecnología FPGA. Además, ya que la propiedad intelectual (IP) anterior no está perdida, usted puede usar LabVIEW para integrar VHDL existente en sus diseños LabVIEW FPGA. 3
Fig. 1.3-1 Diseño Simple de FPGA Contador en VHDL
Fig. 1.3-2 . A la derecha está el software de desarrollo de sistemas LabVIEW, el cual es una herramienta de diseño de alto nivel para los FPGA’ s en los dispositivos de hardware NI RIO. Ofrece abstracción para la complejidad de bajo nivel que generalmente encontramos.
Después de simular y verificar el comportamiento de su lógica FPGA, LabVIEW ofrece características directamente en el entorno de desarrollo. Sin conocimiento del lenguaje HDL de bajo nivel usted puede crear bancos de pruebas para practicar la lógica de su diseño. Además, la flexibilidad del entorno LabVIEW ayuda a los usuarios más avanzados a modelar la temporización y la lógica de sus diseños al exportar a simuladores de ciclo preciso como Xilinx ISim. Las herramientas LabVIEW FPGA automatizan el proceso de compilación, así usted puede comenzar el proceso con un clic y recibir reportes y errores, conforme las etapas de compilación son concluidas. Si ocurren errores de temporización de su diseño FPGA, LabVIEW resalta estas partes críticas de manera gráfica para acelerar el proceso de depuración. 4
1.4 BENEFICIOS PRINCIPALES DE LA TECNOLOGÍA FPGA Los beneficios de la tecnología FPGA, se pueden englobar en 5 elementos:
Rendimiento – Aprovechando del paralelismo del hardware, los FPGA’s exceden la potencia de cómputo de los procesadores digitales de señales (DSPs) rompiendo el paradigma de ejecución secuencial y logrando más en cada ciclo de reloj. BDTI, una destacada firma analista que realiza evaluaciones de referencia, lanzó evaluaciones mostrando cómo los FPGA’s pueden entregar significativamente más potencia de procesamiento por dólar que una solución de DSP, en algunas aplicaciones 2. El controlar entradas y salidas (E/S) a nivel de hardware ofrece tiempos de respuesta más veloces y funcionalidad especializada que coincide con los requerimientos de una aplicación. Tiempo en llegar al mercado – La tecnología FPGA ofrece flexibilidad y capacidades de rápido desarrollo de prototipos para enfrentar los retos de que un producto se libere tarde al mercado. Usted puede probar una idea o un concepto y verificarlo en hardware sin tener que pasar por el largo proceso de fabricación por el que pasa un diseño personalizado de ASIC3. Posteriormente podrá implementar cambios y realizar iteraciones de un diseño FPGA en cuestión de horas en vez de semanas. También existe hardware comercial listo para usarse (COTS) con diferentes tipos de E/S ya conectados a un chip FPGA programable por el usuario. El aumento en disponibilidad de herramientas de software de alto nivel disminuye la curva de aprendizaje con niveles de abstracción. Estas herramientas frecuentemente incluyen importantes núcleos IP (funciones pre-construidas) para control avanzado y procesamiento de señales. Precio – El precio de la ingeniería no recurrente de un diseño personalizado ASIC excede considerablemente al de las soluciones de hardware basadas en FPGA. La fuerte inversión inicial de los ASIC’s es fácilmente justificable para los fabricantes de equipos originales que embarcan miles de chips por año, pero muchos usuarios finales necesitan la funcionalidad de un hardware personalizado para decenas o cientos de sistemas en desarrollo. La misma naturaleza programable del silicio implica que no hay precio de fabricación o largo plazos de ejecución de ensamblado. Los requerimientos de un sistema van cambiando con el tiempo, y el precio de cambiar incrementalmente los diseños FPGA es insignificante al compararlo con el precio de implementar cambios en un ASIC antes de su lanzamiento. Fiabilidad – Mientras que las herramientas de software ofrecen un entorno de programación, los circuitos de un FPGA son una implementación segura de la ejecución de un programa. Los sistemas basados en procesadores frecuentemente implican varios niveles de abstracción para auxiliar a programar las tareas y compartir los recursos entre procesos múltiples. El software a nivel driver se encarga de administrar los recursos de hardware y el sistema operativo administra la memoria y el ancho de banda del procesador. El núcleo de un procesador sólo puede ejecutar una instrucción a la vez, y los sistemas basados en procesadores están siempre en riesgo de que sus tareas se obstruyan entre sí. Los FPGA’s, que no necesitan sistemas operativos, minimizan los retos de fiabilidad con ejecución paralela y hardware preciso dedicado a cada tarea. Mantenimiento a largo plazo – Como se mencionó anteriormente, los chips FPGA son actualizables en campo y no requieren el tiempo y el precio que implica rediseñar un ASIC. Los protocolos de comunicación digital por ejemplo, tienen especificaciones que podrían 5
cambiar con el tiempo, y las interfaces basadas en ASIC’s podrían causar retos de mantenimiento y habilidad de actualización. Los chips FPGA, al ser reconfigurables, son capaces de mantenerse al tanto con modificaciones a futuro que pudieran ser necesarias. Mientras el producto o sistema se va desarrollando, usted puede implementarle mejoras funcionales sin la necesidad de invertir tiempo rediseñando el hardware o modificando el diseño de la tarjeta.
1.5 TIPOS DE FPGA Al examinar las especificaciones de un chip FPGA, generalmente están divididos en bloques de lógica configurables como segmentos o células de lógica, funciones fijas de lógica como multiplicadores, y recursos de memoria como RAM en bloque embebida. El chip FPGA tiene otros componentes, pero éstos son generalmente los más importantes cuando se seleccionan y comparan FPGA’s para una aplicación en particular. Las principales características que nos permiten comparan los FPGA son: • • • • • •
Proceso de Fabricación. Células de lógica. Administración de reloj. Memoria. Capacidades DSP. Compatibilidad E/S.
Entre los principales fabricantes de FPGA’s se encuentran las empresas: Xilinx, Altera, Lattice y Actel. Xilinx Sus principales familias se muestran en la figura.
Fig. 1.5-1 Familia de FPGA’s Xilinx
6
Características
Artix™-7
Kintex™-7
Virtex®-7
Spartan®-6
Virtex-6
Células de lógica RAM en bloque Segmentos DSP DSP Performance (FIR Simétrico) Número de transceptores Velocidad del transceptor Total Transceiver Bandwidth (full duplex) Interfaz de Memoria (DDR3) Interfaz PCI Express® Señal Analógica Mezclada (AMS)/XADC Configuración AES Pines E/S Voltaje E/S
215,000 13Mb 740 930GMACS
480,000 34Mb 1,920 2,845GMACS
2,000,000 68Mb 3,600 5,335GMACS
150,000 4.8Mb 180 140GMACS
760,000 38Mb 2,016 2,419GMACS
16
32
96
8
72
6.6Gb/s
12.5Gb/s
28.05Gb/s
3.2Gb/s
11.18Gb/s
211Gb/s
800Gb/s
2,784Gb/s
50Gb/s
536Gb/s
1,066Mb/s
1,866Mb/s
1,866Mb/s
800Mb/s
1,066Mb/s
x4 Gen2 Yes
Gen2x8 Yes
Gen3x8 Yes
Gen1x1 -
Gen2x8 Yes
Yes 500 1.2V, 1.35V, 1.5V, 1.8V, 2.5V, 3.3V -
Yes 500 1.2V, 1.35V, 1.5V, 1.8V, 2.5V, 3.3V Yes
Yes 1,200 1.2V, 1.35V, 1.5V, 1.8V, 2.5V, 3.3V Yes
Yes 576 1.2V, 1.5V, 1.8V, 2.5V, 3.3V -
Yes 1,200 1.2V, 1.5V, 1.8V, 2.5V
EasyPath™ Solución de reducción de costos.
Yes
Altera Sus FPGA se dividen en tres series: • • •
Cyclone. Arria. Stratix.
Feature High-performance adaptive logic modules (ALMs) Variable-precision DSP blocks (18x18) M20K memory blocks External memory interface Partial reconfiguration fPLL Design security SEU mitigation PCI Express Gen3, Gen2, Gen1 hard IP blocks Embedded HardCopy Blocks and hard IP Transceivers
(1)
Stratix V E FPGA
Stratix V GS FPGA
Stratix V GX FPGA
Stratix V GT FPGA
359,200
262,400
359,200
234,720
704
3,926
798
512
2,640
2,567
2,660
2,560
-
Up to 2
Up to 4
1
14.1 Gbps/48
14.1 Gbps/66
28.05 Gbps/4 12.5 Gbps/32
-
7
2 DESARROLLO 2.1 FPGA’S Los FPGA’s (Field Programmable Gate Array) son circuitos lógicos programables directamente
por el usuario, lo cual requiere de herramientas de costo relativamente bajo, como lo son el software de desarrollo y el dispositivo grabador. La grabación o programación de uno de estos dispositivos se puede llevar a cabo en milisegundos. Los FPGA son muy utilizados por fabricantes que producen tecnología a baja escala, como por ejemplo diseñadores de equipos de propósito específico, los cuales no pueden justificar la producción de ASIC ’s por los bajos volúmenes de dispositivos que venden. Los FPGA’s tienen una funcionalidad similar, a costos menores y con una velocidad ligeramente menor. También los FPGA’s se utilizan como prototipos, los cuales se pueden depurar y permiten refinar el diseño. Con el software de diseño se puede simular en hardware antes de mandar a fabricar el ASIC correspondiente.
2.1.1
Arquitectura de los FPGA’s
Un FPGA consiste en arreglos de varios bloques programables (bloques lógicos) los cuales están interconectados entre sí y con celdas de entrada/salida mediante canales de conexión
verticales y horizontales, tal como muestra la figura 2.1.1. En general, se puede decir que posee una estructura bastante regular, aunque el bloque lógico y la arquitectura de rutado varían de un fabricante a otro.
2.1.2
Bloques Lógicos
El bloque lógico consta de una parte combinacional, que permite implementar funciones lógicas booleanas, más una parte secuencial que permite sincronizar la salida con una seña de reloj externa e implementar registros. La parte combinacional varía de un fabricante a otro. A continuación, explicaremos dos de ellas, representativas porque poseen unas prestaciones opuestas.
Bloque lógico basado en LUT (look-up table): Una LUT es un componente de células de memoria SRAM que almacena una tabla de verdad. Las direcciones de las células son las entradas de la función lógica que queremos implementar, y en cada celda de memoria se guarda el resultado para una de las combinaciones de las entradas. En una LUT de n x 1 es posible implementar cualquier función lógica de n entradas. En la figura 2.1.2.1 se puede observar un ejemplo. Bloque lógico basado en multiplexores: El bloque lógico basado en multiplexores se caracteriza porque requiere mucha menos lógica que el anterior basado en una LUT, y, en consecuencia, ocupa mucha menos área. De este modo, se pueden implementar mayor número de bloques lógicos en el mismo espacio, o, para el mismo número de bloques, disponer de más espacio para incrementar los recursos de rutado. Como contrapartida, no 8
se puede implementar cualquier función lógica de n entradas, como ocurría con las LUT ’s. En caso necesario, esta función lógica hay que repartirla entre varios bloques lógicos. En la figura 2.1.2.2 se puede observar un ejemplo del bloque basado en multiplexores. Bloque Lógico Bloque de E/S
Recursos de Interconexión
Figura 2.1.1: Arquitectura
Figura 2.1.2.1:
Básica de un FPGA
Ejemplo de implementación de una función lógica de 3 entradas en una LUT de 8x1
9
Figura 2.1.2.2: Bloque
2.1.3
Lógico basado en multiplexores.
Interconexión entre bloques programables
Además de los bloques programables también es importante la tecnología utilizada para crear las conexiones entre los canales (tecnología de programación). Las más importantes son las siguientes:
Antifusible (Antifuse): Al igual que la tecnología PROM (memoria de solo lectura programable), un FPGA que utiliza este tipo de tecnología sólo se puede programar una sola vez, y utilizan algo similar a un fusible para las conexiones. Una vez que es programado ya no se puede recuperar. La diferencia entre un fusible y un antifusible es que el primero se desactiva deshabilitando la conexión, en cambio, para el segundo se produce una conexión cuando son programados, por lo que normalmente se encuentran abiertos. La desventaja obvia es que no son reutilizables, pero por otro lado disminuyen considerablemente el tamaño y costo de los dispositivos. SRAM (StaticRAM): Estas guardan la configuración del circuito. Esto quiere decir que las SRAM son utilizadas como generadores de funciones y además son usadas para controlar multiplexores (que están incluidos en los FPGA’s) y la interconexión entre bloques. En éstas el contenido se almacena mediante un proceso de configuración en el momento de encendido del circuito que contiene al FPGA. Ya que al ser SRAM, el contenido de la memoria se pierde cuando se deja de suministrar energía; la información binaria de las celdas SRAM generalmente se almacena en memorias seriales EEPROM conocidas como memorias de configuración o celdas de configuración. En el momento de encendido del circuito toda la información binaria es transferida a los bloques e interconexiones del FPGA mediante el proceso de configuración el cual es generalmente automático, dado que el propio FPGA contiene un circuito interno que se encarga de hacer toda la programación. Flash: El avance experimentado en los últimos años en el diseño y prestaciones de las celdas de memoria Flash ha permitido su incorporación reciente al mundo de los dispositivos programables como tecnología de programación. Las FPGA’s basadas en celdas Flash 10
recogen las ventajas principales de las dos técnicas anteriores situándose en un punto intermedio. Su tamaño es bastante más reducido que el de una celda de SRAM, aunque sin llegar al tamaño reducido de un antifusible; son reprogramables, aunque la velocidad de programación es bastante más lenta que en el caso de una SRAM; y son no volátiles, por lo que no necesitan un dispositivos auxiliar para guardar la configuración interna, como en el caso de la SRAM. Un FPGA que tiene una gran cantidad de canales de interconexión tiende a tener pequeños bloques lógicos con muchas entradas y salidas en comparación con el número de compuertas que puede generar el bloque Este bloque lógico se caracteriza por ser bastante sencillo, con poca lógica en su parte combinacional. Este es el caso del bloque lógico a base de multiplexores el apartado anterior. Este tipo de FPGA generalmente utiliza tecnología antifusible. Un FPGA que tiene una estructura pequeña en canales de interconexión tiende a tener grandes bloques lógicos con pocas entradas y salidas en comparación con el número de compuertas que existe en el bloque. Este es el caso del bloque lógico basado en LUT ’s, que permiten implementar cualquier función lógica del mismo número de entradas. Este tipo de FPGA generalmente está fabricado con tecnología SRAM. Finalmente, las FPGA’s basadas en celdas Flash suelen emplear un bloque lógico sencillo para incrementar los recursos de rutado, como ocurre con las FPGA’s de antifusibles.
2.1.4
Bloques de Entrada/Salida
La función de un bloque de entrada/salida es permitir el paso de una señal hacia dentro o hacia el exterior del dispositivo. Además debe contar con recursos tales como:
Salidas configurables como TRI-STATE u open-collector. Entradas con posibilidad de pull-up o pull-down programables. Registros de salida. Registros de entrada.
La figura 2.1.4.1 muestra un ejemplo de un bloque de Entrada/ Salida. Por último en la figura 2.1.4.2 se describe la estructura básica de un FPGA, donde además se muestra una visualización de los componentes antes mencionados (Bloques Entrada/Salida, Bloques Lógicos y la Interconexión de Bloques).
2.1.5
Tiempos de propagación
El cálculo de los retardos incluidos en un diseño basado en FPGA’s no es muy fácil de predecir, ya que la propia estructura matricial de estos circuitos hace difícil saber cuántas celdas básicas, interconexiones programables o bloques de entradas/salida se utilizan para cada señal. Esto es, es necesario conocer cómo se ha realizado el procedimiento de place and route en el dispositivo para tener un conocimiento exacto de los retardos de propagación debidos a cada uno.
11
Debido a este factor, las herramientas de desarrollo para FPGA’s suelen incluir un analizador de tiempos, que sirve para calcular tiempos de set-up, de clock- to-output, y sobre todo dar una estimación de la frecuencia máxima de operación.
Figura 2.1.4.1:
Ejemplo de Bloque Entrada/Salida
Figura 2.1.4.2: Arquitectura
Básica de un FPGA y la visualización de sus componentes.
12
2.2 FPGA VS MICROCONTROLADOR Una de las decisiones fundamentales a la hora de diseñar un producto electrónico es la elección de ese dispositivo electrónico que se desea emplear, ya que éste dispositivo va a afectar a variables tales como el coste de dicho producto, sus prestaciones, su diseño, etc. Esta decisión debe ser tomada en las primeras etapas del proceso de diseño. A la hora de elegir entre los diferentes circuitos integrados se deben tener en cuenta diversos aspectos como son la velocidad a la que se desea que trabaje el dispositivo, la cantidad de recursos lógicos que se van a emplear, los costes de diseño y fabricación, el número de unidades a producir o si el dispositivo necesitará ser reprogramado o no. Para elegir una FPGA frente a otros circuitos integrados hay que tener en cuenta sus ventajas respecto a estos. Realizando una comparación muy burda () sobre algunos aspectos que más importan a la hora de elegir entre las FPGA y los microcontroladores podemos observar que los FPGA son más poderosos pero también consumen más energía, a continuación mostraremos una comparación entre los microcontroladores más fuertes de las compañías Atmel y Microchip Technology Inc. contra el más bajo de Xilinx.
Core Velocidad
Xilinx Spartan ® -6 1.62 GHz
RAM
4,8 Mb
Pines E / S de voltaje Temperatura de Operación
576 0.5 – 4.4 V
ARM926® 400 MHz 32 Kb internos, hasta 2Gb externos del tipo DDR2/LPDDR, SDRAM/LPSDR. 217 1.6 – 4.6 V
-65 – 150 °C
-40 – 85 °C
Características
Atmel – SAM4E16E
Microchip PIC32MZ2048ECM144 DMIPS, microAptiv core 200 MHz
512 Kb 144 2.2 – 3.6 V -40 – 85 °C
Si bien la tabla anterior nos muestra a grandes rasgos que tan poderosos pueden ser los FPGA con respecto a los microcontroladores también tienen sus desventajas las cuales veremos a continuación. FPGA Rendimiento significativamente mayor. Excelente en operaciones paralelas Rápida respuesta a varias entradas simultáneas. Recursos lógicos crecen con el aumento de la complejidad. Los requisitos de memoria de programa se incrementan con el aumento de la complejidad.
Microcontrolador Fácil de programar, excelente para el control y estado aplicaciones de máquinas. Las necesidades de recursos se mantienen constantes con creciente complejidad. Re-utiliza recursos lógicos, excelente para un mejor rendimiento de funciones. Ejecuta secuencialmente. El rendimiento disminuye a medida que aumenta la complejidad 13
Dificultad para el diseño y depuración del programa. Uso de energía constante. Dificultades de cambio de diseño con respecto a la funcionalidad de acuerdo a su comercialización.
Respuesta más lenta a las entradas simultáneas. Modo de ahorro de energía. Fácil cambio con respecto a su funcionalidad de diseño. Más costoso con bajo rendimiento
De lo anterior podemos concluir lo siguiente:
Una FPGA puede realizar más operaciones por ciclo de reloj que un microcontrolador. Una FPGA puede ejecutar operaciones de forma paralela, aumentando de esta forma la velocidad de procesamiento de datos. Una FPGA puede ser reprogramada para cambiar completamente su funcionalidad, mientras que un microcontrolador ya tiene una circuitería y un conjunto de instrucciones estático. En función de las necesidades de cada aplicación se deberá decidir entre una FPGA o bien otro de los circuitos integrados disponibles en el mercado.
2.3 APLICACIONES FPGA’S Desde los dispositivos Bluetooth hasta el vehículo de exploración de la NASA Mars Rover, los FPGA’s han sido uno de los pilares del diseño de los sistema embebidos. Los FPGA’s son el corazón de muchos dispositivos de misión crítica, controlando todo desde Access Points hasta sistemas comerciales de reconocimiento de rostros. Diferente a una ejecución secuencial dada por un procesador de propósito general, los modernos FPGA pueden ejecutar miles de módulos lógicos por cada ciclo de reloj. En la actualidad satélites, sistemas de instrucción, redes eléctricas, criptografía, aviones y hasta el vehículo de la NASA Mars Rover confían en los FPGA’s para ejecutar sus respectivas funciones.
2.3.1
FPGA’s para la industria aeroespacial
Debido a que los FPGA’s proveen balance útil entre rendimiento, costo y flexibilidad, muchos sistemas aéreos ahora los usan. Por ejemplo, los FPGA’s ejecutan funciones cruciales en el Join Strike Fighter1, para el Boeing 787 Dreamliner y el NASA Mars Rover. En estas aplicaciones, los FPGA’s son usados para las pantallas de las cabinas de pilotos, administración de vuelo, manejadores de armas y radares de vuelo. Considerando el ejemplo de la aviación militar, en el cual con un simple chip, clasifica información de blancos, abastecimiento de gasolina e información de mantenimiento. Otro
1
Joint Strike Fighter fue un programa militar iniciado y conducido por EUA para la creación de un nuevo avión de casa táctico
14
escenario es el sensor de disparo, el cual con un análisis inteligente calcula el lugar donde atacar orientado por los soldados.
2.3.2
FPGA’s para el Supercomputo
Mientras las computadoras personales continúan aumentando su rendimiento, siempre hay problemas que son encontrados en las capacidades de estas máquinas y es por eso que los científicos e ingenieros eventualmente migran a grandes máquina cuando el rendimiento es necesario. Muchas compañías de supercomputadoras, incluyendo SRC Computers, Cray, y SGI, han integrado hardware reconfigurable dentro de sus sistemas para incrementar el rendimiento. Un buen ejemplo de este tipo de sistemas es la arquitectura XD1 de Cray, la cual combina seis grandes FPGA’s Xilinx (Virtex-4) con 12 procesadores x86 en cada chasis. La computadora reconfigurable SRC es un ejemplo de un sistema de usa FPGA’s para proveer aceleramiento en la ejecución de programas en procesadores de propósito general.
2.3.3
FPGA’s para el Análisis de Video
Los FPGA’s proveen un manejo natural de las señales complejas de alta velocidad procesando aplicaciones como el análisis de video y el reconocimiento de rostros. Estos algoritmos son más comúnmente dominados por grandes operaciones matriciales, lo que significa que el paralelismo y las tuberías son más probables de ofrecer grandes ganancias de rendimiento para estas aplicaciones. Un problema común es el Video Redaction, que consiste en remover información sensible de los datos, como documentos, sonidos y películas. Redaction se puede usar en el proceso de creación de porciones no clasificadas de un documento secreto disponible al público o se puede usar para la privacidad de las personas. Un ejemplo de Video Redaction es cuando se distorsionan los rostros de personas capturadas en el video. IBM ha creado un sistema privado de video llamado PeopleVision, el cual esta implementado en un FPGA, con al menos tres núcleos, un núcleo de procesamiento de video, un núcleo para el Redaction Video para distorsionar los rostros y un núcleo Ethernet para la transmisión de los datos a una terminal.
2.3.4
FPGA’s para Criptografía de Alto Rendimiento
Implementar criptografía en FPGA’s ofrece grandes ventajas. Bloques de sistemas de cifrado requieren muchas operaciones a nivel de bit, como el intercambio o permutación de bits, los cuales pueden ser eficientemente implementados en FPGA’s. FPGA’s también permiten cambiar los parámetros de los algoritmos fácilmente, o el circuito entero poder ser reemplazado completamente. Por ejemplo, si los matemáticos descubren una falla en un sistema de cifrado, el bistream puede ser fácilmente actualizado con un parche. Algunas funciones criptográficas como MD5, SHA-2, y otro rango de funciones, han sido implementadas en FPGA’s.
15
2.3.5
FPGA’s para Detección y Prevención de Intrusos
Otra área relacionada a la seguridad donde los dispositivos reconfigurables son ampliamente utilizados es en los sistemas de detección de intrusos en la red (IDS). Ya que muchos IDS ’s requieren que cada byte de cada paquete sea escaneado para descubrir ataques o comportamientos sospechosos, y esta tarea es un problema computacionalmente difícil. Las velocidades de las redes operan en el rango de los gigabits por segundo, y un esquema de detección de intrusión debe ser capaz siempre de permanecer arriaba con la carga de red. Este requerimiento de rendimiento del peor caso, hacen a los FPGA’s perfectos para esta tarea.
3 CONCLUSIONES. ERNESTO SAÚL GUTIÉRREZ MORALES: La adopción de la tecnología FPGA continúa creciendo mientras que las herramientas de alto nivel evolucionan, para ofrecer a los ingenieros e investigadores los beneficios del silicio reprogramable. Comparar y seleccionar los FPGA’S basándonos en bloques lógicos, capacidades DSP y RAM en bloque es la mejor manera de escoger el chip FPGA adecuado para su aplicación. Finalmente gracias a su balance útil entre rendimiento, costo y flexibilidad, en comparación con otros dispositivos, los FPGA’s sean utilizados para diversas aplicaciones de alto desempeño como análisis de video o criptografía.
GABRIEL BALTAZAR PÉREZ: Se puede observar que cada vez se va adoptando más a los FPGA’s que con ayuda de herramientas como LabVIEW, y las tecnologías con las que se realizan los FPGA’s permite que estos
sean cada vez más accesibles y sean fáciles de utilizar y realizar implementaciones con los mismos. Es importante tomar en cuenta y ver la arquitectura de los FPGA’s para conocer su estructura y ver
lo que ocurre en los bloques lógicos cuando se realiza la compilación de un programa. Es necesario realizar comparaciones y ver las especificaciones de hardware basados en flip-flops, LUT ’s, multiplicadores y RAM ya que cada para determinar cuál arquitectura es la que más nos conviene utilizar. Para esto es muy importante comprender el cómo se manejaran los recursos para obtener los mejores resultados durante el desarrollo, especialmente al tratar de optimizar el tamaño y la velocidad que son puntos clave cuando se realiza una implementación basada e n FPGA’s. Por último se concluye que los FPGA’s están ganando poco a poco más terreno y a los cuales se les está invirtiendo para que cada vez sean más poderosos, específicamente en cuanto a la cantidad de almacenamiento y el procesamiento de las tareas que estos realicen, por lo que es bueno estar al tanto de los avances que estos tengan.
DANIEL VERGARA MONTES: Con se describió a lo largo de este documento, los FPGA’s son circuitos lógicos programables directamente por el usuario, con lo cual requiere de Herramientas de costo bajo como son el software de desarrollo y el dispositivo grabador. 16
Cada chip de FPGA está hecho de un número limitado de recursos predefinidos con interconexiones programables para implementar un circuito digital reconfigurable y bloques de E/S que permitan que los circuitos tengan acceso al mundo exterior. Los beneficios principales con respecto a otros dispositivos es que los FPGA’s permiten ejecutar varios bloques lógicos en un mismo tiempo de reloj mientras que un microcontrolador cada operación la realiza secuencialmente, además los FPGA’s cuentan con una velocidad mayor y mayor capacidad de RAM respecto a los Microcontrolador. Gracias a las características de los FPGA’s y a la ventaja sobre otros dispositivos, se han desarrollado aplicaciones muy grandes y muy robustas, como es el caso del NASA Mars Rover que se encuentra explorando el planeta marte. Otras aplicaciones importante son dispositivos para asistentes de vuelo, súper computo, Análisis y tratamiento de imágenes y video, sistemas inteligentes de detección de intrusos en un red hasta implementaciones de algoritmos criptográficos. Con forme pase el tiempo veremos que las aplicaciones de los FPGA’s irán aumentando permitiendo mejorar el rendimiento en muchos de los sistema que ya se encuentran trabajando con sistema secuenciales.
JOSÉ NOEL ROSALES PÉREZ: En este trabajo se ha intentado recalcar las diferencias que existen entre las FPGA’s y los microcontroladores. El diseño de las FPGA gracias a su veracidad y capacidad de computo son un gran aliado para diferentes aplicaciones a las cuales los microcontroladores no pueden accesar o bien son demasiados lentos para la resolución del problema. En resumen la utilización de los dispositivos FPGA son considerados altamente implementables para diferentes aplicaciones.
17
4 REFERENCIAS [1] S. Navalgund y D. Dharwad, «Design, Development and Implementation of ALU, RAM and ROM for 8051 Microcontroller on FPGA using VHDL,» International Journal of Computer Applications, vol. 80, nº 1, p. 0975 – 8887, 2013. [2] I. Kuon, R. Tessier y J. Rose, «FPGA Architecture: Survey and Challenges,» Foundations and Trends® in Electronic Design Automation.
[3] U. Farooq, Z. Marrakchi y H. Mehrez, «Tree-Based Heterogeneus FPGA Architectures, Application Specific Exploration and Optimization,» Springer, pp. 7-77. [4] S. Brown y J. Rose, Architecture of FPGA’s and CPLDs: A Tutorial, Department of Electrical and Computer Engineering University of Toronto. [5] V. Betz y J. Rose, FPGA Routing Architecture: Segmentation and Buffering to Optimize Speed and Density, University of Toronto Toronto, Ontario, Canada: Department of Electrical and Computer Engineering. [6] Xillinx Inc., «Spartan-6 FPGA Data Sheet: DC and Switching Characteristics,» 2011 Octubre 17. [En línea]. Available: www.xilinx.com. [Último acceso: 2013 Noviembre 25]. [7] Xilinx Inc., «Introduction to FPGA Design with Vivado High-Level Synthesis,» 24 Noviembre 2013. [En línea]. Available: http://www.xilinx.com/support/documentation/sw_manuals/ug998-vivado-introfpga-design-hls.pdf. [8] Altera Corporation., «FPGA CPLD and ASIC from Altera,» [En línea]. Available: http://www.altera.com/. [Último acceso: 25 Noviembre 2013]. [9] Microchip Technology Inc., «Datasheet PIC32MZ Embedded, Connectivity (EC) Family,» 2013 Noviembre 25. [En línea]. Available: www.microchip.com. [10] Atmel., «Datasheet ARM-based Flash MCU, SAM4E [SUMMARY DATASHEET],» 25 Julio 2013. [En línea]. Available: www.atmel.com. [Último acceso: 25 Noviembre 2013]. [11] Xilinx Inc, «All Programmable Technologies from Xilinx http://www.xilinx.com. [Último acceso: 24 Noviembre 2013].
Inc.,»
[En
línea].
Available:
[12] National Instruments Corporation., «National Instruments México,» [En línea]. Available: http://ni.com/. [Último acceso: 24 Noviembre 2013]. [13] Genera, «Genera Soluciones Tecnologicas,» [En línea]. Available: http://www.generatecnologias.es/empresa_desarrollo_fpga.html. [Último acceso: 25 Noviembre 2013]. [14] T. Huffmire, C. Irvine, T. D. Nguyen, T. Levin, R. Kastner y T. Sherwood, «Handbook of FPGA Design Security,» Springer, pp. 1-6.
18