Escolar Documentos
Profissional Documentos
Cultura Documentos
FPGA
Patricia Borensztejn
Primer Cuatrimestre 2016
Objetivo del curso
• Adquirir conocimientos de la arquitectura
de las FPGA actuales
• Aprender a utilizar las herramientas de
programación y realizar proyectos
sencillos “que anden”
– Proyecto Combinacional
– Proyecto Secuencial
– Proyecto E/S
– Proyecto Co Diseño
Temario y Planificación
• Parte I: 15 clases (45 hrs)
– Introducción a ISE o PlanAhead de Xilinx (2)
– Combinacionales (2)
– Secuenciales (5)
– Trabajo Final Parte I: Integrador con E/S Nexys3 (5 +
1)
• Parte II: 15 clases (45 hrs)
– Introducción a Vivado de Xilinx (1)
– Diseño con Zybo: ARM (2)
– Diseño con Zybo: procesador + lógica (5)
– Trabajo Final Parte II: Co Diseño con Zybo (6 + 1)
• Total: 30 clases
Temario y Planificación
• Anotar:
– 6 de Mayo: primera entrega
– 1 de julio: segunda entrega
• ¡No faltar! La materia se aprueba en clase!
Calendario Primero 2016
Marzo M V Junio M V
16 18 1 3
23 25 8 10
30 15 17
Abril 22 24
1 29
6 8 julio
13 15 1
20 22
27 29
Mayo
4 6
11 13
18 20
25 27
Bibliografía del curso (la que yo
uso…)
• FPGA Prototyping by Verilog Examples. Pong P. Chu.
Wiley InterScience. (Verilog e ISE)
• FPGA-Based System Design. Wayne Wolf (tecnología)
• The Design Warrior´s Guide for FPGAs. Clive Maxfield
(arquitecturas)
• Digital Arithmetic. Ercegovac, y Thomas Lang (algoritmos
aritméticos)
• Synthesis of Arithmetic Circuits. Deschamps, Gioul, and
Sutter. (algoritmos y codificación en VHDL para FPGA)
• Writing Testbenches: Functional Verification of HDL
Models. Janick Bergeron. Kluwer Academic Publishers.
• Hojas de Datos…. (de FPGA´s…)
• ….. Y todo lo que ustedes encuentren en la web (que es
mucho)
Hardware y Software
• La cátedra cuenta con las siguientes placas de desarrollo:
• Spartan-3E Starter Kit donada por XUP (Xilinx University Program) (3)
• Spartan-3 Starter Board (Digilent) donada por XUP (1)
• Xilinx Spartan-3A EVALUATION KIT (Avnet) (propio)
• Virtex-II Pro Development System (donada por Xilinx University Program) (esta
discontinuada)
• Virtex4 FX12 Evaluation Board (Avnet) con Audio/Visual Card (Avnet) (Propiedad
del Grupo de Investigación: Embebidos)
• Virtex-5 OpenSPARC Evaluation Platform (Donación de University Program
OpenSparc)
• Nexys-2 comprada con subsidio UBACYT (2011-2013) (1)
• Atlys comprada con subsidio UBACYT (2011-2013) (1)
• Nexys-3 comprada con subsidio UBACYT (2011-2013) (4)
• Nexys-4 comprada con subsidio UBACYT (2011-2013) (1)
• Zybo comprada con subsidio UBACYT (2014-2016) (4)
Hardware y Software
• Xilinx ha migrado… tanto el hardware como el software.
• En hardware esta migrando a lo que se llama ALL
PROGRAMMABLE SoC que son procesadores
(programables) mezclados con lógica (programable). Las
FPGA a las que se esta migrando se llaman Zync.
• En software se está migrando a la nueva herramienta
llamada VIVADO.
• Nosotros usamos ISE, version 14.7 pero xilinx ya dejó de
mejorar ISE en octubre de 2013.
• Otra cosa que sucedió, creo que hace poco, es que en
las versiones gratuitas (webpack) ahora podemos tener
acceso al procesador (microblaze)
Hardware y Software
En el mundo de los
sistemas embebidos
Sistemas Embebidos
My favorite:
Any system where the user doesn’t want to know that it includes
a processor
• Patente US 4870302:
– Configurable electrical circuit having configurable logic elements
and configurable interconnects
Ross Freeman
Ross Freeman fue el inventor de las FPGA y co fundador de Xilinx, junto con
Bernard Vonderschmitt. Esto sucedió en el año 1985. Freeman era un
ingeniero y trabajaba en circuitos integrados en Zilog, además era vice
presidente de esa companía y gerente general. Todo en uno.
Zilog , que era subsidiaria de Exxon Corporation había sido fundada, nada mas
y nada menos que por Federico Fagin (FF) en 1974 conocido por haber dejado
su firma en el primer microprocesador de Intel , el 4004. El producto mas
conocido de Zilog fue el Z80 que FF logró que sea incorporado a las
videoconsolas como el Sega, Game Boy, etc. Pero eso es otra historia.
Mientras trabajaba en Zilog, Freeman pergenia la idea de diseñar un chip de
computadora que funcionara como una cinta en blanco, permitiendo al
usuario programar ese chip en vez de tener que comprarlo ya hecho. Había
que convencer a Exxon de que les dejaran fabricar ese chip en blanco. Y
Freeman no lo logró. Asi que, simplemente, dejó todo y se fué. Patentó su
linda idea y fundó Xilinx.
•
Origen
• Dispositivos Lógicos Programables
– PLD
– PLA
– ROM
– PAL
– Variantes todas de array programables de
puertas AND y OR
PLDs
SPLDs CPLDs
Address 1 &
!a & !b & c Útiles para ecuaciones con
pocas entradas y muchos
Programmable OR array
!a & b & !c
Address 2 &
!a & b & c términos producto.
Address 3 &
a & !b & !c Quiere decir
Address 4 &
a & !b & c Programmable Read Only
Address 5 &
a & b & !c
Memory
Address 6 &
a & b & c
Address 7 &
a !a b !b c !c
l
a b c w x y
a
& w 0 0 0 0 1 0
b 0 0 1 0 1 1
0 1 0 0 1 0
x
0 1 1 0 1 1
1 0 0 0 1 0
1 0 1 0 1 1
^ y 1 1 0 1 0 1
c
1 1 1 1 0 0
Implementación con PROM
a b c
Predefined link
Programmable link
!a & !b & !c
Address 0 &
!a & !b & c
Address 1 &
Programmable OR array
!a & b & !c
Address 2 &
!a & b & c
Address 3 &
a & !b & !c
Address 4 &
a & !b & c
Address 5 &
a & b & !c
Address 6 &
a & b & c
Address 7 &
a !a b !b c !c
l
Predefined AND array w x y
w = (a & b)
x = !(a & b)
y = (a & b) ^ c
PLA (Programmable Logic Array)
a b c
Predefined link
Programmable link
N/A
&
Programmable
N/A
OR array
&
N/A
&
a !a b !b c !c
l
Predefined
Programmable AND array
w x y
a & b & c
&
Programmable
a & c
OR array
&
!b & !c
&
a !a b !b c !c
l
Predefined AND array w x y
w = (a & c) | (!b & !c)
x = (a & b & c) | (!b & !c)
y = (a & b & c)
PAL (Programmable Array Logic)
a b c
Predefined link Al revés de las PROM, la parte
Programmable link programable es la matriz AND
Las GAL (Generic Array Logic)
&
son variaciones de las PAL,
Predefined OR array
& mas sofisticados (EE)
&
&
Todos estos dispositivos,
& aparecen en el mercado con
&
una variedad de opciones:
inversión de las salidas,
a !a b !b c !c
l
Programmed
papel a una tabla (con un formato device
especial, requerido por el
dispositivo programador). Esta
tabla indicaba que conexiones se
debían programar. La tabla se
tipeaba en un computadora y se
bajaba luego al dispositivo (a) Host computer (b) Device programmer
programador.
Cada vendedor de PLD´s,
obviamente, había desarrollado
su propio formato para el archivo,
que solo servía para sus
dispositivos.
Ensambladores y Herramientas de
Diseño
• 1980: JEDEC (Joint Electron Device Engineering Council) propone
un formato standard para los archivos de configuracion de los
PLD´s.
• John Birkner, creador de las PAL, crea PALASM el primer
ensamblador para PAL. Es un primitivo HDL (Hardware Description
Languaje) y además una aplicación software. Es usado para
trasladar expresiones booleanas y grafos de estados a una tabla
para PAL. PALASM solo es para PAL´s fabricadas por MMI
(Monolithic Memories Inc). No realiza minimizaciones o
optimaciones.
• 1983: ABEL (Advanced Boolean Expression Languaje ) y CUPL
(Common Universal tool for Programmable Logic). Ambas
herramientas trabajan con diversos tipos de PLD´s y de fabricantes.
• Estas herramientas y HDL son las precursoras de VHDL y Verilog,
lenguajes HDL de alto nivel y herramientas que son usadas hoy
para los ASIC´s y FPGA.
PALASM
PALASM
TITLE Example
PATTERN Simple
REVISION A
opcional AUTHOR ECEN 220
COMPANY BYU
DATE March 1, 1995
CHIP Example PAL2OL8
;PINS
; 1 2 3 4 5 6 7 8 9 10 11 12
obligado B A C D NC NC NC NC NC NC NC GND
; 13 14 15 16 17 18 19 20 21 22 23 24
NC NC NC NC NC NC NC NC Z /X NC VCC
EQUATIONS
Equaciones booleanas X=/A*B + A*B + A*/B + /A*/B*C
Z=/A*B + A*B + A*/B + /A*/B*C
SIMULATION
•Trace define que TRACE-ON A B C /X Z
señales mostrará el SETF /A /B /C
SETF /A /B C
simulador. SETF /A B /C
•SETF define el valor SETF /A B C
SETF A /B /C
de las variables en SETF A /B C
cada simulación. SETF A B /C
SETF A B C
TRACE-OFF
PAL20L8
• Entradas (20) :
1..11; 13-14; 16..23
• Salidas (8): 15..22
• Algunas salidas
(16..22) son
triestado. Es decir,
pueden ser
configuradas tanto
como entradas
como salidas.
• Todas las salidas
son negadas.
• Pin 12 es ground,
Pin 24 es Vcc.
Tecnologías de Programación
Predominantly
Technology Symbol
associated with ...
Fusible-link SPLDs
Antifuse FPGAs
Acceptable
IP Security (especially when using Very Good Very Good
bitstream encryption)
• Basados en el concepto de
bloque lógico programable,
que contiene una LUT, un a
registro y un multiplexor. 3-input
b y
• Cada FPGA contendrá un LUT
c mux
número grande de estos flip-flop
bloques.
q
• Utilizando SRAM todos los d
bloques se pueden
programar para que realicen clock
una función diferente.
FPGA
Required function Truth table Programmed LUT
a a b c y SRAM cells
&
b 1 000
0 0 0 1
8:1 Multiplexer
0 0 1 0 0 001
| y
c 0 1 0 1 1 010
0 1 1 1 1 011
y
y = (a & b) | !c 1 0 0 1 1 100
1 0 1 0 0 101
1 1 0 1 1 110
1 1 1 1 1 111
abc
Bloques Básicos de Xilinx
• Se llama Logic Cell
(LC) y está
compuesto
(básicamente) por: 16-bit SR
16x1 RAM
a 4-input
– Una LUT de 4 b
c
LUT
y
entradas d
mux
flip-flop
q
– Un multiplexor e
clock
• El slice comparte
Logic Cell (LC)
16-bit SR
16x1 RAM
4-input
– Set/Reset
4-input
LUT