Title: Dispositivi programmabili
1Dispositiviprogrammabili
2Dispositivi programmabili
- Sono dispositivi hardware (chip) che mettono a
disposizione elementi logici piu o meno
complessi che possono essere opportunamente
interconnessi secondo diverse configurazioni in
funzione delle specifiche di progetto - Dispongono di
- Componenti logici (porte logiche, Flip-Flop,
Buffer) - Linee di connessione
- Sistemi di inetrconnessione (Multiplexer,
connessioni) - Porte di I/O
- Tipologie di Circuiti Programmabili
- PLA, PAL, ROM.
- CPLD
- FPGA
3Dispositivi Programmabili
- I diversi dispositivi possono essere classificati
in base a diversi aspetti - Modalita di programmazione
- programmabili a maschera (MPGA)
- programmabili una volta (Fuse o Antifuse)
- riprogrammabili (EEPROM, SRAM)
- riconfigurabili (SRAM)
- Connessioni
- Globali
- Locali e distribuite
4Modalita di programmazione
- FUSE
- Le connessioni tra linee sono inizialmente tutte
attive - In fase di programmazione si disattivano
permanentemente le connessioni inutili - ANTIFUSE
- Le connessioni tra linee sono inizialmente tutte
inattive - In fase di programmazione si attivano
permanentemente le connessioni utili - EEPROM
- le connessioni inizialmente sono tutte inattive
- In fase di programmazione si possono attivare o
disattivare elettricamente in modo non
distruttivo - Lo stato viene mantenuto anche in assenza di
alimentazione
5Modalita di programmazione
- SRAM le connessioni inizialmente sono tutte
inattive - In fase di programmazione si possono attivare o
disattivare elettricamente in modo non
distruttivo - Lo stato NON viene mantenuto in assenza di
alimentazione - Maggiore velocita di programmazione rispetto la
tecnologia EEPROM - In base alla tecnologia la programmazione puo
avvenire - Durante la fase non operativa del dispositivo
(riprogrammabile) - Durante la fase operativa del dispositivo
(riconfigurabile) - Si interviene separatamente su varie parti del
dispositivo
6Fuse
- Le linee del dispositivo sono in origine tutte
connesse - La programmazione consiste nel BRUCIARE (fuse)
alcune connessioni in modo tale da mantenere solo
quelle necessarie - La programmazione avviene mediante una tensione
piu elevata di quella di normale funzionamento
7Antifuse
- Le linee del dispositivo sono in origine tutte
disconnesse - La programmazione consiste nel CREARE
(antifuse) le connessioni necessarie - La programmazione avviene mediante una tensione
piu elevata di quella di normale funzionamento
8EEPROM
- Le linee del dispositivo sono in origine tutte
disconnesse - La programmazione consiste nel DEPOSITARE una
carica sul gate flottante del transistor in modo
da mandarlo in conduzione - La cancellazione puo avvenire elettricamente o
tramite esposizione a raggi UV
9SRAM (RAM statica)
- Le linee del dispositivo sono in origine tutte
disconnesse - La programmazione consiste nel MEMORIZZARE un
valore logico (0 o 1) inu una cella di RAM
Statica
10Connessioni
- Connessione Globale
- Linea che attraversa buona parte del dispositivo
e condivisa da molti elementi logici - Elevati ritardi
- Puo essere pilotata da un solo elemento logico
(scarsa flessibilita) - Connessione locale
- Linea che attraversa una parte ridotta del
dispositivo ed e condivisa da pochi elementi - ritardi piu contenuti
- elevata flessibilita
11Connessioni
- Le connessioni globali sono caratteristiche dei
- Dispositivi logici a due livelli
- PAL, PLA, ROM
- CPLD (Complex Programmable Logic Device)
- Le connessioni locali sono caratteristiche degli
- FPGA (Field Programmable Gate Array)
12Logiche programmabili a 2 livelli
- Sono usate per realizzare funzioni logiche a due
livelli NOTA1 qualunque funzione combinatoria
puo essere espressa come somma di termini minimi - NOTA2 si possono realizzare funzioni a piu
livelli sfuttando la retroazione - Dispongono di
- Un numero di ingressi fissato (Buffer di
Ingresso) - Un piano di AND (per realizzare i termini minimi)
- Un piano di OR (per realizzare le somme)
- Un numero di uscite fissato (Buffer di Uscita)
13Logiche programmabili a due livelli
- Vi sono tre tipi principali
- PLA (Programmable Logic Array)
- Piano AND programmabile
- Implementa solo i termini minimi necessari
- Piano OR programmabile
- PAL (Programmable Array Logic)
- Piano AND programmabile
- Piano OR fissato
- Impone un vincolo sul numero di termini minimi
che la funzione contiene - ROM (Read Only Memory)
- Piano AND fissato
- Implementa tutti i possibili termini minimi
(DECODER) - Piano OR programmabile
14Programmable Logic Array (PLA)
- Consente di realizzare qualunque funzione logica
- Questa e espressa in somme di implicanti
15Programmable Logic Array (PLA)
- Schema logico di una PLA
- Esempio con 3 ingressi e due uscite (non
programmata)
16Programmable Logic Array (PLA)
- ESEMPIO1
- Realizzazione delle funzioni f1 ab ac
abc f2 ab ac abc - Prodotti p1 ab p2 ac p3 ac p4 abc
- Somme f1 p1 p3 p4 f2 p1 p2 p4
Formato PLA 11- 10 1-0 10 001 10 11- 01 1-1 01 00
1 01
17Programmable Logic Array (PLA)
18Programmable Logic Array (PLA)
19Programmable Logic Array (PLA)
20Programmable Logic Array (PLA)
21Programmable Array Logic (PAL)
- Piano di AND programmabile e piano OR fissato
- Consente di implementare somme di prodotti
- Vi puo essere un limite sul numero massimo di
prodotti che possono concorrere nella
realizzazione di una funzione
22Programmable Array Logic (PAL)
- Schema logico di una PAL
- Esempio di PAL a 3 ingressi e 2 uscite (non
programmata)
23Read Only Memory (ROM)
- Puo essere realizzata con un piano di AND fisso
e completo e con un piano di OR programmabile - In pratica implementa m funzioni a n ingressi
- ad una configuarzione dingresso (INDIRIZZO)
viene associata una configurazione duscita
(PAROLA) - Il piano AND agisce da DECODIFICATORE degli
indirizzi
24Read Only Memory (ROM)
- Piano AND (decodificatore degli indirizzi)
- realizza tutti i possibili termini minimi
- per ogni configurazione dingresso attiva una ed
una sola linea duscita
25Read Only Memory (ROM)
- Schema logico del piano AND
26Read Only Memory (ROM)
- Schema logico di una ROM
- Esempio di una ROM a 3 ingressi e 4 uscite (non
programmata)
27Read Only Memory (ROM)
- Esempio
- dalla tabella di verita della funzione a piu
uscite
28Read Only Memory (ROM)
- Realizzazione della funzione
29PLA e PAL avanzate
- PLA e PAL consentono di realizzare solo reti
combinatorie a due livelli - Questo limite puo essere superato
- Introducendo una rete di reazione
- permette di implementare reti combinatorie a piu
di due livelli - Introducendo elementi di memoria (Flip-Flop)
- permette di implementare macchine sequenziali
(sincrone)
30PLA e PAL avanzate
- Esempio di implementazione di una rete
combinatoria a piu livelli grazie alla
retroazione
31PLA e PAL avanzate
32PLA e PAL avanzate
- Laggiunta di elementi di memoria in uscita
possono ulteriormente ampliare le prestazioni del
dispositivo
33CPLD Complex Programmable Logic Device
- Sono la logica evoluzione di PAL e PLA
- Sono caratterizzati da
- Connessioni globali
- Logica Concentrata
- Rispetto PAL e PLA
- Sono piu complessi e hanno dimensioni maggiori
- Consentono di ottenere prestazioni piu elevate
34CPLD - XC9500 Architecture
3
In-System Programming Controller
JTAG Controller
5 volt in-system programmable (ISP) CPLDs 5 ns
pin-to-pin 36 to 288 macrocells (6400
gates) Industrys best pin-locking
architecture 10,000 program/erase cycles Complete
IEEE 1149.1 JTAG capability
JTAG Port
Function Block 1
I/O
I/O
Function Block 2
I/O
I/O Blocks
FastCONNECT Switch Matrix
I/O
Function Block 3
Global Clocks
3
Global Set/Reset
1
Function Block 4
Global Tri-States
2 or 4
35XC9500 Function Block
Each function block is like a 36V18 !
36Struttura XC9500
Struttura della macrocella
37Struttura XC9500
Struttura del product term allocator
38Struttura XC9500
Possibilita di collegamento offerte dal
product term allocator
39Struttura XC9500
Possibilita di collegamento offerte dal
product term allocator
40Struttura XC9500
Linee globali di clok, set, reset
41Struttura XC9500
Cella di I/O
42XC9500 Product Family
9536
9572
95108
95144
95216
95288
Macrocells
36
72
108
144
216
288
Usable Gates
800
1600
2400
3200
4800
6400
tPD (ns)
5
7.5
7.5
7.5
10
10
Registers
36
72
108
144
216
288
Max I/O
34
72
108
133
166
192
VQ44 PC44
PC44 PC84 TQ100 PQ100
PC84 TQ100 PQ100 PQ160
PQ100 PQ160
Packages
HQ208 BG352
PQ160 HQ208 BG352
43XC9500 - Q e A
Q E possibile realizzare tramite CPLD XC9500 la
seguente architettura?
44XC9500 - Q e A
Q E possibile realizzare tramite CPLD XC9500 la
seguente architettura?
A NO con una CPLD si possono realizzare solo
circuiti DIGITALI
45XC9500 - Q e A
Q E possibile realizzare tramite CPLD XC9500 la
seguente funzione, ossia un predeterminato
RITARDO asincrono ?
In
Out
RIT 20ns
46XC9500 - Q e A
Q E possibile realizzare tramite CPLD XC9500 la
seguente funzione, ossia un predeterminato
RITARDO asincrono ?
In
Out
RIT 20ns
A NO non vi e alcun modo o alcun elemento che
possa realizzare questa funzione.
Nota1 nei circuiti digitali il ritardo e una
conseguenza (indesiderata) della struttura stessa
del circuito e non un parametro da
soddisfare Nota2 Un elemento di ritardo e
tuttavia realizzabile in modo SINCRONO
47XC9500 - Q e A
Q E possibile realizzare tramite CPLD XC9500 la
seguente funzione logica (gli ingressi e le
uscite siano collegati direttamente ai pin di I/O
del dispositivo)?
48XC9500 - Q e A
Q E possibile realizzare tramite CPLD XC9500 la
seguente funzione logica (gli ingressi e le
uscite siano collegati direttamente ai pin di I/O
del dispositivo)?
A NO Non esiste alcun collegamento diretto tra
i pin e la logica interna, ma bisogna passare
attraverso ai buffer di I/O (il tool di sviluppo
corregge automaticamente questo tipo di errore)
49(No Transcript)
50XC9500 - Q e A
Q E possibile realizzare tramite CPLD XC9500 la
seguente funzione (una logica pilota altre
logiche struttando un bus tri-state)
Logic 2
Logic 3
Logic 1
51XC9500 - Q e A
Q E possibile realizzare tramite CPLD XC9500 la
seguente funzione (una logica pilota altre
logiche struttando un bus tri-state)
Logic 2
Logic 3
Logic 1
A NO ! Gli unici buffer tri-state del
dispositivo sono disponibili nei blocchi di I/O e
pertanto non possono essere usati per pilotare
logiche interne al dispositivo stesso! (un
eventuale loop dal pin di uscita dovrebbe passare
attraverso un buffer di ingresso che ne
annullerebbe leffetto
52FPGA Introduzione
- Le FPGA (Field Programmable Gate Array) sono
dispositivi programmabili costituiti da una
matrice di componenti logici collegabili tra loro
Complex Programmable Logic Device (CPLD)
Field-Programmable Gate Array (FPGA)
Architecture PAL/22V10-like Gate
array-like More Combinational More Registers
RAM Density Low-to-medium Medium-to-high
0.5-10K logic gates 1K to 3.2M system
gates Performance Predictable timing
Application dependent Up to 250 MHz today
Up to 200 MHz today Interconnect Crossbar
Switch Incremental
53FPGA
- Le FPGA mettono a disposizione dellutente
- Componenti logici (CLB - Slice) costituiti da
- logica, piccole memorie, flip-flop, buffer,
multiplexer. - Linee di connessione
- sia locali (corte) che distribuite (lunghe)
- Matrici di inter-connessione
- per collegare varie line tra loro e da queste ai
blocchi logigi - Blocchi di I/O
- particolari blocchi logici dedicati allI/O
provvedono Buffer, protezioni, Fan-out,
resistenze di pull-up e pull-down, adattatori
dimpedenza, - Blocchi particolari
- memorie, moltiplicatori, PLL, decodificatori,
54FPGA
- Pregi e difetti
- Estremamente versatili
- Elevata complessita computazionale
- Piu lente di CPLD e ASIC
- Costo elevato per singolo componente (ma esistono
famiglie particolarmente economiche) - Costo del prototipo ridotto
- Time to market molto ridotto
- Possibilita di upgrade del circuito (anche a
distanza) - Ottime per la realizzazione di prototipi, (ma si
usano sempre di piu anche negli elevati volumi
di fabbricazione) - Capacita di supportare sistemi interni (embedded
systems)
55XC4000 Architecture and Features
56XC4000 Architecture
Programmable Interconnect
I/O Blocks (IOBs)
Configurable Logic Blocks (CLBs)
57XC4000E/X Configurable Logic Blocks
- 2 Four-input function generators (Look Up Tables)
- - 16x1 RAM or
- Logic function
- 2 Registers
- - Each can be
- configured as Flip
- Flop or Latch
- - Independent
- clock polarity
- - Synchronous and
- asynchronous
- Set/Reset
58Look Up Tables
- Combinatorial Logic is stored in 16x1 SRAM Look
Up Tables (LUTs) in a CLB - Example
Look Up Table
4-bit address
4
(2 )
2
64K !
- Capacity is limited by number of inputs, not
complexity - Choose to use each function generator as 4 input
logic (LUT) or as high speed sync.dual port RAM
59XC4000X I/O Block Diagram
Shaded areas are not included in XC4000E family.
60Xilinx FPGA Routing
- 1) Fast Direct Interconnect - CLB to CLB
- 2) General Purpose Interconnect - Uses switch
matrix
3) Double Lines 4) Long Lines Segmented across
chip Global clocks, lowest skew 2 Tri-states per
CLB for busses
61Whats Really In that Chip?
Switch Matrix
Direct Interconnect (Green)
CLB (Red)
Long Lines (Purple)
62Spartan-II Architecture and Features
63XilinxYour Programmable Logic Solution
Features
Virtex-II
Spartan-IIE
FPGAs SRAM-based Feature Rich High Performance
FPGAs SRAM-based Feature Rich Low Cost
CPLDs Low Power
10K 600K 10M
Density (System Gates)
64Features
- Plentiful logic and memory resources
- 15K to 200K system gates (up to 5,292 logic
cells) - Up to 57 Kb block RAM storage
- Flexible I/O interfaces
- From 86 to 284 I/Os
- 16 signal standards
- Advanced 0.25/0.22um 6-Layer Metal Process
- High performance
- System frequency as high as 200 MHz
Advanced Clock Control with 4 Dedicated
DLLs Unlimited Re-programmability Fully PCI
Compliant
65Spartan-II Top-level Architecture
- Configurable logic blocks
- Implement logic here!
- I/O blocks
- Communicate with other chips
- Choose from 16 signal standards
- Block RAM
- On-chip memory for higher performance
66Spartan-II Top-level Architecture
- Clocks and delay locked loops
- Synchronize to clock on and off chip
- Rich interconnect resources
- Three-state internal buses
- Power down mode
- Lower quiescent power
67CLB Structure
- Each slice has 2 LUT-FF pairs with associated
carry logic - Two 3-state buffers (BUFT) associated with each
CLB, accessible by all CLB outputs
68CLB Slice (Simplified)
- 1 CLB holds 2 slices
- Each slice contains two sets of the following
- Four-input LUT
- Any 4-input logic function
- Or 16-bit x 1 RAM
- Or 16-bit shift register
69CLB Slice (contd)
- Each slice contains two sets of the following
- Carry control
- Fast arithmetic logic
- Multiplier logic
- Multiplexer logic
- Storage element
- Latch or flip-flop
- Set and reset
- True or inverted inputs
- Sync. or async. control
70Four-Input LUT
- Implements combinatorial logic
- Any 4-input logic function
- Cascaded for wide-input functions
Truth Table
71Distributed RAM
RAM16X1S
D
WE
WCLK
O
A0
- CLB LUT configurable as Distributed RAM
- A LUT equals 16x1 RAM
- Implements Single and Dual-Ports
- Cascade LUTs to increase RAM size
- Synchronous write
- Synchronous/Asynchronous read
- Accompanying flip-flops used for synchronous read
A1
A2
A3
RAM32X1S
D
WE
WCLK
O
A0
A1
A2
A3
A4
or
RAM16X1D
D
WE
WCLK
or
SPO
A0
A1
A2
A3
DPRA0
DPO
DPRA1
DPRA2
DPRA3
72Shift Register
- Each LUT can be configured as shift register
- Serial in, serial out
- Dynamically addressable delay up to 16 cycles
- For programmable pipeline
- Cascade for greater cycle delays
- Use CLB flip-flops to add depth
- Use for programmable clock delay
73Shift Register
- Register-rich FPGA
- Allows for addition of pipeline stages to
increase throughput - Data paths must be balanced to keep desired
functionality
74Shift Register
- LUT as shift register
- Used to add pipeline stages
- Increase overall register count
- 16 bit shift register per LUT
- 64 bit shift register per CLB
75CLB Arithmetic Logic
- Dedicated carry logic
- Provides high performance for counters
arithmetic functions - Discrete XOR component for single level sum
completion - Two separate carry chains in CLB allow for 3
operand functions - Can also be used to cascade LUTs for wide-input
logic functions
763 Operand Adder Function
- A, B, C are two-bits wide
- SUM A B C or PARTIAL C, where PARTIAL A
B - Implementation
- First 2-operand sum AB is performed in Slice 0
- Second 2-operand sum PARTIAL C is performed
in Slice 1 - Fast local feedback connection within the CLB
- Very small delay for on PARTIAL
77Dedicated Expansion Multiplexers
- MUXF5 combines 2 LUTs to form
- 4x1 multiplexer
- Or any 5-input function
- MUXF6 combines 2 slices to form
- 8x1 multiplexer
- Or any 6-input function
78Memory Bandwidth and Flexibility
- Spartan-II on-chip SelectRAMTM memory
Large FIFOs Packet Buffers Video Line
Buffers Cache Tag Memory Deep/Wide
4Kx1 2Kx2 1Kx4 512x8 256x16
Block RAM
kilobytes
200 MHz Memory Continuum
Highest performance FPGA memory system
79Block RAM Provides 4K Bits Each
- Dual read/write ports, each with
- Independent clock, R/W, and enable
- Independently configurable data width from 4Kx1
to 256x16
Data Flow Spartan-II A to B Yes B to
A Yes A to A Yes B to B
Yes
80Local Routing
Local Routing
- Interconnect among LUTs, FFs, GRM
- CLB feedback path for connections to LUTs in same
CLB - Direct path between horizontally adjacent CLBs
81General Purpose Routing
INTERNAL BUSSES
Internal 3-state Bus
Long lines and Global lines
Buffered Hex lines
Single-length lines
DIRECT CONNECTION
Direct connections
- 24 single-length lines
- Route GRM signals to adjacent GRMs in 4
directions - 96 buffered hex lines
- Route GRM signals to another GRMs six blocks away
in each of the four directions - 12 buffered Long lines
- Routing across top and bottom, left and right
82Internal Three-state Buses
83Routing Summary
- Vector-based routing
- Predictable routing delays independent of device
size and routing direction - Core-friendly architecture
- Quick Place and Route times
- Design to system at 100,000 gates per minute
- Easier re-routing
- Internal 3-state bussing
- Eliminates bus routing contention
- Improves density and performance
84Clock distribution Nets
- High speed
- Low skew
- 4 distribution nets
- 4 dedicated input PADS
- 4 dedicated Global buffers with inputs or
- from clock pad
- from internal signal
85System Clock Management
Mirror clock for board distribution
DLL1
DLL2
De-skew clocks
4 low-skew global clocks
System Clocks
Convert clock to different I/O standards using
SelectI/O
DLL3
DLL4
Multiply Divide Shift
Delay Lock Loops (DLLs) Lower Board Costs
86DLL Capabilities
- Easy clock duplication
- System clock distribution
- Cleans and reconditions incoming clock
- Quick and easy frequency adjustment
- Single crystal easily generates multiple clocks
- Faster state machine utilizing different clock
phases - Excellent for advance memory types
- De-skew incoming clock
- Generate fast setup and hold time or fast
clock-to-outs
87Generic DLL Operation
- A DLL inserts delay on the clock net until the
clock input rising edge is in phase with the
clock feedback rising edge - Requires a well-designed clock distribution
network the clock edges arrive simultaneously
everywhere in the part
88Delay-locked Loop Functions
- Eliminate clock distribution delay
- System synchronization (e.g., clock mirrors)
- Phase-shifted clocks
- Clock multiplication and division
- Clean up clocks with 50/50 duty cycle correction
- Clock lock for internal external
synchronization - DLL feedback connected internally or externally
- Can synchronize configuration to DLL lock
89Improved Clock-to-out Using DLL
- Spartan-II clock-to-out delays reduced over 50
Output standard LVTTL Fast 16mA (OBUF_F_16) Temp
room, Vdd2.5V, Vcco3.3V Waveforms 1
CLKIN 2 DATA OUT (no DLL) 3 DATA OUT (DLL
deskewed) Timing w/o DLL w/ DLL r-gtr
r-gtf r-gtr r-gtf 3.6n 3.5n 1.4n 1.4n
90DLL Macros
- Two DLL versions available
- Controlled by macro choice
- CLKDLL (low frequency)
- Input frequency 25 MHz to 100 MHz
- All 6 outputs available
- CLK0, CLK90, CLK180, CLK270, CLK2X CLKDV
- CLKDLLHF (high frequency)
- Input frequency 60 MHz to 200 MHz
- 3 outputs available
- CLK0, CLK180 CLKDV
91I/O Block (Simplified)
- Registered input, output, 3-state control
- Programmable slew rate, pull-up, pull-down,
keeper and input delay
92IOBs Organized As Independent Banks
- As many as eight banks on a device
- Package dependent
- Each bank can be assigned any of the 16 signal
standards
93Programmable Output Driver
Simultaneous Switching Output Guidelines
- Significant EMI reduction benefit
- Programmable driver strength
- Pull-up and Pull-down drivers can be individually
controlled - 16 different setting for each
- 2 slew rate settings
94System Interfaces -- SelectI/O
19 Different Standards Supported!
- Supports multiple voltage and signal standards
simultaneously - Eliminate costly bus transceivers
95SelectI/OTM Standards
- VCCO defines output voltage
- VREF defines input threshold reference voltage
- Available as user I/O when using internal
reference
96Spartan-II As Center for Signal Translation
Chip to Chip LVTTL, LVCMOS Chip to
Memory SSTL2-I, SSTL2-II, SSTL3-I, SSTL3-II,
HSTL-I, HSTL-III, HSTL-IV, CTT Chip to
Backplane PCI33-5V, PCI33-3.3V, GTL, GTL, AGP
Allows support for future standards!
97Partial Reconfiguration
- Frame by frame reconfiguration supported while
device is running - Routing changes affect device operation
- Re-initializing a block RAM requires stopping all
access in that column - Can dynamically load the required logic at a
given time - Minimizes cost further by time-multiplexing the
logic resources
98Power-down Mode
- Controlled by single power down pin
- All inputs blocked, appear low internally
- All outputs disabled
- All register states preserved
- Power-down status pin
- Synchronous wake up
- 100 uA typical
99Configuration Modes
There are four ways to program a Spartan-II FPGA
100Spartan-II Family Overview
101Spartan-II Architecture Summary
- Delivers all the key requirements for ASIC
replacement - 200,000 gates
- 200 MHz
- Flexible I/O interfaces
- On-chip distributed and block RAM
- Clock management
- Low power
- Complete development system support