Introducción a las FPGA AUTOR: Cavallero, Rodolfo Antonio. [email protected], Gutiérrez, Francisco Guillermo. [email protected]. INTRODUCCION: En el presente se realiza una introducción a los dispositivos FPGA, tratando de condensar la amplia información disponible en unos pocos párrafos a modo de introducción y solo pretende servir como punto de partida para estudios posteriores. La FPGA representa uno de los ultimo avances en tecnología de dispositivos lógicos programables, es importante señalar que una FPGA realmente se re configura con un programa, a diferencia de lo que normalmente se conoce como sistema programado (microcontrolador, microprocesador etc) en donde un hardware fijo es capaz de interpretar y ejecutar un programa especificado como un conjunto de instrucciones por el programador, en las FPGA lo que se tiene es un hardware que se configura realizando conexiones físicas que son especificadas por un programa o cadena de configuración. Es importante notar que al realizar un diseño con FPGA se presentan los mismos inconvenientes que al realizar un sistema con componentes discretos, es decir toman relevancia los fenómenos de retardo de propagación y los relacionados con las señales de clock. ( jitter etc). Los primeros dispositivos lógicos programables eran las PAL o los PLD, estos presentaban compuertas (AND / OR ) fijas que podían ser programadas para responder a determinadas funciones de transferencias. Las FPGA a diferencia de los PLD y PAL, es que su estructura no esta compuesta por compuertas AND/OR , en su lugar contienen blocks lógicos para implementar las funciones requeridas. La estructura general de una FPGA se muestra en la Fig. 1 I/O block I/ O I/ O I/O block Fig. 1 Bloque lógico Llaves de interconexión Para poder hacer un uso eficiente de los recursos disponibles en estos dispositivos, es decir las cientos de miles compuertas disponibles es necesario utilizar encapsulados que permitan una gran cantidad de pines de salida.(Ver sección encapsulados) Cada bloque circuital en una FPGA, típicamente tiene un pequeño numero de entradas y salidas (E/S). 1 Los componentes disponibles de cada bloque varia de fabricante a fabricante. El block mas comúnmente utilizado es un lookup table (LUT), el cual contiene celdas de almacenamiento, las que se utilizan para implementar simples funciones lógicas. Cada celda es capaz de mantener un simple valor lógico, ya sea un 0 o un 1. Este valor almacenado (0 o 1) es obtenido luego a la salida de la celda de almacenamiento. En la Fig. 2 se observa la estructura de una LUT. Celdas de almacenamiento MUX MUX A f B x f 0 0 1 1 0 x f 0 A 1 B f 1 x X Fig. 2 Si se desea implementar una función booleana tal como la dada en la tabla de la Fig. 3a , x1 x1 0 0 1 1 x2 0 1 0 1 f 1 0 0 1 f1 0/1 0/1 _ _ f f = x1x2 + x1x2 f2 0/1 0/1 Fig. 3a x2 Fig. 3b entonces debemos programar las celdas de la LUT de la Fig. 3b, tal como se observa en la Fig. 3c x1 1 f1 0 f 0 f2 1 x2 Fig. 3c 2 En la Fig. 4 observamos una LUT de 3 entradas. En los chips comerciales de FPGA, las LUTs usualmente tienen entre 4 y 5 entradas, lo cual requiere entre 16 y 32 celdas de almacenamiento x1 x2 0/1 0/1 0/1 0/1 f 0/1 0/1 0/1 0/1 x3 Fig. 4. LUT de 3 entradas Las FPGAs, pueden tener circuitos extras, además de las LUTs , en cada bloque lógico. En la Fig 5 mostramos como un Flip Flop puede incluirse en un bloque lógico de una FPGA out D In1 In2 In3 Q LUT Select Ck Flip-Flop Fig. 5 – Inclusión de un FF en un bloque lógico Para la programación de las celdas LUT, así como también la asignación de las entradas y salida, existen varios metodos, los dos mas representativos son la tecnología Antifuse propuesta por la empresa ACTEL, y la tecnología SRAM utilizada por la mayoría de las otras empresas (XILINX, ALTERA, ATMEL etc).(Ver Configuración de la FPGA). 3 En cuanto a la tecnología antifuse es muy utilizada en aplicaciones espaciales, ya que una vez programada la FPGA la misma no puede ser preprogramada, además de presentar un grado alto de confiabilidad. Aquí es importante notar que esto plantea otra forma de trabajo para el desarrollos de sistemas basados en FPGA, muy diferente al normalmente adoptado en sistemas re programables. Dada la imposibilidad de reprogramar las configuraciones de las FPGA así como también su funcionalidad deben ser exhaustivamente comprobadas, debido a esto se ha invertido mucho tiempo y esfuerzo en el desarrollo de programas de simulación que permiten determinar con mucha exactitud el comportamiento del sistema. Recordemos que aquí se enfrenta el problema de los retardos asociados con las implementaciones clásicas de circuitos digitales de alta velocidad. En las FPGA basadas en SRAM esta restricción no es tan valida, pero la exactitud de los programas de simulación disponibles impone por optimización el uso de los simuladores. Además hay que tener en cuenta que cuando los sistemas crecen en complejidad se hace muy difícil la depuración de los mismos ya que no se cuenta con acceso directo a los distintos puntos de interés. En resumen la utilización correcta de los programas de simulación disponibles hacen acortar significativamente las horas de Debug necesariaso. En la Fig. 6 mostramos una FPGA que ha sido programada para realizar la siguiente función lógica _ f = x1.x2 + x2.x3 x3 f x1 x1 x2 f1 0 0 0 x2 0 1 0 f2 f1 0 1 1 f Fig.6 Sección de una FPGA programada Observemos detenidamente la Fig. 6, en ella podemos apreciar unos rectángulos (LUT) que contienen dos entradas (xi) y una salida (fi) y dentro de ellos la programación realizada. Unos rectángulos mas pequeños nos indican los terminales de entrada ( x1, x2, x3 ) y un terminal de salida (f), y están indicados con trazo continuo. Los rectángulos con trazo de línea de puntos no se utilizan. Por 4 otra parte vemos que existen interconexiones marcadas con X indicando con ello que no están realizadas. Las conexiones marcadas con son conexiones hechas. Observando atentamente podemos apreciar que: _ f1 = x1.x2 , f 2 = x2.x3 : con lo que _ f = x1.x2 + x2.x3 Encapsulados (Footprint) El encapsulado es la presentación física final de dispositivo, es el compartimiento que aloja la oblea de silicio que es el CI propiamente dicho. En el caso de los dispositivos FPGA normalmente se presenta la necesidad de disponer de un gran numero de entradas salidas, por lo que los encapsulados DIP no son una opción, además del problema del numero de pines de entrada salida se presenta el problema de las altas velocidades que pueden manejar las FPGA, performance que se vería seriamente afectada en caso de utilizar un encapsulado cuyos pines de conexión presentes altas inductancias parásitas. La evolución de las FPGA las lleva a encapsulados tipo PGA (pin grid array) o BGA (ball grid array). No es un detalle menor el considerar el tipo de encapsulado disponible al momento de seleccionar el dispositivo lógico programable a utilizar, ya que al aumentar el numero de pines el soldado del dispositivo al impreso se vuelve un problema critico. En el todos los casos el soldado se realiza con instrumental específicamente diseñado con tal fin, en el caso del BGA el problema mas fuerte radica en la verificación de la correcta soldadura del circuito integrado, ya que los pines se encuentran en la parte inferior del dispositivo y no es posible verlos directamente, para la verificación se utilizan maquinas de rayos X y otras técnicas complejas, y relativamente costosas. Demás esta decir que el uso de estos encapsulados prácticamente obligan a la utilización de circuitos impresos multicapas, otro inconveniente tecnológico a considerar. Se pueden obtener especificaciones de los distintos encapsulados disponibles directamente de la pagina de los fabricantes, o de las hojas de datos de los dispositivos. Configuración de la FPGA La forma de configurar la FPGA varia dependiendo de la tecnología adoptada, en caso de las FPGA basadas en tecnología atifuse las mismas son programadas una sola vez y haciendo uso de un programador dedicado. En el caso de la tecnología SRAM las FPGA leen su configuración interna de una memoria no volátil que es la que mantiene el programa. La lectura se realiza en forma serie, una vez finalizada la transferencia la FPGA se configura y comienza a funcionar. Esta carga se realiza en los POWER-UP o por un reset del dispositivo. En este campo para el uso de esta tecnología en la actividad espacial o militar se han incorporado técnicas de recarga del programa sin afectar el funcionamiento de la FPGA. Todo esto esa apuntado a conseguir que las FPGA basadas en tecnología SRAM sean utilizadas en lugares críticos, ya que el solo hecho de que su configuración dependa de un bit volátil genera cierta desconfianza en el medio. La memoria de configuración normalmente esta fabricada por el mismo fabricante de la FPGA, esta puede ser reemplazada por otro dispositivo mientras se respeten los protocolos de transferencia. Otro método de transferencia de configuración a la FPGA es a través del puerto JTAG. BIBLIOGRAFÍA Titulo: Fundamentals of Digital Logic with VHDL Design Autores: Stephen Brown, Zvonko Vranesic Ed. Mc Graw Hill www.xilinx.com www.altera.com www.actel.com 5