miércoles, 17 de agosto de 2016




FPGAS

¿Que es un FPGA?

En el nivel más alto, los FPGAs son chips de silicio reprogramables. Al utilizar bloques de lógica pre-construidos y recursos para ruteo programables, usted puede configurar estos chips para implementar funcionalidades personalizadas en hardware  sin tener que utilizar una tablilla de prototipos o un cautín. Sólo 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 FPGAs son completamente reconfigurables y al instante toman una nueva “personalidad” cuando usted 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 FPGAs, 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 FPGAs combinan lo mejor de los ASICs 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 FPGAs 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.


Historia
Las FPGA son el resultado de la convergencia de dos tecnologías diferentes, los dispositivos lógicos programables (PLDs Programmable Logic Devices) y los circuitos integrados de aplicación específica (ASIC [Application-Specific Integrated Circuit]). La historia de los PLDs comenzó con los primeros dispositivos PROM (Programmable Read-Only Memory) y se les añadió versatilidad con los PAL (Programmable Array Logic) que permitieron un mayor número de entradas y la inclusión de registros. Esos dispositivos han continuado creciendo en tamaño y potencia. Mientras, los ASIC siempre han sido potentes dispositivos, pero su uso ha requerido tradicionalmente una considerable inversión tanto de tiempo como de dinero. Intentos de reducir esta carga han provenido de la modularización de los elementos de los circuitos, como los ASIC basados en celdas, y de la estandarización de las máscaras, tal como Ferranti fue pionero con la ULA (Uncommitted Logic Array). El paso final era combinar las dos estrategias con un mecanismo de interconexión que pudiese programarse utilizando fusibles, antifusibles o celdas RAM y celdas ROM, como los innovadores dispositivos Xilinx de mediados de los 80. Los circuitos resultantes son similares en capacidad y aplicaciones a los PLDs más grandes, aunque hay diferencias puntuales que delatan antepasados diferentes. Además de en computación reconfigurable, las FPGAs se utilizan en controladores, codificadores/decodificadores y en el prototipado de circuitos VLSI y microprocesadores a medida.
Añadir leyenda

El primer fabricante de estos dispositivos fue Xilinx y los dispositivos de Xilinx se mantienen como uno de los más populares en compañías y grupos de investigación. Otros vendedores en este mercado son Atmel, Altera, AMD y Motorola.

Puertas Lógicas
  • 1982: 8192 puertas, Burroughs Advanced SystemsGroup
  • 1987: 9.000 puertas, Xilinx
  • 1992: 600.000, Naval Surface Warfare Department
  • Principios 2000s: Millones
Evolución del mercado
  • 1985: Primera FPGA comercial por Xilinx, XC2064
  • 1987: 14 millones de dólares
  • 1993: más de 385 millones de dólares
  • 2005: 1,900 millones de dólares
  • 2010: alrededor de 2,750 millones de dólares
  • 2013: 5,400 millones de dólares
  • 2020: alrededor de 9,800 millones de dólares
FPGA vs CPLD

Las FPGAs fueron inventadas en el año 1984 por Ross Freeman y Bernard Vonderschmitt, co-fundadores de Xilinx, y surgen como una evolución de los CPLDs.

Tanto los CPLDs como las FPGAs contienen un gran número de elementos lógicos programables. Si medimos la densidad de los elementos lógicos programables en puertas lógicas equivalentes (número de puertas NAND equivalentes que podríamos programar en un dispositivo) podríamos decir que en un CPLD hallaríamos del orden de decenas de miles de puertas lógicas equivalentes y en una FPGA del orden de cientos de miles hasta millones de ellas.

Aparte de las diferencias en densidad entre ambos tipos de dispositivos, la diferencia fundamental entre las FPGAs y los CPLDs es su arquitectura. La arquitectura de los CPLDs es más rígida y consiste en una o más sumas de productos programables cuyos resultados van a parar a un número reducido de biestables síncronos (también denominados flip-flops). La arquitectura de las FPGAs, por otro lado, se basa en un gran número de pequeños bloques utilizados para reproducir sencillas operaciones lógicas, que cuentan a su vez con biestables síncronos. La enorme libertad disponible en la interconexión de dichos bloques confiere a las FPGAs una gran flexibilidad.

Otra diferencia importante entre FPGAs y CPLDs es que en la mayoría de las FPGAs se pueden encontrar funciones de alto nivel (como sumadores y multiplicadores) embebidas en la propia matriz de interconexiones, así como bloques de memoria.


FPGA vs ASICs

Las FPGAs se utilizan en aplicaciones similares a los ASICs pero tienen una serie de inconvenientes así como de ventajas respecto a estos últimos:

