Field programmable Gate array

Похожие документы
Tecniche di Progettazione Digitale Logiche programmabili; standard cells; generazione automatica del layout: algoritmi di partitioning p.

METODOLOGIE PROGETTUALI CMOS

Dispositivi logici programmabili (PLD)

Dispositivi Logici Programmabili

Sistemi logici complessi

Generazione di Impulsi Digitali. Antonio Affinito

Moduli combinatori Barbara Masucci

GLOSSARIO. ABEL Advanced Boolean Expression Language. Linguaggio di progettazione per logiche programmabili.

Cos è il VHDL. Il VHDL è un linguaggio standard per la descrizione dell hardware

Reti logiche (2) Circuiti sequenziali

Design for Testability (DFT): Scan

Marco Cesati Dipartimento di Ingegneria Civile e Ingegneria Informatica Università degli Studi di Roma Tor Vergata

Esercitazione di laboratorio n. 2

senza stato una ed una sola

Porte logiche. Porte logiche. Corso di Architettura degli Elaboratori. Algebra Booleana

Componenti principali. Programma cablato. Architettura di Von Neumann. Programma cablato. Cos e un programma? Componenti e connessioni

Alimentatore master. Introduzione

Reti logiche A All. Informatici (M-Z)

Reti logiche A All. Informatici (M-Z) Fabrizio Ferrandi a.a

Componenti principali

Cenni alle reti logiche. Luigi Palopoli

Laboratorio di Architettura degli Elaboratori A.A. 2016/17 Circuiti Logici

La storia dei dispositivi programmabili

Componenti e connessioni. Capitolo 3

Lezione 22 La Memoria Interna (1)

CORSO DI ELETTRONICA DEI SISTEMI DIGITALI

PSPICE simulazione di circuiti digitali Flip Flop M/S, Moltiplicatore parallelo, Memoria SRAM, sommatore, comparatore

Elettronica dei Sistemi Digitali Dispositivi logici programmabili

Livello logico digitale

Lezione 7 Sommatori e Moltiplicatori

Circuiti sequenziali

Registri. Registri semplici

Dispositivi per il controllo

Транскрипт:

Field programmable Gate array Overview dei dispositivi elettronici programmabili FPGA della famiglia Spartan-3 ing. Mario Barbareschi prof. Antonino Mazzeo

PLD: Programmable Logic Device Un dispositivo logico programmabile (PLD) è un componente elettronico usato per costruire circuiti digitali riconfigurabili. Diversamente dalla porta logica, che lavora secondo una funzione fissa e non alterabile, un PLD non ha una funzione definita in fonderia. Prima di essere utilizzato il PLD ha bisogno di una fase di programmazione, cioè di configurazione. Il vantaggio risiede in tre aspetti cruciali: Il costo di fonderia è abbattuto: avviare la produzione di una nuova serie di circuiti integrati ha un costo di setup di 10 6~7 $; i PLD hanno un costo di pochi $; Il dispositivo può essere configurato per prototipazione; La funzione logica implementata può cambiare se le specifiche mutano (così come avviene nel software).

ROM come PLD Le ROM sono memorie universali che possono implementare funzioni multiuscita mappando direttamente tabelle di verità. E.g. ROM con m input (linee indirizzo) ed n output (linee dato). La memoria contiene m parole, ciascuna di n bit. Teoricamente sono disponibili 2 2m possibili funzioni booleane. La struttura della ROM permette però di definirne massimo n. Non è richiesta minimizzazione: la ROM contiene l intera tabella di verità! Gli ingressi delle funzioni booleane sono gli indirizzi e le uscite vengono memorizzate in ogni riga. Sono dispositivi lenti poiché per ogni configurazione degli ingressi bisogna ripetere il ciclo di accesso.

PLA Texas Instrument, MMI, Motorola, IBM ed altre industrie di semiconduttori negli anni 60-70 cercavano un buon sostituto delle lente memorie ROM. Fu così che furono inventati i primi veri PLB. PLA è l acronimo di Programmabile Logic Array. È un dispositivo pensato per creare funzioni combinatorie come SOP: sono disponibili due piani di porte logiche programmabili. Il primo è un piano di porte AND, il secondo è fatto di porte OR.

PLA PLA ad n ingressi ed m uscite. Ciascuna porta AND ha p/n linee di ingresso e produce p uscite. Le porte OR dispongono di m/p ingressi.

