Introducción a las FPGA...•Hay aplicaciones en las cuales usar un microcontrolador no es...

46

Transcript of Introducción a las FPGA...•Hay aplicaciones en las cuales usar un microcontrolador no es...

2

Lógica Estándar

Compuertas lógicas, flip flop, decodificadores, disponibles en chips SSI y MSI.

No son una buena solución de diseños grandes.

Microprocesadores / DSP

• Enfoque distinto para diseño de sistemasdigitales. Poseen bloques funcionales prediseñados.

• Se controlan mediante un programa desoftware.

• Su desventaja es la velocidad, siempre serámas rápido utilizar una solución dehardware para su diseño.

ASICs

Circuitos Integrados de Aplicación Especifica.

Presentan una solución moderna de desarrollo de hardware

PLDs

Matrices Compuertas

Celda Estándar

Personalizados

PLD : Dispositivo Lógico Programable

Configurables para crear cualquiercircuito digital.

Inversión pequeña se puede realizar laadquisición de hardware y software parasu programación.

Matriz De Compuertas (MPGAs):

Son circuitos ULSI ofrecen cientos omiles de compuertas.

Poseen una mascara de diseñopersonalizado para la aplicaciónespecifica determina la conexión de lascompuertas.

El proceso de programación del chippor parte del fabricante es costoso yrequiere un plazo de producción largo.

Celda Estándar:

Constituidos por bloques fundamentales defunciones lógicas predefinidas (celdas).

Cada celda se diseña previamente y unabiblioteca de celdas disponibles se almacenaen una base de datos de computadora. Lasceldas necesarias se distribuyen para laaplicación deseada y se determinan lasinterconexiones entre celdas.

PERSONALIZADAS

