FPGA(Field Programmable Gate Array)
FPGA’s
- Es un dispositivo semiconductor conformado por bloques
de lógica, cuya interconexión y funcionalidad puede ser
configurada luego de su fabricación
Qué es una FPGA?
Sistemas Digitales - FIUBA
FPGA’s
- Ross Freeman y Bernard Vonderschmitt, co-fundadores
de Xilinx, fueron quienes crearon este dispositivo en 1985,
un año después de fundar la empresa
Qué es una FPGA?
Sistemas Digitales - FIUBA
FPGA’s
- PLA (Programmable Logic Array)
- PAL (Programmable Array Logic)
- GAL (Gate Array Logic)
- CPLD (Complex Programmable Logic Device)
- FPGA (Field Programmable Gate Array)
Antecesores de las FPGAs
Sistemas Digitales - FIUBA
FPGA’s
- Prototipado rápido
- Time to market corto
- Costo más bajo asociado a NRE (ingeniería no
recurrente)
- Capacidad para reconfiguración en campo
- Ciclo de vida largo (reduce el riesgo de obsolescencia)
- Flexibilidad
- Posibilidad de reconfiguración del hardware sin necesidad
de cambio en la placa madre del diseño que la contiene
- Procesamiento en paralelo
Ventajas de las FPGAs
Sistemas Digitales - FIUBA
FPGA’s
- Comunicaciones
- Industria aeroespacial
- Procesamiento de imagen/video de alta resolución
- Procesamiento digital de señales
- Prototipado de ASICs
- Switches y Routers
- Amplificadores Lock-in
- Equipos médicos (Resonadores magnéticos)
Aplicaciones de las FPGAs
Sistemas Digitales - FIUBA
FPGA’s
Clasificación por tecnología de implementación
Sistemas Digitales - FIUBA
- SRAM:
La configuración de las celdas lógicas se almacena una memoria estática. Volátil.
- SRAM con flash interna:
Similar a la anterior, salvo que contiene una memoria flash interna. Elimina la necesidad de una flash externa
- Flash:
Usa tecnología flash para el almacenamiento de la configuración. No volatil.
- Antifuse:
Inicialmente no conducen corriente. Al configurarla se cierran los contactos. Sólo pueden configurarse una vez.
FPGA’s
Clasificación por tecnología de implementación
Sistemas Digitales - FIUBA
Tecnología
Característica SRAM Antifuse Flash
Reprogramable Si No Si
Memoria externa Si No No
Velocidad Más lenta Mejor Más lenta
Potencia Peor Segunda mejor Mejor
Densidad Mejor Segunda mejor Media
Tolerancia a la radiación
Peor Mejor Media
FPGA’s
Clasificación por tecnología de implementación
Sistemas Digitales - FIUBA
Ejemplos de las distintas tecnologías
SRAM: la mayoría de los chips de las familias Virtex y Spartan de la empresa Xilinx, y las Stratix y Cyclone de Altera
FPGA’s
Clasificación por tecnología de implementación
Sistemas Digitales - FIUBA
Ejemplos de las distintas tecnologías
SRAM con flash interna: la familia Spartan-3AN de Xilinx, y la familia LatticeXP de Lattice
FPGA’s
Clasificación por tecnología de implementación
Sistemas Digitales - FIUBA
Ejemplos de las distintas tecnologías
Flash: Igloo y ProASIC3 de la empresa Actel (Microsemi)
FPGA’s
Clasificación por tecnología de implementación
Sistemas Digitales - FIUBA
Antifuse: Axcelerator de la empresa Actel (Microsemi)
Ejemplos de las distintas tecnologías
FPGA’s
Empresas fabricantes de FPGAs
Sistemas Digitales - FIUBA
FPGA’s
Empresas fabricantes de FPGAs
Sistemas Digitales - FIUBA
USD 15.08 B
USD 11.41 B
USD 3.23 B
USD 502.25 M
USD 79.79 M
FPGA’s
Sistemas Digitales - FIUBA
Diferentes familias de FPGAs
ALTERA
XILINX
FPGA’s
- Incluye las familias Spartan-3, Spartan-3E y Spartan-3A
(Spartan-3A, Spartan-3AN, Spartan-3A DSP)
- Dispositivos de la empresa Xilinx
- Esta generación de FPGAs está orientada a necesidades
de alto volumen, sensibles a la variable costo
Generación Spartan-3
Sistemas Digitales - FIUBA
FPGA’s
Características de la generación Spartan-3
Sistemas Digitales - FIUBA
Spartan-3: Arquitectura
FPGA’s
Sistemas Digitales - FIUBA
Está constituida por los siguientes elementos:
- CLBs (Configurable Logic Blocks)
- IOBs (Input/Output Blocks)
- Conjunto de conexiones programables que
interconectan los bloques
- Diferentes bloques (Block RAM, DCM,
multiplicadores, etc)
Spartan-3: Arquitectura
CLBs
FPGA’s
Sistemas Digitales - FIUBA
Spartan-3: CLB
FPGA’s
Sistemas Digitales - FIUBA
Spartan-3: Diagrama simplificado de un Slice
FPGA’s
Sistemas Digitales - FIUBA
flip-flopsLUTs
lógica de carry
Spartan-3: Slices dentro del CLB
FPGA’s
Sistemas Digitales - FIUBA
FPGA’s
Sistemas Digitales - FIUBA
Celda lógica de una FPGA (Spartan-3)
La celda lógica está conformada por tres elementos:
• LUT (Look-Up Table) de 4 entradas
• Multiplexor
• Flip-flop
FPGA’s
Sistemas Digitales - FIUBA
Celda lógica de una FPGA (Spartan-3)
La LUT se implementa con una memoria SDRAM, por lo
que se puede usar como:
• Una LUT de 4 entradas
• Una memoria de 16x1 bit
• Un registro de deplazamiento (16 bits)
FPGA’s
Sistemas Digitales - FIUBA
Lógica combinacional dentro de una FPGA
La lógica combinacional se conforma a través de tablas
(Look-Up Tables, LUTs)
• También son denominadas Generadores de funciones
(FG: Function Generators)
• Su capacidad está dada por la cantidad de entradas
• El retardo a través de ellas es constante
FPGA’s
Sistemas Digitales - FIUBA
Lógica combinacional dentro de una FPGA
Función a implementar Tabla de verdad LUT programada
FPGA’s
Sistemas Digitales - FIUBA
Multiplexores
Son elementos dedicados a proveer interconexión entre
slices y LUTs
• MUXF5
Combina 2 LUTs para formar
cualquier función de 5 variables
• MUXF6
Combina 2 slices para formar
cualquier función de 6 variables
FPGA’s
Sistemas Digitales - FIUBA
¿Cómo se implementaría una función de 5 variables?
X4 X3 X2 X1 X0 Y
0 0 0 0 0 0
0 0 0 0 1 1
0 0 0 1 0 1
0 0 0 1 1 1
… … … … …
0 1 1 1 0 0
0 1 1 1 1 1
1 0 0 0 0 1
1 0 0 0 1 1
1 0 0 1 0 0
1 0 0 1 1 0
… … … … …
1 1 1 1 0 0
1 1 1 1 1 1
LUT
LUT
MU
X
FPGA’s
Sistemas Digitales - FIUBA
Bloque de entrada / salida (IOB)
• Soportan flujo bidireccional
• Salidas configurables como tri-state
• Resistencias de pull-up y pull-down programables
• Soportan varios estándares de señales (incluye señales diferenciales)
• Brinda la posibilidad de registrar tanto entradas como salidas
• Control Digital de Impedancia (DCI) para matchear con las líneas que
llegan a la FPGA
FPGA’s
Sistemas Digitales - FIUBA
Bloque de entrada / salida (IOB) (Spartan-3)
FPGA’s
Sistemas Digitales - FIUBA
IOB (Spartan-3)
FPGA’s
Sistemas Digitales - FIUBA
Conexiones programables (Spartan-3)
• Líneas de propósito general
• Líneas largas
• Líneas directas
Tipos de líneas de interconexión:
Proporcionan distintas opciones
para la interconexión de los
distintos elementos de manera
flexible y eficiente
FPGA’s
Sistemas Digitales - FIUBA
Conexiones programables (Spartan-3)
Son un conjunto de líneas horizontales y verticales
conectadas a una matriz de interconexión (switch
matrix)
Líneas de propósito general
FPGA’s
Sistemas Digitales - FIUBA
Conexiones programables (Spartan-3)
Son un conjunto de líneas horizontales y verticales
conectadas a una matriz de interconexión (switch
matrix)
Matriz de interconexión
Configuración
• Cada punto de interconexión está formado por 6 transistores• Son interruptores programables
FPGA’s
Sistemas Digitales - FIUBA
Conexiones programables (Spartan-3)
• Son líneas que atraviesan la FPGA de arriba abajo y
de izquierda a derecha
• Permiten un fan-out grande
• Se utilizan para que una señal acceda a un punto
distante, con menos retardos que las líneas de
propósito general
• Son un recurso escaso y son dedicadas para señales
críticas tales como el reloj o señales de inicialización
globales.
Líneas largas
FPGA’s
Sistemas Digitales - FIUBA
Conexiones programables (Spartan-3)
• Son líneas de conexión
directa entre bloques
• Se utilizan para implementar
redes entre los CLBs e
IOBs adyacente, de manera
eficiente
• Introducen retardos mínimos
Líneas directas
FPGA’s
Sistemas Digitales - FIUBA
Block RAM (Spartan-3)
• Esta generación de FPGAs posee bloques de memoria
que mediante diferentes configuraciones permiten crear
RAMs, ROMs, FIFOs, LUTS grandes, buffers circulares,
y registros de desplazamiento.
• Se encuentran cerca de los multiplicadores para acelerar
la implementación de operaciones multiply-accumulate
• Cuando en vez de usar Block RAMs se utilizan las LUTs se dice
que se hace uso de memoria distribuida.
Spartan-3: Ubicación de la Block RAM
FPGA’s
Sistemas Digitales - FIUBA
Spartan-3: Block RAM (config. de cada bloque)
FPGA’s
Sistemas Digitales - FIUBA
Tabla extraída de “Spartan-3 Generation FPGA User Guide”
Spartan-3: Block RAM total
FPGA’s
Sistemas Digitales - FIUBA
Tabla extraída de “Spartan-3 Generation FPGA User Guide”
Spartan-3: Block RAM
FPGA’s
Sistemas Digitales - FIUBA
Imagen extraída de “Spartan-3 Generation FPGA User Guide”
Spartan-3: Block RAM
FPGA’s
Sistemas Digitales - FIUBA
Primitivas
Spartan-3: Multiplicador
FPGA’s
Sistemas Digitales - FIUBA
• Cuenta con 20 multiplicadores embebidos de 18 bits de
operando y 36 bits de salida.
• Se encuentran al lado de los bloques de memoria
Spartan-3: Multiplicador
FPGA’s
Sistemas Digitales - FIUBA
FPGA’s
Sistemas Digitales - FIUBA
DCM (Digital Clock Manager) (Spartan-3)
• Eliminación del desfasaje que se genera en el reloj por
retardos en el ruteo (skew). Asegura que el flanco
(ascendente o descendente) llega al mismo tiempo a
todas las entradas de reloj de flip-flops
• Síntesis de frecuencias. A partir de la señal de reloj de entrada
puede generar diferentes relojes, multiplicando por M y
dividiendo por N (siendo M = 2 a 32 y N = 1 a 32)
• Corrimiento de fase. Puede implementar desfasajes controlados
de la señal de reloj
Función
FPGA’s
Sistemas Digitales - FIUBA
DCM (Digital Clock Manager) (Spartan-3)
FPGA’s
Sistemas Digitales - FIUBA
DCM (Digital Clock Manager) (Spartan-3)
FPGA’s
Sistemas Digitales - FIUBA
DCM (Digital Clock Manager) (Spartan-3)
FPGA’s
Sistemas Digitales - FIUBA
DCM (Digital Clock Manager) (Spartan-3)
Spartan-3E: Recursos
FPGA’s
Cuadro extraído de “Spartan-3 Generation FPGA User Guide”
La siguiente tabla muestra los diferentes recursos disponibles en una
fpga Spartan-3E
Sistemas Digitales - FIUBA
Spartan-3E: Pines de Entrada / Salida
FPGA’s
Nota: Los valores entre paréntesis indican la cantidad de pines de sólo lectura
Cuadro extraído de “Spartan-3 Generation FPGA User Guide”
Sistemas Digitales - FIUBA
FPGA’s
Sistemas Digitales - FIUBA
Evolución de la tecnología FPGA
Xilinx
FPGA’s
Sistemas Digitales - FIUBA
Evolución de la tecnología FPGA
Altera
FPGA’s
Sistemas Digitales - FIUBA
Evolución de la tecnología FPGA
Altera
FPGA’s
Sistemas Digitales - FIUBA
Tendencias
• Arquitecturas mixtas, orientadas a aplicaciones de características
diversas (lógica, procesadores soft/hard, DSP)
• Enlaces serie de alta velocidad (28 Gb/s)
• LUTs con mayor cantidad de entradas (6)
• Reconfiguración dinámica (on the fly)
• Dispositivos muy potentes que soportan entradas analógicas
• Aumento en la escala de integración
FPGA’s
Sistemas Digitales - FIUBA
Flujo de diseño
Diseño Codificación Simulación Síntesis
Mapeo, ruteo y
ubicaciónSimulación Generación
del bitstreamConfiguración de la FPGA
Diseño del circuito a implementar en la
FPGA
Codificaciónen HDL
Simulación delcódigo HDL
Transformación de la descripción en un circuito en base a
primitivas
Asignación de cada primitiva a un lugar físico y utilización de los recursos
de interconexión para conectar los componentes
entre sí
Simulación luego del PAR
Se configura la FPGA o una
memoria auxiliar
Generación del archivo de
configuración (.bit)
FPGA’s
Sistemas Digitales - FIUBA
Visualización de un proyecto en laherramienta de Xilinx
FPGA’s
Sistemas Digitales - FIUBA
Mapeo de pines
FPGA’s
Sistemas Digitales - FIUBA
Kit FPGA: Nexys 2
FPGA’s
Sistemas Digitales - FIUBA
Kit FPGA: Nexys 2
FIN
FPGA’s
Sistemas Digitales - FIUBA