PAL e GAL PAL (Programmable Array Logic) è la versione ridotta di PLA, poiché strutturalmente uguale ma senza possibilità di programmare il piano OR. Sono più semplici ed economici. GAL (Generic Array Logic): primi dispositivi a permetterne la riprogrammazione (PAL riprogrammabili più volte). La programmazione del dispositivo infatti è mediata da elementi di memoria (e.g. FAMOS, celle SRAM, etc.)

Evoluzione dei PLD: CPLD PLA, PAL e GAL integrano poche porte e la loro architettura è poco scalabile. Il limite massimo è fissato a poche centinaia di porte logiche comparandoli con dispositivi ASIC. La programmazione di questi dispositivi è oltretutto complicata: sono richieste macchine apposite che programmino il circuito con opportune sovratensioni. CPLD: complex PLD. Interconnette, in un solo chip, più dispositivi GAL. La matrice di interconnessione (switch matrix) è essa stessa programmabile. I CPLD di possono definire dispositivi sea of gate poiché realizzano, in modo massivo, solo somme di prodotti

CPLD Struttura di un CPLD a 4 blocchi.

Field Programmable Gate Array FPGA: sono dispositivi rivoluzionari, diffusisi in una manciata di anni. Assieme ai CPLD sono i PLD che dominano il mercato. È l acronimo di Field- Programmable Gate Array, a significare che il dispositivo è programmabile solo dall utente (e non più in fonderia). I dispositivi contengono sia logica programmabile, sia circuiti hardware speciali. La parte programmabile è composta da moltissime celle, contenenti 4 funzioni: LUT (look-up table); Multiplexer; Logica di propagazione del riporto (FA); Flip Flop D.

Field Programmable Gate Array Cella base generica all interno di dispositivi FPGA

Field Programmable Gate Array La parte di hardware speciale contiene circuiti integrati di largo impiego, come gestori del clock, circuiti aritmetici, memorie veloci, etc. L FPGA compone una funzionalità a partire da celle di base semplici grazie a meccanismi di interconnessione tra le celle.

Programmazione dei PLD evoluti Gli FPGA, e recentemente anche i CPLD, sono largamente impiegati grazie alla facilità con cui è possibile programmarli. Tipicamente è un PC, che tramite un opportuno protocollo, configura i dispositivi programmabili. Il protocollo di comunicazione è JTAG: veloce, versatile e presente in tutti i circuiti digitali. La tecnologia JTAG viene sfruttata per configurare gli elementi di memoria all interno del PLD onde ottenere il comportamento desiderato. JTAG però non nasce per tali scopi, ma per il testing di circuiti integrati digitali. In sostanza è un protocollo seriale che permette di gestire, tramite un apposita architettura, la boundary scan chain

Test dei circuiti digitali integrati Un problema di rilievo nelle architetture di sistemi integrati è certamente la verifica. L approccio applicato a sistemi discreti (e.g. classi software) permette, prima del test di integrazione e di sistema, il test d unità. I sistemi hardware sono moduli che risiedono su un solo chip, e non sono isolabili a piacimento. Il problema del testing deve essere affrontato a monte: DFT (design for testability). Tali tecniche sacrificano la risorsa dell area per inglobare on-chip strutture per il testing. La metodologia più diffusa è quella della scan chain, ovvero catene di elementi logici programmabili interconnettesse in daisy-chain. È possibile sfruttare tutti gli elementi di memoria per stimolare i blocchi con gli ingressi voluti e controllarne anche il risultato

Boundary Scan La diffusione di questa tecnica è dovuta ai vantaggi che offre rispetto alle altre tecniche adoperabili: Richiede pochi pin di interfacciamento; È una tecnica generale, che può essere applicata a qualsiasi design; È compatibile con le tecnologie produttive; Ha una gestione abbastanza semplice; Permette di raggiungere ogni componente di memoria on-chip; Sostanzialmente è una lunga catena di flip-flop del design, intervallata da multiplexer. Il ruolo del mux è quello di lasciare il design intatto quando il sistema è in regime di funzionamento, oppure di realizzare una grande catena di flip-flop interconnessi a formare un grande shift-register se il sistema è in fase di test. La scan chain ha un solo punto di ingresso, un punto di uscita, uno di abilitazione ed un segnale per la tempificazione esterna. Se più chip in un sistema sono dotati dello stesso meccanismo è possibile collegare tutti loro in una scan chain unica ancora più grande.

