Vai al contenuto

Elettronica digitale

Da Wikipedia, l'enciclopedia libera.
Un segnale digitale ha due o più forme d'onda distinguibili, in questo esempio alta e bassa tensione possono essere mappate su una cifra.
Un controller digitale industriale

L'elettronica 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.

L'ENIAC

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

[modifica | modifica wikitesto]

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

[modifica | modifica wikitesto]
Esempio di segnale analogico in alto e di segnale digitale in basso

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

[modifica | modifica wikitesto]
Microprocessore

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.

Lo stesso argomento in dettaglio: Algebra di Boole, Sistema numerico binario e Porta logica.

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

[modifica | modifica wikitesto]

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

[modifica | modifica wikitesto]

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

La negazione, detta NOT, che trasforma uno zero in un uno e viceversa.

INOUT
01
10

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

ININOUT
000
010
100
111

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

ININOUT
000
011
101
111

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

ININOUT
000
011
101
110

Rappresentazione dell'informazione

[modifica | modifica wikitesto]

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

[modifica | modifica wikitesto]

La prima e più intuitiva regola per rappresentare i numeri interi positivi in binario è quella peso-posizione, detta binario naturale:

DecimaleBinario
0000
1001
2010
3011
4100
5101
6110
7111

Numeri relativi: modulo e segno

[modifica | modifica wikitesto]

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

[modifica | modifica wikitesto]

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

[modifica | modifica wikitesto]

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
DecimaleBinario
0000
1001
2010
3011
-1111
-2110
-3101
-4100

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

I livelli di astrazione

[modifica | modifica wikitesto]
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.[1]
  • 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

[modifica | modifica wikitesto]
Lo stesso argomento in dettaglio: SystemC.
VHDL

Livello architetturale

[modifica | modifica wikitesto]
Lo stesso argomento in dettaglio: VHDL.

Livello logico

[modifica | modifica wikitesto]

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

[modifica | modifica wikitesto]
Lo stesso argomento in dettaglio: Circuito combinatorio.
ABCXY
00001
00100
01011
01101
10010
10111
11001
11101
Funzione 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
[modifica | modifica wikitesto]
ALU

Reti sequenziali

[modifica | modifica wikitesto]
Lo stesso argomento in dettaglio: Circuito sequenziale.
Flip-flop

Le reti sequenziali possono essere realizzate dalle cosiddette macchine a stati. La struttura più semplice delle macchine a stati è quella delle macchine a stati di Moore. Queste sono composte da una rete combinatoria, seguita da un registro che è seguito da un'altra rete combinatoria. La prima rete combinatoria oltre agli ingressi esterni ha come ingressi le uscite del registro: si realizza così una retroazione. La macchina a stati è quindi un sistema le cui uscite dipendono sia dagli ingressi sia dallo stato del sistema stesso (rappresentato dal registro). Le reti sequenziali rappresentano quindi dispositivi con memoria. Essi sono costituiti da una opportuna combinazione di un circuito a logica combinatoria e una memoria. La memoria può essere dotata di un ingresso di clock o meno. Nel caso in cui il clock sia presente, la rete è un dispositivo sincrono, viceversa è un dispositivo asincrono.

Componenti sequenziali standard
[modifica | modifica wikitesto]

Livello circuitale

[modifica | modifica wikitesto]
Lo stesso argomento in dettaglio: Porta logica.
Porta logica e microchip

Scale d'integrazione

[modifica | modifica wikitesto]

La necessità di creare funzioni logiche sempre più elaborate in spazi sempre più ridotti ha portato alla realizzazione dei circuiti integrati (IC = Integrated Circuits). Si tratta di circuiti complessi, che svolgono le funzioni elettriche di molti componenti discreti (in massima parte resistori, diodi e transistor), realizzati su singole piastrine di silicio.

In relazione al livello di integrazione è possibile fare la seguente classificazione:

  • piccola scala di integrazione SSI (Small Scale Integration), se il numero di porte logiche è inferiore a 12 e non sono presenti più di 100 transistor;
  • media scala di integrazione MSI (Medium Scale Integration), se il numero di porte logiche è compreso tra 12 e 100 e non sono presenti più di 1000 transistor;
  • larga scala di integrazione LSI (Large Scale Integration), tra le 100 e le 1000 porte e fino a 10000 transistor;
  • molto larga scala di integrazione VLSI (Very Large Scale Integration), oltre le 1000 porte e più di 100000 transistor.

Attualmente si considera anche la ULSI (Ultra Large Scale Integration) per gli integrati con più di 10000 porte.

Per integrati non digitali la scala d'integrazione è valutata considerando situazioni circuitali di complessità equivalente a quelle delle porte logiche.

Questi dispositivi integrati sono realizzati in contenitori di diverso tipo, in relazione alle diverse esigenze.

Livello di layout

[modifica | modifica wikitesto]
Lo stesso argomento in dettaglio: Componente elettronico.

Macchine a stati finiti

[modifica | modifica wikitesto]
Lo stesso argomento in dettaglio: Automa a stati finiti.

