FPGA

Field-Programmable Gate Array

1. Introduzione

I dispositivi elettronici sono stati protagonisti, nell'ultimo decennio, di una penetrazione sempre maggiore nella vita di tutti i giorni, negli ambiti applicativi più disparati: elettrodomestici, elettronica di consumo, telecomunicazioni, automotive, fino alla cosiddetta "ambient intelligence".

In uno scenario del genere, di un mercato in continua espansione e sempre più competitivo, l'agguerrita concorrenza, ha portato alla necessità di considerare, durante tutte le fasi di realizzazione di un progetto, metriche di valutazioni quali il time-to-market (l'intervallo temporale che intercorre tra l'inizio del progetto e l'ingresso sul mercato del prodotto finito), i costi (non ricorrenti e unitari) e la flessibilità del prodotto finale, oltre ai parametri tradizionalmente considerati quali la capacità computazionale, le prestazioni, le dimensioni e il consumo di potenza.

Ha quindi assunto una crescente importanza lo sviluppo di tecniche e soluzioni per ridurre i tempi di sviluppo, prototipizzazione, realizzazione, verifica e collaudo dei dispositivi elettronici, e sono stati introdotti concetti quali IP-reuse, flessibilità e riprogrammabilità, nel tentativo di ridurre i tempi di ingresso sul mercato ed i costi ingegneristici non ricorrenti (NRE costs) da cui dipendono principalmente il costo ed il successo del prodotto finito.

2. Metodologie di progetto tradizionali

Sono tradizionalmente due le possibili soluzioni che emergono nel momento in cui ci si pone il problema della tecnica implentativa da utilizzare in fase di pianificazione del progetto: realizzare l'intero algoritmo in hardware o in software.

La prima soluzione prevede l'utilizzo di tecniche di sviluppo semi- o full-custom per la realizzazione di ASIC (Application Specific integrated Circuits) che realizzino completamente in hardware la computazione desiderata. Tale scelta permette di raggiungere i livelli di massima ottimizzazione per quanto riguarda prestazioni, consumi di potenza ed area del chip, a scapito però di tempi di sviluppo molto dilatati a causa della difficoltà del progetto, a cui vanno aggiunti costi di sviluppo e realizzazione sostenibili solo per produzioni su larga scala. Un ulteriore svantaggio è costituito dal fatto che il chip, una volta realizzato su silicio, non può essere più modificato salvo tornare alle fasi di progetto, e ciò comporta un notevole incremento dei costi ogni qual volta si voglia rivedere, correggere o estendere il prodotto.

L'approccio opposto prevede la realizzazione dell'algoritmo completamente via software, utilizzando architetture programmabili come processori general purpose, microcontrollori o nel caso di applicazioni di elaborazione dei segnali, i più specializzati DSP (Digital Signal Processor). Questa soluzione offre enorme flessibilità in fase di progetto e permette di ridurre i costi ed i tempi di sviluppo e verifica, ma spesso non costituisce un buon compromesso per ciò che riguarda le prestazioni e i consumi di potenza.

3. Logiche Programmabili

Un approccio alternativo è quello basato sulle architetture riconfigurabili, come gli FPGA (Field Programmable Gate Array), che offrono ai progettisti soluzioni a basso costo caratterizzate da rapidi tempi di sviluppo, nonchè facilmente modificabili, data la loro riconfigurabilità.

Gli FPGA sono comparsi sul mercato, verso la metà degli anni '80, per coprire le esigenze di dispositivi ibridi tra PAL (Programmable Array Logic) e MPGA (Mask Programmable Gate Array). Della prima famiglia di dispositivi conservano il vantaggio che, essendo programmabili elettricamente, possono essere programmati in tempi brevi con conseguente abbattimento dei costi non ricorrenti, mentre dei secondi presentano il vantaggio di poter implementare computazioni complesse su un unico chip.

