Il mondo degli FPGA e degli ASIC - Parte 1
Crediti: Ricerca Microsoft
Nella Parte 1 di questo post in due parti, esamineremo le origini dell'hardware programmabile che ha ridotto il numero di chip in molte tipologie di circuiti stampati. La Parte 2 mostrerà in che modo gli FPGA e gli ASIC stanno sostituendo il microprocessore e il DSP in applicazioni ad alta velocità e alta affidabilità.
Gli albori della logica digitale
Il primo computer basato su semiconduttori a eseguire un programma fu costruito nel 1953 presso l'Università di Manchester. Conteneva 92 transistor con punti di contatto e 550 diodi, ma poteva gestire solo un tasso medio di circa 33 istruzioni al secondo. Si trattava comunque di un notevole miglioramento rispetto ai predecessori basati su valvola termoionica ("tubo"), in quanto consumava meno energia ed era di dimensioni inferiori. Ne parlo perché rappresenta un primo punto di partenza nella corsa alla costruzione di macchine con una potenza di elaborazione sempre maggiore e dimensioni fisiche sempre più ridotte. Tutti i computer digitali, anche oggigiorno, sono costituiti da gate logici interconnessi che forniscono le funzioni di base AND, OR e NOT. Con questi tre tipi di gate è possibile costruire praticamente qualsiasi cosa. In realtà, è più probabile che vengano utilizzati nella loro forma logica negativa con output invertiti: NAND e NOR. Ciò è dovuto al fatto che questo formato richiede il numero minimo di stadi dei transistor; è necessario un ulteriore transistor invertente per ottenere AND e OR con un corrispondente aumento del ritardo di propagazione e del consumo energetico. Queste funzioni logiche, utilissime come elementi base, erano incluse nei primi progetti di circuiti integrati commerciali. La serie 74 di chip TTL (Transistor-Transistor Logic), ancora disponibile oggi, include le serie 7400 (gate NAND quad a 2 input) e 7402 (gate NOR quad a 2 input), anche se dotata di una tecnologia al silicio notevolmente migliorata.
I computer della fine degli anni '60 e dei primi anni '70 contenevano molte schede piene di chip TLL o gate CMOS. Con il miglioramento della tecnologia dei circuiti integrati, comparvero nuovi chip con "funzioni speciali" come contatori e registri a scorrimento, riducendo il numero di schede e contribuendo a ridurre le dimensioni del computer. La tecnica LSI (Large Scale Integration) ha prodotto i primi chip RAM e poi il microprocessore. Anche con un processore e memorie a chip singolo, era ancora molto difficile realizzare un computer a scheda singola vero e proprio. Era necessaria ancora molta logica sparsa (glue-logic), unica per un particolare progetto, che doveva essere realizzata con chip gate di base.
Il gate array
Molto rapidamente, i produttori di chip iniziarono a produrre dispositivi personalizzabili denominati Programmable Array Logic (PAL) e Uncommit Logic Array (ULA). Una PAL contiene gruppi fissi di gate AND/OR denominati "termini di prodotto": all'interno di ciascun gruppo, i gate sono collegati tra loro mediante fusibili. I collegamenti vengono gestiti da un programmatore esterno come memoria di sola lettura programmabile. Per creare il circuito desiderato, se necessario per scollegare i collegamenti indesiderati, i fusibili vengono "bruciati" dal programmatore. Pertanto, questi primi dispositivi erano programmabili una sola volta (OTP, One Time Programmable) e gli errori non potevano essere corretti. Tuttavia, erano relativamente economici e valeva la pena sprecare alcuni chip per ridurne il numero complessivo. I dispositivi successivi utilizzavano una memoria di collegamento cancellabile tramite UV che poteva essere riconfigurata prima dell'arrivo dei chip basati su EEPROM riprogrammabili in loco. I dispositivi più recenti contengono flip-flop, moltiplicatori e persino blocchi RAM per aumentarne la versatilità. Con l'avvento della VLSI (Very Large-Scale Integration), questi dispositivi programmabili sono diventati molto complessi, con la SRAM come memoria di configurazione interna caricata all'accensione da un chip EPROM o flash esterno. Benvenuti nel mondi degli FPGA.
L'ULA adotta un approccio diverso rispetto alla PAL. L'utente inizia con una "tabula rasa". Il produttore fornisce un set di strumenti software che consentono allo sviluppatore di progettare il proprio chip a livello di singolo transistor/diodo. Ciò significa che è possibile creare un progetto personalizzato senza elementi ridondanti o inutilizzati, ottimizzato quanto a velocità e potenza. L'aspetto negativo consiste nel fatto che il progettista deve generare il layout delle "piste" per il dispositivo, come il layout di un circuito stampato che copre i collegamenti tra elementi, tra cui quelli comuni tra clock, alimentazione e massa. L'utente fornisce al produttore un diagramma che mostra le posizioni esatte di ciascun elemento sul silicio e una maschera per lo strato metallico che fornisce tutte le interconnessioni. Gli ULA non potevano contenere un'elevata densità di elementi, quindi l'intero esercizio era piuttosto simile alla progettazione di un PCB. L'ULA era, in effetti, una forma rudimentale di ciò che oggi chiamiamo un circuito integrato completamente personalizzabile specifico per un'applicazione o ASIC. L'ASIC viene prodotto insieme al progetto e qualsiasi errore risulta molto costoso. Pertanto, si evita di realizzare uno di questi prodotti a meno che il progetto non sia completamente collaudato; probabilmente è meglio utilizzare un FPGA. Un errore nella progettazione dei primi microprocessori Pentium, noto come FDIV Bug, costò a Intel centinaia di milioni di dollari.
Esempio di risparmio di spazio con la logica programmabile
Di seguito sono riportate le schede di due computer a scheda singola degli anni '80, una con molti chip semplici "glue-logic" (Fig. 1), l'altra con un singolo dispositivo ULA (Fig. 2). Molti hanno sicuramente sentito parlare dell'innovativo ZX81 di Clive Sinclair; Jupiter Ace che utilizzava il linguaggio di programmazione Forth è probabilmente meno noto. Anche senza la base per la tastiera a membrana, è chiaro che Jupiter Ace ha bisogno di molto più spazio per i suoi numerosi chip. Il circuito per la ZX81 è molto simile, ma tutti i circuiti integrati di piccole e medie dimensioni (SSI/MSI) sono stati combinati in un unico chip ULA. Un dato interessante è che la ZX81 precede la Ace di un anno. A dimostrazione del fatto che le vendite svolgono un ruolo importante in qualsiasi progetto, si prevedeva che la Ace non avrebbe venduto abbastanza per giustificare il costo di un ULA.
L'FPGA ha fatto molta strada dai giorni della PAL e degli ULA. I moduli di funzione integrati sono diventati sempre più complessi, tanto che un numero sempre maggiore viene inserito in un singolo chip. È possibile "programmarli" utilizzando linguaggi di alto livello come il VHDL e il Verilog. Fino a poco tempo fa, erano molto, molto costosi e ben oltre il budget dei maker. Tutto ciò è cambiato e nella Parte 2 vedremo come vengono utilizzati per sostituire microprocessori e DSP in applicazioni come l'intelligenza artificiale.
Ma che cosa avviene con la semplice sostituzione della glue-logic? Se si desidera solo un dispositivo piccolo ed economico che fornisca alcune funzioni logiche base, non c'è problema: la PAL è ancora disponibile, nella sua nuova incarnazione come un semplice dispositivo logico programmabile o SPLD. Gli FPGA e gli ASIC ora vengono ovviamente chiamati dispositivi logici programmabili complessi o CPLD. Perché i moderni SBC come il Raspberry Pi non sembrano avere più bisogno della glue-logic? Scopritelo nella Parte 2.
Se siete indecisi su cosa fare, vi invito a seguire i miei post su Twitter. Pubblico collegamenti ad articoli interessanti sulla nuova elettronica e sulle tecnologie correlate, condivido post che leggo su robot, esplorazione spaziale e altre tematiche.
Engineer, PhD, lecturer, freelance technical writer, blogger & tweeter interested in robots, AI, planetary explorers and all things electronic. STEM ambassador. Designed, built and programmed my first microcomputer in 1976. Still learning, still building, still coding today.
Leggi l’articolo originale su DesignSpark