Reti combinatorie: moduli di base. Codificatore Realizza la funzione di codifica binaria, ossia...

28
Reti combinatorie: moduli di base

Transcript of Reti combinatorie: moduli di base. Codificatore Realizza la funzione di codifica binaria, ossia...

Page 1: Reti combinatorie: moduli di base. Codificatore Realizza la funzione di codifica binaria, ossia associare ad ogni elemento di un insieme composto da m.

Reti combinatorie:moduli di base

Page 2: Reti combinatorie: moduli di base. Codificatore Realizza la funzione di codifica binaria, ossia associare ad ogni elemento di un insieme composto da m.

Codificatore

• Realizza la funzione di codifica binaria, ossia associare ad ogni elemento di un insieme composto da m di simboli, una sequenza distinta di n bit

• Per ogni simbolo tale circuito genera il codice corrispondente

2nm• m linee di ingresso x0,..,xm-1, n linea di uscita y0,..,yn-1

– La linea xi è associata al simbolo i-simo– Quando xi=1, e xj=0 (ji), in uscita è presente il codice

corrispondente al simbolo i-simo

X0

X1

Xm-1

y0

yn-1

Page 3: Reti combinatorie: moduli di base. Codificatore Realizza la funzione di codifica binaria, ossia associare ad ogni elemento di un insieme composto da m.

Esempio• Codifica cifre decimali in BCD

0 0000

1 0001

2 0010

3 0011

4 0100

5 0101

6 0110

7 0111

8 1000

9 1011

y3y2y1y013579

2367

4567

8

9

y0

y1

y2

y3

Page 4: Reti combinatorie: moduli di base. Codificatore Realizza la funzione di codifica binaria, ossia associare ad ogni elemento di un insieme composto da m.

Decodificatore• Realizza la funzione inversa del codificatore, a partire da

una parola di un codice genera il simbolo corrispondente• Per ogni configurazione di ingresso, una sola uscita vale

1, le altre hanno valore 0

y0y1

yn-1

x0

xm-1

Page 5: Reti combinatorie: moduli di base. Codificatore Realizza la funzione di codifica binaria, ossia associare ad ogni elemento di un insieme composto da m.

Esempio• Decoder BCD-Cifre decimali (prima realizzazione)

0000 0 0 0 0 0 0 0 0 0 1

0001 0 0 0 0 0 0 0 0 1 0

0010 0 0 0 0 0 0 0 1 0 0

0011 0 0 0 0 0 0 1 0 0 0

0100 0 0 0 0 0 1 0 0 0 0

0101 0 0 0 0 1 0 0 0 0 0

0110 0 0 0 1 0 0 0 0 0 0

0111 0 0 1 0 0 0 0 0 0 0

1000 0 1 0 0 0 0 0 0 0 0

1001 1 0 0 0 0 0 0 0 0 0

x3x2x1x0y9y8y7y6y6y5y4y3y2y1y0 x3

x2

x1

x0

x3

x2

x1

x0

x3

x2

x1

x0

.

.

.

y0

y1

y9

Page 6: Reti combinatorie: moduli di base. Codificatore Realizza la funzione di codifica binaria, ossia associare ad ogni elemento di un insieme composto da m.

Esempio• Decoder BCD-Cifre decimali (seconda realizzazione)

0000 0 0 0 0 0 0 0 0 0 1

0001 0 0 0 0 0 0 0 0 1 0

0010 0 0 0 0 0 0 0 1 0 0

0011 0 0 0 0 0 0 1 0 0 0

0100 0 0 0 0 0 1 0 0 0 0

0101 0 0 0 0 1 0 0 0 0 0

0110 0 0 0 1 0 0 0 0 0 0

0111 0 0 1 0 0 0 0 0 0 0

1000 0 1 0 0 0 0 0 0 0 0

1001 1 0 0 0 0 0 0 0 0 0

x3x2x1x0y9y8y7y6y6y5y4y3y2y1y0

x3

x2

x3

x2

x3

x2

x1

x0x1

x0

x1

x0

x1

x0

x3

x2

y0 y1

….

Page 7: Reti combinatorie: moduli di base. Codificatore Realizza la funzione di codifica binaria, ossia associare ad ogni elemento di un insieme composto da m.

Decodificatore con enable

• E’ dotato di un ulteriore ingresso di abilitazione E (detto anche strobe)

• Il decodificatore è abilitato (ossia il processo di decodifica ha luogo) solo quando E=1

EE

Page 8: Reti combinatorie: moduli di base. Codificatore Realizza la funzione di codifica binaria, ossia associare ad ogni elemento di un insieme composto da m.

Realizzazione di funzioni tramite decoder

000 1

001 0

010 0

011 0

100 1

101 0

110 1

111 1

x2x1x0f

E

E

fusibile

