Componenti notevoli

Da Hacknowledge.

Indice

[modifica] La rete di parità

La rete di parità è una macchina combinatoria abbastanza diffusa che serve a stabilire se una sequenza di bit in ingresso è pari oppure dispari. L’uso di questi circuiti è largamente diffuso nella gestione delle memorie r.a.m. per calcolatori. La memoria può essere allocata secondo due schemi diversi: little-endian e big-endian. Nello schema little-endian il bit più significativo si trova collocato più a destra rispetto alle altre celle di memoria, viceversa per lo schema big-endian. Siccome gli indirizzi di memoria vengono trattati con sequenze di bit pari o dispari la rete di parità è usata in fase di controllo o generazione per gli indirizzi pari o dispari. In fase di generazione di un indirizzo, se x0,x1,x2,…,x7 sono gli 8 bit di un byte un ulteriore bit x8 viene aggiunto affinché la stringa assuma una parità o una disparità in base ai bit fin lì assunti. Analogamente, in fase di controllo se x0,x1,x2,…,x7 sono gli 8 bit di un byte il successivo bit x8 indica la parità o la disparità della stringa. La rete di parità è dotata generalmente di n ingressi ed una sola uscita. L’uscita è dunque un segnale binario, si sceglie infatti di assegnare il bit 1 se la sequenza è pari, oppure 0 se la sequenza di bit in ingresso è dispari (rete di parità in senso stretto). Esistono sia reti di parità, per le quali y=1 indica la parità dei bit in ingresso, e sia reti di disparità in cui l’uscita y=1 indica che i bit in ingresso sono dispari. Essendoci n bit di ingresso è allora possibile avere 2n possibili combinazioni. Nel caso della progettazione di una macchina di parità la codifica non gioca un ruolo importante, in questo caso essa è infatti già scelta poiché sia gli ingressi che le uscita sono dei bit. Progettiamo, ad esempio, una rete di parità avente 3 bit in ingresso ed un bit in uscita:

  • Ingressi: B1, B2 e B3;
  • Uscita: y=1 pari, y=0 dispari;


Costruiamo la tabella di verità per la nostra rete:

A B C Y
1 0 0 0 1
2 0 0 1 0
3 0 1 0 1
4 0 1 1 0
5 1 0 0 1
6 1 0 1 0
7 1 1 0 1
8 1 1 1 0


Quindi tracciamo la mappa di Karnough:

B3\B1B2 00 01 11 10
0 1 0 1 0
1 0 1 0 1


La mappa di Karnough per una qualunque rete di parità o di disparità si presenterà sempre come una scacchiera poiché gli elementi pari o dispari si trovano alternati tra di loro. Questa disposizione della tabella di verità non ci permette alcuna minimizzazione poiché non è possibile formare nessun accoppiamento di quelli 8-4-2 visti in precedenza. Dalla tabella di verità si estrae questa funzione logica:

Immagine:Rete_di_parità-funzione_logica.jpg

La rete di parità a 3 bit di ingresso avrà il seguente schema:

Immagine:Rete_di_parità.jpg

[modifica] Multiplexer e multiplexer indirizzabile

Il multiplexer binario è una macchina combinatoria abbastanza semplice che è tuttavia caratterizzata da un elevato numero di ingressi. Il primo multiplexer che osserveremo è quello cosiddetto semplice poiché esso prevede n ingressi dati ed n ingressi indirizzo. Il numero di ingresso dati e quello per gli indirizzi sono uguali. Gli ingressi vengono suddivisi in ingressi dati ed ingressi indirizzo solo per avere una maggiore comprensione sul comportamento della macchina, nella realtà il multiplexer binario ha 2n ingressi (senza alcuna specifica sul numero di ingressi dati ed ingressi indirizzo, il fatto che alcuni di questi 2n indirizzi siano riservati ai dati ed altri agli indirizzi è una nostra scelta o modo di dire che ci agevola nello studio del dispositivo). Il multiplexer binario è dotato di una sola uscita, il bit y. L’uscita è il valore di uno dei bit di ingresso dati selezionato attraverso il bit ingresso indirizzo. Una cosa importante da notare in fase di analisi della macchina è il fatto di adottare una codifica (molto) ridondante, infatti dei 2n ingressi solo n sono utili (lo schema e l'esempio in seguito chiarirà questi concetti). Per comodità si può immaginare di numerare ciascuno degli ingressi dati e indirizzi ed è ciò che a breve faremo. In base al numero binario che si compone sulla linea indirizzi il dispositivo pone in uscita, sul bit y, il valore logico della linea dati corrispondente. Ad esempio, per n=3 (l'indirizzo selezionato è il numero 3):

Immagine:Multiplexer-schema.jpg

All’ingresso dati d0=0 d1=1 e d2=0, la macchina risponde in uscita con y=0 poichè sulla linea indirizzi è selezionato l'indirizzo a2. Per ovviare a questo problema, dovuto ad una codifica ridondante, si interviene sulla progettazione della macchina in questo modo:

  • n ingressi dati;
  • log2n ingressi indirizzo;
  • una sola uscita y;


