Indice

4B - I circuiti combinatori con integrati MSI

1 Considerazioni preliminari

Gli integrati SSI, come le porte logiche, si usano sempre più raramente, sostituiti da integrati MSI che realizzano funzioni più complesse a costi inferiori e con ingombri minori.

Negli integrati che useremo si parlerà di ingressi o uscite attivi-alti o attivi-bassi, per specificare che una determinata funzione sarà attivata con un segnale alto (1) o basso (0) in un pin di controllo. In assenza di indicazioni ingressi e uscite si intendono attivi-alti; quelli attivi-bassi si riconoscono dal “pallino” (o cerchiolino, come quello sull'uscita di una porta NAND) nel simbolo e dal segno negato posto sopra la sigla corrispondente. Ad esempio in ingresso con pallino sul simbolo e sigla `bar (EN)` indica che l'integrato è abilitato (enabled) se posto al valore logico 0, cioè collegato a massa.

Le figure 1, 2 e 3 mettono in evidenza il concetto di attivo-alto/basso mostrando come la stessa funzione logica possa essere realizzata in due modi diversi, pur con implicazioni diverse per quello che riguarda i livelli attivi. Esaminando solo la figura 1 osserviamo:

2 Multiplexer

Il multiplexer è un dispositivo con:

che trasferisce all'uscita il segnale di ingresso selezionato con gli ingressi di selezione. Il comportamento è simile a quello di un selettore meccanico (figura 4a) ma la sezione è fatta con una combinazione di bit. Nella figura 4b vediamo una rappresentazione schematica dell'integrato dove, oltre ai quattro ingressi I1, I2, I3, I4 e all'uscita O compaiono:

I data sheet

I data sheet degli integrati MSI sono più complicati di quelli delle porte logiche. Il testo prende in esame quello del 74150, un MUX a 16 ingressi per fare una serie di osservazioni:

Aumentare gli ingressi di un multiplexer

La figura 6 mostra come con due multiplexer a 16 ingressi e un multiplexer da 2 si ottiene un multiplexer a 32 ingressi.

Conversione parallelo-serie

Una delle applicazioni dei multiplexer e quella di convertitore parallelo-serie. Questa tecnica è utile quando si vogliono trasmettere parole di n bit usando una sola linea2). Nella figura 7 un contatore seleziona in sequenza gli ingressi di un multiplexer che invia i bit in successione su un unica linea.

Il contatore è un circuito digitale sequenziale che conta gli impulsi di un segnale in ingresso. In questo caso in ingresso è presente un segnale di clock, cioè un segnale rettangolare temporizzatore con una frequenza prestabilita. Ad esempio applicando un clock a 10 Hz all'ingresso di un contatore a 3 bit il contatore produrrà una sequenza di codici da 000 a 111 - contando da 0 a 7 - per poi si azzerarsi e ricominciare. Questi bit selezioneranno un ingresso del multiplexer trasmettendone il valore in uscita.

Uso del multiplexer per realizzare reti combinatorie

Un multiplexer con n ingressi di selezione può essere usato per realizzare un circuito combinatorio con n variabili in ingresso. E' sufficiente collegare gli ingressi di segnale al valore logico 0 o 1 (tensione Vcc o 0 Volt) in base alla tabella della verità. Ad esempio, secondo la tabella di figura 8, l'ingresso 0, corrispondente alla combinazione 0 0 0 delle variabili A B C in ingresso va collegato a 1 (+Vcc) e così via.

Questa soluzione è estremamente versatile e facile da realizzare; non occorre ricavare un'espressione logica, minimizzarla ed implementarla scegliendo gli integrati con le porte logiche necessarie. Basta un componente generico - il multiplexer - con un numero adeguato di ingressi di selezione.

Extra

3 Demultiplexer

Un demultiplexer (DEMUX) svolge la funzione inversa rispetto ad un multiplexer, cioè invia all'uscita selezionata il segnale presente nell'unico ingresso. Come per i multiplexer, con n ingressi di selezione si possono indirizzare 2n uscite.

I data sheet

Il testo prende in esame il data sheet dell'integrato 741543), un DEMUX (e decoder) a 16 uscite. Si osserva che:

Extra

4 I codici

Un codice permette di rappresentare un'informazione con una combinazione di simboli.

Codici binari numerici

Per rappresentare dei numeri con un codice binario è sufficiente utilizzare il sistema di numerazione binario (codice binario puro). Questa soluzione, per quanto ovvia, non è sempre la più efficace. Ad esempio se si intende visualizzare delle cifre decimali è preferibile ricorrere al codice BCD (binary coded decimal). Questo sistema di codifica usa 4 bit per rappresentare ogni cifra decimale con il numero binario corrispondente. Ad esempio il numero 31 si rappresenta in BCD con 0011 0001 (3 e 1 in binario). Come si vede il BCD usa un numero di bit maggiore rispetto al binario puro (31 in binario è 11111) ma è più pratico quando si deve trattare ogni cifra decimale singolarmente (ad esempio per visualizzarla su un display).

In alcune applicazioni (ad esempio nell'encoder assoluto di figura 11) si ricorre al codice Gray4) di tabella 55), la cui proprietà principale è che due combinazioni successive differiscono per un solo bit. Questo è utile quando si vogliono evitare errori di lettura imputabili ai dispositivi che generano il codice (nell'encoder sono i fotoaccoppiatori usati per rivelare la presenza o meno di un fascio luminoso che potrebbero non essere perfettamente sincronizzati).

Codici alfanumerici