Inconvenientes:
  • Son más lentas.
  • Consumen mayor potencia.
  • No pueden realizar sistemas excesivamente complejos.
Ventajas:
  • Son reprogramables.
  • Los costes de desarrollo y adquisición son mucho menores.
  • El tiempo de diseño y manufacturación es menor.
Los Cinco Beneficios Principales de la Tecnología FPGA
  1. Rendimiento – Aprovechando del paralelismo del hardware, los FPGAs 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 FPGAs pueden entregar significativamente más potencia de procesamiento por dólar que una solución de DSP, en algunas aplicaciones2. 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.
  2. 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.
  3. 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 ASICs 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.
  4. 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 niveldriver 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 FPGAs, que no necesitan sistemas operativos, minimizan los retos de fiabilidad con ejecución paralela y hardware preciso dedicado a cada tarea.
  5. 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 cambiar con el tiempo, y las interfaces basadas en ASICs 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.
Programación

En la FPGA no se realiza programación tal cual como se realiza en otros dispositivos como DSP, CPLD o microcontroladores. La FPGA tiene celdas que se configuran con una función específica ya sea como memoria (FLIP-FLOP tipo D), como multiplexor o con una función lógica tipo AND, OR, XOR. La labor del "programador" es describir el hardware que tendrá la FPGA. Por consiguiente, la tarea del "programador" es definir la función lógica que realizará cada uno de los CLB, seleccionar el modo de trabajo de cada IOB e interconectarlos.

El diseñador cuenta con la ayuda de entornos de desarrollo especializados en el diseño de sistemas a implementarse en una FPGA. Un diseño puede ser capturado ya sea como esquemático, o haciendo uso de un lenguaje de programación especial. Estos lenguajes de programación especiales son conocidos como HDL o Hardware Description Language (lenguajes de descripción de hardware). Los HDLs más utilizados son:
  • VHDL
  • Verilog
  • ABEL
En un intento de reducir la complejidad y el tiempo de desarrollo en fases de prototipaje rápido, y para validar un diseño en HDL, existen varias propuestas y niveles de abstracción del diseño. Los niveles de abstracción superior son los funcionales y los niveles de abstracción inferior son los de diseño al nivel de componentes hardware básicos. Entre otras, National Instruments LabVIEW FPGA propone un acercamiento de programación gráfica de alto nivel.

Caracteristicas

Una jerarquía de interconexiones programables permite a los bloques lógicos de un FPGA ser interconectados según la necesidad del diseñador del sistema, algo parecido a un breadboard (es una placa de uso genérico reutilizable o semi permanente) programable. Estos bloques lógicos e interconexiones pueden ser programados después del proceso de manufactura por el usuario/diseñador, así que el FPGA puede desempeñar cualquier función lógica necesaria.

Una tendencia reciente ha sido combinar los bloques lógicos e interconexiones de los FPGA con microprocesadores y periféricos relacionados para formar un «Sistema programable en un chip». Ejemplo de tales tecnologías híbridas pueden ser encontradas en los dispositivos Virtex-II PRO y Virtex-4 de Xilinx, los cuales incluyen uno o más procesadores PowerPC embebidos junto con la lógica del FPGA. El FPSLIC de Atmel es otro dispositivo similar, el cual usa un procesador AVR en combinación con la arquitectura lógica programable de Atmel. Otra alternativa es hacer uso de núcleos de procesadores implementados haciendo uso de la lógica del FPGA. Esos núcleos incluyen los procesadores MicroBlaze y PicoBlaze de Xlinx, Nios y Nios II de Altera, y los procesadores de código abierto LatticeMicro32 y LatticeMicro8.

Muchos FPGA modernos soportan la reconfiguración parcial del sistema, permitiendo que una parte del diseño sea reprogramada, mientras las demás partes siguen funcionando. Este es el principio de la idea de la computación reconfigurables, o los sistemas reconfigurables.

Tecnología de la memoria de la programación 

Las FPGAs también se pueden diferenciar por utilizar diferentes tecnologías de memoria:
  • Volátiles: Basadas en RAM. Su programación se pierde al quitar la alimentación. Requieren una memoria externa no volátil para configurarlas al arrancar (antes o durante el reset).
  • No Volátiles: Basadas en ROM. Hay de dos tipos, las reprogramables y las no reprogramables.
  • Reprogramables: Basadas en EPROM o flash. Éstas se pueden borrar y volver a reprogramar aunque con un límite de unos 10.000 ciclos.
  • No Reprogramables: Basadas en fusibles o antifusibles. Solo se pueden programar una vez, lo que las hace poco recomendables para trabajos en laboratorios.