Boundary Scan Scan-en è il segnale di modo: se è uno seleziona il segnale di servizio come dato, altrimenti quello originale. Sinteticamente lo si può indicare in questa forma

Boundary Scan La boundary scan chain si ottiene collegando l uscita di ciascun flip-flop con l ingresso scan-in del successivo. Così si ottiene una lunga catena di registri connessi come in uno shift register.

Boundary Scan: scan-en abilitato Se il segnale Scan-en è abilitato, allora tutti i multiplexer selezioneranno come dato quello in uscita dal flip-flop precedente. In questo modo ad ogni colpo di clock i bit avanzano a partire dal segnale Scan-in fino a quello di Scan-out in modo sequenziale.

Boundary Scan: scan-en disabilitato Se il segnale Scan-en è disabilitato, allora tutti i multiplexer selezioneranno come dato quello utente. In questo modo il sistema non risente della presenza della scan-chain, se non per un ritardo ulteriore pari al tempo di propagazione del componente multiplexer.

Boundary Scan: esempio Contatore mod16: il circuito è composto da 4 registri di memoria per mantenere il conteggio. Un caso di test prevede di effettuare un conteggio a partire da i e verificare che sia i+1: preparare il flusso di bit da configurare con lo stato corretto abilitare scan-en fornire in ingresso allo scan-in il vettore di stato fornendo impulsi di scan, per un totale di 4 impulsi disabilitare scan-en fornire un colpo di clock per far evolvere il contatore (fornire un conteggio) riabilitare scan-en leggere dal pin scan-out il vettore di stato (4 colpi di clock). Se è disponibile un altro test si può fornire un nuovo flusso di bit mentre si scarica quello precedente

FPGA della famiglia SPARTAN-3e Il circuito contiene i seguenti elementi programmabili: Configurable logic blocks (CLB): costituiscono la principale risorsa logica per l implementazione di circuiti sincroni sequenziali e puramente combinatoriali. Ciascun CLB contiene 4 slice e può emulare qualsivoglia circuito integrato sincrono. Tutti i CLB sono identici! Slices: è una struttura contenete 2 LUT (Look-up table); le LUT possono essere usate per realizzare memorie RAM e shift-register. All interno della slice sono altresì presenti multiplexer e un addizionatore; Input/Output Blocks: sono componenti analogiche che controllano il flusso dei dati tra i pin di I/O e i componenti logici all interno dell FPGA. Ciascun blocco supporta flussi di dati bidirezionali con comportamento tri-state. Supportano una vasta gamma di segnali standard e sono equipaggiati da registri veloci;

FPGA della famiglia SPARTAN-3e Digital Clock Manager: forniscono non solo un meccanismo di calibrazione del clock (deskew), ma anche una soluzione puramente digitale per gestire la moltiplicazione, divisione, shifting in fase e distribuzione del clock. Sono costituiti da un anello ad aggancio di ritardo (DLL) e da logica programmabile (range: ~300MHz/5MHz); Block RAM: forniscono spazio di memoria volatile utile per molti design hardware. Ciascuna memoria può essere configurata in dual port, per un totale di spazio disponibile pari a 18 Kb; Multiplier Blocks: sono componenti aritmetici molto veloci che effettuano l operazione di moltiplicazione. Ciascun moltiplicatore dispone di due operandi in ingresso da 18 bit ciascuno.

Distribuzione del clock

Distrubuzione delle risorse su silicio

Slice È l unità base programmabile per la famiglia di FPGA Xilinx. Tutte le slice sono raggruppate in coppie e ciascuna coppia è organizzata in colonne con una catena indipendente di carry. La coppia posta a sinistra supporta sia funzioni logiche che funzioni di memoria (SLICEM). La coppia posizionata a destra invece è capace solo di fornire funzioni combinatorie (SLICEL). La doppia disposizione consente di risparmiare moltissima area su silicio, e quindi del costo finale del dispositivo. In effetti è stato verificato che se entrambe le coppie di slice fossero dotate di elementi di memoria, le prestazioni dell FPGA risulterebbero degradate molto in termini di ritardo e potenza dissipata; oltretutto molta della memoria sarebbe stata sprecata. L FPGA così costruito sa emulare male una memoria.

