Você está na página 1de 52

Diseño de Sistemas con

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

• El software que utilizamos en la primera parte es :


– ISE Design Suite 14.1 es el que está instalado en el
Labo 2
– La última versión es la 14.7. Luego se discontinuó.
– Sirve para trabajar con spartan6 (nexys3)

• Pueden bajar ISE Webpack directamente de xilinx, pues


es gratuita, ojo! Bajar el webpack, ya que la herramienta
completa (ISE Design Suite) NO es gratuita. (y pesa
mucho mas).
Hardware y Software

• El software que utilizamos para la segunda parte es :


– Vivado Design Suite 15.4 es el que está instalado en
el Labo 2, es la última versión y cada una de las
máquinas donde esta instalado tiene su licencia.
– Esta herramienta solo sirve a partir de las series 7 de
fpga de xilinx.
– Tambien hay un webpack free.
Cuestiones Administrativas

• La página de la materia es:


http://www.dc.uba.ar/materias/disfpga/2016/c1

• El material de la página se irá subiendo de clase


en clase, versiones anteriores en:
http://www.dc.uba.ar/materias/disfpga/2015/c1
Empecemos….
¿Donde estamos?

En el mundo de los
sistemas embebidos
Sistemas Embebidos

• El mundo está lleno de ellos.


• Se pueden definir como todo sistema
que NO es una PC de escritorio , ni
un servidor, ni una workstation, ni una
supercomputadora, ni un cluster
distribuido, en fin, NO es un sistema
programable de propósito general.
Sistema Embebido: ¿Que
significa?
 Small device, like a cell phone?
 Small processor installed in some other device, like a car?
 Software that controls a consumer device?
 Must have real-time response?

My favorite:
Any system where the user doesn’t want to know that it includes
a processor

Disertación de un consultor de la industria de embebidos, Doug Locke,


2004 Real-Time Embedded Technology and Applications Symposium:
Real-Time and Embedded Systems: Past, Present, and Future
Sistemas Embebidos
• El mercado de los productos embebidos es
enormemente mas grande que el mercado de las PC´s
que lidera Intel, por ejemplo.
• Jim Turley, asesor de la industria de los embebidos, dice
que aproximadamente el 0% de los microprocesadores
que se fabrican, se usan en el mercado de las PC de
escritorio. El 100% restante, se usan en el mercado de
los embebidos.
• En los últimos años, se vendieron alrededor de 500
millones de microprocesadores para el mercado de las
PC´s y 10 mil millones para el mercado de los
embebidos.
Embedded Processors by the
numbers, 1999.
• http://vault.embedded.com/1999/9905/9905turley.htm
• Es este artículo de Jim Turley, asesor de la
industria de los embebidos, escrito en el
año 1999, el decía:

About zero percent of the world's microprocessors are used in


computers. Yup. Every PC, Macintosh, engineering workstation, Cray
supercomputer, and all the other general-purpose computers put
together account for less than 1% of all the microprocessors sold
every year. If you round off the fractions, embedded systems
consume 100% of the worldwide production of microprocessors.
Sistemas Embebidos
• Son sistemas de hardware y software, de propósito
específico embebidos en algún producto del mercado.
Por ejemplo:
– Embebidos de la industria automotriz : navegador
GPS, de la aviación: control de aterrizaje automático
– Embebidos de la industria de las telecomunicaciones:
routers, modems
– Embebidos de la industria de las comunicaciones:
teléfonos celulares, palms, e-books
– Embebidos de la industria del hogar: control de
heladeras, microondas, robots
– Etc, pero muchos etcéteras.
El mundo de los embebidos
• Aplicaciones específicas
• Optimizadas en consumo y área.
• Se trabaja en hardware y en software
• Se programa en C , ensamblador y/o HDL
• ¡¡¡Costosísima la parte de verificación y
testing!!!
El mundo de los embebidos
• Mucha variedad en las implementaciones
• Si un ingeniero necesita desarrollar un
producto nuevo, puede elegir entre
diversas alternativas:
– Procesadores de propósito general, adaptados
para placas embebidas
– DSP (procesadores específicos para
procesamiento de señales)
– Microcontroladores
– ASIC´s
– FPGA´s
¿Que son los FPGA?
Field Programmable Gate Array
• Arreglos de Puertas Programables en
el Campo : (nunca mas lo traduzco)
– Circuitos Integrados que contienen
bloques configurables de lógica
junto con conexiones configurables
entre esos bloques. Programmable

– Para que se configuran? Para realizar interconnect

distintas tareas. Algunas FPGA Programmable


permiten ser programados una sola logic blocks

vez(OTP one time programmable), o


bien una y otra y otra vez…
– Donde se programan?Los FPGA se
programan “in the field”, o sea, no los
programa el fabricante, sino que lo
puede programar el desarrollador “en
su campo”, o sea, en su laboratorio. Si
un dispositivo puede ser programado
mientras está residente, o embebido
en un sistema mayor, se dice que es FPGA ASIC
ISP (In System Programmable)
– ¿Porqué Gate Array? Es el nombre de
un tipo de tecnología de fabricación de ISP OTP
los ASIC (Application Specific
Integrated Circuit)
Ross Freeman (1985)

• 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

PROMs PLAs PALs GALs etc.


PROMs (1970)
a b c
Predefined link
Programmable link  Solo es configurable la
!a & !b & !c matriz OR.
Address 0 &

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

Predefined AND array w x y