Nati per applicazioni di "glue-logic" e prototipizzazione rapida, gli sviluppi tecnologici e la crescente capacità di integrazione, hanno portato al continuo incremento del numero di porte logiche integrabili su un unico chip, tanto che gli ultimi modelli affiancano ai blocchi per la realizzazione di logica combinatoria e sequenziale, memorie RAM dedicate, sommatori e moltiplicatori hardware, complessi sistemi di clock multifase, interfacce di I/O ad elevate prestazioni oltre a veri e propri microprocessori embedded (nei prodotti di fascia più alta), tanto da portare a parlare della realizzazione di SoC (System-on-Chip) e per l'immediato futuro si prevede l'estensione di tale concetto a NoC (Network-on-Chip).

Questo ha notevolmente ampliato la gamma dei possibili campi applicativi ed il mercato di questi dispositivi che vanno dalle telecomunicazioni, all'industria dell'automobile, dall'elettronica di consumo a quella per apparati militari.

4. Architettura degli FPGA

L'architettura degli FPGA risulta molto regolare, e costituisce una matrice di logic blocks che costituiscono i blocchi computazionali, interconnessi per realizzare i differenti progetti e circondati da blocchi di I/O per permettere al dispositivo la comunicazione con l'esterno. La maggior differenza tra gli FPGA e gli MPGA sta quindi nel fatto che questi ultimi dispositivi vengono programmati attraverso maschere, per realizzare, al momento della fabbricazione, interconnessioni metalliche tra i vari blocchi logici, mentre gli FPGA possono essere programmati elettricamente tramite l'attivazione e la disattivazione degli switch attraversati dall'architettura di routing che ricopre il dispositivo collegando tra di loro tutti i logic blocks.

4.1 Tecnologie

Come detto precedente, la configurazione degli FPGA avviene tramite la programmazione di switch che permettono la connessione tra i vati blocchi computazionali del dispositivo. Sono state perciò sviluppate diverse soluzioni per la programmazione elettrica delle interconnessioni, dalle cui proprietà dipendono molte delle caratteristiche strutturali, funzionali ed economiche degli FPGA attualmente in commercio.

4.2 Logic Blocks

Anche per quanto riguarda l'implementazione dei blocchi logici, le varie case costruttrici hanno sviluppato nel tempo diverse soluzioni tecnologiche a partire dalla più semplice realizzazione di funzioni booleane attraverso la connessione di NAND e NOR, fino all'utilizzo di memorie statiche. La tecnologia più largamente impiegata negli ultimi anni è quella che prevede la realizzazione dei logic blocks attraverso LUT (look-up tables) a N ingressi che permettono l'implementazione di tutte le 2N funzioni logiche di N variabili, e possono essere usate anche come memorie o shift register. Le dimensioni dei processi tecnologici raggiunti, permettono poi di accompagnare a questi LUT, registri e flip-flop per la realizzazione di funzioni sequenziali.

4.3 Evoluzioni tecnologiche

Nei dispositivi di ultima generazione sono disponibili, oltre alle celle logiche, memorie a blocchi, PLL, moltiplicatori e sommatori hardware. Tali caratteristiche rendono vasto il campo di applicazione degli FPGA: si va dalla realizzazione di semplici periferiche a sistemi di calcolo riconfigurabile.

