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 35 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