I blocchi combinatori, per quanto complessi, operano sempre seguendo una tabella di verità e non sono in grado di implementare una minima intelligenza. In elettronica digitale c'è la necessità di sviluppare degli algoritmi, ovvero una successione temporalmente stabilita di azioni precise e ripetibili dipendenti dagli ingressi: c'è quindi la necessità di creare un automa.

Un automa per definizione è costituito da:

  • Un insieme di stati interni X = (X0, X1, X2, X3, X4...Xn)
  • Un insieme di elementi di ingresso I = (I0, I1, I2, I3, I4...Im)
  • Un insieme di elementi di uscita Y = (Y0, Y1, Y2, Y3, Y4...Yk)
  • Un insieme di istruzioni o algoritmo.

L'automa evolve da uno stato interno all'altro a seconda degli ingressi, producendo ogni volta il set desiderato di uscite; tale evoluzione è definita temporalmente. Se il registro di stato varia al solo comando di un segnale detto clock allora la macchina si dice sincrona, altrimenti si dice asincrona.

Per descrivere tale complessità si ricorre alla stesura di una A.S.M. (Algorithmic State Machine), traducibile in hardware grazie alle relazioni biunivoche tra elementi circuitali e blocchi ASM. Circuitalmente, una macchina a stati finiti è composta da:

  • la rete combinatoria degli ingressi
  • la rete combinatoria delle uscite
  • il registro di stato (flip-flop di tipo D)

secondo il modello di Moore. Un diagramma di flusso ASM è costituito da tre blocchi fondamentali: blocco di stato, blocco di uscita condizionale e blocco di condizione.

Blocchi principali di un diagramma di flusso

Per risparmiare commutazioni, e quindi energia consumata dai flip-flop dei registri di stato, gli stati possono essere codificati secondo il codice di Grey:

00, 01, 11, 10

in cui varia solo un bit alla volta.

Lo stesso argomento in dettaglio: VHDL.

All'inizio degli anni ottanta, il Dipartimento della Difesa americano desiderava creare un linguaggio standard di descrizione e documentazione di sistemi hardware per avere indipendenza nei confronti dei propri fornitori. Da queste intenzioni nacque il VHDL (acronimo di VHSIC Hardware Description Language, dove "VHSIC" sta per Very High Speed Integrated Circuits). Nel 1987 il VHDL venne normalizzato dall'IEEE (Institute of Electrical and Electronics Engineers).

Nel 1993 una nuova versione dello standard IEEE ha permesso di sfruttarne appieno le potenzialità, in particolare per:

  • la sintesi automatica dei circuiti a partire dalla descrizione
  • la verifica delle costruzioni temporanee
  • la verifica formale dell'equivalenza dei circuiti

Principi di funzionamento

[modifica | modifica wikitesto]

Il VHDL non è un linguaggio direttamente eseguibile: non descrive quali operazioni un esecutore deve svolgere, bensì gli elementi che costituiscono il circuito digitale. Una specifica VHDL può però essere simulata mediante opportuni strumenti, simulando il comportamento del circuito che descrive.

È un linguaggio estremamente ricco e flessibile, che permette di fornire specifiche di circuiti digitali a diversi livelli di astrazione:

  • Al livello gate-level, il circuito è visto come un grafo in cui i nodi rappresentano elementi logici (porte logiche, multiplexer, flip-flop, sottocircuiti) e gli archi le connessioni tra essi.
  • Al livello RTL (Register Transfer Level) o data-flow, la specifica descrive esplicitamente le trasformazioni che i dati subiscono durante la propagazione all'interno del circuito, visto come insieme di reti combinatorie e registri.
  • Al livello behavioural, il massimo livello di astrazione, la funzionalità del circuito è descritta mediante uno o più algoritmi, senza esplicitarne la struttura né le singole trasformazioni sui dati. Sarà lo strumento di sintesi a effettuare lo scheduling delle operazioni sui vari cicli di clock in base ai vincoli imposti dal progettista.

Schede elettroniche programmabili

[modifica | modifica wikitesto]
Lo stesso argomento in dettaglio: Field Programmable Gate Array.

Una FPGA (Field Programmable Gate Array) è un circuito integrato digitale ad alta scala di integrazione configurabile dall'utente. In essa è presente un numero consistentemente grande di insiemi di porte logiche equivalenti e flip-flop, le cui connessioni possono essere configurate e riconfigurate dall'utente attraverso appositi strumenti software per realizzare le funzioni logiche progettate.

Gli FPGA sono formati da blocchi logici combinatori corredati da flip-flop, circondati da una complessa struttura di canali di interconnessione segmentati. Il blocco logico di base è la look-up table (LUT), che rappresenta una funzione booleana di quattro ingressi e un'uscita. Da un punto di vista didattico, le logiche programmabili si dividono in due categorie: PLD (Programmable Logic Device) e FPGA.

  1. (EN) Open SystemC Initiative (OSCI), su systemc.org. URL consultato il 14 maggio 2026 (archiviato dall'url originale il 6 ottobre 2008).

Voci correlate

[modifica | modifica wikitesto]

Altri progetti

[modifica | modifica wikitesto]
Controllo di autoritàThesaurus BNCF 59024 · BNF (FR) cb11958744c (data) · J9U (EN, HE) 987007555316605171