Page 9: Reti combinatorie: moduli di base. Codificatore Realizza la funzione di codifica binaria, ossia associare ad ogni elemento di un insieme composto da m.

Realizzazione di funzioni tramite decoder (con Enable tree-state)

fusibile

E

Page 10: Reti combinatorie: moduli di base. Codificatore Realizza la funzione di codifica binaria, ossia associare ad ogni elemento di un insieme composto da m.

ROM (Read Only Memory)

• Insieme di locazioni di memoria che possono essere lette specificandone l’indirizzo

• Una ROM è un circuito combinatorio

Ingresso

(indirizzo)

Uscita

(word)

Page 11: Reti combinatorie: moduli di base. Codificatore Realizza la funzione di codifica binaria, ossia associare ad ogni elemento di un insieme composto da m.

Schema logico di una ROM

0 0 0

Funzioni di commutazioni realizzate come OR di mintermini

fusibile

Page 12: Reti combinatorie: moduli di base. Codificatore Realizza la funzione di codifica binaria, ossia associare ad ogni elemento di un insieme composto da m.

Implementazione ROM con C-MOS

• ROM 4x4 (numero parole x dimensione parola)

Uscita

R R R R

Vdd

Indirizzo

DE

C

Assenza collegamento =1

“Interruttore”

Page 13: Reti combinatorie: moduli di base. Codificatore Realizza la funzione di codifica binaria, ossia associare ad ogni elemento di un insieme composto da m.

Implementazione ROM (2)

• Esempio, indirizzo 01, uscita=0001

Uscita

R R R R

Vdd

Indirizzo01

DE

CO

DE

R

0 0 0 1

Page 14: Reti combinatorie: moduli di base. Codificatore Realizza la funzione di codifica binaria, ossia associare ad ogni elemento di un insieme composto da m.

ROM temporizzazioni

Xindirizzi

datiZ

csoe

t a

t cs

t oe

alta impedenza alta impedenza

indirizzo valido

cs

oe

Zdato valido

t

t

v

d

•ta : tempo di propagazione dall'ingresso X all'uscita Z•tcs: tempo di propagazione dall'ingresso cs all'uscita Z•toe: tempo di propagazione dall'ingresso oe all'uscita Z•t v: tempo di mantenimento dell'uscita da quando commuta X o cs o oe•td: tempo di disabilitazione dell'uscita da quando commuta cs o oe

Page 15: Reti combinatorie: moduli di base. Codificatore Realizza la funzione di codifica binaria, ossia associare ad ogni elemento di un insieme composto da m.

Multiplexer (MUX 2n:1)

• Ingressi – m=2n ingressi dati – n ingressi di selezione (controllo)

• Uscita– Una fra le m, a seconda del controllo

x0x1

xm-1

sn-1 s0

01

m-1

y

S y

0

1

..

2n-1

X0

X1

..

X2n

-1

Page 16: Reti combinatorie: moduli di base. Codificatore Realizza la funzione di codifica binaria, ossia associare ad ogni elemento di un insieme composto da m.

MUX 4-2

Y

X 0

X 1

X 2

X 3

s 0s 1

Y

X 0

X 1

X 2

X 3

s 1 s 0

Page 17: Reti combinatorie: moduli di base. Codificatore Realizza la funzione di codifica binaria, ossia associare ad ogni elemento di un insieme composto da m.

MUX - Generatore di funzioni

0 1

2

3

4

5

6

7

0 1

y=f(x0x1x2)=m0+m2+m3+m6=(0,2,3,6)

y=M1M4M5M7=(1,4,5,7)

x0x1x2

Page 18: Reti combinatorie: moduli di base. Codificatore Realizza la funzione di codifica binaria, ossia associare ad ogni elemento di un insieme composto da m.

DEMUX 2-4

d d d d

0 1 2 3

Y

s0s1

Page 19: Reti combinatorie: moduli di base. Codificatore Realizza la funzione di codifica binaria, ossia associare ad ogni elemento di un insieme composto da m.

Half Hadder - Semisommatore

• Ingresso 2 bit, uscita 2 bit

HA

A B

SC

A+B=

------C S

A

B

S

C

HA

C=ABS=(not A)B + A(not B)=AB

In Out

A B S C

0 0

0 1

1 0

1 1

0 0

1 0

1 0

0 1

Page 20: Reti combinatorie: moduli di base. Codificatore Realizza la funzione di codifica binaria, ossia associare ad ogni elemento di un insieme composto da m.

Full Hadder – Addizionatore completo

+

A B

S Cout

Cin+A+B=

----------Cout S

S vale 1 solo quando un numero dispari di bit di ingresso vale 1. Quindi, S=AB C

Cin

In Out

A B Cin S Cout

0 0 0

0 0 1

0 1 0

0 1 1

1 0 0

1 0 1

1 1 0