Considerada como la ultima opción deASIC. Todos los componentes(transistores, resistencias, capacitancias), interconexiones entre ellos se elaborana medida por un diseñador de CI`s

Los PLD pueden clasificarse en tres tipos:

SPLD: Simple

CPLD: Complejos

FPGA: Matrices

En conjunto a los CPLD y FPGA se les conoce como elementos HCPLD (Dispositivos Lógicos Programables de alta Capacidad).

11

12

Qué es FPGA

• Siglas de Field Programmable Gate Array.

• Es un dispositivo reprogramable,que permite implementar diversos circuitos digitales en él.

• Basadas generalmente en memorias RAM.

13

Por qué usar las FPGA

• Hay aplicaciones en las cuales usar un microcontrolador no es suficiente, o usar una FPGA posee costos comparables (por ejemplo, codificar y decodificar en MPEG).

• Actualmente hay modelos que incluyen elementos adicionales en el mismo chip.

– La Virtex 4 de Xilinx posee uno o más PowerPC embebidos en el chip.

14

Otras formas de implementar circuitos digitales

• Directamente en silicio:

–ASIC

• Application-Specific Integrated Circuit: Circuito a medida. Alto costo fijo (NRE) de fabricación.

–Standard Cells

• Celdas de ancho fijo, en las cuales se implementan bloques lógicos.

EL693

Implementación de Sistemas

Digitales en FPGA

15

Otras formas de implementar circuitos digitales

• Programables:

–Microcontrolador

• Posee un set de instrucciones fijo.

–CPLD: Complex Programmable Logic Device.

• Basados en memorias FLASH.

• No son volátiles, pero son más lentos y menos densos que una FPGA.

16

Ventajas de las FPGA

• Son dispositivos reconfigurables.

• Bajo costo respecto a los ASIC.

• Los circuitos se “ejecutan” más rápido que en otros dispositivos reprogramables.

17

Ventajas de las FPGA

• Al ser circuitos digitales, la “ejecución” de cada bloque es en paralelo, no así en un microcontrolador.

• Son útiles para realizar prototipos que luego serán llevados a ASIC si es necesario.

18

Desventajas de las FPGA

• Al estar basadas en RAM, pierden su configuración al suprimir la energía (hay soluciones a ello).

• Poseen retardos de propagación mayores a los existentes en ASIC o standard cells

– Un procesador de alta velocidad (~GHz) se ejecuta mucho más rápido en ASIC que en una FPGA.

19

Fabricantes de FPGAs

• Xilinx

• Altera

• Atmel

• Actel

• Lattice Semiconductor

• Cypress Semiconductor

• Achronix Semiconductor

• QuickLogic (fuente: Wikipedia.org)

20

Arquitectura de una FPGA

• Una FPGA posee al menos 3 bloques:

– CLB: Configurable-logic blocks, donde se implementan los circuitos lógicos.

– IOB: Input-output block, donde se conectan las configuraciones internas con pines de entrada y salida.

– DCM: Digital Clock Managers, permiten entregar señales de reloj a toda la FPGA.

21

Arquitectura de una FPGA

• Una FPGA básica (Xilinx Corp.)

22

Arquitectura de una FPGA

• El elemento esencial es el slice. En él se pueden implementar tanto circuitos combinacionales como secuenciales.

• Antes de ver cómo es un slice por dentro, repasaremos algunos elementos y conceptos necesarios.

23

Elementos básicos

• Buffer tri-estado (TRI)

–Permite o impide el paso de datos de acuerdo a una señal de control.

in out

enable

Low-active

in out

enable

High-active

24

Elementos básicos

• Look-up Table (LUT)

–En esencia es una memoria RAM con valores predefinidos.

En los DSP de punto fijo se utilizan Look-up Tables para implementar funciones trigonométricas

LUT

n m

25

Elementos Básicos

• Flip-Flop (FF)

–Elemento que almacena un bit de acuerdo a una señal de reloj de entrada.

FF-D

d q

clk ~q

Los más utilizados son los Flip-flop tipo-D

26

Elementos Básicos

• Flip-Flop tipo D

27

Elementos Básicos

• Multiplexor

–Permite seleccionar una o más señales de entrada a partir de bits de selección

in_0in_1… out_1in_n …

out_pa_0…a_m

28

Elementos Básicos

Multiplexor 4 a 1

29

Elementos Básicos

• Demultiplexor / decodificador (DEMUX)

–Permite dirigir una señal de acuerdo a bits selección.

out_0out_1…out_n

in

a_0a_1…a_m

30

Elementos Básicos

• Demultiplexorde 4 canales

31

Conceptos básicos

• Open-collector / Open-drainLa salida no entrega un nivel lógico alto (tied-up), sino que sólo activa un transistor.

Inversor con salida open-collector

32

Conceptos básicos

• FanoutCuántas entradas de una familia lógica pueden conectarse a una misma salida.

… máx

máx

Ientrada

Isalidafanout

33

Conceptos básicos

• Niveles de voltajeUn 1 y 0 lógico se pueden representar de diversas maneras. Ejemplos:

– TTL 1 = 5V 0 = 0V

– LVTTL 1 = 3.3V 0 = 0V

– En I2C 1 = High-Z 0 = 0V

– USB usa voltajes diferenciales

34

Cómo es un slice

• Una slice es la base de las CLB

• En esencia es un bloque de look-up tables enlazadas con una salida que puede ser registrada (flip-flop) o directa, pudiendo implementarse diversas funciones lógicas.

• También hay implementaciones con multiplexores.

35

Cómo es un slice

36

37

Implementar funciones

• A continuación se muestra cómo se implementan físicamente funciones lógicas y combinacionales en un slice

• Estas y otras metodologías son utilizadas por las herramientas de diseño para FPGAs.

38

Implementar funciones

• Para implementar funciones combinacionales, se programan las tablas de verdad en las LUT y se usa la salida directa.

• Para implementar funciones secuenciales, se utiliza el flip-flop y se realimenta la salida secuencial en una de las entradas si es necesario.

39

Implementar funciones

• Implementar la operación XOR2

A B C D Y

0 0 X X 0

0 1 X X 1

1 0 X X 1

1 1 X X 0

Entradas(ABCD)

Salida

00XX 0

01XX 1

10XX 1

11XX 0

Tabla de Verdad LUT

40

Implementar funciones

• Implementar Flip Flop T en un bloque:

LUTFF-D

clk

Q

D

enablereset

reset enable Qk Qk+1

0 X X 0

1 0 Q Q

1 1 Q ~Q

41

Implementar funciones

• Implementar un contador de 4 bits síncrono

42

Implementar funciones• Se crea un bloque FF-T AND,

y luego varios de estosse interconectan.

Enn-1

clk

Reset

Qn-1

Enn (bloque 1)

Qn (bloque 2)

43

Implementar funciones

• Bloque 1: Tabla de verdad resumida

Reset enn-1 & Qn-1 Qn Dn

0 X X 0

1 0 0 0

1 0 1 1

1 1 0 1

1 1 1 0

LUTFF-D

clk

DqEnn-1

reset

Qn-1Qn

44

Implementar funciones

• Bloque 2

LUT EnnEnn-1

Qn-1

Enn = Qn-1 & Enn-1

45

Implementar funciones

• TAREA 1

–A partir de las CLB básicas vistas anteriormente, diseñe un sumador de 4 bits.

46

Implementar funciones

• Lo visto anteriormente sirve como muestra de cómo se implementan internamente las funciones.

• En la práctica se usan Lenguajes de Descripción de Hardware (HDL), como por ejemplo Verilog y VHDL.