230 likes | 352 Views
LOGICHE HARDWARE PROGRAMMABILI. FPGA based. Componenti Elettronici. A pplication S pecific. ASICs. I ntegrated C ircuit. ASIC s array based. 1. 2. Non è necessariamente programmabile. PLDs. a. b. c. Predefined link. Programmable link. N/A. SPLDs. CPLDs. e. &. l. a. b. c.
E N D
LOGICHE HARDWARE PROGRAMMABILI FPGA based
Application Specific ASICs Integrated Circuit
ASICsarray based 1 2 Non è necessariamente programmabile
PLDs a b c Predefined link Programmable link N/A SPLDs CPLDs e & l a b c b y Predefined link a N/A a & m r r Programmable link m a N/A a R r & g O o !a & !b & !c r a !a b !b c !c l l l Address 0 & P !a & !b & c PROMs PLAs PALs GALs etc. Address 1 & y Programmable AND array a w x y !a & b & !c r r Address 2 & a !a & b & c R Address 3 & O e a & !b & !c l b Address 4 & a a b c m Predefined link a & !b & c m Address 5 & Programmable link a r a & b & !c g Address 6 o & r P & a & b & c Address 7 & y & a a !a b !b c !c r r l l l a & R O & d Predefined AND array e w x y n i f & e d e r & P a !a b !b c !c l l l Programmable w x y AND array Simple PLDs Programmabilità esclusivamente della matrice di interconnessione SPLD - PLA Decoder Encoder SPLD - PAL SPLD - PROM
Programmable Interconnect matrix SPLD-like Input/output pins blocks 100 wires Programmable multiplexer 30 wires Complex PLDs A causa dell'eccessivo consumo di potenza e della bassa velocità non posso garantire il 100% di connettività Altera propose una architettura con connettività incompleta, realizzata in tecnologia CMOS con celle di memoria EPROM.
PLDsv.s. ASICs Circuiti integrati programmabili, versatili e veloci da progettare e realizzare, ma limitati a funzioni relativamente semplici. Circuiti integrati per applicazioni 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
FPGA Programmable interconnect Programmable logic blocks Field Programmable Gate Array • 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
a 3-input b y ? LUT mux c flip-flop q d clock Esempio di blocco logico programmabile • look-up table (LUT) per realizzare una qualsiasi funzione combinatoria a 35 ingressi • possibilità di salvare il risultato in un registro • ingresso ausiliario per combinare più funzioni logiche attraverso un MUX
Required function Truth table Programmed LUT a a b c y SRAM cells & b 1 000 0 0 0 1 r 0 e 001 0 0 1 0 | y x 1 c e 010 0 1 0 1 l p 1 i 011 0 1 1 1 t y l u y = (a & b) | !c 1 100 1 0 0 1 M 0 101 1 0 1 0 1 : 1 8 110 1 1 0 1 1 111 1 1 1 1 a b c 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
? Moduli funzionali specifici Le FPGA spesso includono moduli funzionali specifici • sommatori • 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
Unprogrammed device Programmed device (a) Host computer (b) Device programmer FPGA/CPLD: programmazione del componente Il risultato della fase di progetto è un insieme di bit di configurazione (configurationstream), 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.
? 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
? Slice Xilinx Spartan-II - Slice
Xilinx Spartan-II- Slice details DFF or Latch
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 0 / 1 0 0 0 a a b b c c d d Xilinx Spartan-II- expansion MUXs
Distributed RAM 1 LUT = 16×1 bit RAM cascade LUT to increment RAM size Xilinx Spartan-II-distributed RAM Each LUT can be configured as a … • 16-bit shift register …
Xilinx Spartan-II-interconnect • Types of interconnect: • Local • General-Purpose • Dedicated • I/O pin
Xilinx Spartan-II-Details Horizontal on-chip busses Clock distribution