1 1 1

0 0

1 0

1 0

0 1

1 0

0 1

0 1

1 1

0 0 1 0

0 1 1 1

ABCin

Cout=CB+AB+CA

Page 21: Reti combinatorie: moduli di base. Codificatore Realizza la funzione di codifica binaria, ossia associare ad ogni elemento di un insieme composto da m.

Ripple Carry Adder (RCA)

Full Adder

a0 b0

c0

s0

Full Adder

a1 b1

c1c2

s1

Full Adder

an-1 bn-1

cn-1

cn

sn-1

n-bit Ripple Carry

Adder

sn-1 s0

an-1 bn-1 a0 b0

c0cn

Il tempo per ottenere il risultato è pari ad nTc, dove Tc è il tempo di propagazione del riporto

Page 22: Reti combinatorie: moduli di base. Codificatore Realizza la funzione di codifica binaria, ossia associare ad ogni elemento di un insieme composto da m.

ALU (bit slice)

• Op seleziona il tipo di operazione

+

a

b

opcin

cout

0

1

2

y

op y

0 0

0 1

1 0

11

a AND b

a OR b

(a+b+cin) mod 2

??

Page 23: Reti combinatorie: moduli di base. Codificatore Realizza la funzione di codifica binaria, ossia associare ad ogni elemento di un insieme composto da m.

ALU a 32 bit

cin

cout

ALU0

cin

cout

ALU1

cin

cout

ALU31

a0

b0

a1

b1

a31

b31

y0

y1

y31

… ……

op

Page 24: Reti combinatorie: moduli di base. Codificatore Realizza la funzione di codifica binaria, ossia associare ad ogni elemento di un insieme composto da m.

ALU (bit slice)

* = rappresentazioni in complemento a 2

+

a

b

opcin

cout

0

1

2

y

01

Inverti B

op InvertiB cin y

0 0

0 1

1 0

1 0

1 0

-

-

0

1

1

-

-

-

0

1

a AND b

a OR b

(a+b+cin) mod 2

(a+NOT b)

(a-b)*

Page 25: Reti combinatorie: moduli di base. Codificatore Realizza la funzione di codifica binaria, ossia associare ad ogni elemento di un insieme composto da m.

ALU a 32 bit

cin

cout

ALU0

cin

cout

ALU1

cin

cout

ALU31

a0

b0

a1

b1

a31

b31

y0

y1

y31

… ……

opInverti B

op NegaB y

0 0

0 1

1 0

1 0

-

-

0

1

A AND B

A OR C

A + B

A-B

Per stabilire se si verifica overflowÈ sufficiente confrontare sein corrispondenza del MSB, cincout

Overflowdetection

Overflow

Page 26: Reti combinatorie: moduli di base. Codificatore Realizza la funzione di codifica binaria, ossia associare ad ogni elemento di un insieme composto da m.

Supporto ALU per i salti

• Vogliamo ampliare la ALU in modo che sia in grado di rilevare la condizione a=b

• Tale condizione è utile per far eseguire istruzioni in modo condizionato (jump)

• Indichiamo con Zero la variabile binaria cosi definita:– Zero=1 se e solo se a=b

• Per calcolare Zero osserviamo che a=b <-> a-b=0– Pertanto Zero=1 se e solo se tutti i bit dell’operazione a-b

sono nulli. Ossia, Zero coincide col mintermine m0 definito sulgli n bit r0 … rn-1 che rappresentatno la differenza.

– Zero=m0= (not r0)(not r1)…(not rn-1)= not (r0+r1 .. +rn-1)

Page 27: Reti combinatorie: moduli di base. Codificatore Realizza la funzione di codifica binaria, ossia associare ad ogni elemento di un insieme composto da m.

ALU a 32 bit

cin

cout

ALU0

cin

cout

ALU1

cin

cout

ALU31

a0

b0

a1

b1

a31

b31

y0

y1

y31

… ……

opInverti B

Overflowdetection

Overflow

Zero

Page 28: Reti combinatorie: moduli di base. Codificatore Realizza la funzione di codifica binaria, ossia associare ad ogni elemento di un insieme composto da m.

Progetto di un sommatore con operandi a due bit

0 0 0 0 0 0 0

0 0 0 1 0 0 1

0 0 1 0 0 0 1

0 0 1 1 0 1 0

0 1 0 0 0 1 0

0 1 0 1 0 1 1

0 1 1 0 0 1 1

0 1 1 1 1 0 0

1 0 0 0 0 1 0

1 0 0 1 0 1 1

1 0 1 0 0 1 1

1 0 1 1 1 0 0

1 1 0 0 1 0 0

1 1 0 1 1 0 1

1 1 1 0 1 0 1

1 1 1 1 1 1 0

a1b1a0b0rout s1s0

Sintesi

Confronto con approccio iterativo