Implementación de una función
lógica combinacional

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

 Disponible a partir de 1975, se pueden programar los dos arrays.


 Se hicieron algunas variantes: arrays AND con arrays NOR. No mucho
éxito en el mercado
 Son útiles cuando diversas funciones usan o comparten términos
producto.
 Son mas lentas que las PROMS
Implementación con PLA
a b c
Predefined link
Programmable link

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

salidas triestado, salidas


registradas, etc. Además de
Programmable w x y tener un número mas grande
AND array
de entradas y salidas.
CPLD´s (vamos llegando)
• A finales de los 70, los
inventores de la PAL,
introducen el Mega-Pal,
Programmable
Interconnect dispositivo con 4 Standard
matrix
Pals interconectadas de
alguna manera. No funcionó.
Consumía mucho.
• 1984: Altera (nueva
empresa) introduce el CPLD
SPLD-like
Input/output pins blocks basado en tecnología CMOS
y EPROM.

• Las conexiones entre los bloques se programan mediante


la matriz de interconexión.
Proceso de Diseño
• ¿Como se diseñaba un circuito
usando PLD´s?
Se realizaba un esquemático o bien
un diagrama de estados, todo en
papel porque no existían las
herramientas que hoy
conocemos. Unprogrammed
El esquemático se convertía del device

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

EPROM SPLDs and CPLDs

E2PROM/ SPLDs and CPLDs


FLASH (some FPGAs)

SRAM SRAM FPGAs (some CPLDs)


Tecnologías de Programación
E2PROM /
Feature SRAM Antifuse
FLASH
One or more One or more
Technology node State-of-the-art
generations behind generations behind
Yes Yes (in-system
Reprogrammable No
(in system) or offline)
Reprogramming
3x slower
speed (inc. Fast ----
than SRAM
erasing)
Volatile (must
No
be programmed Yes No
(but can be if required)
on power-up)
Requires external
Yes No No
configuration file
Good for Yes Yes
No
prototyping (very good) (reasonable)

Instant-on No Yes Yes

Acceptable
IP Security (especially when using Very Good Very Good
bitstream encryption)

Size of Large Medium-small


Very small
configuration cell (six transistors) (two transistors)
Power
Medium Low Medium
consumption

Rad Hard No Yes Not really


FPGA

• Hacia 1980, es evidente que


hay un GAP entre el mundo
de los IC. PLDs ASICs
• Por un lado, los dispositivos
programables, muy sencillos
pero muy configurables. Por SPLDs
The Gate Arrays
el otro, los ASIC´s, GAP
soportando funciones CPLDs Structured ASICs*
complejas, pero muy caros,
y muy costosos en tiempo Standard Cell
de diseñar. Además, una vez
el diseño estaba hecho, Full Custom
quedaba congelado en el
silicio. *Not available circa early 1980s

• Para salvar ese GAP, Xilinx


lanza al mercado en 1984,
una nueva clase de IC:
FPGA.
FPGA

• 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

– Un registro (flip-flop clock enable


set/reset
(actúa por flanco de
reloj) o latch (actúa
por nivel, monitorea
siempre las entradas))
LUT´s de SRAM
• Cuando una arquitectura basada
16-bit SR
en LUT se implementa con celdas
16 x 1 RAM
de SRAM, las celdas, además de
4-input LUT
LUT´s, pueden ser utilizadas
como pequeños bloques de
memoria RAM (una LUT de 16
entradas por un bit, puede ser una
RAM de 16x1). Esto se denomina
RAM Distribuida. (Distributed
RAM)
• Como las celdas de SRAM están
encadenadas unas con otras (las From the previous
cell in the chain
celdas de SRAM de configuración, 1
pero también las de las LUT,s)
formando una larga cadena, 0
SRAM
cells
algunos fabricantes permiten que 0

las que forman las LUT´s sean 0

tratadas de forma independiente,


como un shift register. To the next cell
in the chain
Slice de Xilinx
• Dos LC forman un
Slice. Slice

• El slice comparte
Logic Cell (LC)
16-bit SR
16x1 RAM
4-input

algunas señales: LUT

– Clock LUT MUX REG

– Clock Enable 16-bit SR


16x1 RAM
Logic Cell (LC)

– Set/Reset
4-input
LUT

LUT MUX REG


CLB de Xilinx
Configurable logic block (CLB)
Slice Slice
• Un nivel mas arriba están los CLB CLB Logic cell Logic cell
CLB´s: Configurable Logic Block.
Logic cell Logic cell
Pueden tener dos o cuatro slices,
(o los que sean en el futuro) Slice Slice
• Un CLB corresponde a una “isla” CLB CLB Logic cell Logic cell
de lógica programable dentro del
Logic cell Logic cell
mar de las conexiones
programables.
• A la jerarquía de bloques, le COUT COUT
corresponde una jerarquía en las BUFT
BUF T
interconexiones. Es decir, hay una
muy rápida interconexión entre Slice S3
LC´s, un poco menos rápida entre
Slices y mas lenta entre CLB´s. Slice S2
Switch
• Local Routing comunica slices Matrix
SHIFT
dentro del CLB y con otros CLB´s
cercanos. Slice S1
• Una matriz de interconexión
provee acceso a recursos Slice S0 Local Routing
generales
CIN CIN
FPGA 1985
Familia Spartan 6
Digilent Nexys3
All Programable SoC
All Programable SoC
Zynq Board (ZyBO, de Digilent)

Você também pode gostar