FPGA based
LOGICHE HARDWARE PROGRAMMABILI
Componenti Elettronici
Application Specific
Integrated Circuit
ASICs
ASICs array based
1
2
Non è necessariamente
programmabile
Simple PLDs
b
c
Predefined link
Programmable link
N/A
&
SPLDs
N/A
&
CPLDs
N/A
&
Address 0
&
Address 3
&
Address 4
&
Address 5
&
Address 6
&
c
Predefined link
Programmable link
!a & !b & c
!a & b & !c
!a & b & c
a & !b & !c
a & !b & c
a & b & !c
x
&
&
&
&
&
a !a b !b c !c
Programmable
AND array
w
x
y
l
SPLD - PROM
l
w
&
l
a & b & c
l
Predefined AND array
b
l
&
a !a b !b c !c
a
!a & !b & !c
l
Address 7
y
Predefined link
Programmable link
&
Address 2
x
SPLD - PLA
Programmabilità
esclusivamente
Encoderdi
dellaDecoder
matrice
interconnessione
SPLD - PAL
&
Address 1
w
y
Predefined OR a rray
c
Programmable AND array
etc.
Program m able OR array
b
GALs
l
a
PALs
l
PLAs
l
PROMs
a !a b !b c !c
Programm able
OR array
a
PLDs
Complex PLDs
A causa dell'eccessivo
consumo di potenza e della
bassa velocità non posso
garantire il 100% di
connettività
Programmable
Interconnect
matrix
Input/output pins
SPLD-like
blocks
100 wires
Altera propose una
architettura con
connettività incompleta,
realizzata in tecnologia
CMOS con celle di
memoria EPROM.
Programmable
multiplexer
30 wires
PLDs v.s. ASICs
PLDs
SPLDs
CPLDs
Circuiti integrati
programmabili, versatili e
veloci da progettare e
realizzare, ma limitati a
funzioni relativamente
semplici.
ASICs
The
GAP
Gate Arrays
Structured ASICs*
Standard Cell
Full Custom
availableper
circaapplicazioni
early 1980s
Circuiti*Not
integrati
specifiche (ASIC), che permettono di
realizzare sistemi di grande
complessità, ma richiedono una fase
di progetto e realizzazione lunga e
costosa, e non sono riconfigurabili.
FPGA v.s. CPLD
La struttura base di FPGA e CPLD è simile: una matrice di blocchi logici
programmabili collegati da una griglia di interconnessioni, anch'esse programmabili. Le
principali differenze sono a livello architetturale e spesso sono abbastanza sfumate:
 Complessità: per i CPLD tipicamente varia da 1 Kgate a 100 Kgate, per le FPGA
dal 10 Kgate a 10 Mgate
 Granularità: nei CPLD si trova un numero ridotto (1  100) di blocchi logici
programmabili di tipo PLA e di dimensioni relativamente grandi (alcune decine di
ingressi), con un sistema di interconnessioni semplice; nelle FPGA si trova un numero
maggiore di blocchi logici (100  100K) di dimensioni ridotte (2  6 ingressi, 1 o 2
registri), con una griglia di interconnessioni molto complessa.
 Ritardi: nei CPLD i tempi di propagazione complessivi sono dominati dai blocchi
logici e il contributo delle interconnessioni può essere calcolato a priori abbastanza
accuratamente; nelle FPGA il contributo delle interconnessioni domina i tempi di
propagazione, e dipende fortemente dal piazzamento dei blocchi logici, per cui non
può essere stimato accuratamente a priori
 Meccanismo
