Electrónica Digital Departamento de Electrónica Dispositivos Lógicos Programables Bioingeniería Facultad de Ingeniería - UNER Circuitos programables / configurables Arquitectura no configurable • Microprocesador / Microcontrolador • ALU • Registros • Memorias • Ejecución de un programa (firmware) • Lenguaje de bajo nivel (assembler) • Lenguaje de alto nivel (C) Dispositivos programables Arquitectura configurable • Interconexión (re)configurable de bloques lógicos • Procesamiento ‘paralelo’ • Configuración por: • Métodos tabulares, ecuaciones lógicas. • Lenguajes de alto nivel (HDL Hardware Description Language) Dispositivos configurables P PLD Programar consiste en establecer las instrucciones para la CPU Programar consiste en cambiar las conexiones y entradas/salidas de la lógica del dispositivo: se configura Ejecución secuencial Ejecución en paralelo Cambia el SW Cambia el HW Clasificación de los CIs ASIC: Application Specific Integrated Circuit Principales fabricantes de PLDs – Xilinx , Lattice, Altera, AMD – Philips , Texas Instruments, Cypress, ST Microelectronics Dispositivos configurables • PLD Programmable Logic Device • (PROM) (PLE) Programmable Read Only Memory Programmable Logic Elements • PLA Programmable Logic Array • PAL® Programmable Array Logic (AMD) • GAL® Generic Array Logic (Lattice) • CPLD Complex PLD • FPGA Field-Programmable Gate Arrays (Xilinx) Arquitectura genérica básica de un PLD • Sistemas MIMO: Multiple Inputs Multiple Outputs • Fundamento: Cualquier función lógica puede ser expresada como una suma de productos (AND-OR) (minitérminos) Arquitectura general de un PLD Ejemplo: PLD con 4 entradas y 3 salidas Referencias X: indica una conexión “configurable” ● : indica una conexión fija (de fábrica) Simbología +C Referencias X: indica una conexión “configurable” ● : indica una conexión fija (de fábrica) PLD 4 x 3 con 6 términos de producto Tipos de matrices y dispositivo PLD • PLA: matriz AND configurable matriz OR configurable • PROM (PLE Programmable Logic Element): matriz AND fija matriz OR configurable • PAL: matriz AND configurable matriz OR fija PLA - Programmable Logic Array • Matriz AND configurable • Matriz OR configurable • No reprogramables Especificación Número de entradas (n) Número de salidas (m) Número de términos de producto (p) En general: p 2n Ejemplo: “PLA de n x m con p términos de producto” • p compuertas AND de 2n entradas • m compuertas OR de p entradas PLA - Programmable Logic Array • Matriz AND programable • Matriz OR programable n = 4; p 24; m = 4 Ejemplo Ejemplo O1 = I1 . I2 + I1’ . I2’ . I3’ . I4’ O2 = I1 . I3’ + I1’ . I3 . I4 + I2 O3 = I1 . I2 + I1 . I3’ + I1’ . I2’ . I4’ Programación para 1 o 0 constantes AND: entrada no conectada fija un “1” OR: entrada no conectada fija un “0” Forma comercial: Signetics 82S100 16 entradas 48 compuertas AND 8 salidas (OR) Ejemplo de diseño: Comparador de 2 bits Diseño A1 A0 B1 B0 A>B A<B A=B 0 0 0 0 0 0 1 0 0 0 1 0 1 0 A>B = A1B1/ + A1A0B0/ + A0B1/B0/ 0 0 1 0 0 1 0 A<B = A1/B1 + A1/A0/B0/ + A0/B1B0 0 0 1 1 0 1 0 A=B = A1/A0/B1/B0/ + A1/A0/B1/B0 + A0/B1B0/ + A1A0B1B0 0 1 0 0 1 0 0 0 1 0 1 0 0 1 0 1 1 0 0 1 0 0 1 1 1 0 1 0 1 0 0 0 1 0 0 1 0 0 1 1 0 0 1 0 1 0 0 0 1 1 0 1 1 0 1 0 1 1 0 0 1 0 0 1 1 0 1 1 0 0 1 1 1 0 1 0 0 1 1 1 1 0 0 1 Se requiere un PAL: • 4 entradas • 3 salidas • 4 términos de producto por cada salida • Salida activa por alto A>B = A1B1/ + A1A0B0/ + A0B1/B0/ A<B = A1/B1 + A1/A0/B0/ + A0/B1B0 A=B = A1/A0/B1/B0/ + A1/A0/B1/B0 + A0/B1B0/ + A1A0B1B0 PROM – Programmable ROM • Matriz AND fija – Se generan todos los minitérminos • Matriz OR programable – Se programan las OR n = 4; p = 24; m = 4 PAL® - Programmable Array Logic PAL® es marca registrada de AMD® Matriz AND configurable Matriz OR fija Terminales bi-direccionales de E/S No reprogramables PAL - Programmable Array Logic • Matriz AND programable • Matriz OR fija • Terminales bidireccionales de entrada y salida SALIDAS n = 4; p 24; m = 4 Arquitectura de los dispositivos PAL • PAL con salida combinacional • PAL con salida secuencial • Control de arquitectura: PAL combinacional, secuencial o una combinación de ambos. Tipos de salida 1. Salida tri-estado 2. Macroceldas de salida • Salida con polaridad configurable • Salida registrada (con entradas asíncronas) • Salida multiplexada Salida tri-estado (alta impedancia) Macrocelda con salida de polaridad configurable Macrocelda combinacional con salida con polaridad configurable y triestado B A (fuse) B salida Por defecto 0 0 0 0 1 1 Fusible quemado 1 0 1 1 1 0 A =B = B/ Macrocelda combinacional con salida con polaridad configurable triestado y realimentación Macrocelda con salida registrada (con entradas asíncronas) Salida de los PALs secuenciales Macrocelda registrada con salida con polaridad configurable y triestado Macrocelda con salida multiplexada Permite configurar salidas combinacionales o registradas TIBPAL22VP10-25M (Texas Instruments) Formas comerciales • 22 entradas y 10 salidas • Macrocelda de salida completamente configurable • Permite diseño de circuitos con complejidad equivalente de entre 500 a 800 compuertas • Power-up clear function • Fusible de seguridad Formas comerciales Formas comerciales Formas comerciales PAL16L8 • 32 entradas (16 variables) • 64 AND • 8 OR de 7 entradas DIP 20 terminales Formas comerciales PAL16R8 • 8 entradas • 8 salidas • 8 FFD • CLK, OE/ Formas comerciales PLDs reprogramables • Fusibles reemplazados por transistores CMOS (celdas) borrables eléctricamente (E2CMOS) • Control de arquitectura: PLD combinacional, secuencial o una combinación de ambos. GAL® PALCE® Generic Array Logic (Lattice Semiconductor) (AMD) CPLD Complex PLD FPGA Field-Programmable Gate Arrays GAL® - Generic Array Logic GAL® es marca registrada de Lattice Semiconductor® • Son programables y borrables eléctricamente – Tecnología E2CMOS • Forma básica: – Matriz AND configurable – Matriz OR fija – Lógica de salida en macrocelda (OLMC Output Logic Macro Cell) GAL22V10, GAL18V10 and GAL26CV12 Block Diagram Modo combinacional Modo registrado Formas comerciales GAL16V8C • 16 entradas • 8 salidas Configuración combinacional (sin FFs en las salidas) Formas comerciales GAL16V8R • 3 configuraciones • 16 entradas • 8 salidas • 8 FFD • CLK, OE/ Configuración registrada (con FFs en todas las salidas) Formas comerciales GAL22V10 Formas comerciales Formas comerciales Nomenclatura CPLD Complex PLD FPGA Field Programmable Gate Array Ejemplo: Arquitectura Spartan 3 de Xilinx DCMs (Control digital de relojes) Slew Rate Control Tri state path Matriz de bloques lógicos configurables (CLBs) D Q Passive Pull-Up, Pull-Down Vcc Prog. Output driver Pad Input Buffer Q D Delay I/O Blocks (IOBs) Cout BRAM Interconexiones programables CLB CLB Slice X1Y1 MULs CLBs (Configurable Logic Blocks ) Slice X1Y0 Cout Switch Matrix Cin Slice X0Y1 CLB CLB Slice X0Y0 Cin Bloques lógicos configurables Bloques de E/S configurables Bloques de E/S configurables Arquitectura de CPLD CPLDs: Bloques de función (FB) Granularidad fina y granularidad gruesa Granularidad fina Granularidad gruesa • Mejor uso • Pocos niveles de lógica • Conversión directa a ASIC • Menos retardo de interconexión C P L D F P G A • • • • Esencialmente, PLDs interconectados Gran número de compuertas: cientos a decenas de miles Macroceldas de salida Algunos proveen lógica más flexible que la suma de productos, incluyendo realimentaciones complejas y funciones lógicas avanzadas como aritmética, por ejemplo. • CPLD grandes: incluyen memoria on-chip • Menor flexibilidad • Menor potencia de prestaciones • • • • • • • • Decenas a cientos de miles o varios millones de compuertas Bloques de lógica configurables Bloques de E/S configurables Matriz de interconexión programable Mayor flexibilidad Mayor complejidad de diseño Mayor potencia de prestaciones Presencia de funciones de alto nivel (embedded functions) como ALUs, sumadores, multiplicadores, etc. • Memorias • Decodificadores Ficha técnica familia Spartan 3 de Xilinx 1 CLB = 4 SLICE; 1 SLICE = 2 LUTS + 2 FFs + Carry logic Equivalent logic Cells (celdas lógica equivalentes) = 1 LUT + 1 FF + lógica de control. Ventajas e inconvenientes de los FPGAs Comparativa de las FPGAs frente a: Lógica discreta ASICs Tiempo de diseño (cambios sin “soldar”) Densidad integración (menor peso, tamaño) Mayores prestaciones (consumo, velocidad) Menor coste para circuitos medioscomplejos Mayor coste para circuitos muy simples Herramientas específicas (fabricante) Tiempo de diseño (cambios en el laboratorio) Reconfigurable (pruebas o actualizaciones) Menor coste para tiradas cortas y medias Mayor coste para tiradas muy largas Menores prestaciones (consumo, velocidad) Menor densidad integración - número de unidades (tirada) + + - velocidad / consumo + Lógica discreta complejidad FPGAs FPGAs ASICs Programación de PLDs HDL Hardware Description Language • PALASM, CUPL • ABEL®: Advanced Boolean Equation Language (Data I/O Corporation) • VHDL: Very High Speed Integrated Circuit Hardware Description Language Programación de FPGAs • SRAM based FPGAs • Anti-fuse based FPGAs Por la tecnología de la memoria de programación No volátiles Basadas en ROM Reprogramables Basadas en EPROM (Erasable-Programmable ROM) o flash Se borran y se pueden volver a programar (unos 10.000 ciclos) No reprogramables Basadas en fusibles Sólo se pueden programar una vez. No aptas para laboratorios, pero sí para el espacio 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) Fabricantes Actel (fusibles y flash) , Altera, Atmel (con micros), Chip Express, Clear Logic, Cypress, DynaChip, Fast Analog Solutions, Gatefield, HammerCores, Lattice (SRAM y flash), Lucent Technologies, Motorola, Orbit, QuickLogic, QuickTurn, Vantis, Xilinx, .... Formas comerciales SRAM based FPGA families • Altera FLEX family • Atmel AT6000 and AT40K families • Lucent Technologies ORCA family • Xilinx XC4000 and Virtex families Anti-fuse based FPGA families • Actel SX and MX families • Quicklogic pASIC family FPGAs de Xilinx - Evolución Virtex-5 550 MHz 24M gates* Complejidad de Dispositivos Virtex-II Pro 450 MHz 8M gates* Virtex-II 450 MHz 8M gates Virtex-E 240 MHz 4M gates Virtex 200 MHz 1M gates XC4000 100 MHz 250K gates XC2000 50 MHz 1K gates XC3000 85 MHz 7.5K gates 1985 1987 1991 XC5200 50 MHz 23K gates 1995 Spartan 80 MHz 40K gates Virtex-4 500 MHz 16M gates* Spartan-3 326 MHz 5M gates Spartan-II 200 MHz 200K gates 1998 1999 2000 2002 2003 2004 2006 VHDL Verilog FF_AR_CE: process(CLK) begin if (CLK’event and CLK = ‘1’) then if (RST = ‘1’) then Q <= ‘0’; elsif (SET = ‘1’) then Q <= ‘1’; elsif (CE = ‘1’) then Q <= D_IN; end if; end if; end process always @(posedge CLK) if (RST) Q <= 0’b0; else if (SET) Q <= 1’b1; else if (CE) Q <= D_IN; Ejemplos de codificación de un FF VHDL Verilog process(sel, data) begin case (sel) is when “000” => out <= data(0); when “001” => out <= data(1); when “010” => out <= data(2); when “011” => out <= data(3); when “100” => out <= data(4); when “101” => out <= data(5); when “110” => out <= data(6); when “111” => out <= data(7); when others => out <= ‘0’; end case; end process; always @ (sel or data) case(sel) 3'b000: muxout = data[0]; 3'b001: muxout = data[1]; 3'b010: muxout = data[2]; 3'b011: muxout = data[3]; 3'b100: muxout = data[4]; 3'b101: muxout = data[5]; 3'b110: muxout = data[6]; 3'b111: muxout = data[7]; default : muxout = 0; endcase Ejemplos de codificación de un MUX Características del diseño con PLDs • ‘Simplicidad’ de diseño • Funcionalidades adicionales • Gran flexibilidad (distintas configuraciones) • Posibilidad de reprogramar • Programación in situ (isp - in system programmable) • Bajo consumo (modos stand-by; wake up) • Fiabilidad • Menor costo • Reducción del número de CIs • Ahorro de espacio • Seguridad FIN Ejemplo de diseño #1: Convertidor de BCD a Gray DIAPOSITIVA OCULTA Consideraciones a tener en cuenta en un diseño CPLDDIAPOSITIVA OCULTA • La tecnología de programación • La capacidad del bloque de función • La capacidad de entradas/salidas Formas comerciales • Altera: Familias MAX 7000, MAX 9000 • Atmel: Familias ATF y ATV • Lattice: Familias ispLSI y (Vantis) MACH • Xilinx: Familia XC9500 • Cypress: Familia FLASH370 actualizar DIAPOSITIVA FPGA – Field Programmable Gate Array OCULTA Antes opciones de implementación circuitos TTL y memorias ROM PAL/GAL Programmable Array Logic 1980 CPLDs Complex Programmable Logic Device 1984 Primera FPGA (Ross Freeman - Xilinx) X Link X Dispositivo lógico programable (su funcionalidad se fija por el usuario después de la fabricación) Field Programmable Gate Array ¿Cómo cambiar el hardware? DIAPOSITIVA OCULTA Configurar: cambiar las funciones lógicas y las conexiones Por ejemplo: Estructura genérica FPGA Salidas Entradas Lógica configurable Memoria de programación S A B 0/1 0/1 0/1 0/1 Interfaz programación Información de configuración La implementación física de la memoria sirve para clasificar las FPGAs Recordatorio: un multiplexor sirve para implementar cualquier función lógica Elementos que componen la lógica configurable DIAPOSITIVA OCULTA Bloques de salida Entrada, salida, bidireccional Compatibilidad estándares Registro o salida directa Bloques lógicos (combinac. y secuenc.) Granularidad fina Granularidad gruesa Otros bloques (memorias, P embeb.) Bloques lógicos Bloques lógicos Pines de E/S Matriz interconexión Matriz interconexión Bloques salida a) Bloques lógicos Otros elementos Osciladores de reloj internos DCMs (control digital del reloj) b) Bloques lógicos Sistemas de conexión Locales o vecino-vecino (a) Globales o larga distancia (b) De alta velocidad (carry) Dedicadas (reloj, reset) Cada slice contiene: Lógica de generación rápida de acarreo Carry logic control G4 G3 Generadores de funciones G2 (look-up tables) G1 Y YQ G Gen. Func. D Q Parte superior EC SR REV de 16x1 (f. de 4 variables) WE CK WSGEN Lógica común y de memoria distribuida X F4 F3 F2 F1 Carry logic control F Gen. Func. SR REV Q D EC XQ Salida combinacional Salida registrada Parte inferior Información de pedido Xilinx Spartan 3 Num. de System gates (puertas lógicas) 200 K XC3S200 -4 FT 256 C Tipo de dispositivo Speed grade* Tipo de encapsulado Ejemplo encapsulado Rango de temperatura C comercial (0ºC a 85ºC) I Industrial (-40 ºC a 100 ºC) Número de pines Speed grade* Depende de la tecnología de FPGA, para las Spartan 3 Mayor numero, más rápido el chip Metodología de diseño con FPGAs Captura del diseño Simulación funcional Diseño físico Simulación con retardos Programación Introducir los datos sobre las características del circuito que se quiere construir Probar si la IDEA (y/o los primeros diseños) funcionan Traducir el diseño a un circuito real Probar si el circuito funcionará a la velocidad requerida, una vez que se saben los retardos reales, y si lo hace igual que la idea Descargar la información de configuración a la FPGA Pruebas prototipo Probar el circuito REAL, en su entorno real de funcionamiento Depuración HW Detectar las causas de problemas y corregirlos Métodos de captura del diseño Captura del diseño Captura de esquemas Lenguaje descr. HW Ecuaciones algebraicas Diagrama de estados A a b 0 1 c Traducción s If c=0 then s<=a else s<=b Síntesis Lista de Conexiones (netlist) s=ac + bc 1/1 0/1 0/1 B C 1/1 Síntesis sencilla Síntesis sencilla Diseño físico Fases del diseño físico en FPGAs Captura diseño Mapeado (Mapping) Emplazamiento (Placement) Agrupar o descomponer los símbolos lógicos en los elementos físicos que componen la FPGA (CLBs, IOBs, etc.) Colocar los CLBs resultantes en los CLBs disponibles de la FPGA, atendiendo a criterios de proximidad para reducir el tiempo de propagación de las señales en el interior del circuito Conexionado (Routing) Gestionar los recursos de conexionado locales (vecino a vecino), de larga distancia (buses y matrices de conexión) o globales (relojes, resets, etc.) Cálculo de retardos Estimación de tiempos de propagación en función de las puertas usadas, su carga y sus interconexiones, para poder realizar simulaciones precisas Configuración Generar la secuencia de bits que configura el dispositivo adecuadamente Programación ¿Cómo seleccionar un FPGA? • • • • • ¿Para que se va a usar? – Funcionalidad / Prestaciones – Consumo tipo de dispositivo (Móvil, estático). – Proveedor – Familia de FPGA ¿Qué se va a implementar en la FPGA? – Tamaño de la FPGA – Escoger una más grande de la prevista (mejo si no es la más grande de la serie) ¿ Que se va ha conectar a la FPGA ? – Tipo y numero de IOs – Cuantas IOs se prevé que se van a usar. Dispositivos Periféricos – ¿La FPGA cubre el estándar de IO que se necesita? ¿ Hay restricciones de espacio? – Tamaño del producto – Encapsulado NOTA : Pregunta clave Precio de la FPGA ¿Hay otras soluciones que hagan lo mismo – Entra en el presupuesto? (iguales prestaciones y funcionalidad) a menor precio y consumo? Tendencias de los FPGAs • Sistemas en Chip programable 1 Periféricos GBps Periféricos Analógicos Soft Core : Microprocesador implementado con lógica de FPGA Ejemplo: Altera Nios Processor Xilinx Microblaze (32 bits) y Picoblaze (8 bits libre) uP Lógica programable (Actel Fusion Silicon) *DSP Digital signal processing Procesado digital de señales Memoria Bloques DSP* 2 Hard Core : Microprocesador fundido en silicio Ejemplo: Altera Excalibur (lo han dejado) Xilinx IBM PPC 450 (Virtex II Pro, Virtex 4 FX) Nota: Existen otros microprocesadores descritos en VHDL o Verilog que se pueden implementar en un FPGA como LEON, 8051 y otros Comparativa de implementar en FPGA (HW) o uP/DSP (SW) Mayores ventajas de las FPGAs Paralelismo !!! + Flexibilidad X Y Reutilización del HW Y + X Y X2 + XY + Y2 X x X x x + X Y Y x + Computación espacial Computación temporal Mayores desventajas de las FPGAs - Seguridad + Consumo - Tolerancia a fallos Y x Ámbito de aplicación • • • • • Prototipado Rápido Diseño de bloques propietarios (IP CORES), ejemplo : PCI, DCT, FFT, etc. Para series pequeñas Ejemplos Reales – Productos • Tecnología aeronáutica Control de fuentes de alimentación, control de alarmas y señalización del piloto. • Inclinación de trenes para tomar curvas • Aeropuerto • Routers, estaciones bases • HDTV • NASA misión Pathfinder de Marte en 1997 (FPGA especial) – Empresas en España: SIDSA, INDRA – Empresas en Argentina Aplicaciones que requieren alta capacidad de computo Productos capaces de actualizarse después de la venta ¿CPLD o FPGA? CPLD FPGA PAL Arreglo de compuertas Densidad Baja a media Media a alta (hasta 106 compuertas) Velocidad Rápido Dependiente de la aplicación Crossbar Routing Alto Medio Arquitectura Inteconexión Consumo Ejemplo F1 = A F2 = A’B F3 = A + B’ F4 = A’B + AB’ F1 = AB’ + AB = A (B+B’) = A F2 = A’B (directo) F3 = A’B’ + AB’ + AB = B’ + AB = B’ + A F4 = A’B + AB’ (directo) Forma comercial PAL16L8 (TI) Forma comercial PAL16R6 (TI) Forma comercial PALCE20V8 (Cypress) Macrocelda (OLMC - Output Logic Macrocell)