m.c. felipe santiago espinosa marzo/2019fsantiag/computo_reconfig/02_fpgas.pdf · circuitos...

66
M.C. Felipe Santiago Espinosa Marzo/2019

Upload: others

Post on 10-Apr-2020

4 views

Category:

Documents


0 download

TRANSCRIPT

M.C. Felipe Santiago Espinosa

Marzo/2019

¿Qué es un FPGA?

• Siglas de Field Programmable Gate Array– Circuito integrado VLSI – Contiene una matriz de bloques

lógicos programables “simples”– Un conjunto extenso de conexiones

programables.• Un número muy grande de bloques

lógicos “Islas” (1,000 … 100,000+) en un “Mar” de conexiones.

Arquitectura FPGA

2

Granularidad en los FPGAs

En un FPGA, los bloques lógicos pueden tener:

• Granularidad fina: El bloque contiene pocos transistores, por lo que puede implementar solamente operaciones lógicas simples.

• Granularidad gruesa: El bloque contiene un número grande de transistores, suficiente para implementar funciones lógicas complejas.– Los FPGA's actuales son de granularidad gruesa.

3

Celda de un FPGA Plessey

Bloques lógicos

• Los bloques lógicos contienen principalmente Tablas de Búsqueda (LUT, Lookup Table), multiplexores y elementos de estado.

• Las funciones lógicas se implemetan en las LUT.• Incluyen multiplexores (para seleccionar 1 de N entradas)• Flip-Flops, como registros o elementos de almacenamiento

temporizados.

FPGA Bloque Lógico

4

LUTs (Lookup Tables)

• Una LUT contiene Celdas de Memoria para implementar pequeñas funciones lógicas.

• En cada celda se almacena un ‘0’ o ‘1’ .• Una tabla de verdad de 1 variable se programa en cada LUT.• Las entradas seleccionan el contenido de una celda.

LUT de 3 Entradas -> 8 Celdas de Memoria

(Static Random Access Memory)

3 – 6 Entradas

Multiplexor

5

Recursos de ruteo

• Funciones más grandes se consiguen conectado muchos bloques lógicos.

• Las conexiones también están determinadas por celdas RAM.

Celdas SRAM

6

Con transistores de paso se establecen las conexiones

Recursos de ruteo

7

Deben cumplir con dos requerimientos:

• Enrutamiento: La capacidad del dispositivo para acomodar todas las conexiones requeridas por una apl icación, considerando que los segmentos de alambre son colocados durante la fabricación del circuito.– El número de alambres debe ser suficiente.

• Velocidad: Se debe minimizar el retardo de propagación debido a las conexiones programables entre segmentos de alambre. Este es un factor interno del rendimiento del FPGA.– Los segmentos de alambre deben ser de diferentes tamaños.

Lógica Temporizada

• Algunas funciones son del tipo Registro (utilizan los FFs).• Los FFs se sincronizan con una señal de reloj.• Los FPGAs contienen un módulo que administra un reloj global.• Los bloque lógicos reciben líneas dedicas a la señal de reloj.

Los FFs se actualizan con la señal de reloj8

Circuitos secuenciales

• El tiempo de respuesta en un circuito combinacional es variable.• Los registros ayudan a crear sistemas con una temporización

predecible.• Entre los diferentes bloques se crea una conexión al Nivel de

Transferencia de Registros (RTL, Register-transfer level).

Entradas

9

Circuitos secuenciales

• El tiempo de respuesta en un circuito combinacional es variable.• Los registros ayudan a crear sistemas con una temporización

predecible.• Entre los diferentes bloques se crea una conexión al Nivel de

Transferencia de Registros (RTL, Register-transfer level).

CLOCK

Nueva salida en cada flanco

Intermedio

Flancos

Entradas

10

11

• La frecuencia de reloj determina la velocidad del circuito.

• La lógica combinacional es temporizada.

• Ejemplos• Registros de

desplazamiento.• Maquinas de estado.• Unidades segmentadas.

Circuitos secuenciales

• El tiempo de respuesta en un circuito combinacional es variable.• Los registros ayudan a crear sistemas con una temporización

predecible.• Entre los diferentes bloques se crea una conexión al Nivel de

Transferencia de Registros (RTL, Register-transfer level).

CLOCK

Nueva salida en cada flanco

Intermedio

Flancos

Entradas

Entradas y salidas

• Un FPGA debe obtener datos del exterior y generar resultados en sus salidas.

Más de 100 pines I/O con velocidades de hasta 100 MHz.

12

Entradas y salidas

• Un FPGA debe obtener datos del exterior y generar resultados en sus salidas.

Más de 100 pines I/O con velocidades de 100 MHz o superiores.

SERIALIZADOR: I/O EspecialesTasas de transferencia ~ 10 Gbps

TRx Óptico

13

FPGA: Estructura general

