Circuiti combinatori
Nella pagina dedicata alla logica digitale abbiamo conosciuto i mattoni del calcolatore, dalle porte AND, OR e NOT alle loro cugine NAND, NOR e XOR, e abbiamo imparato che ogni porta risponde a una tabella di verità che ne racconta il carattere meglio di qualsiasi descrizione a parole. Adesso alziamo lo sguardo dal mattone alla costruzione, perché una porta da sola serve a poco esattamente come un mattone lasciato in giardino, e diventa utile soltanto quando viene posata accanto alle sorelle secondo un disegno preciso, e in questa pagina impareremo a tracciare quel disegno, partendo da una tabella di verità qualsiasi, scegliendo le porte giuste, risparmiando dove le regole dell'algebra lo permettono e arrivando infine ai chip veri, con i loro piedini di metallo, che si infilano su una scheda di prova e fanno il lavoro di interi comitati di porte.
Prima di costruire conviene dare un nome alle cose, e il nome che ci serve oggi è circuito combinatorio, un circuito in cui ogni uscita dipende, in ogni istante, soltanto dai valori che in quell'istante si trovano sugli ingressi, senza alcun ricordo di ciò che è accaduto un attimo prima, un po' come un campanello di casa che suona finché tieni premuto il pulsante e tace appena lo lasci, senza conservare traccia dei tocchi passati. La memoria arriverà presto, nella pagina successiva, e qui invece celebriamo proprio la sua assenza, perché è questa assenza che rende i circuiti combinatori prevedibili, descrivibili con una tabella di verità finita e progettabili con carta e penna, e il percorso di oggi parte dall'algebra che organizza il progetto, passa per le famiglie di chip che lo realizzano e si chiude con cinque esperimenti da costruire con foglio, browser e pazienza.
Per progettare con metodo serve uno strumento che abbiamo già incontrato sul nascere, l'algebra di Boole, e conviene organizzarne le regole in una piccola cassetta da tenere aperta sul banco, perché sono poche e raccontano una storia sola. La prima coppia parla degli elementi neutri, cioè dei compagni che lasciano tutto com'è, e dice che una variabile unita in OR con lo zero resta identica a se stessa, così come una variabile legata in AND con l'uno resta quella di prima, esattamente come aggiungere zero a un numero oppure moltiplicarlo per uno. La seconda coppia racconta la dominanza, dove il valore più forte schiaccia l'altro senza appello, perché una OR con l'uno dà sempre uno e una AND con lo zero dà sempre zero, come alla morra cinese dove il sasso vince qualunque cosa faccia la carta. Segue l'idempotenza, parola pomposa per un fatto semplice, dato che sommare una variabile con se stessa oppure moltiplicarla per se stessa restituisce sempre la variabile stessa, e infine la doppia negazione, la più intuitiva delle regole, perché rovesciare due volte consecutive riporta il valore al punto di partenza, come dire due volte di fila il contrario di una frase.
Le regole seguenti somigliano a quelle della scuola e vanno maneggiate con curiosità, perché quasi sempre confermano le abitudini dell'aritmetica ordinaria e ogni tanto le tradiscono. La proprietà commutativa dice che scambiare l'ordine degli ingressi lascia il risultato invariato, la associativa assicura che raggruppare tre variabili in un modo o nell'altro non cambia il valore finale, e la distributiva mostra che una variabile può moltiplicare una somma oppure, nella forma gemella che sorprende sempre i principianti, che una somma può distribuirsi sopra un prodotto, secondo la regola per cui A più il prodotto di B e C si riscrive come prodotto della somma di A più B con la somma di A più C. La legge di assorbimento è quella che più strega chi arriva dalle elementari, perché una variabile unita in OR a un prodotto che la contiene resta semplicemente se stessa, come se il secondo pezzo venisse inghiottito dal primo, e ognuna di queste regole viaggia sempre in coppia con la sua gemella, che si ottiene scambiando AND con OR e zero con uno, una simmetria elegante che dimezza lo sforzo di memorizzazione.
Chiude la cassetta la legge di De Morgan, la più feconda di tutta l'algebra, che spiega come negare un prodotto equivalga a sommare le negazioni e come negare una somma equivalga a moltiplicare le negazioni, due frasi da verificare riga per riga con le tabelle di verità e dal risultato per niente ovvio. Il suo potere si vede in un esempio domestico, immaginando un impianto d'allarme che deve suonare quando la finestra e la porta non sono entrambe chiuse, perché la soluzione diretta chiede di rilevare le due chiusure con altrettanti sensori, di unirle in una AND e di rovesciare il risultato con una NOT, mentre la legge di De Morgan suggerisce una strada più furba, dato che suonare quando le due chiusure non sono entrambe presenti significa suonare quando almeno una delle due aperture è segnalata, il che si ottiene rilevando direttamente le aperture e unendole in una OR, e così l'intera NOT sparisce dal disegno, intera davvero, perché è una porta intera che abbiamo risparmiato senza cambiare di una riga la tabella di verità.
Veniamo al mestiere vero, cioè alla domanda che ogni progettista si pone davanti a ogni nuovo compito, ed è come tradurre una tabella di verità qualsiasi in una formula costruibile con porte standard. Il trucco sta nel leggere la tabella guardando soltanto le righe in cui l'uscita vale uno, perché ognuna di quelle righe racconta una condizione precisa, per esempio la riga zero uno uno dice che la funzione deve valere uno quando il primo ingresso vale zero e gli altri due valgono uno, e questa condizione si scrive come un prodotto di tre fattori, nel quale ogni variabile compare diritta quando nella riga vale uno e barrata, cioè negata, quando nella riga vale zero. Sommando tutti questi prodotti, uno per ogni riga che vale uno, si ottiene una formula che vale uno esattamente nelle righe previste e zero in tutte le altre, ed è la forma canonica detta somma di prodotti, il passaporto che conduce qualsiasi tabella di verità dentro un circuito fatto di porte AND e OR.
Proviamo il metodo su una funzione concreta, la funzione di maggioranza, scelta perché tra poco tornerà tra le tue mani sotto forma di esperimento, e immagina tre interruttori, chiamati A, B e C, che comandano una lampadina la quale deve accendersi quando almeno due dei tre interruttori sono su. La tabella di verità conta otto righe, dal momento che tre ingressi danno otto combinazioni, e la lampadina si accende in quattro di esse, nella riga zero uno uno, nella riga uno zero uno, nella riga uno uno zero e nell'ultima riga uno uno uno, perché in ciascuna almeno due interruttori stanno su. Trasformando ogni riga accesa nel suo prodotto di tre fattori, con le variabili barrate dove la riga mostra zero, la formula completa diventa la somma del prodotto di A barrato con B e C, del prodotto di A con B barrato e C, del prodotto di A e B con C barrato e del prodotto puro di A, B e C, il che disegna un circuito con quattro porte AND a tre ingressi seguite da una OR a quattro ingressi, una macchina che funziona al primo colpo ma che lascia l'amaro in bocca, perché serve davvero tutto questo materiale per accendere una lampadina?
Quell'amaro in bocca merita fiducia, e per capirne l'origine basta ricordare che le formule vivono gratis sulla carta mentre le porte costano soldi veri, dato che ognuna occupa spazio nel chip, si scalda quando lavora e beve corrente dall'alimentatore, così il progettista che risparmia una porta risparmia in realtà tre cose insieme, cioè silicio, calore e bolletta, e quando le porte risparmiate diventano migliaia il risparmio diventa una macchina intera, più piccola, più fresca e più economica. Nella pagina sulla logica digitale abbiamo visto come un chip moderno stipi milioni di porte in un'unghia di silicio, eppure la disciplina della semplificazione resta viva proprio perché il costo non sparisce mai del tutto e si sposta soltanto, dai centesimi del singolo integrato alle fatture dell'elettricità dei grandi centri di calcolo, e la semplificazione procede in due mosse, una che accorcia la formula con le regole dell'algebra e una che cambia le porte con cui la formula viene vestita, sfruttando la legge di De Morgan.
Applichiamo la prima mossa alla funzione di maggioranza, e il colpo di scena parte da una giocata che sembra da prestigiatore, dato che il prodotto di A per B per C, che compare una volta sola nell'ultima riga della tabella, viene riscritto come somma di tre copie di se stesso, il che è perfettamente legittimo perché sommare una cosa a se stessa non cambia il risultato, come insegna la regola dell'idempotenza che abbiamo appena sistemato in cassetta. La prima copia si accoppia con il prodotto di A barrato per B per C, e fra i due si raccoglie il fattore comune B per C lasciando tra parentesi la somma di A barrato con A, una somma che vale sempre uno perché una variabile e la sua negazione coprono tutte le possibilità esistenti, così quel pezzo si riduce al semplice prodotto di B per C. La seconda copia gioca lo stesso raggruppamento con il prodotto di A per B barrato per C e regala il prodotto di A per C, la terza copia lo gioca con il prodotto di A per B per C barrato e regala il prodotto di A per B, e la funzione intera si riscrive come somma di questi tre prodotti a due ingressi, con tre AND più piccole e una OR a tre ingressi al posto di quattro AND grandi e una OR enorme, e il lavoro resta identico con meno silicio al seguito.
La seconda mossa gioca sul tipo di porte invece che sul loro numero, e torna preziosa quando il cassetto del laboratorio pullula soltanto di chip NAND, il che accade più spesso di quanto immagini, dato che la NAND è storicamente la porta più economica da fabbricare. La somma di tre prodotti appena ottenuta si può riscrivere come una NAND finale i cui tre ingressi sono a loro volta le uscite di tre NAND, perché negare due volte il risultato, mossa lecita per la doppia negazione, e poi piegare la negazione esterna con la legge di De Morgan trasforma la somma dei tre prodotti nella negazione del prodotto delle tre negazioni, e il circuito equivalente usa soltanto porte NAND, tre a due ingressi per i prodotti negati e una a tre ingressi per raccoglierli, combinazioni che i costruttori confezionano da oltre mezzo secolo dentro integrati da pochi centesimi, come racconteremo tra poco.
A proposito di circuiti che fanno lo stesso lavoro, conviene fermarsi sulla parola con cui li si chiama, perché due circuiti si dicono equivalenti quando producono lo stesso valore di uscita per ogni possibile combinazione degli ingressi, punto e basta, senza alcun rispetto per la strada che ciascuno percorre per arrivarci, un po' come due sentieri diversi che portano entrambi alla porta di casa tua. La prova di equivalenza si fa con la stessa arma usata fin dal principio, la tabella di verità, calcolando le uscite dei due circuiti riga per riga e confrontandole, e un esempio celebre fa il giro dei libri da generazioni, dato che il circuito con due AND e una OR che calcola A per B più A per C si riscrive, per la proprietà distributiva, come A moltiplicato per la somma di B più C, una sola AND e una sola OR, e le due tabelle di verità, con le loro otto righe, coincidono fila per fila, il che dimostra l'equivalenza e insieme il guadagno, una porta intera in meno sul disegno definitivo.
I circuiti disegnati finora vivevano sul foglio, mentre i costruttori comprano i componenti già fatti, racchiusi in contenitori di plastica o ceramica chiamati circuiti integrati, con il termine inglese chip sempre pronto a sostituirli nel gergo quotidiano, e dentro ogni contenitore, su una piastrina di silicio grande quanto un'unghia, stanno piazzate le porte pronte all'impiego. Gli integrati si classificano per numero di porte e la scala storica conta quattro gradini, il piccolo che va da una a dieci porte, il medio che va da dieci a un centinaio, il largo che sale da un centinaio fino a centomila, e il larghissimo che oltrepassa centomila porte e oggi le conta a miliardi, e i gradini portano nomi inglesi che vale la pena udire una volta sola, small, medium, large e very large scale integration, che le sigle SSI, MSI, LSI e VLSI riassumono nei cataloghi. Un conto da ridere raccontato da Tanenbaum chiarisce perché esistano gradini diversi, dato che un chip universale contenente cinque milioni di NAND generiche richiederebbe quindici milioni di piedini e, a un piedino ogni due millimetri e mezzo, sfiorerebbe i diciannove chilometri di perimetro, il che mette fine al sogno dell'integrato onnicomprensivo e spiega perché la vittoria spetti ai circuiti specializzati, che racchiudono molte porte interne dietro pochi piedini esterni.
Il contenitore più familiare di sempre è il dual inline package, il pacchetto a due file di piedini, un rettangolino di plastica con due pettini di linguette metalliche lungo i lati lunghi, e la versione classica ne conta quattordici, mentre le sorelle maggiori arrivano a sedici, venti, ventotto, quaranta e oltre, e ogni linguetta ha un compito preciso, perché collega un ingresso o un'uscita di qualche porta interna oppure l'alimentazione oppure la massa, dato che ogni chip va nutrito con tensione positiva e portato a terra, servizi condivisi da tutte le porte dentro di lui. Una tacca o un puntino vicino a un angolo segnala la casa del piedino numero uno, e su questo dettaglio minuscolo si gioca la sopravvivenza del componente, perché infilato al contrario in un circuito stampato o in una scheda di prova riceve la corrente nel verso sbagliato e muore all'istante. Il membro più piccolo di questa tribù, quello che ha storicamente riempito scuole e laboratori, contiene appena quattro porte NAND a due ingressi, dodici piedini per le porte più due per la sussistenza, e costa pochi centesimi, il che spiega come negli anni settanta i calcolatori fossero armadi costellati di migliaia di questi cosini, mentre oggi un processore intero con la sua memoria rapida convive dentro un chip unico.
Due famiglie di integrati piccoli hanno scritto la storia dell'elettronica, propria e altrui, e meritano di essere nominate per nome, perché ancora oggi si trovano nei negozi e nei cassetti di chi gioca con la corrente. La prima è la serie settantaquattro, nata con la tecnologia TTL, sigla di transistor-transistor logic, e vive rigorosamente a cinque volt, consuma con generosità, viaggia veloce e tende a trattare i piedini lasciati scollegati come se valgessero uno, tanto che il suo capostipite, il mitico 7400, racchiude quattro NAND a due ingressi e cammina sul mercato dal lontano 1964. La seconda è la serie quaranta, costruita con la tecnologia CMOS, sigla di complementary metal oxide semiconductor, e il suo membro più celebre, il 4011, ospita a sua volta quattro NAND a due ingressi, ma la famiglia si distingue per due abitudini molto diverse, dato che tollera tensioni che spaziano da tre a quindici volt e consuma corrente quasi soltanto nei istanti di commutazione, il che la rende la compagna ideale delle pile, mentre la sua sensibilità ai piedini abbandonati impone di collegare ogni ingresso a qualcosa di deciso, mai alla malinconia del filo che penzola.
Per unire i chip senza saldature esiste la scheda di prova, chiamata breadboard nei manuali inglesi, una base di plastica punteggiata di piazzole, cioè di fori nei quali si infilano i piedini dei componenti, e il segreto sta nel modo in cui quei fori sono collegati sotto la superficie, perché ogni fila di cinque piazzole forma una piccola rotaia metallica che unisce elettricamente tutto ciò che viene infilato dentro, mentre due lunghe corsie che corrono lungo i bordi portano l'alimentazione e la massa a chiunque vi si appoggi con un filo. Il rito di ogni costruzione comincia piazzando i chip a cavallo del solco centrale, in modo che i piedini dei due lati finiscano su file separate, poi si porta il cinque volt della batteria lungo una corsia e la terra lungo l'altra e infine si ramificano i collegamenti con fili sottili, e una sola legge domina su tutto il resto, quella per cui ogni integrato va alimentato sul piedino previsto, perché anche la porta più semplice muore di fame se dimentichi il suo pasto di tensione. Per quanto riguarda la sicurezza, il laboratorio digitale di queste pagine si alimenta esclusivamente con pile o con la porta USB del computer, cinque volt mansueti in corrente continua, lontano anni luce dalla presa di casa, che appartiene a un altro regno dell'elettricità e si lascia avvicinare soltanto da mani esperte e strumenti adatti.
Il primo abitante di rilievo di questa città di chip è il decodificatore, con il nome inglese decoder che lo chiama per esteso nei cataloghi, e il suo compito è accendere una sola uscita per volta, quella il cui numero coincide con la combinazione degli ingressi, spegnendo tutte le altre, come un centralino di palazzo nel quale componi il numero di un appartamento e suona un solo campanello. Con tre ingressi, A, B e C, le uscite sono otto, numerate da zero a sette, e ogni uscita è una AND a tre ingressi che riconosce una combinazione precisa, così l'uscita zero riconosce A barrato e B barrato e C barrato, l'uscita uno riconosce A barrato e B barrato e C, e così via fino all'uscita sette, che si accende soltanto quando tutti e tre valgono uno, mentre tre piccoli invertitori forniscono le versioni negate che servono alle AND. Il suo impiego più importante vive dentro le memorie, dove un indirizzo lungo viene spezzato e i suoi bit più significativi pilotano un decodificatore che tiene sveglio un solo chip tra gli otto che compongono la memoria, lasciando dormire tutti gli altri, il che dimostra come un'idea da poche porte possa governare un esercito.
Il secondo abitante risolve il problema opposto, ed è il multiplexer, parola che i manuali traducono con selettore di dati e i tecnici pronunciano con la sigla MUX, un circuito che possiede molte linee di ingresso dati, poche linee di controllo e una sola uscita, e la sua funzione è scegliere quale dei segnali di ingresso instradare verso l'uscita, esattamente come la leva dello scambio in una stazione ferroviaria decide quale binario di campagna viene collegato al binario principale. Con due linee di controllo il multiplexer sceglie tra quattro ingressi, con tre linee tra otto, e il trucco interno è fatto di porte AND ognuna abilitata da una diversa combinazione dei controlli, seguite da una OR che raccoglie il segnale scelto, mentre le AND non selezionate producono zero e restano in silenzio. Immagina la piccola centralina di un municipio che deve collegare al registratore uno fra molti microfoni sparsi nelle sale, perché basta esprimere il numero della sala in binario sulle linee di controllo per far arrivare alla registrazione la voce giusta e tenere gli altri microfoni in disparte, e questa stessa disciplina, convertita in parallelo-seriale, governa da sempre le tastiere, dove i bit di ogni tasto vengono spediti uno dopo l'altro lungo un filo unico invece di occuparne otto.
Il percorso inverso spetta al demultiplexer, che riceve un segnale solo e lo instrada verso una delle sue tante uscite in base al numero espresso dalle linee di controllo, come il cartolaio che smista le cartoline nei casellari a seconda del numero scritto sulla destinazione, e la coppia formata dal raccoglitore e dallo sparpagliatore governa ogni incrocio di dati dentro la macchina, dal collegamento fra processore e memoria fino agli smistamenti più rapidi delle reti, che un giorno incontreremo nel modulo dedicato.
Il terzo abitante giudica, ed è il comparatore, che prende in consegna due numeri binari e decide se sono uguali oppure quale dei due merita di chiamarsi maggiore. Per l'uguaglianza il ragionamento è elementare e torna alla porta XOR, che vale zero proprio quando i suoi due ingressi coincidono, così basta collocare una XOR su ogni coppia di bit, unire le uscite in una OR e rovesciare il verdetto con una NOT finale, il che significa che il segnale di uguaglianza si alza soltanto quando tutte le coppie sono identiche, e su quattro bit il gioco richiede quattro XOR, una OR a quattro ingressi e una NOT. Per stabilire chi sia il maggiore il circuito imita il modo in cui confronti due numeri a mente partendo dai bit più significativi, perché la prima coppia che differisce, scansionando da sinistra verso destra, decide da sola il vincitore e rende inutili tutte le coppie a destra, un principio che i libri di progetto traducono in una manciata di porte per ogni bit e che qui basta custodire come idea.
Passiamo dal confrontare al calcolare, e il primo circuito del gruppo è lo shifter, dal
verbo inglese to shift, spostare, una rete con otto ingressi e otto uscite che copia la parola
spostandola di una posizione verso sinistra oppure verso destra a seconda di una linea di controllo,
infilando uno zero nel posto che si libera. Il motivo per cui questa semplice pedana merita rispetto
sta in una proprietà già incontrata nella pagina precedente, quella dei pesi che raddoppiano a ogni
posizione, perché spostare tutti i bit di un passo verso sinistra equivale ad alzare ogni peso di una
posizione, e alzare i pesi di una posizione significa raddoppiare il numero rappresentato. L'esempio
si segue a occhio nudo, dato che il tre si scrive 0011, spostato a sinistra una volta
diventa 0110, che vale sei, e spostato una seconda volta diventa 1100,
che vale dodici, mentre lo spostamento a destra fa il percorso contrario dimezzando, con
l'avvertenza che il bit che cade nel vuoto a ogni spostamento verso destra sparisce per sempre, e
per questo i progettisti usano gli shifter ovunque occorra moltiplicare o dividere per potenze di
due senza disturbare il sommatore.
E ora l'appuntamento con il capostipite di tutta la famiglia, l'unità aritmetica e logica, chiamata ALU dalle iniziali inglesi, che non è altro che la somma di quanto abbiamo costruito fin qui, chiusa in un unico contenitore con due ingressi, A e B, un'uscita e alcune linee di controllo che fungono da menu, scegliendo fra le operazioni disponibili. Nella versione a un bit che i libri disegnano con amore, dentro convivono una AND, una OR, un sommatore completo e una piccola rete che copia B, e un decodificatore a due linee di controllo accende una sola di queste quattro portate alla volta, permettendole di passare attraverso la porta OR finale, un po' come scegliere quale rubinetto aprire in un banco di cucina con più tubi. Replicando il circuito per ogni posizione e collegando i riporti a catena da destra verso sinistra si ottiene l'unità a n bit, e due trucchi completano il quadro, il primo consiste in un segnale dedicato che aggiunge uno alla somma, il secondo nell'invertire i bit di B prima di presentarli al sommatore, che è il trucco del complemento a due imparato nella pagina precedente e che trasforma la somma in sottrazione quasi per incanto, così una sola ALU sa sommare, sottrarre, confrontare e manipolare bit a comando, e la lentezza della propagazione del riporto che avrebbe frenato tutto è stata domata dalla tecnica dell'anticipazione che già conosci.
Resta da raccontare il direttore d'orchestra, e il suo nome è clock, parola inglese per orologio, un segnale che lascia da parte i calcoli e si occupa soltanto di tenere il passo a tutto il resto, emettendo una sequenza regolare di impulsi, uno alto e uno basso alternati con metronomica precisione, dove l'intervallo fra due fronti consecutivi si chiama ciclo di clock e la sua durata, nell'elettronica dei calcolatori, può scendere fino a pochi nanosecondi. La ragione per cui serve sta in un difetto che finora abbiamo ignorato, dato che le porte reali impiegano un tempo piccolo ma non nullo per decidere, un ritardo compreso indicativamente fra uno e dieci nanosecondi secondo la tecnologia, e quando l'uscita di una porta alimenta un'altra porta e questa una terza, i ritardi si sommano come i tempi di una staffetta stanca, così in un circuito a molti stadi l'uscita finale smette di dibattere e si stabilisce sul valore giusto soltanto dopo un intervallo ben definito. Il clock entra in scena come metronomo che aspetta, dato che i circuiti sequenziali della pagina prossima scandiranno i propri passi sul suo fronte, consentendo ai livelli combinatori di completare il lavoro prima che il risultato venga raccolto, e per questo ogni processore annuncia con orgoglio la propria frequenza di clock, un numero che nei calcolatori domestici si misura in gigahertz, cioè in miliardi di cicli al secondo.
L'ultima invenzione della pagina risponde a un problema d'ingegneria sociale, perché una memoria, un processore e molte periferiche condividono gli stessi fili del bus, e il disastro scoppierebbe se più chip parlassero insieme, con uno che spinge un filo a uno e un altro che lo tira a zero, un cortocircuito logico che fonde i transistor e i nervi degli addetti. La soluzione si chiama uscita a tre stati, ed è un tipo speciale di porta, il buffer, che oltre ai valori zero e uno può assumere una terza condizione, quella del filo staccato, come se qualcuno avesse tagliato la connessione con una pinza e potesse riattaccarla in pochi nanosecondi, e questa condizione si chiama alta impedenza nel gergo, che descrive un'uscita che semplicemente non esiste per gli altri. Il regolamento del dibattito è semplice, dato che ogni chip riceve un segnale di abilitazione che gli concede la parola soltanto nel suo turno, mentre tutti gli altri restano in ascolto con i buffer in alta impedenza, e quando i dati devono viaggiare in entrambe le direzioni entra in campo il transceiver, nome macedonio che unisce transmitter e receiver, un chip a due vie che governa il traffico verso e dal bus, e con questa disciplina gentile milioni di porte convivono su fili condivisi senza mai pestarsi i piedi.
La teoria dei circuiti combinatori, per quanto raccontata con calma, resta nebbia finché vive soltanto sulla pagina, quindi adesso vieni a provarla con cinque esperimenti, i primi due con carta e penna e gli ultimi tre nel simulatore di porte logiche del browser, ordinati dal più semplice al più articolato, e servono un foglio, un pizzico di pazienza e la curiosità di vedere una tabella di verità diventare fili.
Prendi un foglio e disegna la tabella di verità della funzione che governa una lampadina comandata
da tre interruttori, con la regola che la lampadina si accende quando la maggioranza dei tre è su,
cioè quando almeno due delle tre mani sono alzate, e scrivi le otto righe in ordine, da
000 a 111, segnando uno nella colonna della lampadina soltanto nelle righe
011, 101, 110 e 111. A ogni riga segnata
corrisponde un prodotto di tre fattori, ciascuno diritto o barrato secondo il valore che la variabile
ha in quella riga, e sommandoli ricostruisci la formula completa che abbiamo derivato nel corpo della
pagina, verificando con la tua penna che la forma canonica della somma di prodotti esce diretta dalla
tabella senza alcun colpo di genio.
Per il secondo esperimento semplifica la formula appena ottenuta usando la mossa del mago che abbiamo raccontato, raddoppiando il termine con tutte e tre le variabili fino a ottenerne tre copie e raggruppando ognuna con uno degli altri tre termini per far emergere i tre prodotti a due ingressi, poi apri il simulatore, per esempio quello libero di CircuitVerse, e costruisci entrambe le versioni una accanto all'altra, quella canonica con le quattro AND a tre ingressi e quella semplificata con le tre AND a due ingressi, commutando gli interruttori virtuali in tutte le otto combinazioni e osservando che le due lampadine gemelle si comportano all'unisono riga dopo riga, perché hai appena dimostrato con le mani l'equivalenza che l'algebra prometteva sulla carta.
Il terzo esperimento si svolge interamente nel simulatore e ti fa costruire un multiplexer a quattro vie partendo da porte nude, così disegna quattro porte AND a tre ingressi ciascuna, collega a ogni AND uno dei quattro ingressi dati e una diversa combinazione dei due interruttori di selezione, servendoti di due piccoli invertitori per generare le versioni negate dei selettori, poi raccogli le quattro uscite in una OR a quattro ingressi e osserva il miracolo quotidiano, dato che muovendo i due interruttori di selezione l'uscita segue fedelmente l'ingresso scelto, passando dal primo al quarto con la stessa tranquillità con cui la leva dello scambio devia il treno, e prova poi a fermare un istante lo sguardo sulle AND non selezionate, che producono zero in silenzio lasciando parlare la sola eletta.
Il quarto esperimento è la somma, e comincia dal mezzo sommatore, la coppia composta da una XOR e
da una AND che hai già incontrato nella pagina precedente, dove la XOR regala il bit della somma e
la AND il riporto, poi aggiungi un secondo mezzo sommatore e una OR per accogliere anche il riporto
che arriva da destra, ottenendo il sommatore completo che sa lavorare su ogni colonna. Incatena
quattro sommatori completi collegando il riporto di uscita di ognuno all'ingresso del vicino di
sinistra, porta il riporto iniziale a terra, e hai appena costruito un sommatore a quattro bit degno
di un computer degli anni sessanta, sul quale puoi provare sette più sei, 0111 più
0110, osservando le colonne che si accendono una dopo l'altra mentre il riporto viaggia
verso sinistra, e alla fine contempla il riporto finale che resta acceso, piccolo traditore luminoso
che sussurra come la somma tredici non ci stia in quattro bit, la stessa storia dell'eccedenza che la
pagina precedente raccontava con la parola overflow.
Il quinto esperimento si svolge col browser ma legge la realtà, perché ti chiede di cercare in rete la scheda tecnica, il datasheet che i costruttori pubblicano per ogni integrato, di un chip storico come il 7400 oppure il 4011, e di aprirla alla pagina della mappa dei piedini, dove riconoscerai subito il piedino dell'alimentazione e quello della massa posti agli angoli opposti del contenitore, la tacca che indica il numero uno e le quattro porte NAND disegnate come scatoline con i loro dodici collegamenti, e sfogliando oltre troverai le tabelle di verità di ciascuna porta e i tempi di risposta misurati in nanosecondi, tutte cose che da oggi sai leggere, e conserva questo documento con cura, perché quando arriverà il momento di accendere la scheda di prova con le mani vere sarà la mappa che ti guida.
Questa pagina attinge soprattutto al capitolo sul livello logico digitale del libro Architettura dei calcolatori di Andrew S. Tanenbaum, e in particolare ai paragrafi dedicati all'algebra di Boole, all'implementazione e all'equivalenza delle funzioni booleane, ai circuiti integrati dalle scale piccole a quelle larghissime, alle reti combinatorie come decodificatori, multiplexer e comparatori, e ai circuiti aritmetici con il loro direttore d'orchestra, e ora che sai come una tabella di verità diventi porte, le porte diventino chip e i chip diventino una macchina che somma e confronta, la domanda che resta in sospeso è come quella macchina impari a ricordare, motivo per cui la prossima pagina è dedicata al mondo sequenziale e alla memoria, e puoi raggiungerla da qui quando ti senti pronto.