Está en la página 1de 61

FPGA

(Field Programmable Gate Array)


FPGA’s

Qué es una FPGA?

- Es un dispositivo semiconductor conformado por bloques


de lógica, cuya interconexión y funcionalidad puede ser
configurada luego de su fabricación

Sistemas Digitales - FIUBA


FPGA’s

Qué es una FPGA?

- 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

Sistemas Digitales - FIUBA


FPGA’s

Antecesores de las FPGAs

- PLA (Programmable Logic Array)


- PAL (Programmable Array Logic)
- GAL (Gate Array Logic)
- CPLD (Complex Programmable Logic Device)
- FPGA (Field Programmable Gate Array)

Sistemas Digitales - FIUBA


FPGA’s

Ventajas de las FPGAs

- 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

Sistemas Digitales - FIUBA


FPGA’s

Aplicaciones de las FPGAs

- 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)

Sistemas Digitales - FIUBA


FPGA’s

Clasificación por tecnología de implementación


- 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.

Sistemas Digitales - FIUBA


FPGA’s

Clasificación por tecnología de implementación

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
Peor Mejor Media
radiación

Sistemas Digitales - FIUBA


FPGA’s

Clasificación por tecnología de implementación

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

Sistemas Digitales - FIUBA


FPGA’s

Clasificación por tecnología de implementación

Ejemplos de las distintas tecnologías

SRAM con flash interna: la familia Spartan-3AN de Xilinx, y


la familia LatticeXP de Lattice

Sistemas Digitales - FIUBA


FPGA’s

Clasificación por tecnología de implementación

Ejemplos de las distintas tecnologías

Flash: Igloo y ProASIC3 de la empresa Actel (Microsemi)

Sistemas Digitales - FIUBA


FPGA’s

Clasificación por tecnología de implementación

Ejemplos de las distintas tecnologías

Antifuse: Axcelerator de la empresa Actel (Microsemi)

Sistemas Digitales - FIUBA


FPGA’s

Empresas fabricantes de FPGAs

Sistemas Digitales - FIUBA


FPGA’s

Empresas fabricantes de FPGAs

USD 15.08 B

USD 11.41 B

USD 3.23 B

USD 502.25 M

USD 79.79 M

Sistemas Digitales - FIUBA


FPGA’s

Diferentes familias de FPGAs

ALTERA

XILINX

Sistemas Digitales - FIUBA


FPGA’s

Generación Spartan-3

- 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

Sistemas Digitales - FIUBA


FPGA’s

Características de la generación Spartan-3

Sistemas Digitales - FIUBA


FPGA’s

Spartan-3: Arquitectura

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)

Sistemas Digitales - FIUBA


FPGA’s

Spartan-3: Arquitectura

CLBs

Sistemas Digitales - FIUBA


FPGA’s

Spartan-3: CLB

Sistemas Digitales - FIUBA


FPGA’s

Spartan-3: Diagrama simplificado de un Slice

LUTs
flip-flops

lógica de carry

Sistemas Digitales - FIUBA


FPGA’s

Spartan-3: Slices dentro del CLB

Sistemas Digitales - FIUBA


FPGA’s

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

Sistemas Digitales - FIUBA


FPGA’s

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)

Sistemas Digitales - FIUBA


FPGA’s

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

Sistemas Digitales - FIUBA


FPGA’s

Lógica combinacional dentro de una FPGA

Función a implementar Tabla de verdad LUT programada

Sistemas Digitales - FIUBA


FPGA’s

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

Sistemas Digitales - FIUBA


FPGA’s

¿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 LUT
… … … … …
0 1 1 1 0 0

MUX
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 LUT
… … … … …
1 1 1 1 0 0
1 1 1 1 1 1

Sistemas Digitales - FIUBA


FPGA’s

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

Sistemas Digitales - FIUBA


FPGA’s

Bloque de entrada / salida (IOB) (Spartan-3)

Sistemas Digitales - FIUBA


FPGA’s

IOB (Spartan-3)

Sistemas Digitales - FIUBA


FPGA’s

Conexiones programables (Spartan-3)

Tipos de líneas de interconexión:

• Líneas de propósito general


• Líneas largas
• Líneas directas

Proporcionan distintas opciones


para la interconexión de los
distintos elementos de manera
flexible y eficiente

Sistemas Digitales - FIUBA


FPGA’s

Conexiones programables (Spartan-3)

Líneas de propósito general

Son un conjunto de líneas horizontales y verticales


