1 Tema II Circuitos Integrados Programables; CPLDs y FPGAs Roberto Gutiérrez Mazón The Design Warrior’s Guide to FPGAs Devices, Tools, and Flows. ISBN 0750676043 Copyright © 2004 Mentor Graphics Corp. (www.mentor.com) 2 3.a Full Custom y Semi-Custom. 3.b Mask-Programmable Gate Arrays (MPGA). 3.c PLDs i. SPLDs (PLD simples) ii. CPLDs (PLD complejos) iii. FPGAs 3 Familias Lógicas ASIC PLDs SPLDs (PALs) CPLDs Arrays Puertas FPGAs Lógica Standard Semi Custom Standard Cell Full Custom 4 ¨ Nos surge una pregunta ¿Qué plataforma es la mejor? ¨ Y la respuesta Depende de los requerimientos de la aplicación 5 ¨ Consideraciones a tener en cuenta para la elección de una familia u otra: Ø Retardo Propagación. Ø Cantidad de Lógica empleada. Ø Volatibilidad. Ø Tiempo de Diseño Ø Tiempo empleado en modificaciones. Ø Posibilidades de I/O. Full Custom y Semi-Custom 6 ¨ ¨ ¨ ICs construidos completamente por el diseñador: transistores, conexiones, etc. Emplea máscaras personales para definir cada una de las capas en el proceso de fabricación. El usuario controla la densidad del chip con lo que se puede conseguir una alta utilización del mismo. Ventajas: ¤ ¤ ¨ Inconvenientes: ¤ ¤ ¤ ¨ Máxima flexibilidad en el diseño. Alto rendimiento: Es posible optimizar las partes criticas del diseño consiguiendo un diseño más pequeño y más rápido que el obtenido con herramientas CAD. Diseño complejo y altamente especializado (mucho cuidado con los errores). Tiempo de desarrollo muy alto. Coste de desarrollo alto. Esta alternativa es interesante para producciones de elevado volumen, donde se consiguen amortizar los costes de desarrollo y test. Full Custom y Semi-Custom 7 Materiales de silicato forman el 90% de la corteza terrestre. Sílice (Dióxido de Silicio), se extrae sobre todo para su utilización en el hormigón. Refinado al 95% de pureza es utilizado para la fabricación del aluminio. El silicio para uso electrónico requiere el 99.9999999% de pureza. 8 Full Custom y Semi-Custom 9 Full Custom y Semi-Custom 10 Full Custom y Semi-Custom (MEMS) 11 Caja Cambios Full Custom y Semi-Custom 12 ¨ Cuando se utiliza una metodología de diseño de tipo Semicustom, los diseños se realizan a partir de un conjunto de módulos, Standard Cells, ya diseñados y caracterizados, que se utilizaran como elementos mínimos del diseño. Memoria SRAM 0.25 um Intel Itanium 2 (Montezito) Mask-Programmable Gate Arrays (MPGA): Matrices de puertas y mar de puertas 13 v ¨ ¨ ¨ Matrices de puertas Utiliza patrones predefinidos de transistores y contactos de transistores. La plantilla con los transistores puede fabricarse antes de tener el diseño. El circuito se personaliza con el proceso de metalización. Los transistores y sus contactos se agrupan en células y estas células se ordenan en filas separadas por canales fijos. Características: ¤ ¤ ¤ ¤ Mas fácil que el Full Custom. Tiempos de desarrollo mas cortos. Costes de Desarrollo mas bajos. Solo es necesaria una mascara de rutado. Mask-Programmable Gate Arrays (MPGA): Matrices de puertas y mar de puertas 14 ¨ ¨ ¨ Una clase especial de las matrices de puertas son los Sea-of-Gates. Estos, al contrario que las matrices de puertas no tienen contactos prefabricados, por ello no son necesarios los canales y los transistores pueden llenar todo el chip. El rutado se realiza sobre los transistores no usados. El diseño de Sea-of-Gates solo necesita máscaras para contactos y rutado. Inconvenientes: ¤ Utilizan más silicio y tienen peor velocidad que los diseños Full Custom y Standard Cell. Mask-Programmable Gate Arrays (MPGA): Matrices de puertas y mar de puertas 15 Array de Puertas Array de Puertas (conectado) 2.4 Mask-Programmable Gate Arrays (MPGA): Matrices de puertas y mar de puertas 16 Array de Puertas Rutado Sea of Gate Dispositivos Logicos Programables (PLDs). 17 ¨ ¨ ¨ Son circuitos integrados programables por el usuario y empleados para implementar hardware digital. Igual que los Arrays de Puertas son elementos prefabricados. Las funciones lógicas se implementan programando eléctricamente las interconexiones y personalizando las células básicas. Ventajas: ¤ ¤ ¤ ¤ ¨ Inconvenientes: ¤ ¤ ¤ ¨ Rápida programación y borrado (excepto OTP). Tiempo de desarrollo más corto. Facilidad para realizar cambios. Costes de desarrollo mas bajos. Limita la flexibilidad del diseño. No aprovecha área de silicio. Más lento. El sector de los CPLDs y FPGAs representa uno de los segmentos con crecimiento más rápido en la industria de semiconductores. PLD Simples 18 ¨ Las PLDs sencillas ó SPLDs : ¤ ¤ ¤ ¤ ¨ Tienen una estructuras lógicas de planos AND/OR. Se dispone de un numero de macrocélulas inferior o igual a 16. La mayoría son PAL, también hay PLA y PLE. Son dispositivos de baja densidad. Los diseñadores tienden a dejar los SPLDs que venían usando para trabajar con CPLDs que aportan más velocidad, más densidad, son más fáciles de usar y cuentan con mejores herramientas CAD de diseño electrónico. PLDs SPLDs PROMs PLAs CPLDs PALs GALs etc. PLD Simples 19 Fuses Logic 1 Logic 1 Fat Fat a Pull-up resistors a Pull-up resistors Faf NOT Fbt b & NOT y = 0 (N/A) b AND AND Fbf Fbf NOT Dispositivo sin programar & NOT Dispositivo programado y = a & !b PLD Simples 20 PLA: Programmable Logic Array ¨ ¨ ¨ ¨ ¨ Estos dispositivos fueron los primeros chips desarrollados específicamente para implementar circuitos lógicos (Philips 1975). Su estructura dispone de un plano AND programable seguido de un plano OR también programable. Esta estructura es ideal para implementar funciones lógicas como sumas de productos. El hecho de tener ambas matrices programables hace que el dispositivo tenga mayor tamaño y menos velocidad. Existen variantes de la estructura PLA: ¤ ¤ ¤ ¤ Sólo plano AND u OR Plano AND con realimentación Plano AND+OR con realimentación Con registros o registros programables. PLD Simples 21 c Predefined link Programmable link & & & N/A N/A b c Predefined link Programmable link & & & !b & !c !c Predefined AND array Predefined AND array w x y w = (a & c) | (!b & !c) x = (a & b & c) | (!b & !c) y = (a & b & c) PLA sin programar PLA programada l c a & c l a !a b !b a & b & c l l l l a !a b !b c !c N/A a w x y Programmable OR array b Programmable OR array a PLD Simples 22 PAL: Programmable Array Logic ¨ ¨ a b c Predefined link Programmable link & & & & & & a !a b !b c !c l l l Son los dispositivos SPLDs mas extendidos y variados del mercado. Los primeros dispositivos PAL fueron fabricados por MMI (actual AMD). Solo el plano AND es programable, por lo que son circuitos con mayor velocidad de operación a menor coste. Hay versiones OTP (Programables una vez) y RP (Reprogramables EEPROM). Se dispone de series de 20,24 y 28 pines, con versiones combinacionales y secuénciales. Predefined OR array ¨ Programmable AND array w x y PLD Simples 23 PAL Genericas o universales ¨ Son las PAL con registros mas flexibles que las vistas anteriormente puesto que disponen de una circutería especial conocida con el nombre de Macrocélula. PLD Simples 24 PAL 22VP10 PLD Simples 25 ¨ ¨ ¨ GAL: Generic Array Logic (Lattice, 1984) Son dispositivos borrables eléctricamente diseñados para sustituir a la mayoría de las PALs de la serie general manteniendo la compatibilidad pin a pin. Todos los pines de I/O tienen una macrocélula. Los fusibles de las macrocélulas permiten configurar la GAL en tres modos distintos: ¤ ¤ ¤ ¨ ¨ En modo registro puede emular a la PAL16R8, PAL 16R6, etc. En modo complejo puede sustituir a la PAL16L8, PAL16H8, etc. En modo simple puede funcionar como PAL10L8, PAL16L2, PAL14H4, etc. Reducción del numero de productos del inventario de una empresa. Normalmente es el compilador el que selecciona el modo de funcionamiento elegido en cada diseño. 25 PLD Simples 26 ¨ ¨ ¨ ¨ ¨ ¨ ¨ Todos los pines son bidireccionales. Versiones RP y OTP dependiendo del encapsulado. Flip flops programables como tipo D, T, JK y RS con control individual de reloj y clear Los FF pueden puentearse y se resetean automáticamente cuando se alimenta el circuito. Bit de seguridad programable. El clear de cada FF puede controlarse independientemente y de forma asíncrona con un producto. Como reloj se puede tomar el reloj global del sistema o una señal proveniente de la matriz AND. Familia EPLD de Altera 26 PLD Simples - Programación 27 ¨ Lenguajes Programación ¤ PALASM ¤ ABEL ¤ CUPL Unprogrammed device Programmed device Host computer Device programmer Complex PLDs - CPLDs 28 ¨ ¨ ¨ ¨ Un CPLD extiende el concepto de un PLD a un mayor nivel de integración ya que permite implementar sistemas más eficientes porque utiliza menos espacio, mejoran la confiabilidad en el circuito y reducen costos. Un CPLD se forma de múltiples Bloques lógicos, cada uno similar a un SPLD. Los Bloques lógicos se comunican entre sí utilizando una Matriz Programable de Interconexiones lo cual hace más eficiente el uso del silicio y conduce a un mejor desempeño. En los CPLDs el retardo de propagación es predecible debido a la regularidad de su estructura de interconexiones. Podemos encontrar dispositivos basados en EPROM,E2PROM,SRAM o FLASH. Complex PLDs - CPLDs 29 Matriz de interconexiones Programables (PIM) ¨ Permite unir los pines de I/O a las entradas de los Bloques lógicos, o las salidas del Bloque lógico a las entradas de otro Bloque lógico o inclusive a las entradas del mismo bloque. Bloques Lógicos ¨ ¨ ¨ Un bloque lógico es muy similar a un SPLD, cada uno de ellos poseen generalmente una matriz de puertas AND, una matriz de puertas OR y una configuración para la distribución de los productos en las diferentes macroceldas del bloque. El tamaño del bloque lógico es una medida de la capacidad del CPLD, ya que de esto depende el tamaño de la función booleana que pueda ser implementada dentro del bloque. Los bloques lógicos usualmente tienen de cuatro a veinte macroceldas. Complex PLDs - CPLDs 30 Macroceldas ¨ Las macroceldas son similares a las de un SPLD. Estas también están provistas con registros, control de polaridad y buffers para utilizar salidas Triestado. Celdas I/O ¨ ¨ La función de una celda de entrada/ salida es permitir el paso de la señal hacia dentro o hacia el exterior del dispositivo. Cada celda I/O dispone de un registro con estada de habilitación de reloj. Puede ser empleado como registro de entrada o salida. FPGAs - Field Programmable Gate Array 31 ¨ ¨ ¨ ¨ Combina la Arquitectura de los GateArrays con la programabilidad de los PLDs. Están constituidas por tres elementos configurables: Bloques Lógicos (CLBs) que se comunican mediante Recursos de Interconexión entre si y con el exterior a través de los Bloques de I/O (IOBs) Gran parte del área ocupada en el dado contiene los recursos que permiten el rutado programable. Ventajas: ¤ ¤ ¤ Programmable interconnect Alta densidad de puertas. Ciclo de diseño corto. Bajo coste. Programmable logic blocks 31 FPGAs - Field Programmable Gate Array 32 Bloques lógicos Las FPGAs son dispositivos basados en el concepto de Bloques Lógicos Programables, los cuales están compuestos por una LUT de n-entradas, un F.F. , multiplexores y pequeños elementos adicionales. El diseñador configurara el comportamiento de cada Bloque para realizar diferentes funciones. a b c 3-input LUT y mux flip-flop Bloque Lógico q d clock Required function a b c Truth table & | y = (a & b) | !c y Programmed LUT a b c y SRAM cells 0 0 0 0 1 1 1 1 1 0 1 1 1 0 1 1 1 0 1 1 1 0 1 1 0 0 1 1 0 0 1 1 0 1 0 1 0 1 0 1 000 001 010 011 100 101 110 111 8:1 Multiplexer ¨ abc y FPGAs - Field Programmable Gate Array 33 ¨ Criterios de clasificación: ¤ Técnica de Programación, tenemos, FPGAs configurables por: n n n SRAM, las mas extendidas. Se caracterizan por ser Volátiles y Reconfigurables. Antifusible. Son No-Volátiles y NoReprogramables. Flash o EEPROM, de reciente aparición, las ProASIC de Actel y las ispXPGA de Lattice, emplean estas memorias como fuente única o alternativa de configuración, respectivamente. Son No-Volátiles y Reprogramables. FPGAs - Field Programmable Gate Array 34 Feature SRAM Antifuse E2PROM / FLASH Technology node State-of-the-art One or more generations behind One or more generations behind Reprogrammable Yes (in system) No Yes (in-system or offline) Reprogramming speed (inc. erasing) Fast ---- 3x slower than SRAM Volatile (must be programmed on power-up) Yes No No (but can be if required) Requires external configuration file Yes No No Good for prototyping Yes (very good) No Yes (reasonable) Instant-on No Yes Yes IP Security (especially when using bitstream encryption) Very Good Very Good Size of configuration cell Large (six transistors) Very small Medium-small (two transistors) Power consumption Medium Low Medium Rad Hard No Yes Not really Acceptable The Design Warrior’s Guide to FPGAs Devices, Tools, and Flows. ISBN 0750676043 Copyright © 2004 Mentor Graphics Corp. (www.mentor.com) Spartan III 35 Spartan III - Estructura 36 Spartan III – Bloque Lógico 37 Slice 16-bit SRA Bloque Lógico (LC) 16x1 RAM 4-input LUT LUT 16-bit SRA 16x1 RAM MUX REG Bloque Lógico (LC) 4-input LUT LUT MUX REG Spartan III – Bloque Lógico 38 ¨ Bloque Lógico 16-bit SRA 16-bit SRA 16x1 RAM a b c d 16 x 1 RAM 4-input LUT y mux 4-input LUT flip-flop q e clock clock enable set/reset Diagrama Bloque Lógico Simplificado Distintos modos de funcionamiento LUT Spartan III – Bloque Lógico 39 LUT4 configurado para implementar lógica combinacional. LUT4 configurado para implementar un registro de desplazamiento direccionable (SRA). Spartan III - Bloque I/O 40 ¨ Bloque I/O Bloque retardo dinámico Registro DDR Spartan III - Bloque I/O 41 ¨ Standard I/O soportados Spartan III – Bloque DSP48 42 Multiplicador Sumador Acumulador A[n:0] x B[n:0] + Y[(2n - 1):0] MAC Unidad MAC utilizada para DSP Spartan 3A DSP -----------Resto dispositivos únicamente multiplicador Spartan III – Gestión Reloj 43 ¨ Gestión Reloj: ¤ ¤ Se han diseñado arboles de distribución de reloj que nos permiten que el reloj llegue a todos los F.F. de la FPGA en el mismo instante. Se han añadido Bloques de Gestión de Reloj (DCM), el cual nos permite eliminar jitter, síntesis de frecuencias, desplazamientos de fase, correcciones automáticas de skew, etc. Spartan III – Gestión Reloj 44 Clock signal (jitter) Clock Manager etc. clock pad 1.0 x original clk 2.0 x original clk Daughter clock (monitored downstream of the clock manager) fed back to special input .5 x original clk Clock signal from outside world De-skewed daughter clocks used to drive internal clock trees or output pins Special clock pin and pad 1 2 3 90o Phase shifted 4 Main (mother) clock 1 2 3 4 Untreated daughter clock 1 2 0o Phase shifted 3 De-skewed daughter clock 180o Phase shifted 270o Phase shifted Spartan III – Block RAM 45 Modos Configuración BLOCK RAM 45 FPGAs - Programación 46 ¨ ¨ ¨ Proceso por el cual definimos la funcionalidad de la FPGA (SRAM) a partir de un fichero llamado configuration bitstream. Algunos dispositivos permiten la compresión, detección de errores (CRC) y encriptación (AES 256 bits) del archivo de configuración. Además se incluyen numerosas medidas de protección (autentificación, Identificador único (device DNA)). Las FPGAs pueden trabajar en diferentes modos de configuración, dependiendo de las necesidades del diseñador. Además permiten reconfiguraciones parciales, múltiples ficheros de configuración en una única memoria ROM, etc. Configuration data in Configuration data out = I/O pin/pad = SRAM cell Celdas SRAM de configuración. FPGAs - Programación 47 Modos Configuración Spartan 3 Modos Configuración Virtex 5 Secuencias proceso Configuración. FPGAs - Programación 48 ¨ Modo Maestro Serie Modo Serie Daisy-Chain multi-FPGAs. Modo Maestro Serie utilizando Platform FLASH. Modo Ganged Serie multi-FPGAs. FPGAs - Programación 49 ¨ Modo Esclavo Serie FPGAs - Programación 50 ¨ Modo Maestro SPI ¤ ¤ ¤ Modo por el cual podemos utilizar memorias SPI Flash PROM. La FPGA puede tener acceso una vez configurada a la memoria FLASH para leer/ escribir datos. Puede trabajar con distintos fabricantes de memorias FLASH (VS[2:0]). Actualmente solo funciona con memorias de STMicro y Atmel (Impact). Modo Master SPI Acceso Memoria FLASH sistema Embebido FPGA FPGAs - Programación 51 ¨ Modo Maestro SPI interno ¤ Solo únicamente disponible en la familia de dispositivos Spartan 3AN (disponen de hasta 16 Mbits de memoria FLASH interna). FPGAs - Programación 52 ¨ JTAG ¤ ¤ Estándar basado en la especificación IEEE 1149.1 para implementar técnicas de boundary scan para testear IC y PCBs. Dispone de 4 o 5 pines: n n n n n ¤ ¤ TDI: Pin entrada serie para todas las instrucciones y datos. TDO: Pin de salida para todas las instrucciones y datos. TMS: Pin para selección del modo de funcionamiento del controlador JTAG. TCK : Pin entrada de reloj JTAG TRST: Pin Reset (opcional). Podemos encadenar múltiples dispositivos. Nos permite acceder a los nodos internos de la FPGA además de poder testear el dispositivo. Modo JTAG FPGAs - Programación 53 Controlador JTAG Lógica Boundary-Scan incluida en los I/O.