CIRCUITO LOGICO
. Nei più vari campi della tecnica si fa oggi largo uso di segnali che, anziché poter assumere un valore qualunque (segnali analogici) possono assumere soltanto un certo numero di valori discreti (segnali numerici): spesso addirittura si usano "segnali binari", cioè che possono assumere soltanto uno tra due valori possibili, indicati convenzionalmente con 0 e 1. I due valori sono definiti con una certa approssimazione, e cioè si riconoscono come 0 (valore basso) tutti quei valori compresi entro una certa fascia e come 1 (valore alto) tutti quelli compresi entro un'altra fascia distinta. Segnali che assumono valori non compresi entro una delle due fasce sono considerati errati: in tal modo si ha una notevole sicurezza nel discriminare e riconoscere i due valori.
Quando, come normalmente avviene in elettronica, la variabile è una tensione elevata, sussiste la possibilità di associare 1 al valore alto (H) della tensione e il valore 0 al valore basso (L) oppure la possibilità contraria: nel primo caso si parla di logica positiva e nel secondo di logica negativa. Le variabili 0 e 1 possono avere anche supporto fisico diverso dalla tensione. Per es., possono corrispondere all'apertura o alla chiusura di un contatto, alla presenza o assenza di un foro in una banda perforata, ecc. Possono anche essere associate alle affermazioni di "vero" e "falso" della logica e proprio da associazioni di questo tipo nasce la locuzione "circuito logico".
Le regole che definiscono le operazioni su variabili binarie sono dettate dall'algebra di Boole. Alcune di queste operazioni sono riportate in fig. 1.
La prima di esse, la NOT (o complementazione), si riferisce a una sola variabile A e dà come risultato U la À (A negata). Le altre operazioni si riferiscono a due variabili A e B. L'operazione AND prende anche il nome di "prodotto logico" e la OR il nome di "somma logica". Le altre operazioni NAND, NOR ed EOR o OR esclusivo) sono combinazioni delle tre sopra indicate. Per ciascuna operazione è riportata la "tabella di verità": questa fornisce i valori 0 o 1 che la variabile di uscita U assume in corrispondenza di tutte le possibili combinazioni delle due variabili indipendenti A e B. Un circuito che realizza una delle operazioni sopra indicate prende il nome di "porta logica", o semplicemente "porta" (ingl.: gate).
Si possono definire per estensione funzioni di più di due variabili. Qualsiasi funzione di variabili binarie può essere realizzata mediante una combinazione di somme, prodotti e complementazioni logiche, cioè con configurazioni di porte NOT, AND, OR. Si dimostra inoltre che qualsiasi funzione logica può essere realizzata con sole operazioni NAND o con sole operazioni NOR. Per es., in fig. 2 è mostrato come mediante l'operazione NAND si possano realizzare, tra le altre, anche le operazioni NOT e AND e quindi qualsiasi altra funzione logica.
Nella progettazione di c. l. la natura del problema determina la funzione logica da realizzare. Esistono metodi che permettono di ricercare la realizzazione più economica mediante combinazioni di porte (metodi di Quine, Harvord, Veitch, Karnaugh).
Le reti logiche del tipo considerato sopra danno luogo a situazioni completamente determinate, a ciascun istante, soltanto dalle variabili di entrata (reti combinatorie). Le reti possono però comprendere anche elementi di memoria, per es., circuiti bistabili. In questo caso lo stato del sistema (rete sequenziale) e tutte le sue uscite dipendono non solo dai valori delle variabili di entrata al momento considerato, ma anche dalla storia del sistema, cioè dagli stati che esso ha assunto in precedenza. Lo stato del sistema a un certo istante può essere descritto in termini degli stati in cui si trovano gli elementi di memoria. Nei sistemi di questo tipo, durante il funzionamento, si hanno successivi cambiamenti dello stato oltre che delle uscite. Nei sistemi "asincroni" il cambiamento di stato avviene ogni volta che ha luogo un cambiamento di una variabile d'ingresso. Nei sistemi "sincroni" il passaggio da uno stato Qn al successivo Qn+I non ha luogo al momento in cui varia una variabile d'ingresso ma soltanto successivamente in corrispondenza di un comando periodico fornito da un orologio (clock).
Le reti logiche dei vari tipi indicati vengono realizzate combinando componenti elettronici che effettuano operazioni logiche elementari. I componenti realizzati con una stessa tecnologia, sempre in forma integrata e con caratteristiche tali da poterli combinare direttamente tra di loro, costituiscono una "famiglia di circuiti logici".
Porte logiche. - Le porte logiche si realizzano con varie tecniche, ma si tende a ridurre al minimo il numero di tipi di porte in una famiglia. Per tale ragione è conveniente realizzare reti combinatorie impieganti solo porte NAND o NOR: porte uguali vengono realizzate più facilmente in uno stesso circuito integrato. Ogni porta è generalmente prevista per un numero di ingressi (fan-in) maggiore di 2 e può pilotare un certo numero, per es. 10 ÷ 50, di porte della stessa famiglia senza essere sovraccaricato (fan out). Si chiama margine di rumore l'ampiezza massima (per es. 1V) che può assumere un segnale imprevisto che aggiunto all'uscita di una porta fa ancora riconoscere correttamente lo stato (0 o 1) della porta seguente. Il ritardo di propagazione (per es. di alcuni nanosecondi per la famiglia ECL, v. oltre) è il tempo che intercorre mediamente tra un cambiamento di stato dell'entrata e un cambiamento di stato dell'uscita.
Il più semplice tipo di famiglia è a diodi (fig. 3a). Con logica positiva l'uscita è 1 soltanto se le tre entrate sono 1 e pertanto si tratta di porta AND. Con logica negativa lo stesso circuito realizza una porta OR.
Il secondo tipo (fig. 3b) è detto DCTL (Direct Coupled Transistor Logic) e più spesso RTL (Resistor Coupled Transistor Logic). Si considera all'uscita lo stato 0 quando il transistore è in saturazione (tensione quasi nulla) e lo stato 1 quando il transistore è interdetto (tensione quasi pari alla tensione di alimentazione).
In questa famiglia e nelle altre a transistori con comando alla base, le funzioni risultanti sono sempre negate, grazie all'inversione tra variazione di tensione di base e di collettore. Le proprietà amplificatrici del transistore assicurano alta impedenza di entrata e alto fan-out.
La logica DTL (Diode Transistor Logic) di fig. 3c consente un maggior fan-out a pari fan-in. In essa la funzione logica è affidata a diodi e l'amplificazione e l'inversione a transistori. Usando per l'accoppiamento tra i transistori un diodo Zener si ha la logica HTL (High Threshold Logic), che ha un maggior margine di rumore (qualche V).
Maggiore separazione tra entrata e uscita si ottiene con la famiglia TTL (Transistor Transistor Logic) di fig. 3d. Nella versione integrata i transistori di entrata sono costituiti da un'unica giunzione collettore-base e da giunzioni base-emettitore multiple, ottenendo così una realizzazione particolarmente compatta.
La famiglia ECL (Emitter Compled Logic), o CML (Current Mode Logic), evita la saturazione dei transistori e quindi consente maggiori velocità; inoltre, fornisce due uscite complementari tali che la porta realizzata con logica positiva è OR a un'uscita e NOR all'altra.
In fig. 3e è indicata una porta MOS (Metal-Oxide Semiconductor) ad aumento di canale p (P-MOS). In essa il carico, anziché da un resistore, è costituito da un transistore MOS e pertanto si raggiunge una notevole semplicità costruttiva; il tempo di propagazione è dell'ordine di 300 nsec. Con l'uso di MOS complementari (C-MOS) si raggiungono tempi di propagazione più bassi (70 nsec), fan-out superiori a 50, elevata immunità al rumore e bassissimo consumo di potenza (10-6 ÷ 10-12 watt/porta).
Mediante la connessione elettrica delle uscite di una coppia di porte NOR o NAND, appartenenti alle diverse famiglie sopracitate, si realizzano rispettivamente le funzioni logiche Wired-OR e A-O-I (And-Or-Invert) (fig. 4).
Circuiti di sole porte. - I più importanti sono i decodificatori e i comparatori.
Un circuito decodificatore riceve in ingresso, su n fili, n segnali binari. Sono pertanto possibili 2n distinte configurazioni. Il circuito dà uscita 1 su un distinto filo per ogni configurazione di entrata. In fig. 5 è mostrata una realizzazione di un decodificatore a due bit, in A con porte distinte, in B con una matrice di decodifica, che in sostanza congloba in un circuito le porte di A realizzate a diodi. Il circuito comparatore binario per 1 bit (BC) presenta due entrate e un'uscita. L'uscita è 1 soltanto se le due entrate sono uguali (fig. 2). Versioni più complesse del comparatore consentono di effettuare la comparazione su intere parole (più bit).
Unità bistabili. - Gli elementi bistabili memorizzano l'informazione unitaria (1 bit). Generalmente si hanno due uscite opposte Q e Ö. Le entrate possono essere di diversi tipi.
Nel bistabile trigger (T) (fig. 6a) l'ingresso è il ''trigger'', che è un segnale il quale a ogni comando, fa commutare il bistabile. Nella tabella di verità in questo, come negli altri elementi di memoria, figura l'uscita Qn al tempo n, prima del comando, e l'uscita Qn+I dopo il comando. Nella tabella si osserva che per T = 0 è Qn+I = Qn, mentre per T = 1 (segnale di comando) si ha la commutazione Qn+I = Qn. Tale tipo di bistabile può essere realizzato con un normale . circuito flip-flop a transistori.
Nel bistabile set-reset (R-S) (fig. 6b) vi sono due fili di comando: il comando "set" (S) forza il bistabile nella situazione Qn+I = 1, mentre il comando "reset" (R) determina Qn+I = 0, e ciò qualunque sia il valore Qn. Occorre evitare che arrivino insieme i due comandi S e R perché in questo caso il risultato è imprevedibile e dipende da piccole differenze temporali fra i due segnali. Il circuito può essere realizzato con un flipflop con due comandi separati oppure, nella tecnica integrata, con due porte, come in fig. 7A.
Per eliminare l'ambiguità quando si abbiano contemporaneamente i comandi R e S si ricorre al bistabile J-K, così detto perché i due fili di comando si usano indicare con J e K anziché con R e S. In esso la condizione J = K = 1 è consentita e causa il cambiamento di stato (fig. 6c). Ciò si ottiene usando l'uscita Q per condizionare (AND) l'entrata K e la Ö per condizionare la J. Così, nella penultima riga della tabella di verità il comando Qn, che è 0, proibisce l'entrata K e lascia agire il comando J di set. Analogamente per l'ultima riga viene proibito il comando J. Perché ciò avvenga occorre che i valori Q e Ö restino disponibili per tutta la durata dei segnali di entrata. Ciò si può ottenere con condensatori. Normalmente però il bistabile J-K viene realizzato come master-slave, cioè con due bistabili in cascata. In un primo tempo all'entrata del primo stadio agiscono i segnali e le uscite del secondo stadio; in un secondo tempo l'informazione è trasferita dal primo al secondo stadio. Poiché le uscite del primo stadio sono sempre opposte tra loro, all'entrata del secondo stadio non può realizzarsi la situazione ambigua R = S.
Generalmente il bistabile J-K è realizzato a comando sincrono (fig. 7B). Inoltre unendo insieme i comandi J e K si ottiene un funzionamento trigger. Pertanto il bistabile J-K è di uso estremamente generale.
Nella fig. 6d è riportata la tabella di verità del bistabile ritardo (D). Esso presenta all'uscita la stessa informazione che arriva all'unico ingresso, ma in un tempo successivo.
Registri. - Si distinguono i registri di conteggio e i registri di scorrimento. Per realizzare i registri di conteggio si possono collegare bistabili in cascata in modo che lo stato complessivo dopo che sono stati applicati all'ingresso n impulsi, rappresenti il numero n. Precisamente si fa in modo che, dando a ciascuno stadio i pesi 2°, 21 ... 2n, la successione degli stati 1 o 0 moltiplicati per i pesi rappresenti n.
I contatori possono essere sincroni o asincroni. Il più semplice contatore asincrono è costituito da una catena di bistabili J-K in cascata in cui sono posti a 1 sia J sia K e usando come ingresso l'ingresso del clock (C); si ottiene così un funzionamento trigger (fig. 8). Il comando CLEAR rimette a zero alla fine del conteggio. Con tre stadi il conteggio massimo è da 000 a 111 in binario, cioè 0-7 in decimale; continuando a inviare impulsi oltre il massimo, il contatore torna a zero. Si può effettuare anche un conteggio in sottrazione inviando da uno stadio all'altro l'uscita Ö anziché Q. Quando un contatore sia munito di porte adatte a commutare tra Q e Ö si parla di contatore reversibile.
Il conteggio massimo di un contatore a unità binarie è 2n, se gli stadi sono n. Quando si voglia un conteggio totale diverso, s'introducono canali di reazione e porte ausiliarie che aggiungono a vari stadi entrate ricevute dalle uscite di altri stadi. In tal modo è possibile realizzare un conteggio massimo espresso da un numero qualsiasi.
Nei registri di scorrimento si spostano ogni volta tutti i bit da un bistabile a quello adiacente secondo un senso prefissato. Se i bit rappresentano un numero binario, lo spostamento cambia il peso dei bit e quindi lo spostamento in un senso equivale alla moltiplicazione per due e, nell'altro, alla divisione per due. Quando l'ultimo bit costituisce l'ingresso del primo bistabile allora il registro si dice "ad anello": in questo caso invece di una traslazione si ottiene una rotazione ciclica dei bit.
Elementi aritmetici. - Un insieme di cifre binarie può rappresentare sia un numero binario sia un numero decimale: in quest'ultimo caso la corrispondenza col numero decimale è definita da un codice. I codici decimali fanno corrispondere a ciascuna cifra del numero decimale un gruppo di 4 o più bit (fig. 9). La scelta di un particolare codice dipende dalle sue prestazioni in relazione alla semplicità di codifica e decodifica, semplicità dei circuiti che eseguono le operazioni aritmetiche, adattabilità alla conversione analogico-digitale-analogico e capacità di rivelare e correggere errori di codifiche che si verificano nel numero durante la sua trasmissione da un circuito a un altro.
Le operazioni, e i c. l. che le eseguono, si dicono binari o decimali secondo che operino su numeri binari o su codifiche binarie di numeri decimali. I principali circuiti sono i sommatori, i moltiplicatori, gli operatori funzionali.
I sommatori binari possono essere di tipo serie o di tipo parallelo secondo che i bit che rappresentano ciascun numero binario vengano presentati sequenzialmente oppure simultaneamente all'ingresso del sommatore: il secondo tipo è di uso più frequente in quanto consente una maggiore velocità di esecuzione, anche se risulta più complesso.
Per la somma binaria l'unico problema è di effettuare il "riporto" nella somma bit a bit. In fig. 10 a è indicata la funzione logica del circuito (semisommatori) che esegue la somma di due numeri a un solo bit. Per la somma di due numeri di più bit è necessario sommare ai bit corrispondenti, più significativi, il riporto precedente: il circuito che effettua tale operazione prende il nome di sommatore completo e la sua funzione logica è riportata in fig. 10b. In fig. 11 è riportato lo schema di un sommatore binario parallelo a n bit "a propagazione di riporto".
Il sommatore decimale a n cifre (decimali) può avere quattro strutture fondamentali. Può essere completamente in parallelo, ovvero tutti i bit dei due operandi vengono applicati simultaneamente agl'ingressi del sommatore. In un secondo tipo le cifre decimali vengono trasmesse in serie mentre i bit relativi a ciascuna cifra decimale vengono trasmessi in parallelo. In un terzo tipo i bit di ciascuna cifra decimale vengono trasmessi in serie, ma simultaneamente per ciascuna cifra. Infine, è possibile un funzionamento completamente in serie. In fig. 12 è riportato lo schema di un sommatore decimale di due cifre (decimali) codificate secondo il codice 8421; esso può essere impiegato per realizzare un sommatore decimale a n cifre (decimali) del primo e del secondo tipo sopra citati.
I circuiti moltiplicatori possono essere realizzati come combinazione di porte, sommatori e registri di scorrimento.
Per la realizzazione circuitale di operatori trigonometrici e aritmetici, convertitori di codice, ecc., possono essere impiegate le memorie a sola lettura (ROM, da Read-Only Memory). In tali memorie l'informazione è memorizzata in forma permanente o semipermanente e non può essere modificata durante il loro funzionamento. Esse sono in sostanze reti combinatorie a più uscite, normalmente realizzate mediante matrici di commutazione (fig. 13). Una matrice di commutazione può essere realizzata in forma integrata: ciò offre il vantaggio di facilità di verifica, elevata affidabilità e buone velocità di funzionamento (minori di 100 nsec). Nell'impiego come memoria il contenuto del registro di indirizzamento (indirizzo a n bit) pone a 1 una sola delle 2n uscite del decodificatore in modo da eccitare la corrispondente riga: dalla presenza (1) e dall'assenza (0) dei diodi negli incroci di tale riga con le colonne dipende la configurazione dell'insieme di bit (parola) che si rende disponibile presso il registro di lettura. Nell'impiego della ROM per la realizzazione di funzioni il contenuto del registro d'indirizzamento è costituito dalla variabile o dalle variabili d'ingresso, mentre il registro di lettura contiene la variabile o le variabili di uscita. Normalmente il costruttore fornisce una matrice di commutazione "piena", ovvero con un diodo a ogni incrocio; a seconda delle esigenze dell'utente, poi, i singoli diodi vengono attivati o "bruciati" per realizzare la particolare funzione desiderata.
Bibl.: U. Pellegrini, Tecniche di elettronica digitale, Milano 1972; D. A. Hodges, Semiconductor memories, New York 1972; L. Dadda, M. Sam, Teoria e progetto dei sistemi digitali, Milano 1973; S. Cantarano, G. V. Pallottino, Elettronica integrata, vol. II: Circuiti e sistemi digitali, ivi 1973; R. D. Pascoe, Solide-state switching: discrete and integrated, New York e Londra 1973; F. J. Hill, G. R. Peterson, Introduction to switching theory and logical design, ivi 1974; G. K. Kostopoulos, Digital engineering, ivi 1975.