14

TOP-5 FPGA Companies

By Jeff Johnson, FPGA Developerwww.fpgadeveloper.com

2016-12-27

15

Xilinx

• www.xilinx.com• Market share: 49%• The leader in FPGAs for

many years, Xilinx has a good range of FPGAs in terms of cost and performance.

16

Altera

• www.altera.com• Market share: 40% • T h e A l t e r a F P G A s

cover the low, mid and upper end markets with the Cyclone, Arria and S t r a t i x s e r i e s respectively.

17

Lattice Semiconductor• www.latticesemi.com• Market share: 6%• Lattice Semiconductor

tackles the low-power and low-cost market for FPGAs.

• They market their products as “high-value FPGAs” of the industry, providing best performance per cost.

• With the explosion in portable electronics, this has been a good strategy for Lattice.

18

Microsemi• www.microsemi.com• Market share: 4%• Microsemi specializes in low-

power and mixed-signal FPGAs. • Here are some of Microsemi’s

claims: 1. The industry’s lowest power

FPGA: the IGLOO.2. The industry’s only FPGA

w i t h h a r d 3 2 - b i t A R M Cortex-M3 microcontroller: the SmartFusion.

19

QuickLogic

• www.quicklogic.com• Market share: 1%• QuickLogic’s focus is on the

mob i le dev ices indus t ry meaning ultra-low power, small form factor packaging, and high design security.

• Rather than selling “FPGA”, they p i tch “customizable semi-conductors”.

20

Cómputo Reconfigurable

El FPGA Spartan 3E de

M. C. Felipe Santiago E.

Marzo - 2019

Spartan Series

• Spartan / XL• Spartan-II• Spartan-IIE• Spartan-3• Spartan-3E• Spartan-3A• Spartan-3A DSP

Primeras familias de FPGAs de

Virtex Series

Virtex / E / EM Virtex II Virtex II PRO / X Virtex - 4 Virtex - 5 Virtex - 6

23

Familias más recientes de FPGA's de Xilinx

- Esta generación de FPGAs está orientada a necesidades de alto volumen y bajo costo.

Generación Spartan-3

24

Spartan Family Gates I/Os Block RAM(Total)

Embedded Multipliers DCM Voltaje

Spartan-3A DSP 3.4 M 469 2, 268 Kb0

216 – DSPBlocks

8 3.3V - 1.2V

Spartan-3A 1.4 M 502 360 Kb 362- 18x18 8 3.3V - 1.2V

Spartan-3E 1.6M 376 648 Kb 36 - 18x18 8 3.3V - 1.2V

Spartan-3 5M 784 1872 Kb 104 - 18x18 4 3.3V - 1.2V

Spartan-IIE 600K 514 288 Kb – 4 3.3V - 1.5V

Spartan-II 200K 284 56 Kb – 4 3.3V - 1.5V

Spartan-XL 40K 224 25Kb – – 3.3V

Spartan-3E: Arquitectura

Está constituida por los siguientes elementos:

• CLBs (Configurable Logic Blocks).

• IOBs (Input/Output Blocks).

• Conjunto de conexiones programables.

• Bloques dedicados:

• Bloques RAM.

• Multiplicadores.

• Administradores de reloj digital (DCM).

25

Spartan-3E: Arquitectura

CLBs

26

Spartan-3E: CLB

27

Los CLBs (Configurable Logic Blocks) constituyen los principales recursos lógicos para implementar funciones combinacionales o secuenciales.

Un CLB contiene 4 slices

28

Diagrama simplificado de un Slice

flip-flopsLUTs

lógica de acarreo29

En un Slice se pueden implementar: Funciones lógicas. Funciones aritméticas. Funciones ROM.

Los Slices de la Izquiera (SLICEM) están acondicionados para dos funciones adicionales: Almacenamiento de datos como RAM distribuida. Desplazamiento de datos con registros de 16-bits.

30

Recursos de un slice:

Funciones lógicas en el FPGALas LUT's son pequeñas memorias que se desempeñan como Generadores de Funciones (FG: Function Generators).

31

Función a implementar Tabla de verdad LUT programada

• El retardo es constante.

Multiplexores

Son elementos dedicados a proveer interconexión entre slices y LUT's.

• MUXF5 Combina 2 LUTs para formar cualquier función de 5 variables

• MUXF6 Combina 2 slices para formar cualquier función de 6 variables

32

¿Cómo se implementa 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

33

Bloque de entrada / salida (IOB)

• Soportan un flujo bidireccional.

• Las salidas pueden configurarse como tri-state.

• Incluyen resistencias de pull-up y pull-down programables.

• Soportan varios estándares de señales (incluyendo señales

diferenciales).

• Incluyen registros tanto para las entradas como para las

salidas.

• Se tiene un Control Digital de Impedancia (DCI) para acoplar