Un multiplexer indirizzabile è una macchina che inoltra sull’unica uscita y quello fra gli n bit-dati in ingresso il cui indirizzo è quindi individuato da k=log2n bit-indirizzo (in altre parole verranno impiegati, in fase di progettazione, i soli bit necessari ad indirizzare il numero di ingressi dati). A titolo di esempio progettiamo un multiplexer a 4 ingressi dati; pertanto essendo n=4 il multiplexer avrà log24=2 ingressi indirizzo che denotiamo nel seguente modo: a1, a2. Chiameremo, inoltre, gli ingressi dati in questo modo: d0, d1, d2 e d3. L'uscita, invece, sarà z. La tabella della verità per questa macchina è molto lunga, è tuttavia utile, per capire ancora meglio il comportamento della macchina, osservare i primi ingressi. Osserviamo dunque la prima riga: in ingresso ci sono tutti zero, gli ingressi indirizzo a1 ed a2 sono posti entrambi a 0, essi indicano di prendere il bit contenuto nell’ingresso dati d0, la macchina riporta in uscita z=0. L’ultima riga della tabella è ancora più significativa. Infatti, i bit di ingresso indirizzo sono a1=1 ed a2=1, stanno cioè indicando il contenuto del bit 4 dell’ingresso dati, che è d3. Il contenuto di d3, il bit 1, è allora riportato in uscita, pertanto z=1:

d0 d1 d2 d3 a1 a2 z
0 0 0 0 0 0 0
0 0 0 0 0 1 0
0 0 0 0 1 0 0
0 0 0 0 1 1 0
0 0 0 1 0 0 0
0 0 0 1 0 1 0
0 0 0 1 1 0 0
0 0 0 1 1 1 1
... ... ... ... ... ... ...


La tabella continua riproponendo per ogni riga tutti i possibili ingressi! Ovviamente è estremamente difficile procedere con la progettazione della macchina. Tuttavia è necessario notare che: l'uscita z corrisponde alla linea dati selezionata dai bit a1 ed a2. Pertanto, la progettazione si semplifica ulteriormente se si considera una diversa tabella (notare l'assenza dei bit d0, d1, d2 e d3):

a1 a2 z
0 0 d0
0 1 d1
1 0 d2
1 1 d3


Lo schema logico è il seguente:

Immagine:Multiplexer-esempio.jpg

[modifica] Decodificatori

Gran parte dell’informazione nei calcolatori è manipolata in forma codificata. In un’istruzione, si può usare un campo di n bit per selezionare una tra 2n possibili azioni da intraprendere. Per eseguire l’azione desiderata, l’istruzione codificata deve essere prima decodificata. Un circuito in grado di accettare un ingresso ad n bit e di generare il corrispondente segnale di uscita su una delle 2n possibili uscite si chiama decodificatore. Un decodificare completo è una macchina con:

  • k ingressi;
  • M=2k uscite;


tale che al più una sola delle uscite del decodificatore è alta. Il decodificatore completo talvolta detto anche demultiplexer (de-mux) è generalmente schematizzato in questo modo:

Immagine:Decodificatore-schema.jpg

Un esempio di decodificatore con k=3, dove k è il numero di ingressi, ed 8 uscite (essendo in tal caso M=2k=8) è il seguente:

Immagine:Decodificatore-esempio.jpg

[modifica] Full adder

Si tratta di una macchina è anch’essa di tipo combinatorio che effettua la somma dei due bit ingresso e del bit di riporto, in uscita la macchina propone con un bit la somma s=a+b+rin e con un altro bit r l’eventuale riporto. Riepilogando, la macchina ha 3 bit di ingresso e 2 bit di uscita:

  • 3 bit in ingresso: a,b ed rin;
  • 2 bit in uscita: s ed rout;


Con 3 bit di ingresso la macchina ha 23=8 possibili combinazioni di ingresso. La codifica in questo caso non genera alcun problema poiché la macchina tratta in maniera diretta con i bit (ciò vale in generale con le macchine fin qui viste). Inoltre, avendo due uscite, la macchina si comporrà di due mappe di Karnough, ciascuna delle quali farà riferimento rispettivamente ad un bit di uscita. Avremo pertanto una funzione logica dedicata al bit s ed una dedicata al bit rout.

a b rin s rout
0 0 0 0 0
0 0 1 1 0
0 1 0 1 0
0 1 1 0 1
1 0 0 1 0
1 0 1 0 1
1 1 0 0 1
1 1 1 1 1


Da questa tabella si tracciano le mappe di Karnough per le 2 funzioni di uscita:

Mappa di Karnough per s

a/brin 00 01 11 10
0 0 1 0 1
1 1 0 1 0


Mappa di Karnough per rout

a/brin 00 01 11 10
0 0 0 1 0
1 0 1 1 1


Minimizzazione: non è possibile minimizzare la prima mappa (quella cioè dedicata ad s) poichè essendo disposta secondo una scacchiera non genera alcun accoppiamento fra celle. La seconda mappa, quella riferita al bit rout, è invece minimizzabile secondo tre accoppiamenti di 2 variabili booleane. Per s abbiamo questa funzione logica:

Immagine:Full-adder_funzione_s.jpg

Per rout invece:

Immagine:Full-adder_funzione_r_out.jpg

Il circuito logico del full adder è il seguente:

Immagine:Full-adder-schema.jpg

Strumenti personali