Lelettronica digitale è quella branca dell'elettronica che si occupa di gestire ed elaborare informazioni di tipo digitale, manipolando segnali numerici (0 e 1) per produrre segnali di uscita anch'essi numerici.

Il termine digitale deriva dal termine inglese digit (cifra), per il fatto che i calcolatori elettronici operano mediante l'elaborazione di quantità numeriche elementari, i bit. Il termine è una contrazione dell'espressione inglese binary digit, che significa cifra/numero binario. Questo termine, a sua volta, deriva dal latino digitus che, nell'italiano corrente, viene tradotto con numero, per questo motivo viene definita impropriamente anche elettronica numerica.

Storia

L'uomo, anche senza esserne cosciente, ha sempre avuto a che fare con la logica e con essa la logica binaria. La formalizzazione matematica della parte dell'algebra che opera con soli due valori possibili si può far risalire a George Boole. Se però all'epoca di Boole questi studi attraevano solo i logici matematici, con l'invenzione delle valvole termoioniche e successivamente dei transistori divennero la base dell'elettronica e tuttora descrivono il modo con cui opera qualsiasi calcolatore, dalla calcolatrice al Roadrunner di Los Alamos.

L'elettronica digitale ebbe inizio praticamente nel 1946, con un calcolatore elettronico digitale chiamato ENIAC, realizzato con circuiti a valvole. Tuttavia, l'idea che sta alla base di un computer digitale può risalire a Charles Babbage, che costruì un dispositivo meccanico di calcolo.

Il primo computer digitale venne costruito nel 1944 alla Harvard University, ma era ancora di tipo elettromeccanico, non elettronico. Anche se per molti anni il digitale rimase confinato nel settore dei computer, oggi le tecniche digitali trovano impiego in moltissime altre aree, dalla telefonia, all'elaborazione dei dati, dal radar, ai sistemi militari, dagli strumenti di uso medico, fino a prodotti di ampio mercato.

A partire dalla seconda metà del XX secolo la tecnologia digitale ha fatto grandi passi avanti, evolvendosi dalle valvole ai circuiti integrati e ai microprocessori. Inoltre si è diffusa anche nel settore televisivo, con il digitale terrestre.

Concetti chiave L'elettronica digitale ha a che fare con circuiti e sistemi che funzionano gestendo due soli possibili stati di funzionamento, ad esempio due livelli di tensione, oppure due diversi livelli di corrente. Nei sistemi digitali i due diversi stati servono a rappresentare numeri, simboli, caratteri, colori, immagini, suoni e altre informazioni. Nei sistemi numerici a due stati, detti sistemi binari, le due cifre sono 0 e 1, e ciascuna di esse costituisce ciò che viene appunto chiamato bit.

Segnali logici

Come si vede in figura un segnale analogico può assumere, in un determinato istante, tutti i valori continui appartenenti ad un certo intervallo di R. Un segnale digitale invece può assumere solo determinati valori, ad esempio uno alto e uno basso, come nella figura a lato, che riporta un segnale binario. La differenza fondamentale tra i due tipi di segnale è che mentre nei segnali analogici l'informazione è contenuta nella "forma" stessa del segnale, nei segnali digitali l'informazione da elaborare è codificata in serie di simboli (0 e 1). La forma del segnale non ha quindi importanza: basta che sia possibile discernere in ogni istante a quale valore logico corrisponde il segnale.

Anche un segnale digitale è fisicamente un segnale analogico. L'onda quadra perfetta mostrata in figura è in realtà un'idealizzazione matematica che nella realtà non esiste poiché il rumore la farà "fluttuare". Inoltre la relatività speciale di Einstein impedisce alle transizioni da uno stato fisico (o valore logico) all'altro di essere istantanee, ovvero con velocità di transizione infinita. Tuttavia quello che conta è che le fluttuazioni si mantengano entro un certo margine, in modo che non si perda l'informazione, ovvero si evidenzino due diversi stati fisici possibili (alto e basso) su cui costruire la logica binaria d'interesse (ad es. l'Algebra di Boole).

Perché si preferisce l'elettronica digitale a quella analogica

