Arreglo de Compuertas Programables en el Campo Field Programmable Gate Array (FPGA) Introducción ASICs: Costo. Tiempo de Desarrollo. PLDs: Muy buena aceptacion. Pero muy chicos. CPLDs: Muy rapidos, pero todavía chicos. FPGAs: Xilinx Inc., 1985. FPGA 2010 C. Sisterna Altera Inc. Actel Corp. Lucent Technology Philips Semiconductors Intel Corp. Motorola Semiconductors QuickLogic Cypress Lattice Semiconductors AMD Vantis Xilinx DSDA 2 Qué es un FPGA? Lógica y conexiones programables Programación en circuito (ISP) Bloques dedicados a: Memoria Control de reloj Operaciones MAC, bloques DSP Procesadores embebidos Comunicación serie de Gigabits/s Otros bloques específicos C. Sisterna DSDA 3 Qué es un FGPA? Hasta 1200 E/S. Hasta 40 estándares de E/S soportados. E/S Diferenciales Hasta 40.000 Flips-Flops y Look-Up-Tables (LUTs) Soft-Coded Procesador, 8051, ARM3 PLL y DLL disponibles (2-12) por dispositivo. Hasta 550MHz. Impedancia de salida programable Muy usados en prototipos de ASICs debido a su alta densidad y su re-programabilidad. Ayudan a solucionar errores de diseño sin modificar el Printed Circuit Board (PCB). C. Sisterna DSDA 4 Estructura General de un FPGA Estructura y componentes de un FPGA de Xilinx C. Sisterna DSDA 5 Estructura General de un FPGA Estructura y componentes de un FPGA de Altera C. Sisterna DSDA 6 Similaridad entre FPGAs C. Sisterna DSDA 7 Vista interna de un FPGA (Spartan 3) C. Sisterna DSDA 8 Familia del Spartan 3E C. Sisterna DSDA 9 Familia del Virtex 5 C. Sisterna DSDA 10 Celda de Configuración del FPGA Elemento básico no-lógico Determina la configuración de cada elemento lógico Determina la configuración de los elementos de ruteo e interconexiones C. Sisterna DSDA 11 Celdas de Configuración del FPGA Tipos de Celdas SRAM Anti-Fuse Flash Flash y SRAM C. Sisterna DSDA 12 Celda de Configuración Tipo SRAM La configuración de los elementos lógicos y los de ruteo e interconexión son almacenados en celdas SRAMs Ventajas: Proceso de fabricación estándar Costos muy bajos Proceso súper-comprobado Alto rendimiento Infinitamente reprogramable Programable en circuito (In System Programable) Rápida y fácil actualización C. Sisterna DSDA 13 Celda de Configuración tipo SRAM Desventajas: Celda volátil Simple glitch en Vcc desconfigura el FPGA Retardos en ruteo largos debido al retardo de la celda SRAM Necesidad de una memoria de configuración externa Tiempo de configuración lento ~500ms Inseguridad debido a la conexión FPGA-Memoria de configuración que puede ser ‘leída’ C. Sisterna DSDA 14 Celda de Configuración Tipo Anti-Fuse La configuración de los elementos lógicos y los de ruteo e interconexión son almacenados en celdas Anti-Fuse (ACTEL) C. Sisterna DSDA 15 Celda de Configuración Tipo Anti-Fuse Ventajas: No es volátil Retardos de conexiones de ruteo son pequeños No sensibles a bombardeo de partículas iónicas Muy usados en sistemas espaciales C. Sisterna DSDA 16 Celda de Configuración Tipo Anti-Fuse Desventajas: Proceso de fabricación específico Costos elevados One-Time-Programmable (OTP) Proceso de verificacion muy largo y riguroso Proceso muy caro No sensibles a bombardeo de partículas iónicas Muy usados en sistemas espaciales C. Sisterna DSDA 17 Celda de Configuración Tipo Flash La configuración de los elementos lógicos y los de ruteo e interconexión son almacenados en celdas Flash C. Sisterna DSDA 18 Celda de Configuración Tipo Flash Ventajas: No es volátil Retardos de conexiones de ruteo son pequeños Sensibilidad baja a bombardeo de partículas iónicas Usados en sistemas espaciales C. Sisterna DSDA 19 Celda de Configuración Tipo Flash Desventajas: FPGA es bastante caro Proceso se esta haciendo mas común últimamente Proceso de reconfiguración bastante largo (~3-5 seg) C. Sisterna DSDA 20 Celda de Configuración Tipo Flash-SRAM Ventajas: Prácticamente ‘no es volátil’ Tiempo de configuración es bastante bajo (~<1ms) Se pueden configurar solo las celdas SRAM Durante el proceso de debug o prototipo No se necesita una memoria de configuración externa Menos espacio en el PCB Sistema no vulnerable – Sistema seguro C. Sisterna DSDA 21 Celda de Configuración Tipo Flash-SRAM Desventajas: FPGA es caro Proceso se esta haciendo mas común últimamente C. Sisterna DSDA 22 Celda de Configuración Tipo Flash-SRAM Las celdas Flash se usan para guardar los datos de configuración del FPGA Las celdas SRAM para la configuración de los elementos lógicos y los de ruteo e interconexión Cuando de alimenta el FPGA, las celdas SRAM se configuran en forma casi instantanea desde las celdas Flash. C. Sisterna DSDA 23 Comparación Tipos de Celdas SRAM Anti_fuse Flash Tecnología Ultima Una o más generación atrás Una o más generación atrás Velocidad Más lenta Mejor Más lenta Si No No Potencia Varía/Peor Baja Media Baja Densidad Mejor Segunda Mejor Media Tolerancia a la Radiación Peor Mejor Media Config. Externa Si No No Tamaño celda ruteo 1 1/10 1/7 Memoria Externa Si No No Reprogramable Si No Si Instant-On No Si Si Seguridad Encriptado-> Buena, Sino MALA Muy buena Muy Buena Grande (6 Transistores) Muy pequeña Media-Baja (2 transistores) Volátil Tamano Celda Config. C. Sisterna DSDA 24 Transicion FPGA a ASIC Producciones de grandes volumenes, +500.000/Y HardCopy – Altera EasyPath - Xilinx Arquitectura similar al FPGA pero no programable ! Bajo Costo Baja Potencia(*) (*) Igloo C. Sisterna DSDA 25 Arquitectura de los FPGAs Arquitectura en general es similar para FPGAs de diferentes fabricantes. Aunque cada fabricante diga que su arquitectura es la mejor. .. . Para diferenciarse cada fabricante ofrece ….. El mas beneficiado: C. Sisterna El usuario final DSDA 26 Arquitectura de los FPGAs Se verá en detalla la arquitectura de los FPGAs de Xilinx Spartan 2-3-6 Virtex 2-2P-4-5-6 Medio rendimiento Barato Alto rendimiento Caro C. Sisterna DSDA 27 Arquitectura de los FPGAs C. Sisterna DSDA 28 Bloque Lógico Configurable (CLB) CLB C. Sisterna DSDA 29 Bloque Lógico Configurable (CLB) C. Sisterna DSDA 30 Bloque Lógico Configurable - SLICEL Dos LUTs Dos flip-flops Cuatro salidas Dos combinacionales Dos registradas Entradas de control para f-fs Entradas para la LUTs E/S para la cadena de acarreo C. Sisterna DSDA 31 Tabla de Búsqueda–Look-up Table (LUT) A B C D Z Generador de Funciones=LUT 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 1 1 1 0 1 0 0 1 0 1 0 1 1 . . . 1 1 0 0 0 1 1 0 1 0 1 1 1 0 0 1 1 1 1 1 Proceso transparente para el disenador C. Sisterna DSDA 32 Tabla de Búsqueda–Look-up Table (LUT) F5Mux F6Mux FiMux F7Mux F8Mux C. Sisterna DSDA 33 Elementos de Almacenamiento del SLICE C. Sisterna DSDA 34 Lógica de Acarreo (Carry In- Carry Out) C. Sisterna DSDA 35 SLICEL/M y sus Componentes C. Sisterna DSDA 36 Detalle de un SLICEM C. Sisterna DSDA 37 Virtex II – Detalle de Mitad del Slice C. Sisterna DSDA 38 Vista de un CLB real C. Sisterna DSDA 39 Detalle del Bloque E/S (IOB) C. Sisterna DSDA 40 Bloque E/S real C. Sisterna DSDA 41 Estandares de E/S Soportados (Spartan 3) Estandard Descripción Uso Buffer Entrada Buffer Salida LVTTL Low-Voltage TTL Propósito general 3.3V LVTTL Push-pull LVCMOS Low-Voltage CMOS Propósito general 3.3V, 2.5V, 1.8V, 1.5V CMOS Push-pull PCI Peripheral Component Interconnect Bus PCI LVTTL Push-pull GTL Gunning Transceiver Logic Bus alta velocidad, backplane VREF Open Drain GTL+ GTL Plus Intel Pentium Pro VREF Open Drain HSTL High Speed Transceiver Logic Interface con SRAM VREF Push-pull SSTL3 Stub Series Terminated Logic 3.3V SRAM/SDRAM VREF Push-pull SSTL2 Stub Series Terminated Logic 2.5V SRAM/SDRAM VREF Push-pull SSTL18 Stub Series Terminated Logic 1.8V SRAM/SDRAM VREF Push-pull Estandares Diferenciales C. Sisterna LVDS Low-Voltage Differential Signaling High speed interface Diferencial Diferencial BLVDS Bus LVDS Multipoint LVDS Diferencial Diferencial LVPECL Low Voltage Positive ECL High-speed clocks Diferencial Diferencial LDT Lightning Data Transport Bidireccional serie/paralelo (Hyper Transport) Diferencial Diferencial Mini-LVDS Mini-LVDS Flat Panel Displays Diferencial Diferencial LVDSExt Extensión de LVDS Hard Drive interface Diferencial Diferencial RSDS Reduced Swing Differencial Signaling DVI/HDMI Diferencial Diferencial DSDA 42 Bancos de E/S Bancos E/S Virtex II C. Sisterna DSDA 43 Bloques de Memoria (BRAM) C. Sisterna DSDA 44 Opciones de Configuración de Memoria C. Sisterna DSDA 45 Bloques de Memoria (BRAM) Diferentes configuraciones de relación datos/direcciones que se pueden implementar en los BRAMs 1 4 2 0 0 0 4Kx4 4.095 8Kx2 8 0 8.191 16Kx1 2Kx8 2047 16+2 0 16.383 C. Sisterna 1023 DSDA 46 Bloques de Memoria (BRAM) Principales aplicaciones de los BRAM: Almacenamiento de programas para procesadores embebidos en el FPGA Rd/Wr variables durante cálculos matemáticos, por ej. Coeficientes para filtros FIR Buffers circulares Registros de desplazamiento o muy largos o muy anchos Líneas de retardo C. Sisterna DSDA 47 Bloques de Memoria (BRAM)- Cont. Principales aplicaciones de los BRAM: Realización de MEF usando técnicas de microprogramación Contadores muy largos y rápidos Memorias Direccionables por Contenido (CAM) de alto rendimiento de Rd/Wr Almacenamiento de formas de onda o tablas de funciones trigonométricas para generar salidas tipo Direct Digital Synthesis (DDS) (Síntesis Digital Directa) C. Sisterna DSDA 48 Bloques DSP P=AxB 36 = 18 x 18 Pipelining (opcional) C. Sisterna DSDA 49 Bloque DSP – Avanzado Virtex-5 C. Sisterna DSDA 50 Interconexiones - Ruteo C. Sisterna DSDA 51 Interconexiones - Ruteo Transistor de Paso Y0 Y M PIP C. Sisterna DSDA 52 Interconexiones - Ruteo C. Sisterna DSDA 53 Interconexiones - Ruteo C. Sisterna DSDA 54 Interconexiones - Ruteo C. Sisterna DSDA 55 Interconexiones - Ruteo C. Sisterna DSDA 56 Interconexiones - Ruteo C. Sisterna DSDA 57 Generacion de Reloj–Digital Clock Manager Bloque dedicado exclusivamente a funciones de control y generación de señal de reloj para la lógica interna del FPGA CLKIN CLK0 CLKFB CLK2X CLK2X180 DCM CLKDIV CLKFX CLKFX180 C. Sisterna DSDA 58 Generación de Reloj Las principales funciones del DCM se pueden resumir en: Eliminar el sesgo del reloj (clock skew), ya sea dentro del FPGA o con componentes externos Producir corrimiento de fase (Phase shifting) de una señal de reloj, ya sea por una fracción del periodo de reloj o por incrementos fijos Multiplicar o dividir la frecuencia de entrada del reloj, generando una frecuencia completamente nueva C. Sisterna DSDA 59 Generación de Reloj Las principales funciones del DCM se pueden resumir en: Acondicionar la señal de entrada del reloj, asegurando un reloj limpio, con un ciclo de trabajo del 50% Amplificar de nuevo (rebuffer) una señal de reloj, normalmente para eliminar el sesgo (deskew) Convertir la señal de reloj de entrada a un estándar diferente, por ejemplo, de LVPECL a LVTTL C. Sisterna DSDA 60 Ruteo de Reloj Dedicado H G F E DCM 4 8 8 8 4 DCM 8 8 8 8 H G F E D C B A DCM 8 H G F E D C B A DCM D C B A C. Sisterna DSDA 61 Ruteo de Reloj Dedicado Ejemplo de Ruteo de reloj dedicado Applicacion real C. Sisterna DSDA 62 Aplicaciones con DCM–Correción de Skew D Other Device on the board C. Sisterna DSDA 63 Aplicaciones con DCM–Correción de Skew D Other Device on the board A) Esquema de configuración de los DCMs B) Alineamiento ideal del reloj C) Retardando el reloj, parece un adelantamiento C. Sisterna DSDA 64 Configuración del FPGA – Master Mode C. Sisterna DSDA 65 Configuración del FPGA – Slave Mode C. Sisterna DSDA 66 Vista interna de un FPGA (Spartan 3) C. Sisterna DSDA 67 Xilinx Virtex-5 Applications Xilinx XUP-V5 (UNSJ) C. Sisterna DSDA 68 ALICE Experiment Time Projection Chamber Optical splitters Inner Tracking System Silicon Strip detector Silicon Drift detector Silicon Pixel Detector Pixel Trigger crate PrintedC.with permission - A. Kluge, G. Aglieri Rinella Sisterna DSDA 69 ALICE – Pixel Trigger Crate C. Sisterna DSDA 70