Come funziona una CPU: decodificatore #0.3.3

Nell’articolo di oggi analizzeremo nel dettaglio il decodificatore.

Negli articoli precedenti abbiamo visto:

Il decodificatore è un modulo avente 2n linee in uscita e n linee in ingresso. Il valore in ingresso attiva una sola linea di uscita, cioè quella avente per indice lo stesso valore in ingresso.

Accanto ai normali valori in ingresso, vi è il valore di enable e che assume 1 o 0:

  • e = 1: alla linea di uscita è consentito essere attivata dalla linea in ingresso corrente;
  • e = 0: nessuna uscita può essere attivata, e in uscita vi è un valore predefinito indipendente dalla linea in ingresso.

Anche i decodificatori si possono connettere in cascata: si assegna la discriminazione dei bit più significativi ai decodificatori dei primi livelli e quella dei bit meno significativi ai decodificatori dei livelli sottostanti, e si forniscono come valori di enable le uscite dei decodificatori a livello superiore. Con la connessione in cascata bisogna però tenere in conto dei ritardi di commutazione dei decodificatori (durante il tempo di commutazione Δt i segnali in uscita sono casuali nel tempo).

decodificatore

Decodificatore 2→4

Di seguito riportiamo la tavola di verità e lo schema logico di un Decoder 2→4:

decodificatore

Si noti l’utilizzo del “don’t care” sull’ingresso dell’ultima riga della tavola di verità. Dal momento che l’Enable è 0, tutte le linee di uscita (cioè i bit dell’uscita Z) saranno poste a 0 indipendentemente dall’ingresso X ricevuto.

Decodificatore 3→8

Per costruire un modulo più complesso, per esempio un Decoder 3→8, si può fare riferimento al seguente schema:

decodificatore

La tavola di verità del seguente Decoder presenta 8 possibili combinazioni d’ingresso, quattro delle quali hanno il bit più significativo X2 pari a 0 mentre le altre quattro lo hanno pari ad 1. Si può quindi pensare di sfruttare il valore del bit X2 per abilitare di volta in volta uno solo dei due Decoder 2→4 (per fare ciò è necessaria una porta NOT). I bit X0 ed X1, invece, costituiscono gli ingressi di ambo i Decoder in base ai quali viene attivata una sola tra le 8 linee d’uscita. Si ricordi che la funzione del Decoder è proprio quella di abilitare una sola linea d’uscita alla volta. Quindi, il bit X2 non fa altro che dirigere gli ingressi su un Decoder 2→4 piuttosto che su un altro per attivare una linea d’uscita dal gruppo (Z0. . . Z3) o (Z4. . . Z7).

Per disabilitare un Decoder 3→8 basta sfruttare un ulteriore segnale di Enable e due porte AND, ciascuna delle quali connessa ad uno dei due Decoder 2→4, che ricevono in ingresso tale segnale ed il bit X2 (negato o meno). Qualora il segnale di Enable fosse 0, le porte AND disabiliterebbero le linee d’uscita di tutti i Decoder 2→4.

Decodificatore 4→16

Possiamo considerare un esempio ancora più complesso, ovvero un Decoder 4→16:

decodificatore

In questo caso ci si serve di 5 Decoder 2→4, quattro dei quali per produrre le uscite ed il quinto per pilotare tutti gli altri. La tavola di verità del Decoder 4→16 ha per bit più significativi X2 ed X3. Per ciascuna delle loro configurazioni (00, 01, 10, 11) viene attivata una sola tra le linee d’uscita del Decoder 2→4 che pilota il segnale di Enable.

Ciò equivale a dire che uno solo dei quattro Decoder pilotati sarà attivato e, in base ai valori degli ingressi X0 ed X1 (connessi a tutti e 4 i Decoder pilotati), attiverà a sua volta una fra le sue linee d’uscita.

Anche in questo caso si ha come risultato un modulo che, in base alla configurazione d’ingresso, abilita una sola delle sue linee d’uscita (Z0. . . Z15). Si noti che per disabilitare l’intero Decoder basta che il segnale di Enable del Decoder 2→4 pilota valga 0. In questo modo tutte le linee d’uscita del Decoder pilota vengono disabilitate (poste a 0) e, conseguentemente, tutti i Decoder pilotati saranno disabilitati (le loro linee d’uscita saranno poste a 0).

Conclusione

In sintesi il decodificatore è un modulo dotato di n-linee di ingresso e 2^n linee di uscita. Di queste è attiva (cioè posta pari ad 1) solo quella di indice corrispondente al valore applicato in ingresso (es: se gli n-bit d’ingresso costituiscono il valore 1, allora viene attivata la linea d’uscita di indice 1). Il modulo riceve inoltre un segnale di Enable “e” che, se pari a 0, disattiva tutte le linee d’uscita indipendentemente dal valore in ingresso.

Iscriviti ai nostri gruppi Telegram

Link utili

Seguici per non perdere le prossime novità!

Simone Candido è un ragazzo appassionato del mondo tech nella sua totalità. Simone ama immedesimarsi in nuove esperienze, la sua filosofia si basa sulla irrefrenabile voglia di ampliare a 360° le sue conoscenze abbracciando tutti i campi del sapere, in quanto ritiene che il sapere umano sia il connubio perfetto tra cultura umanistica e scientifica.

Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.