2. EL693
Implementación de Sistemas
Digitales en FPGA
2
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.
3. EL693
Implementación de Sistemas
Digitales en FPGA
3
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.
4. EL693
Implementación de Sistemas
Digitales en FPGA
4
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.
5. EL693
Implementación de Sistemas
Digitales en FPGA
5
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.
6. EL693
Implementación de Sistemas
Digitales en FPGA
6
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.
7. EL693
Implementación de Sistemas
Digitales en FPGA
7
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.
8. EL693
Implementación de Sistemas
Digitales en FPGA
8
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.
9. EL693
Implementación de Sistemas
Digitales en FPGA
9
Fabricantes de FPGAs
• Xilinx
• Altera
• Atmel
• Actel
• Lattice Semiconductor
• Cypress Semiconductor
• Achronix Semiconductor
• QuickLogic (fuente: Wikipedia.org)
10. EL693
Implementación de Sistemas
Digitales en FPGA
10
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.
12. EL693
Implementación de Sistemas
Digitales en FPGA
12
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.
13. EL693
Implementación de Sistemas
Digitales en FPGA
13
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
14. EL693
Implementación de Sistemas
Digitales en FPGA
14
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
15. EL693
Implementación de Sistemas
Digitales en FPGA
15
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
17. EL693
Implementación de Sistemas
Digitales en FPGA
17
Elementos Básicos
• Multiplexor
– Permite seleccionar una o más
señales de entrada a partir de bits
de selección
in_0
in_1
… out_1
in_n …
out_p
a_0
…
a_m
19. EL693
Implementación de Sistemas
Digitales en FPGA
19
Elementos Básicos
• Demultiplexor / decodificador
(DEMUX)
– Permite dirigir una señal de acuerdo
a bits selección.
out_0
out_1
…
out_n
in
a_0
a_1
…
a_m
21. EL693
Implementación de Sistemas
Digitales en FPGA
21
Conceptos básicos
• Open-collector / Open-drain
La salida no entrega un nivel lógico
alto (tied-up), sino que sólo activa
un transistor.
Inversor con salida
open-collector
22. EL693
Implementación de Sistemas
Digitales en FPGA
22
Conceptos básicos
• Fanout
Cuántas entradas de una familia
lógica pueden conectarse a una
misma salida.
… máx
máx
Ientrada
Isalida
fanout
23. EL693
Implementación de Sistemas
Digitales en FPGA
23
Conceptos básicos
• Niveles de voltaje
Un 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
24. EL693
Implementación de Sistemas
Digitales en FPGA
24
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.
26. EL693
Implementación de Sistemas
Digitales en FPGA
26
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.
27. EL693
Implementación de Sistemas
Digitales en FPGA
27
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.
28. EL693
Implementación de Sistemas
Digitales en FPGA
28
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
29. EL693
Implementación de Sistemas
Digitales en FPGA
29
Implementar funciones
• Implementar Flip Flop T en un bloque:
LUT
FF-D
clk
Q
D
enable
reset
reset enable Qk Qk+1
0 X X 0
1 0 Q Q
1 1 Q ~Q
31. EL693
Implementación de Sistemas
Digitales en FPGA
31
Implementar funciones
• Se crea un bloque FF-T AND,
y luego varios de estos
se interconectan.
Enn-1
clk
Reset
Qn-1
Enn (bloque 1)
Qn (bloque 2)
32. EL693
Implementación de Sistemas
Digitales en FPGA
32
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
LUT
FF-D
clk
Dq
Enn-1
reset
Qn-1
Qn
35. EL693
Implementación de Sistemas
Digitales en FPGA
35
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.