Per venire incontro, inoltre, a tutte quelle applicazioni che si avvalgono di sistemi a microprocessore è stata introdotta la possibilità di integrare nelle logiche riprogrammabili core di elaborazione dedicati e interfacce seriali/parallele ad alta velocità (dell'ordine dei Gbit/s).

A tal fine si possono perseguire due diverse direzioni: l'uso di componenti che presentano microprocessori integrati sul silicio oppure l'impiego di macro, interpretabili come Intellectual Property, instanziabili nel codice sorgente. La prima soluzione consente prestazioni superiori ma anche costi più elevati e tra le varie offerte presenti sul mercato si distingue la scelta di Xilinx di utilizzare, nei suoi prodotti di fascia alta, uno o più core PowerPC prodotti da IBM. La seconda soluzione risulta più flessibile e può essere impiegata sia sui dispositivi economici che su quelli ad elevate prestazioni. In questo caso le principali soluzioni software sono rappresentate da NIOS II per Altera e MicroBlaze per quanto riguarda Xilinx.

5. Dispositivi commerciali

Stando ai fatturati dichiarati alla fine del 2004, il mercato degli FPGA vede sostanzialmente quattro grandi concorrenti mondiali, di cui Xilinx e Altera si spartiscono una fetta di quasi l'86%.

Nella scelta dei dispositivi commerciali di maggior interesse si è perciò deciso di concentrarsi sull'analisi degli ultimi prodotti di questi due maggiori competitori, confrontando tra loro le principali soluzioni per il mercato low-cost e quelle allo stato dell'arte per dispositivi ad elevate prestazioni.

5.1 Xilinx Virtex-4

La famiglia di dispositivi Virtex-4 comprende tre diverse soluzioni per differenti ambiti applicativi.

Virtex-4 LX, ottimizzate per applicazioni logiche generali, offrono una maggiore densità e blocchi logici e di I/O ad elevate prestazioni.

Virtex-4 SX per elaborazione di segnali digitali (DSP) che necessitano di elevate prestazioni come applicazioni di comunicazione wireless, multimediali, audio e video.

Virtex-4 FX per la realizzazione di sistemi complessi che necessitano di connessioni seriali ad alta velocità e unità di elaborazione dedicate (microprocessori) per applicazioni di networking, storage, telecomunicazioni e sistemi embedded

Caratteristiche:
  • I/O pins: 320 ÷ 960
  • JTAG boundary-scan testing port: IEEE 1149.1/1532
  • CLBs (Configurable Logic Blocks): 64x24 ÷ 192x116
  • 4-input LUTs: 8
  • flip-flops: 8
  • RAM distribuita: 64bits
  • ExtremeDSP slices: 32 ÷ 512
  • 18-bit Multipliers: 1
  • Adders: 1
  • 48-bit Accumulators: 1
  • Embedded IBM PowerPC 405 (FX devices): 1 ÷ 2
  • Architettura RISC a 32 bit? Instruction Cache: 16KB, 2-way set associative? Data Cache: 16KB, 2-way set associative? Multiply-Accumulate instructions? Frequenza di clock: 450MHz? Consumo di potenza: 0.44mW/MHz
  • Frequenza di clock: fino a 500MHz? Consumo di potenza: 1.56W ÷ 14.61W
  • Processo Tecnologico: 90nm (tutti i livelli di metallizzazione in Cu)
  • Prezzo: a partire da 60$ (ordini di 25k unità)*
  • 5.2 Xilinx Spartan-3E

    La famiglia Spartan-3E copre il segmento di mercato di FPGA a basso costo e consiste di 8 diversi dispositivi basati sull'architettura della famiglia Virtex-II.

    Caratteristiche:
  • Processo tecnologico: 90nm
  • CLBs (Configurable Logic Blocks): 22x16 ÷ 76x58
  • 4-input LUTs: 8
  • flip-flops: 8
  • RAM distribuita: 64bits
  • Logic Cells equivalenti: 2k ÷ 33k
  • 18-bit Multipliers: 4 ÷ 36
  • I/O Pins: 108 ÷ 376? JTAG boundary-scan testing port: IEEE 1149.1/1532
  • Frequenze di clock: fino a 300MHz? Prezzo: 6.50$ ÷ 10$ (ordini di 250k unità)*, 0.67$ per 1000 LUT
  • 5.3 Altera Stratix II

    La famiglia Stratix II di Altera si inserisce nel segmento degli FPGA ad elevate prestazioni e densità d'integrazione.

    Caratteristiche:
  • Processo tecnologico: 90nm (tutti i livelli di metallizzazione in Cu)
  • LABS (Logic Array Blocks): 30x26 ÷ 100x96? 8-input LUTs: 2
  • Logic Elements equivalenti: 15k ÷ 179k
  • RAM totale: 419k ÷ 9M bits
  • DSP blocks: 12 ÷ 96
  • 18-bit Multipliers: 4
  • 52-bit Multiply-Accummulate blocks: 2
  • 2-mult Adder: 2
  • 4-mult Adder: 1
  • I/O pins: 366 ÷ 1160
  • JTAG boundary-scan testing port: IEEE 1149.1
  • Frequenza di clock: fino a 500MHz
  • Consumo di potenza: 1.15W ÷ 14.59W
  • Prezzo: a partire da 125$ (ordini di 25000 unità)*
  • 5.4 Altera Cyclone II

    La famiglia Altera Cyclone II si presta ad applicazioni in cui siano necessari dispositivi a basso costo a scapito della capacità di integrazione e della potenza computazionale.

    Caratteristiche:
  • Processo tecnologico: 90nm
  • LABs (Logic Array Blocks): 24x13 ÷ 86x50 8-input LUTs: 2
  • LEs (Logic Elements): 4k ÷ 68k
  • RAM totale: 120k ÷ 1M bits
  • 18-bit Embedded Multipliers: 13 ÷ 150
  • I/O Pins: 142 ÷ 622
  • JTAG boundary-scan testing port: IEEE 1149.1
  • Frequenza di clock: fino a 400MHz
  • Prezzo: 22$ (ordini da 250k unità)*, 0.66$ per 1000 LUT
  • * I dati riportati relativi ai prezzi dipendono fortemente dai volumi acquistati e dai tempi di consegna richiesti, inoltre i produttori non forniscono in rete informazioni approfondite, salvo contattare direttamente i distributori nazionali.

    Per approfondire: tre presentazioni (formato ppt in archivio .zip) 'FPGA' .

    Bibliografia

  • S. Hauck - "The Roles of FPGAs in Reprogrammable Systems", Proceedings of the IEEE, Vol. 86, No. 4, pp. 615-638, April 1998.
  • K. Compton, S. Hauck - "An Introduction to Reconfigurable Computing"
  • K. Compton, S. Hauck - "Configurable Computing: A Survey of Systems and Software", Northwestern University, Dept. Of ECE Technical Report, 1999.
  • J. Rose, A. El Gamal, A. Sangiovanni-Vincentelli - "Architecture of Field-Programmable
  • Gate Arrays", Proceedings of the IEEE, Vol. 81, No. 7, pp. 1013-1029, July 1993.
  • S. Chandrashekar, R. Mahmud, "IC Designers - An Optimal Approach to Programmable Logic"
  • R. Tessier, W. Burleson - "Reconfigurable Computing for Digital Signal Processing: A Survey"
  • S. Wilton, R. Saleh - "Programmable Logic IP Cores in SoC Design: Opportunities and Challenges"
  • Altera Cyclone II http://www.altera.com/products/devices/cyclone2/cy2-index.jsp
  • Altera, "Cyclone II Device Handbook" http://www.altera.com/literature/hb/cyc2/cyc2_cii5v1.pdf
  • Altera Stratix II http://www.altera.com/products/devices/stratix2/st2-index.jsp
  • Altera, "Stratix II Device Handbook" http://www.altera.com/literature/hb/stx2/stratix2_handbook.pdf
  • Xilinx Spartan-3E http://www.xilinx.com/xlnx/xil_prodcat_landingpage.jsp?title=Spartan-3E
  • Xilinx, "Spartan-3E FPGA Family: Complete Data Sheet" http://direct.xilinx.com/bvdocs/publications/ds312.pdf
  • Xilinx Virtex-4 http://www.xilinx.com/xlnx/xil_prodcat_landingpage.jsp?title=Virtex-4
  • Xilinx, "Virtex-4 User Guide" http://www.xilinx.com/bvdocs/userguides/ug070.pdf
  • Xilinx, "Virtex-4 Family Overview" http://direct.xilinx.com/bvdocs/publications/ds112.pdf
  • PLD

    Introduzione

    Qualsiasi sistema digitale può realizzarsi utilizzando i quattro elementi fondamentali: le porte NOT, AND e OR e i flip-flop.Disponendo di un circuito integrato in cui sono realizzati già dal costruttore tali elementi fondamentali, avendo invece la libertà di connetterli in base alle particolari specifiche volute, consente la realizzazione un qualunque sistema digitale. anche complesso, e fabbricato utilizzando un unico circuito integrato il cui test di funzionalità è stato già eseguito . Nasce proprio così l'idea di dispositivi programmabili dall'utente che, grazie all'enorme progresso in termini sia di costo che di livello di integrazione, ha portato a interessanti progressi dei PLD ( Programmable Logic Devices ). Spesso, più propriamente, tali dispositivi vengono denominati come programmabili sul campo FPD, (Field Programmable Device) nel senso che è l'utente finale a poter programmare la funzione specifica;I PLD nascono per applicazioni di elettronica digitale anche se recentemente molti sono i prodotti che cercano di portare la stessa filosofia di progettazione e architettura in ambiente analogico.

    SPLD

    Nella famiglia FPD, gli SPLD (Simple PLD) sono quelli che furono sviluppati per primi. A tale gruppo appartengono infatti PAL, GAL e PROM che presentano un livello di integrazione modesto e un'architettura relativamente semplice. In genere si tratta di dispositivi in cui la totalità dei collegamenti è realizzati tramite microfusibili che possono essere
    "bruciati" dall'utente per realizzare la funzione voluta

    (OTP, One Time Programmable) ma esistono pure versioni ri-programmabili basate su celle EPROM. In questo caso si parla di GAL (Gate Array Logic).

    Per la loro semplice struttura e per i tempi di realizzazione veramente rapidi, i SPLD hanno trovato larghissimo impiego da oltre vent'anni nella realizzazione di sistemi digitali di modeste dimensioni.

    I supporti software di sviluppo, dai costi realmente contenuti, hanno consentito l'estendersi del loro utilizzo a un'ampia fascia di applicazioni.
    L'architettura di un SPLD è quella di matrici AND e OR che consentono la sintesi di sistemi combinatori mediante OR di mintermini . In genere il layout è piuttosto complesso tale da garantire un discreto numero di variabili binarie di ingresso, di uscita e di controllo. Alcuni dei piedini, inoltre, sono in genere utilizzabili come ingressi oppure come uscite e la scelta viene fatta in fase di programmazione.

    PLA

    Per diminuire il tempo di risposta del circuito, alcuni dispositivo non presentano fusibili o elementi programmabili per la matrice OR. In questo caso si è soliti parlare di PAL. La logica di uscita può essere sia di tipo diretto che negato.

    SPLD con registri

    Al fine di poter realizzare anche semplici circuiti di tipo sequenziale, in diversi tipi di SPLD vengono pure integrati flip-flop (di tipo JK o di tipo D).Attualmente, anche se considerati appartenenti alla famiglia di dispositivi a bassa scala di integrazione e quindi per applicazioni medio piccole, la velocità dei SPLD è comunque dell'ordine di 10 ns.

    CPLD o EPLD

    I dispositivi che presentano una complessità maggiore sono generalmente riprogrammabili e sono denominati CPLD o EPLD (Complex o Enhanced PLD). Questi consistono tipicamente in più Gate Array Logic integrati su un solo chip. Nella struttura si possono distinguere i blocchi in cui può essere configurata una funzione logica (CFB, Configurable Function Block o GLB, Generic Logic Block) e una matrice di interconnesione programmabile centralizzata (GRP, global routing Pool

    Architettura GLB

    ISP

    Una grossa novità avutasi negli ultimi tempi è la riprogrammabilità del dispositivo effettivamente sul campo (ISP, In System Programmable). In pratica, la configurazione dei blocchi e della matrice di interconnessione può essere cambiata senza dover nè rimuovere il circuito integrato dalla scheda in cui è alloggiato nè togliere l'alimentazione alla scheda stessa. Inoltre, predisponendo un'interfaccia di comunicazione, la configurazione può essere effettuata in modo remoto.

    FPGA

    Introdotti a metà degli anni 80 dalla Xilix Inc., i dispositivi FPGA (Field Programmable Gate Array), presentano caratteristiche intermedie tra i circuiti integrati semi-custom e quelli con architettura a PLA. Si può affermare che oggi costituiscono l'equivalente programmabile dei Gate Array.
    Gli FPAGA (o LCA, Logic Cell Array) sono dispositivi logici molto interessanti e in rapidissimo sviluppo sul mercato. I loro due punti di forza sono da un lato il tempo necessario allo sviluppo del progetto (time to market) dall'altro l'alta densità di porte logiche equivalenti. Per i progetti che non comportino elevati volumi di produzione, gli FPGA sono oggi la migliore soluzione per l'ottimo rapporto prestazione/costo che offrono.

    Struttura degli FPGA

    Gli FPGA rappresentano l'evoluzione dei CPLD e come questi possiedono un'architettura a "grana fine". Sono quindi costituiti da blocchi logici interni configurabili, moduli di I/O anch'essi programmabili e ovviamente matrici per le interconnessioni tra blocchi che sono definibili dall'utente.

    Configurazione su memoria

    Normalmente le diverse configurazioni sono programmabili sulla RAM interna dell'FPGA.
    Caratteristica di molti dispositivi è quindi quella di dover essere programmate ad ogni accensione del sistema.
    Tipicamente allora accanto all'FPGA è presente una memoria EPROM di servizio (per il bootstrap iniziale)
    in cui è memorizzato il file di configurazione del dispositivo.

    I problemi legati allo spazio occupato da celle EEPROM per la programmazione delle diverse configurazioni sono stati comunque nel tempo superati e oggi sono molti i dispositivi FPGA che avendo internamente una EEPROM sono in grado di funzionare nel momento stesso in cui il circuito è alimentato.

    Metodoligia di progettazione

    I vantaggi derivanti dall'uso di circuiti integrati a logica programmabile giustifica l'uso sempre più capillare di tali componenti.

    Risulta evidente però che per poter utilizzare i dispositivi programmabili è necessario disporre di appositi sistemi di sviluppo, con risorse sia hardware che software, in grado di supportare il progettista nelle diverse fasi di realizzazione del sistema.

    La procedura di realizzazione di un circuito basato su dispositivi logici programmabile potrà essere articolata nelle seguenti fasi:


     

    Le fasi suddette rientrano nel cosiddetto design entry e cioè di acquisizione del progetto. La risorsa del progettista durante questa prima serie di fasi è di tipo software e divisa nelle due sezione di descrizione e simulazione. Per la descrizione del sistema vengono utilizzati linguaggi orientati proprio all'hardware stesso (ABEL-HDL).Anche per la simulazione vengono usati linguaggi orientati all'hardware (Verilog, VHDL).

    Esempio contatore programmabile

    Si vuole realizzare un contatore a 4 bit in grado di contare da 1 a un valore prefissato in ingresso.

    Rappresentazione mediante grafo:

    La scomposizione in blocchi

    La descrizione dei blocchi: comparatore

    La descrizione dei blocchi: contatore

    Metodologie di progettazione

    Una volta che è stato realizzato il codice sorgente del dispositivo, occorre:

    Infine, attraverso strumenti sia hardware che software, può essere eseguita l'ultima sezione e cioè:

    Panoramica commerciale:Lattice

    Panoramica commerciale:ACTEL