Dispositivos lógicos programables (PLDs) ¾ SPLDs (Dispositivos lógicos programables simples) – Estructuras lógicas basadas en planos AND-OR ¾ CPLDs (Dispositivos lógicos programables complejos) – Combinan varios SPLDs interconectados mediante una matriz de conmutación fija o programable ¾ FPGAs (Field Programmable Gate Arrays) – Incluyen bloques lógicos combinacionales, elementos de memoria y una red de interconexión programable Dispositivos lógicos programables simples (SPLDs) I5 I4 I3 I2 I1 I0 Plano OR programable Plano AND programable I2 I1 I0 Plano OR programable Plano AND fijo O 3O 2O 1O 0 PLA I3 I5 I4 I3 I2 I1 I0 Plano OR fijo Plano AND programable O3O2O1O0 PROM Fuente: Digital Integrated Circuits: A design perspective , Jan M. Rabaey O 3O 2O 1O 0 PAL PLDs complejos (CPLDs) Proporcionan LB LB LB LB SM LB LB LB LB IO Blocks IO Blocks IO Blocks IO Blocks z Número elevado de puertas lógicas z Facilidad de interconexión z Temporización simple y determinista z Herramientas de diseño simples z Ciclos de desarrollo cortos z Costes de implementación bajos Field Programmable Gate Arrays (FPGAs) (IOBs) Bloques de E/S z CLB CLB CLB CLB CLB CLB CLB CLB CLB CLB CLB CLB CLB CLB CLB CLB IO Blocks IO Blocks IO Blocks Interfaz con los terminales del dispositivo (CLBs) Bloques lógicos configurables z Elementos funcionales para implementar la lógica del usuario Red de interconexión IO Blocks z Caminos para interconectar las entradas y salidas de CLBs e IOBs Field Programmable Gate Arrays (FPGAs) CLB CLB CLB CLB CLB CLB CLB CLB CLB CLB CLB CLB CLB CLB CLB CLB IO Blocks IO Blocks IO Blocks IO Blocks Xilinx XC4000ex Fuente: Digital Integrated Circuits: A design perspective , Jan M. Rabaey Tipos de FPGAs ¾ Arquitectura – Gate array (filas) – Matriz simétrica – Mar de puertas ¾ Interconexión – Canales de routing – Red de interconexión ¾ Tipo de bloque lógico (granularidad) – Puertas lógicas – Multiplexores – Tabla de búsqueda (LUT) ¾ Técnica de programación – Antifusibles – Memoria no volátil (EPROM, EEPROM) – Memoria RAM FPGAs comerciales Compañía Arquitectura Bloques lógicos Tecnología de programación Actel Gate array Multiplexores fusibles AMD PLDs jerárquicos PLDs EEPROM Altera PLDs jerárquicos PLDs EPROM Plessey Mar de puertas Puertas NAND RAM Xilinx Matriz simétrica Tabla look-up RAM FPGAs de Xilinx Diseño digital Procesadores empotrados Arquitectura computadores 3 3 3 3 3 3 3 3 Familia Características XC4000 1.6K – 85K puertas 3 Spartan 5K – 40K puertas 3 Spartan-II 15K – 300K puertas BRAM: 16K – 64K Virtex 58K – 1.2M puertas BRAM: 32K – 132K Virtex-II 40K – 8M puertas BRAM: 72K – 3M 4 – 168 multiplicadores Virtex-II Pro Virtex-II + 0 – 4 PPC 4 – 24 Rocket I/O transc. 12 – 556 multiplicadores 3 DSP SOC 3 3 3 XC4000 & Spartan z Incorpora: - memoria RAM distribuida - lógica de acarreo - buses 3-state internos z Velocidad de operación: 80 MHz z IEEE 1149.1 (Boundary scan) XC4000E: 5 V. XC4000XL: 3.3 V. (0.35 µm) XC4000XE: 2.5 V. (0.25 µm) Spartan: 5 V. Spartan-XL: 3.3 V. XC4000 & Spartan (CLBs) LUTs multiplexores FFs XC4000 & Spartan (IOBs) Bidireccional TTL LVTTL PCI5V PCI3V LVCMOS3V Salida Entrada XC4000 & Spartan (Red de interconexión) Routing global Routing de CLBs Routing de IOBs Programmable switch matrix XC4000 & Spartan (Red de interconexión) Spartan/XL XC4000 & Spartan (RAM distribuida) Modo 16x1 16x2 32x1 Single-port 3 3 3 Dual-port 3 - - Dual-port Single-port Spartan-II & Virtex z Incorpora: - bloques de memoria RAM - 4 DLL (Delay Locked Loop) - lógica de acarreo - soporte para multiplicadores z Velocidad de operación: 200 MHz z 16/19 interfaces estándar Spartan-II: 2.5 V. - 0.25 µm - (200K) Spartan-IIE: 1.8 V. - 0.22 µm - (300K) Virtex: 2.5 V. - 0.22 µm - (1M) Spartan-II & Virtex (CLBs) Slice z Cada CLB contiene 2 “slices” z Cada slice contiene 2 celdas lógicas (LC) z Cada LC contiene: – LUT de 4 entradas Cualquier función de 4 entradas Memoria RAM de 16x1 bit Registro de desplazamiento de 16 bits – Elemento de memoria – Lógica de control y acarreo LC Spartan-II & Virtex (CLBs) z MUXF5: Combina 2 LUT para formar: – Cualquier función de 5 entradas – Un multiplexor de 4:1 CLB Slice MUXF6 LUT – Determinadas funciones de 9 entradas LUT MUXF5 Slice z MUXF6: Combina 2 slices para formar: – Cualquier función de 6 entradas – Un multiplexor de 8:1 – Determinadas funciones de 19 entradas LUT LUT MUXF5 Spartan-II & Virtex (IOBs) Chip to Chip LVTTL, LVCMOS Chip to Memory SSTL2-I, SSTL2-II, SSTL3-I, SSTL3-II, HSTL-I, HSTL-III, HSTL-IV, CTT Chip to Backplane PCI33-5V, PCI33-3.3V, GTL, GTL+, AGP IOB I/O Banks Spartan-II & Virtex (Bloques de RAM) z Bloques de memoria RAM síncrona de doble puerto de 4096-bits z Cada bloque tiene una altura de 4 CLBs Spartan-II & Virtex (Señales de reloj) z 4 pads específicos (GCLKPAD) z 4 buffers globales (GCLKBUF) z Red de distribución de reloj z 4 Delay-Locked Loops (CLKDDL) Spartan-II & Virtex (Señales de reloj) z 4 pads específicos (GCLKPAD) z 4 buffers globales (GCLKBUF) z Red de distribución de reloj z 4 Delay-Locked Loops (CLKDDL) DLL (funciones) z Doblar la frecuencia de reloj z Dividir por 1.5, 2, 2.5, 3, 4, 5, 8 ó 16 z Generar relojes de 4 fases z Eliminar retrasos en la distribución de reloj (deskew) Virtex-II & Virtex-II Pro Virtex-II: 1.5/3.3 V - 0.15 µm - 8 ML z Incorpora: - RAM: bloques (18K) y distribuida (128x1) - Multiplicadores de 18x18 bits - Digital Clock Manager (DCM) - Active Interconnect Technology - Salida en modo diferencial - Impedancia de I/O programable z Velocidad de operación: 420 MHz z Velocidad I/O: 840 Mbps Virtex-II Pro: 1.5/2.5 V - 0.13 µm - 9 ML Cu z Añade: - RocketIO transceiver (3.125 Gbps) - Power PC RISC (32 bit / 300 MHz) 2, 4 ó 6 columnas de BRAMs y multiplicadores Virtex-II & Virtex-II Pro (CLBs) z COUT COUT – 2 LUTs de 4 entradas TBUF TBUF – 2 Elementos de memoria Slice S3 X1Y1 Switch Matrix Cada CLB contiene 4 “slices”: – Lógica de control y acarreo Slice S2 X1Y0 SHIFT Slice S1 X0Y1 Slice S0 X0Y0 CIN Fast Connects CIN Virtex-II & Virtex-II Pro (CLBs) F6 Slice S3 F5 F8 MUXF8 combina las salidas MUXF7 de 2 CLBs F5 MUXF7 combina los 2 MUXF6 del CLB F7 Slice S2 F5 F6 Slice S0 MUXF6 combina las salidas de 2 slices F5 Slice S1 CLB MUXF5 combina los 2 LUTs de un slice Virtex-II & Virtex-II Pro (IOBs) z Cada IOB puede ser usado como entrada y/o salida IOB PAD4 z Dos IOBs pueden configurarse como un par diferencial IOB PAD3 z Estándares para single-ended I/O: - LVTTL, LVCMOS - PCI-X, CardBus, GTL, GTLP, AGP-2X - HSTL, SSTL Switch Matrix IOB PAD2 z Estándares para señales diferenciales: - LVDS, BLVDS, ULVDS,LDT, LVPCEL IOB PAD1 z Impedancia salida programable DCI (Digitally controlled impedance) Virtex-II & Virtex-II Pro (Memoria) Up to 400 Mbps/pin DDR & QDR 128x1 Distributed RAM bytes 18 kb Blocks Block RAM kilobytes External RAM/CAM megabytes