conectadas a una matriz de interconexión (switch matrix)

Sistemas Digitales - FIUBA


FPGA’s

Conexiones programables (Spartan-3)

Matriz de interconexión

Son un conjunto de líneas horizontales y verticales


conectadas a una matriz de interconexión (switch matrix)

Configuración

• Cada punto de interconexión


está formado por 6 transistores
• Son interruptores programables

Sistemas Digitales - FIUBA


FPGA’s

Conexiones programables (Spartan-3)

Líneas largas

• 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.

Sistemas Digitales - FIUBA


FPGA’s

Conexiones programables (Spartan-3)

Líneas directas

• 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

Sistemas Digitales - FIUBA


FPGA’s

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.

Sistemas Digitales - FIUBA


FPGA’s

Spartan-3: Ubicación de la Block RAM

Sistemas Digitales - FIUBA


FPGA’s

Spartan-3: Block RAM (config. de cada bloque)

Tabla extraída de “Spartan-3 Generation FPGA User Guide”

Sistemas Digitales - FIUBA


FPGA’s

Spartan-3: Block RAM total

Tabla extraída de “Spartan-3 Generation FPGA User Guide”

Sistemas Digitales - FIUBA


FPGA’s

Spartan-3: Block RAM

Imagen extraída de “Spartan-3 Generation FPGA User Guide”

Sistemas Digitales - FIUBA


FPGA’s

Spartan-3: Block RAM

Primitivas

Sistemas Digitales - FIUBA


FPGA’s

Spartan-3: Multiplicador

• Cuenta con 20 multiplicadores embebidos de 18 bits de


operando y 36 bits de salida.
• Se encuentran al lado de los bloques de memoria

Sistemas Digitales - FIUBA


FPGA’s

Spartan-3: Multiplicador

Sistemas Digitales - FIUBA


FPGA’s

DCM (Digital Clock Manager) (Spartan-3)

Función

• 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

Sistemas Digitales - FIUBA


FPGA’s

DCM (Digital Clock Manager) (Spartan-3)

Sistemas Digitales - FIUBA


FPGA’s

DCM (Digital Clock Manager) (Spartan-3)

Sistemas Digitales - FIUBA


FPGA’s

DCM (Digital Clock Manager) (Spartan-3)

Sistemas Digitales - FIUBA


FPGA’s

DCM (Digital Clock Manager) (Spartan-3)

Sistemas Digitales - FIUBA


FPGA’s

Spartan-3E: Recursos

La siguiente tabla muestra los diferentes recursos disponibles en una


fpga Spartan-3E

Cuadro extraído de “Spartan-3 Generation FPGA User Guide”

Sistemas Digitales - FIUBA


FPGA’s

Spartan-3E: Pines de Entrada / Salida

Cuadro extraído de “Spartan-3 Generation FPGA User Guide”

Nota: Los valores entre paréntesis indican la cantidad de pines de sólo lectura

Sistemas Digitales - FIUBA


FPGA’s

Evolución de la tecnología FPGA

Xilinx

Sistemas Digitales - FIUBA


FPGA’s

Evolución de la tecnología FPGA

Altera

Sistemas Digitales - FIUBA


FPGA’s

Evolución de la tecnología FPGA

Altera

Sistemas Digitales - FIUBA


FPGA’s

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

Sistemas Digitales - FIUBA


FPGA’s

Flujo de diseño
Transformación de la
Diseño del circuito a descripción en un
Codificación Simulación del
implementar en la circuito en base a
en HDL código HDL
FPGA primitivas

Diseño Codificación Simulación Síntesis

Mapeo,
Generación Configuración
ruteo y Simulación
del bitstream de la FPGA
ubicación

Asignación de cada Generación del Se configura la


Simulación luego
primitiva a un lugar físico y archivo de FPGA o una
del PAR
utilización de los recursos configuración (.bit) memoria auxiliar
de interconexión para
conectar los componentes
entre sí

Sistemas Digitales - FIUBA


FPGA’s

Visualización de un proyecto en la
herramienta de Xilinx

Sistemas Digitales - FIUBA


FPGA’s

Mapeo de pines

Sistemas Digitales - FIUBA


FPGA’s

Kit FPGA: Nexys 2

Sistemas Digitales - FIUBA


FPGA’s

Kit FPGA: Nexys 2

Sistemas Digitales - FIUBA


FPGA’s

FIN

Sistemas Digitales - FIUBA

También podría gustarte