Slice Una slice (indipendentemente dal tipo) include: 2 generatori di funzione a 4 input (LUT) 2 elementi di memoria 2 multiplexer Logica aritmetica del riporto (FA): XOR e AND La SLICEM supporta in più due funzioni: 2 blocchi di RAM 16x1 2 shift register da 16 bit La combinazione di una LUT e di un elemento di Memoria (Flip Flop D) è detto logic cell. L aggiunta del multiplexer e del riporto rende la cella logica molto più versatile di qualsiasi dispositivo programmabile. Infatti ciascuna slice è equivalente a 2,25 celle logiche.

SliceM e slicel

Configurable Logic Block Per migliorare l assegnazione di elementi logici programmabili ad una particolare funzione e per ottimizzare l interconnessione tra gli elementi riconfgurabili, gli FPGA Xilinx Spartan3 e 3E raggruppano 2 coppie di slice in una struttura chiamata configurable logic block. Sul silicio questa struttura è clonata in una struttura a matrice da 60 righe e 46 colonne (nella versione XC3S1200E), per un totale di 19512 celle logiche equivalenti. I CLB posti in verticale condividono due path per la propagazione del riporto: questi non hanno bisogno di particolari meccanismi di interconnessione poiché in modo nativo attraversano l architettura

Configurable Logic Block

Interconnessione Ciascuna slice offre 5 diversi path per l uscita D della LUT: 1. Uscire direttamente dalla slice; 2. Entrare nell elemento di memoria; 3. Controllare il multiplexer per il riporto; 4. Entrare nella porta XOR del FA; 5. Controllare il multiplexer per implementare una funzione di 4 bit. In aggiunta nel CLB sono possibili altri 7 path: 1. Bypassare entrambe le LUT delle slice ed uscire dal CLB; 2. Bypassare la prima LUT e entrare nell elemento di memoria; 3. Controllare il mux per la funzione di 4 bit; 4. Entrare nel mux per fungere da carry; 5. Controllare l ingresso DI della LUT 6. Controllare gli ingressi dell elemento di memoria 7. Controllare gli altri pin della slice

Interconnessione Tutti questi path sono insufficienti per collegare tra loro tutti i CLB. È per questo che all interno dell FPGA troviamo dei blocchi, detti Switch Matrix, che connettono differenti CLB (ma anche moltiplicatori, BRAM, DCM e IOB) in tutto il dispositivo integrato. In particolare ogni macrodispositivo all interno dell FPGA è accompagnato da uno Switch Matrix.

Interconnessione Quando un design viene sintetizzato, oltre che alla logica di ciascun CLB, anche la logica degli switch matrix deve essere configurata. Virtualmente ciascuno switch matrix può essere considerato, all interno della matrice di CLB, come un canale virtuale verso altri CLB: nella fase di routing (ultima del processo di sintesi) questo canale virtuale viene specializzato su un particolare switch matrix. La possibilità di interconnettere anche CLB lontani è data dalla particolare distribuzione delle linee di interconnessione. L architettura è di tipo gerarchico: per muoversi tra CLB vicini si usano particolari linee di interconnessione, per CLB lontani si usano risorse differenti.

Configurazione del dispositivo Su tutti gli IC è presente il protocollo JTAG per verificare che il processo di fonderia non abbia immesso difetti sui die. Poiché a configurare i PLD evoluti sono elementi di memoria e JTAG sfrutta la boundary scan chain di questi dispositivi per fare test, è possibile usare JTAG per effettuarne la configurazione di questi dispositivi. Poiché la configurazione avviene bit per bit, il file di configurazione viene detto bitstream: tale file ha come dimensione il totale degli elementi di memoria sul PLD. Per il chip XC3S1200E occorrono 3841184 di bit (~10 bit per ogni macro componente).

Configurazione del dispositivo L FPGA è un circuito con memoria volatile: all accensione dunque bisogna sempre configurarlo. Tipicamente si utilizzano delle memorie ROM che conservano la configurazione dell FPGA. Le board Xilinx dispongono di una memoria flash, detta platform flash, che l utente può programmare. Poiché JTAG permette la composizione di catene di test, la platform-flash e l FPGA si programmano con lo stesso protocollo e con il medesimo metodo. Per programmare l FPGA bisogna effettuare il bypass della flash, per programmare la flash il bypassa della ROM. Se si programma l FPGA, la configurazione è cancellata quando si disalimenta il dispositivo; se si programma la flash ad ogni accensione l FPGA si programma in modo automatico con design memorizzato.

Configurazione del dispositivo: JTAG chain