di programmazione: nei CPLD più spesso è E2PROM oppure
FLASH, nelle FPGA SRAM o antifusibili
Field Programmable
Gate Array
FPGA
Programmable
interconnect
Programmable
logic blocks
• componenti proposti per la prima volta da Xilinx del 1984
• realizzati in tecnologia CMOS con memoria di configurazione SRAM
• architettura simile ai primi CPLD ma con un numero più elevato di blocchi logici
programmabili più semplici, immersi in una griglia di interconnessioni con matrici
di commutazione agli incroci
Esempio di blocco logico programmabile
• look-up table (LUT) per realizzare una qualsiasi funzione combinatoria a 35 ingressi
• possibilità di salvare il risultato in un registro
• ingresso ausiliario per combinare più funzioni logiche attraverso un MUX
a
b
c
3-input
LUT
?
y
mux
flip-flop
q
d
clock
Funzionamento di una LUT a SRAM
• i segnali di selezione del MUX diventano gli ingressi della funzione
• il contenuto delle celle SRAM determina la funzione logica realizzata dalla LUT
• riscrivendo il contenuto della SRAM si ottiene una nuova funzione logica
a
b
c
Truth table
&
|
y = (a & b) | !c
y
Programmed LUT
a b c
y
SRAM cells
0
0
0
0
1
1
1
1
1
0
1
1
1
0
1
1
1
0
1
1
1
0
1
1
0
0
1
1
0
0
1
1
0
1
0
1
0
1
0
1
000
001
010
011
100
101
110
8:1 Multiplexer
Required function
111
ab c
y
Moduli funzionali specifici
Le FPGA spesso
includono moduli
?
• sommatori funzionali specifici
• moltiplicatori
• unità MAC
• memorie RAM
• core di microprocessori
• interfaccie di I/O veloci
FPGA e CPLD: progetto
La fase di progetto di FPGA/CPLD è in buona parte simile a
quella di un ASIC



supportata da un linguaggio HDL e da strumenti CAD per la
simulazione e la sintesi
i passi del flusso di progettazione, dal concepimento dell'idea alla
derivazione dello schema circuitale a livello logico (rete di porte
logiche), sono gli stessi
le differenze riguardano essenzialmente il progetto a livello fisico:
un ASIC richiede il piazzamento delle celle di libreria e il loro
collegamento tramite connessioni create ad hoc; in un
FPGA/CPLD il piazzamento consiste nell'allocazione delle
risorse logiche disponibili sul componente e in una opportuna
configurazione della griglia di interconnessioni
FPGA/CPLD: programmazione del componente
Il risultato della fase di progetto è un insieme di bit di configurazione (configuration
stream), che viene caricato nel componente attraverso un dispositivo di
programmazione o semplicemente attraverso terminali dedicati sul componente stesso.
I bit di configurazione fissano lo stato (aperto/chiuso) degli interruttori che determinano
la funzione svolta dai blocchi programmabili e la topologia delle interconnessioni.
Unprogrammed
device
Programmed
device
(a) Host computer
(b) Device programmer
Xilinx Spartan-II - Architecture
?
Xilinx Spartan-II - CLB


Each CLB has two identical Slices.
Slice has two logic cells:



LUT 4 input
Carry logic
Registers
CLB
Xilinx Spartan-II - Slice
?
Slice
Xilinx Spartan-II - Slice details
DFF or Latch
Xilinx Spartan-II - expansion MUXs

MUXF5 combines 2 LUTs to create:




4×1 multiplexer
or any 5-input function (LUT5)
or selected functions up to 9 inputs
MUXF6 combines 2 slices to create:



8×1 multiplexer
or any 6-input function (LUT6)
or selected functions up to 19 inputs
a
b
c
d
0/1
0
a
b
c
d
0
Xilinx Spartan-II - distributed RAM
Each LUT can be configured as a …
Distributed RAM

16-bit shift register …

1 LUT = 16×1 bit RAM
cascade LUT to increment RAM size
Xilinx Spartan-II - interconnect
Types of interconnect:




Local
General-Purpose
Dedicated
I/O pin
Xilinx Spartan-II - types of interconnect
Xilinx Spartan-II - Details
Horizontal on-chip busses
Clock distribution
Scarica

Xilinx Spartan-II