Un racconto in prima persona
All’inizio, una scheda piena di integrati
Nei miei primi progetti utilizzavo i circuiti della serie 74 della Texas Instruments. Ne conoscevo i componenti e sapevo come combinarli: porte logiche, contatori, registri, multiplexer e tutto ciò che serviva per costruire un sistema digitale.
Il progetto prendeva forma nello schema elettrico e nei collegamenti tra gli integrati. Era un modo molto concreto di lavorare: ogni funzione aveva i suoi componenti, e la complessità del sistema diventava anche complessità della scheda.
I videogiochi e la scoperta delle PLD
Poi qualcuno mi fece notare che esistevano le PLD, i dispositivi logici programmabili, che incontravo anche nel mondo dei videogiochi. Ogni tanto me ne occupavo con un amico, studiando le schede giapponesi e cercando di riprodurne il funzionamento.
Da lì cominciai a scoprire un mondo nuovo: una parte della logica che realizzavo con tanti integrati poteva essere descritta e inserita in un dispositivo programmabile.
Il primo linguaggio con cui entrai in contatto fu PALASM. Le equazioni diventavano un modo per esprimere il circuito, anziché limitarmi a disegnarlo come una rete di componenti.
Le equazioni che avevo già incontrato a Fisica
Mi resi conto che potevo descrivere le funzioni dei miei progetti TTL attraverso equazioni booleane. Era un linguaggio di idee che conoscevo già: lo avevo studiato a Fisica, nel corso di Cibernetica con Serra e Pallottino.
Quello che prima costruivo collegando integrati potevo cominciare a esprimerlo con equazioni. Non cambiava soltanto lo strumento: cambiava il modo di pensare e organizzare il progetto.
Altera, le FPGA e una nuova libertà progettuale
Un rappresentante di Altera mi fece poi conoscere le FPGA. Nel percorso attraverso questi strumenti incontrai VHDL e Verilog: si apriva un’altra possibilità per descrivere sistemi sempre più complessi.
Non si trattava più soltanto di sostituire qualche porta logica. Potevo organizzare interi blocchi di elaborazione, sincronismi, contatori, interfacce e circuiti di controllo all’interno di un’architettura riconfigurabile.
Le FPGA divennero una delle mie principali competenze di progettazione. Con questi strumenti riprogettai i sistemi videowall, realizzai controller per LED wall e, più avanti, affrontai anche il supporto elettronico per il calcolo ottico.
Quattro linguaggi, un percorso
PALASM, AHDL, VHDL e Verilog non sono quattro nomi per la stessa cosa. Appartengono a contesti diversi, ma condividono un’idea: descrivere la logica di un circuito con un linguaggio formale.
PALASM
È legato ai dispositivi PAL e alla descrizione delle loro funzioni logiche mediante equazioni booleane, assegnazioni di segnali e configurazione dei pin.
È vicino al problema concreto della logica programmabile di piccole dimensioni: tradurre relazioni tra ingressi, uscite e registri nelle risorse disponibili sul dispositivo.
AHDL
Altera Hardware Description Language è il linguaggio proprietario di Altera, storicamente integrato nell’ambiente MAX+PLUS II.
Permette di descrivere equazioni, tabelle di verità, gruppi di segnali e macchine a stati. È legato all’ecosistema Altera, a differenza di VHDL e Verilog, che sono linguaggi standardizzati.
VHDL
È un linguaggio standardizzato per descrivere, simulare e, per la parte sintetizzabile, realizzare circuiti digitali. Ha una sintassi esplicita e un sistema di tipi rigoroso.
Separa l’interfaccia, descritta nell’entity, dall’implementazione, descritta nell’architecture. Consente di organizzare progetti gerarchici e processi concorrenti.
Verilog
È anch’esso un linguaggio standardizzato per descrizione, simulazione e sintesi dell’hardware. La sintassi è più compatta e ricorda quella del C.
Il modulo è l’unità di base. Assegnazioni continue e blocchi procedurali descrivono logica combinatoria, registri e circuiti sequenziali. Può descrivere le stesse funzioni hardware di VHDL.
Approfondimenti: Altera Training Manual: AHDL e MAX+PLUS II · VHDL e Verilog a confronto · Hardware description languages.
Non un programma eseguito in sequenza, ma un circuito
VHDL e Verilog possono somigliare a linguaggi di programmazione, ma il loro scopo è diverso: descrivono hardware. Più blocchi possono operare contemporaneamente; i registri aggiornano il proprio stato in relazione al clock e ai segnali di controllo.
Per ottenere il circuito, gli strumenti elaborano la descrizione sintetizzabile, la traducono in una rete logica e la collocano nelle risorse della FPGA. Si verificano anche i vincoli temporali e si genera la configurazione del dispositivo. Non tutto ciò che si può scrivere per una simulazione è automaticamente sintetizzabile.
y = (a AND b) OR (NOT c)
Una semplice equazione come questa descrive una relazione logica. In TTL avrei scelto gli integrati e collegato le porte; con la logica programmabile descrivo la funzione, mentre gli strumenti la mappano sulle risorse del dispositivo. Per le funzioni sequenziali devo definire anche registri, clock e comportamento nel tempo.
Dal video al calcolo ottico
Il filo conduttore resta lo stesso: trovare l’architettura giusta per elaborare segnali e informazioni. Le FPGA mi hanno permesso di portare quell’idea dai sistemi video ai grandi schermi e poi all’elettronica di supporto per il calcolo ottico.
In quest’ultimo caso non sostituiscono la parte ottica: ne affiancano il funzionamento con i circuiti di controllo e di interfaccia necessari al sistema.
Dalla serie 74 alle equazioni booleane, dalle PLD alle FPGA: ogni passaggio mi ha dato un nuovo modo di trasformare un’idea in un circuito. E questa storia continua ancora oggi.