Come detto in precedenza i segnali digitali sono anch'essi in realtà dei segnali analogici, ma ad essi sono assegnati solo i 2 livelli logici che il segnale può assumere. Tutti i segnali sono soggetti al rumore che può alterarne i valori, ma una caratteristica che distingue i circuiti digitali da quelli analogici è l'alta capacità di reiezione ai disturbi, che però, come detto prima, devono mantenersi entro un certo margine. Questa caratteristica è dovuta ad una proprietà intrinseca dei circuiti digitali, che è quella di ripristino dei livelli logici 0 e 1 dei segnali che li attraversano, pur distorto da rumore o effetti inattesi.

L'operazione di ripristino è effettuata utilizzando un circuito con funzione di trasferimento a soglia: al di sopra della soglia viene riconosciuto il bit alto, al di sotto il bit basso; in questo modo un segnale inizialmente distorto in ingresso nel passaggio attraverso questo circuito, detto interfaccia o buffer, viene ripristinato ai suoi livelli logici primitivi. L'elemento base dell'elettronica digitale è l'invertitore, che oltre a godere della proprietà di ripristino dei livelli logici, implementa la funzione logica NOT di negazione. Tramite questa configurazione, e opportune modifiche circuitali applicate ad essa, è possibile realizzare le funzioni base dell'algebra booleana ed implementare, quindi, tutte le porte e le funzioni logiche.

Nelle trasmissioni digitali inoltre l'introduzione di tecniche di codifica/decodifica di canale, possibili solo per segnali digitali, migliora ulteriormente le prestazioni rispetto agli errori. Inoltre nelle stesse trasmissioni tecniche di codifica/decodifica di sorgente riescono a diminuire la ridondanza del messaggio informativo a vantaggio della compressione di banda.

Fondamenti

Un circuito digitale opera con numeri che possono assumere solo due valori, alto o basso, 1 o 0, per questo vengono detti numeri binari. Tutte le operazioni che svolgono gli attuali sistemi, anche le più complesse, derivano da tale semplicità.

Contare in binario Contare in binario non è molto diverso dal contare in decimale, l'unica differenza è che si hanno 2 simboli invece che 10. Quindi se in decimale si ha:

0, 1, 2, 3, 4, 5, 6, 7, 8, 9

ed una volta finiti i simboli si ricomincia da capo aggiungendo una cifra:

10, 11, 12, 13, 14, 15, 16, 17...

in binario sarà lo stesso:

0, 1

Finiti i simboli si aggiunge una cifra (detta bit):

10, 11 (che si leggeranno uno-zero e uno-uno, e non dieci e undici)

e ancora:

100, 101, 110, 111...

In generale, in base B con N cifre si possono rappresentare numeri, contando da 0 a .

Operazioni logiche Le operazioni logiche fondamentali che si possono applicare ai bit sono:

La negazione, detta NOT, che trasforma uno zero in un uno e viceversa. IN OUT 0 1 1 0

La AND, che riguarda due o più bit; il risultato è 1 solo se tutti i bit in ingresso sono 1. IN IN OUT 0 0 0 0 1 0 1 0 0 1 1 1

La OR, che riguarda due o più bit; il risultato è 1 se almeno uno dei bit in ingresso è 1. IN IN OUT 0 0 0 0 1 1 1 0 1 1 1 1

La OR esclusiva, detta XOR; il risultato è 1 se i bit in ingresso sono diversi tra loro. IN IN OUT 0 0 0 0 1 1 1 0 1 1 1 0

Rappresentazione dell'informazione Una successione di bit qualsiasi potrebbe significare qualsiasi cosa: essere una porzione di codice, parte di un'immagine oppure un semplice numero. Da questa "confusione" nasce l'esigenza di una corretta codifica delle stringhe binarie, ovvero bisogna sapere cosa si vuole rappresentare ed esplicitare come lo si sta facendo affinché tutti interpretino correttamente i dati.

Numeri interi positivi: binario naturale La prima e più intuitiva regola per rappresentare i numeri interi positivi in binario è quella peso-posizione, detta binario naturale: Decimale Binario 0 000 1 001 2 010 3 011 4 100 5 101 6 110 7 111