I simboli alfanumerici, come quelli di una tastiera, possono essere rappresentati con il codice ASCII che assegna una combinazione di 7 bit a 128 simboli diversi (numeri, lettere, simboli di punteggiatura, ecc.). Nel codice ASCII le lettere sono ancora ordinate alfabeticamente: 100 0001 (65 in decimale) è la lettera “A” e 100 0010 (66) la “B”. Un ottavo bit, se presente, permette di estendere il set di caratteri, raddoppiandolo, o di segnalare la presenza di errori, usato come bit di parità.

Codici rilevatori di errori

Nella trasmissione dei dati è possibile che si verifichino degli errori, ad esempio perché un bit ha cambiato valore. Per individuare questi errori si utilizzano codici ridondanti - cioè con un numero di bit maggiore del necessario - che producano combinazioni particolari in caso di errore. La soluzione più semplice consiste nell'aggiungere al codice originario un bit di parità che vale 1 se il numero di 1 è dispari e 0 se è pari. La tabella 6 confronta il codice binario puro e quello con l'aggiunta di un bit di parità6). Osserviamo che:

Allora se in una trasmissione si verifica un errore che modifica un solo bit sarà possibile rilevare l'errore perché la combinazione ottenuta non farà parte del codice. Ancora più semplicemente se un bit viene scambiato il numero di 1, che è sempre pari con il bit di parità, diventerà dispari, segnalando l'errore8).

5 Gli encoder

Un encoder è un circuito combinatorio che associa ad ognuno dei suoi ingressi una determinata combinazione di bit in uscita. Il funzionamento prevede che sia attivo un solo ingresso; nel caso in cui si voglia evitare che l'attivazione contemporanea di più ingressi produca malfunzionamenti si può usare un priority encoder, dove l'ingresso più alto prevale su tutti gli altri (rendendone indifferente lo stato).

La figura 12 mostra un generico encoder da decimale a BCD e la relativa tabella della verità. Il funzionamento è scontato: l'attivazione di un ingresso, numerato secondo il sistema decimale, produce in uscita il codice BCD corrispondente.

I data sheet

Il testo prende in esame l'integrato 74147, un priority encoder da 9 a 4 che converte in BCD il numero dell'ingresso attivo (è un encoder da decimale a BCD dove lo zero si ottiene quando nessun ingresso è attivo). Osserviamo che:

Extra

6 I decoder

Un decoder è un circuito combinatorio che associa il codice binario presente ai suoi ingressi ad una delle uscite, attivandola. In ingresso è presente una parola di n bit che attiva una sola delle uscite. La figura 14 mostra un decoder da BCD a decimale (vedi anche tabella 9); la figura 15b un decoder binario (da 4 ingressi a 16 uscite).

I data sheet

L'integrato 74154, già visto nell'uso da demultiplexer, può essere utilizzato come decoder da 4 a 16 (da binario a esadecimale) attivando, cioè ponendo al livello basso, i due enable (nell'uso da encoder non c'è un segnale in ingresso ma una parola di 4 bit presente in quelli che sono interpretati come ingressi di selezione nel demultiplexer).

7 I display

I display servono a visualizzare cifre decimali in forma numerica (il numero da visualizzare può essere disponibile in forma binaria o codificato in BCD). Esistono due tipi di display:

I display LCD non emettono luce e consumano molto meno. I cristalli liquidi sono posti tra due superfici trasparenti dotate di elettrodi. Quando è applicata tensione tra gli elettrodi il cristallo si polarizza e crea una zona scura bloccando la luce.

I display a LED sono fatti di più segmenti, disposti opportunamente, che illuminandosi formano una cifra. Il tipo più diffuso è il display a 7 segmenti di figura 16, indicati con le lettere da a a g. Illuminando i vari segmenti9) si formano le cifre a destra10). Questo tipo di display emette luce e consuma di più (1 mA per ogni segmento). Il collegamento dei LED può essere:

Nel primo caso i segmenti si accendono con un livello basso di tensione (attivi bassi), nel secondo con un livello alto (attivi alti). In entrambi i casi occorre inserire delle resistenze per limitare la corrente. Il calcolo della resistenza, data la caduta di tensione VF sul LED e la corrente richiesta per accenderlo Id, è il seguente:

`R = (V_(\C\C)-V_F)/(I_d)`

8 I decoder per display a LED

Per pilotare i display a 7 segmenti si usano degli integrati convertitori di codice da BCD a 7-segmenti. Sono dei driver - perché pilotano un componente che non è una porta logica e che assorbe una corrente non trascurabile - ma anche dei decoder perché convertono il codice BCD in ingresso in un altro codice di 7 bit adatto a pilotare il display11).

I data sheet

Ogni scheda minilab del laboratorio contiene due display a 7 segmenti e un decoder BCD 7-segmenti 7448. Osserviamo che:

9 I decoder per LCD

10 Visualizzazione con dati multiplati

Torna all'indice.

1)
questa indicazione, apparentemente più complicata, evita ambiguità legate alla diversa interpretazione degli stati logici quando si lavora in logica positiva o negativa
2)
questo permette una semplificazione dei cablaggi e un risparmio in termini di costo
3)
vedere le figure 10 e 11 per l'uso da decoder e demultiplexer
5)
non è un codice pesato e si può costruire sapendo che è un codice riflesso (osservare l'alternanza di 0 e 1)
7)
si parla di distanza minima fra due parole
8)
naturalmente l'errore non viene rilevato se si verificano più errori nella stessa combinazione; in questo caso occorre una maggiore ridondanza
9)
è indicato anche il punto decimale DP
10)
come si vede è possibile anche una visualizzazione esadecimale con le lettere da A a F
11)
un decoder doverebbe avere una sola uscita attiva; in questo casi si intende attiva la cifra visualizzata sul display