Ejemplo de tarjeta de desarrollo que incorpora una FPGA:
FPGA.JPG

Aplicaciones

Cualquier circuito de aplicación específica puede ser implementado en un FPGA, siempre y cuando esta disponga de los recursos necesarios. Las aplicaciones donde más comúnmente se utilizan los FPGA incluyen a los DSP (procesamiento digital de señales), radio definido por software, sistemas aeroespaciales y de defensa, prototipos de ASICs, sistemas de imágenes para medicina, sistemas de visión para computadoras, reconocimiento de voz, bioinformática, emulación de hardware de computadora, entre otras. Cabe notar que su uso en otras áreas es cada vez mayor, sobre todo en aquellas aplicaciones que requieren un alto grado de paralelismo.

Existe código fuente disponible (bajo licencia GNU GPL) de sistemas como microprocesadores, microcontroladores, filtros, módulos de comunicaciones y memorias, entre otros. Estos códigos se llaman cores.

Las FPGA Libres impulsan "el desarrollo con dispositivos FPGA utilizando herramientas de software libre u open source". Además, fomenta "el intercambio y desarrollo de cores IP con licencias que posean el mismo espíritu que las del software libre". (En otra ocasión hablaremos de hardware libre, como Arduino.)

Los FGPA comerciales tienen unos 25 años entre nosotros. Cada vez poseen más áreas de aplicación (e.g., radioastronomía, emulación de hardware, bioinformática, criptografía). Las universidades están extendiendo su uso como excelente herramienta didáctica y de prototipado.

Quizá en el futuro contemos con herramientas de aún más alto nivel (dicho en términos de abstracción, no de calidad) para la configuración de FPGA. De ser así, ya no solo ingenieros o científicos sino también artistas y creativos en general producirán resultados aún más sorprendentes, inimaginables y poderosos que los que voy a presentarte a continuación.
 
EJEMPLOS:
Tetris multijugador: Tetris en versión para dos jugadores. Cada participante juega en su propia pantalla usando un teclado PS/2, al tiempo que sus movimientos pueden influenciar los del otro. ¿Cómo? Si un jugador elimina líneas, una cantidad predefinida de ellas aumenta en las del oponente.


Atari 2600: Un solo FPGA fue suficiente para reconstruir el viejo Atari 2600. Permite audio, vídeo y hasta un control remoto SEGA Genesis. Retromaster, el creador, publicó el código bajo la licencia GPL. No es la primera versión de un Atari 2600 sobre una FPGA.


Pacman: 

Fabricantes

A principios del 2007, el mercado de las FPGA se ha colocado en un estado en el que hay dos grandes productores de FPGA de propósito general y un conjunto de otros competidores que ofrecen dispositivos con características específicas.
  • Xilinx es uno de los grandes líderes en la frabricación de FPGAs.
  • Altera es el otro gran gigante. Anunció un acuerdo con Intel en 2015 para desarrollar una plataforma de supercomputación con CPUs con FPGAs integradas.
  • Lattice Semiconductor sacó al mercado FPGAs con tecnología de 90nm. Es el líder en tecnología no volátil como FPGAs basadas en tecnología Flash y con productos de 90nm y 130nm. En 2014, Lattice semiconductor comenzó a ofrecer dispositivos programables basados en RAM combinados con memoria no volátil no reprogramable.
  • Actel (actualmente Microsemi) tiene FPGAs basadas en tecnología Flash reprogramable.
  • QuickLogic dispone de productos basados en antifusibles, programables una sola vez.
  • Atmel es uno de los fabricantes que produce dispositivos reconfigurables. Se enfocó en microcontroladores AVR con FPGA juntos en un mismo encapsulado.
  • Achronix Semiconductor desarrollan FPGAs muy rápidas.
  • MathStar Inc. ofrece FPGAs que ellos denominan FPOA (Field Programmable Object Arrays por sus siglas en inglés).
  • Tabula anunció en marzo de 2010 una nueva tecnología FPGA que utiliza la lógica de tiempo multiplexado y la interconexión de mayor potencial de ahorro para aplicaciones de alta densidad.
Webgrafía
  • https://es.wikipedia.org/wiki/Field_Programmable_Gate_Array
  • https://hipertextual.com/2010/09/fpga-y-el-sorprendente-poder-del-hardware-reconfigurable
  • http://www.ni.com/white-paper/6984/es/
  • https://www.youtube.com/watch?v=GV_nOtHPQ9Q&feature=youtu.be&noredirect=1


No hay comentarios:

Publicar un comentario