con las líneas que llegan a la FPGA.

34

IOB Spartan-3EHay 3 rutas principales :

• Tercer estado• Salida• Entrada

35

Conexiones programables

• Líneas de propósito general.

• Líneas largas.

• Líneas directas.

• Lineas doble.

• Lineas HEX.

Tipos de líneas de interconexión:

Proporcionan distintas opciones para la interconexión de CLB's e IOB's de manera flexible y eficiente

36

Distribución de matrices de interruptores

37

38

Distribución de matrices de interruptores

Las líneas horizontales y verticales se enlazan a través de las matrices de interconexión (switch matrix)

Líneas de propósito general

39

Conexiones programables

Transistores de paso que unen dos segmentos de alambre.

Matriz de interconexión

Configuración

• Cada punto de interconexión está formado por 6 transistores.• Son interruptores programables.

40

Conexiones programables

• Son líneas que atraviesan el 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 como el reloj o señales de inicialización globales.

Líneas largas

41

Conexiones programables

• Son líneas de conexión directa entre bloques.

• Se utilizan para implementar redes entre los CLBs e IOBs a d y a c e n t e s , d e m a n e r a eficiente.

• Introducen retardos mínimos.

Líneas directas

42

Conexiones programables

43

Líneas dobles

Conexiones programables

Líneas HEX

Bloques RAM (Spartan-3E)

• Esta generación de FPGAs posee bloques de memoria que permiten crear RAMs , ROMs , FIFOs , LUTS gran d e s , b u f f e rs c i rc u la re s y re g is t ro s d e desplazamiento.

• Se encuentran cerca de los multipl icadores para acelerar la implementación de operaciones multiplicar-acumular.

• Cuando se utilizan las LUTs en vez de usar Bloques RAM, se dice que se hace uso de memoria distribuida.

44

Spartan-3: Ubicación de los Bloques RAM

45

Spartan-3E: Total de Bloques RAM

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

46

La capacidad de cada bloque es de 18 432 bits.

Modos de acceso

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

47

Primitivas

48

Modos de acceso

Configuración de cada bloque)

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

Spartan-3E: Multiplicador

• Cuenta con 20 mul t ip l icadores embebidos con

operandos de 18 bits para un resultado de 36 bits.

• Se encuentran al lado de los bloques de memoria.

50

Spartan-3E: Multiplicador

51

DCM (Digital Clock Manager)

• Elimina el desfase que se genera en el reloj por retardos en el

ruteo (skew). Asegura que el flanco (ascendente o descendente)

llegue 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 relojes con diferentes frecuencias, multiplicando

por M y dividiendo por N (siendo M = 2 a 32 y N = 1 a 32)

• Corrimiento de fase. Puede implementar desfases controlados

de la señal de reloj

Función

52

DCM (Digital Clock Manager)

53

DCM (Digital Clock Manager)

54

Diagrama funcional simplificado de la DLL

DCM (Digital Clock Manager)

55

DCM (Digital Clock Manager)

56

Resumen de Recursos en un Spartan-3E

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

La tabla muestra los diferentes recursos disponibles en una fpga Spartan-3E

57

Spartan-3E: Pines de Entrada / Salida

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”

58

Flujo de diseño

Diseño Captura Simulación Síntesis

Mapeo, ruteoy ubicación Simulación Generación

del bitstreamConfiguración

del FPGA

Diseño del circuito a implementar en el

FPGA

Codificaciónen HDL

Simulación delcódigo HDL

Transformación de la descripción a

elementos primitivos

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 al FPGA o una

memoria auxiliar

Generación del archivo de

configuración (.bit)

59

Herramientas a emplear

60

Active-HDL: Captura y simulación.

Herramientas a emplear

61

ISE Design Suite: Síntesis, implementación y generación del bitstream.

Herramientas a emplear

62

ADEPT: Descarga en el FPGA.

• FPGA XC3S500E (Spartan-3E).• Memoria Micron M45W8MW16,

PSDRAM de 16 MByte.• Memoria Flash de Intel de 16

MByte.• Oscilador de 50 MHz.• 75 terminales de E/S directas

del FPGA: Conector Hirose F X 2 c o n 4 3 s e ñ a l e s y 4 c o n e c t o r e s P m o d d e 8 señales).

• Periféricos para evaluación: 8 L E D s , 4 d i s p l a y s d e 7 segmen t os , 4 b o t o n e s , 8 interruptores deslizantes.

• Puertos: PS/2, VGA y RS232 para aplicaciones. USB para programación y alimentación.

63

Tarjeta de desarrollo Nexys 2

64

Tarjeta de desarrollo Nexys 2

Tarjeta de desarrollo Nexys 2

65

Tendencias

• Arquitecturas mixtas, or ientadas a apl icaciones de características diversas (lógica, procesadores soft/hard, DSP).

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

66