Numeri relativi: modulo e segno Per rappresentare i numeri negativi è stata introdotta la codifica binario naturale modulo e segno: il primo bit rappresenta il segno (0 = positivo, 1 = negativo). Questa codifica presenta però due debolezze: si perde un bit per il segno e lo zero risulta rappresentato due volte (000 e 100).

Complemento a uno Nel complemento a 1, per passare da un numero positivo al corrispondente negativo si negano tutte le cifre. Anche questa codifica soffre della doppia rappresentazione dello zero.

Complemento a due La rappresentazione in complemento a 2 è quella adottata universalmente nei sistemi digitali moderni. Si ottiene dal binario naturale in due passi: complemento a 1 del numero somma di 1 al risultato

Decimale Binario 0 000 1 001 2 010 3 011 -1 111 -2 110 -3 101 -4 100

Questa codifica sfrutta tutte le combinazioni possibili con N bit ed elimina la ridondanza dello zero.

I livelli di astrazione

Un sistema elettronico digitale può essere visto a diversi livelli di astrazione: A livello di sistema è noto ciò che il sistema deve fare ma non la sua struttura fisica. Il sistema è composto da vari elementi di processo (processing elements) che interagiscono tra di loro (utilizzando protocolli di comunicazione). A questo livello un linguaggio formale per descrivere i sistemi è il SystemC: una serie di librerie C++ open source per la modellazione e simulazione di sistemi elettronici HW/SW. A livello architetturale il sistema elettronico è un insieme di componenti più o meno standard (registri, ALU, multiplexer) connessi fra di loro. A questo livello si utilizzano linguaggi detti HDL (hardware description language) come il VHDL o il Verilog. A livello logico ogni componente dell'architettura è una rete logica che svolge il compito previsto. Una rete logica è un insieme di connessioni di porte logiche (AND, OR, XOR NOT, ecc.). A livello circuitale ogni porta logica viene realizzata tramite un circuito (il cui elemento base è il transistor). Si possono avere vari stili di realizzazione delle porte logiche a seconda del tipo di transistori che vengono usati. Il livello più basso è il livello di layout, in cui vengono specificate nel dettaglio le dimensioni di ogni singolo transistor e di ogni connessione.

Livello di sistema

Livello architetturale

Livello logico Si distinguono due categorie di reti logiche: reti combinatorie e reti sequenziali. Le reti combinatorie sono reti per cui le uscite dipendono solo dagli ingressi. Le reti sequenziali sono invece reti per cui le uscite dipendono sia dagli ingressi che dalla "storia" del sistema. Il sistema ha uno stato, che è un elemento di memoria e tiene conto dell'evoluzione passata del sistema.

Reti combinatorie

A B C X Y 0 0 0 0 1 0 0 1 0 0 0 1 0 1 1 0 1 1 0 1 1 0 0 1 0 1 0 1 1 1 1 1 0 0 1 1 1 1 0 1Funzione logica a 3 ingressi e 2 uscite

Si vogliono sintetizzare delle funzioni logiche. Utilizzando un linguaggio informale, le funzioni logiche sono delle funzioni matematiche aventi come "ingressi" e come "uscite" dei segnali logici. Le funzioni logiche possono essere espresse mediante le tavole di verità.

Esiste un teorema (teorema di Shannon) abbastanza intuitivo che permette di affermare che qualsiasi funzione logica può essere espressa come somma di prodotti degli ingressi, intendendo per somma l'operazione logica elementare OR e con prodotto l'operazione logica AND.

Esistono poi dei metodi (ad esempio basati sulla mappa di Karnaugh, nota anche come mappa K) che permettono di minimizzare questa scomposizione, in modo da ottenere la forma minima di una funzione logica e quindi una rete logica più semplice possibile.

Questo tipo di sintesi si chiama AND-OR. Per le leggi di De Morgan, è possibile fare sintesi OR-AND, NAND-NAND ecc.

Componenti combinatori standard

encoder decoder multiplexer / demultiplexer parity checker majority gate full-adder half-adder comparatore Arithmetic Logic Unit Amplificatore tri-state