reti combinatorie: moduli di base. codificatore realizza la funzione di codifica binaria, ossia...

28
Reti combinatorie: moduli di base

Upload: benigna-d-amico

Post on 01-May-2015

214 views

Category:

Documents


1 download

TRANSCRIPT

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