ELEMANIA
Digitale - Codificatori (encoder)
Codificatori (encoder)

Un codificatore (o encoder) è un circuito digitale combinatorio dotato di 2n segnali di ingresso e di n segnali di uscita. Se viene attivata una delle linee di ingresso, in uscita viene prodotto il codice corrispondente. Facciamo un esempio considerando un encoder con 8 ingressi e 3 uscite (si parla in questo caso di encoder 8 a 3):

Encoder

Gli ingressi sono numerati da 0 a 7 essendo l'ingresso I0 quello a priorità inferiore e l'ingresso I7 quello a priorità maggiore (vedremo fra poco cosa vuol dire priorità).

Se per esempio viene attivato l'ingresso I6 (ponendo su tale linea un valore H e lasciando a L tutti gli altri ingressi), l'uscita produrrà il codice binario corrispondente al numero 6, cioè A2=H, A1=H, A0=L ovvero 110.

La tabella di verità seguente dovrebbe aiutare a chiarire il concetto:

Conf I7 I6 I5 I4 I3 I2 I1 I0 A2 A1 A0
0 0 0 0 0 0 0 0 1 0 0 0
1 0 0 0 0 0 0 1 0 0 0 1
2 0 0 0 0 0 1 0 0 0 1 0
3 0 0 0 0 1 0 0 0 0 1 1
4 0 0 0 1 0 0 0 0 1 0 0
5 0 0 1 0 0 0 0 0 1 0 1
6 0 1 0 0 0 0 0 0 1 1 0
7 1 0 0 0 0 0 0 0 1 1 1

Per comprendere meglio lo scopo e il funzionamento di questo circuito, si supponga di avere un tastierino numerico con solo 8 tasti corrispondenti ai numeri da 0 a 7. Mediante l'encoder è possibile codificare la pressione di ogni tasto col codice binario corrispondente al numero del tasto premuto.

L'encoder può essere realizzato abbastanza facilmente con una serie di porte OR, ciascuna delle quali realizza una delle uscite, come mostrato in figura:

Encoder

Si osservi che l'ingressi D0 non è collegato: infatti quando viene attivato D0 tutte le uscite devono rimanere a valore 0, cioè in pratica D0 non influisce sulle uscite (un problema di questo semplice encoder è che non è in grado di distinguere fra l'attivazione di D0 e l'assenza di ingressi attivati, poiché entrambi i casi producono il medesimo codice 000 in uscita).

Codificatori a priorità (priority encoder)

Si noti che la tabella di verità precedente è incompleta, in quanto contiene solo 8 righe, mentre le possibili combinazioni degli 8 ingressi sono addirittura 28 = 256. Il fatto è che la tabella non specifica il comportamento del circuito quando vengono attivati insieme due o più ingressi. Normalmente gli encoder vengono realizzati a priorità (priority encoder), cioè stabilendo un ordine di priorità negli ingressi: se è attivo un qualsiasi ingresso, tutti gli altri ingressi con priorità inferiore non contano nulla. Per esempio, se si attivano contemporaneamente gli ingressi 6, 5 e 2, l'uscita sarà il valore 110, corrispondente all'ingresso di priorità maggiore (il 6).

Tenendo conto della priorità, la tabella di verità è la seguente:

Tabella verità encoder a priorità

Conosciamo già l'uso del simbolo X in tabella col significato di indifferenza. In pratica la X sta per qualsiasi valore (0 oppure 1) dell'ingresso corrispondente. In precedenza abbiamo visto l'uso dell'indifferenza sull'uscita U per indicare un valore di uscita che può essere indifferentemente scelto 1 oppure 0.

Qui abbiamo invece un esempio di uso dell'indifferenza sugli ingressi. In questo caso l'uso del simbolo di indifferenza è solo un modo pratico per "compattare" la scrittura di una tabella di verità complessa. Infatti per esempio la terza riga:

0 0 0 0 0 1 X X

in realtà sta a indicare quattro combinazioni diverse e precisamente:

0 0 0 0 0 1 0 0
0 0 0 0 0 1 0 1
0 0 0 0 0 1 1 0
0 0 0 0 0 1 1 1

Un esempio di encoder integrato: 74148

La figura seguente mostra la piedinatura di un 74148 un encoder a priorità 8 a 3 della famiglia TTL:

74148

A proposito di questa piedinatura osserviamo che su tutti i segnali di ingresso e di uscita del circuito è indicato il simbolo della negazione (il "pallino"). Tale simbolo sta a indicare che il segnale corrispondente è attivo basso (active low), cioè in pratica funziona in logica negativa. Per esempio per attivare l'ingresso 3 bisogna mettere un livello L sul piedino 3 e un livello H su tutti gli altri ingressi. Questa situazione è abbastanza comune nei circuiti integrati e viene spesso indicata anche con una linea sopra il nome del corrispondente segnale (es. EO).

Molti integrati digitali usano ingressi e uscite attivi bassi, sostanzialmente perché in questo modo viene garantita una migliore immunità al rumore (se un ingresso è inattivo, cioè nello stato H, è più difficile che un rumore o un glitch di tensione lo renda per errore attivo portandolo allo stato L; viceversa, usando una logica positiva, un ingresso non attivo, in stato L, potrebbe diventare H a causa di fluttuazioni nelle tensioni). Un'altra possibile ragione è legata al fatto che in alcune famiglie logiche (es. TTL) gli ingressi non collegati si portano automaticamente a uno stato H (a causa della realizzazione circuitale interna). Pertanto, se si usano ingressi attivi bassi, eventuali ingressi non collegati si porterebbero in uno stato di disattivazione, evitando in tale modo la possibilità che un ingresso lasciato scollegato si attivi erroneamente.

Notiamo inoltre la presenza di alcuni segnali aggiuntivi col seguente significato:

La struttura circuitale interna corrispondente è mostrata in figura:

Le linee EI, EO e GS vengono spesso usate per espandere l'encoder collegando due o più integrati fra di loro. La figura seguente mostra per esempio come sia possibile usare due 74148 collegati insieme per realizzare un encoder 16 a 4:

 

Encoder BCD

In commercio sono anche disponibili encoder con 4 uscite e 10 ingressi, detti encoder BCD (BCD = Binary Coded Decimal). Questi dispositivi non sfruttano tutte le 24 = 16 combinazioni possibili delle uscite, ma sono particolarmente utili per la codifica in binario di una singola cifra decimale (da 0 a 9). Un encoder BCD potrebbe per esempio essere usato per far associare un codice alla pressione di un tasto su un tastierino numerico a dieci tasti.

La figura seguente mostra la tabella di verità e la piedinatura di un encoder BCD integrato 74LS147:

Encoder bcd

 

precedente - successiva

Sito realizzato in base al template offerto da

http://www.graphixmania.it