55
5.1 - Memorie a sola lettura 5.2 - Matrici logiche programmab 5.3 - Unità aritmetica e logica Capitolo 5 Circuiti programmabili

5.1 - Memorie a sola lettura 5.2 - Matrici logiche programmabili 5.3 - Unità aritmetica e logica

Embed Size (px)

DESCRIPTION

Capitolo 5 Circuiti programmabili. 5.1 - Memorie a sola lettura 5.2 - Matrici logiche programmabili 5.3 - Unità aritmetica e logica. Funzioni di n variabili. “macchina” di programmazione. Ho bisogno di questa!. La programmazione dell’hardware. p 1. p 2. p y. x 1. z 1. Rete - PowerPoint PPT Presentation

Citation preview

5.1 - Memorie a sola lettura5.2 - Matrici logiche programmabili5.3 - Unità aritmetica e logica

Capitolo 5

Circuiti programmabili

La programmazione dell’hardware

Funzioni di n variabili

Ho bisognodi questa!

“macchina” di

programmazione

Rete combinatoria programmabile - Rete combinatoriain grado di presentare diverse relazioni ingresso/uscita singolarmente selezionabili mediante l’attribuzione diuna determinata configurazione ad un gruppo di ingressidetti bit di programmazione.

Le reti combinatorie programmabili

x1x2

xn

Retecombinatoria

programmabile

z1z2

zm

p1 p2 py

zi = F (p1,p2 ,…..,py ,x1,x2 ,…..,xn) = Fp (x1,x2 ,…..,xn)

5.1Memorie a sola

lettura

La rete basata sull’espressione generale

F(0)

F(1)

F(2n-1)

x1 x2 xn

F

F(x1,x2,...xi,..xn) = m(i) F(i).i=0

2n-1 Espressione in grado di descrivere qualsiasi funzione di n variabili

Rete combinatoria programmabile in gradodi realizzare qualsiasi funzione di n variabile

F(i): bit di programmazione

MUX come reti programmabili

SN74151I0

I1

I2

I3 ZI4

I5

I6

I7

CBA

SN74153I0

I1

I2 ZI3

B A

SN74157I0

I1 Z

A

SN74150I0

I1

I2

I3

I4

I5

I6

I7 ZI8

I9

I10

I11

I12

I13

I14

I15

DCBA

A,B,C,D ingressi ( xi )

Iibit di programmazione ( pi )

ROM (Read Only Memory)

• I MUX disponibili nelle famiglie logiche hanno un basso numero di segnali di selezione.

Difatti al crescere di n cresce esponenzialmente il numero dei pin del circuito integrato da utilizzare per i bit di programmazione.

Esempio: n=16 216 = 65536 pin per la programmazione !

• Le ROM sono reti combinatorie programmabili basate sulla espressione generale SP ed aventi i bit di programmazione integrati all’interno del dispositivo.

Struttura di una ROM (1)Una diversa realizzazione del MUX ( T5 )

I contatti al posto dei segnalidi programmazione

F(0)F(1)F(2)F(3)

F

x1 x0 x1 x0

F

F(i)=0/1 Contatto aperto/chiuso

contattochiuso

contattoaperto

Struttura di una ROM (2)

x1 x0 F

• Rappresentazione “compatta” della struttura di una ROM :

• Realizzazione integrata di più funzioni.

Esempio: in un contenitore da 24 pin è possibile alloggiare un chipche realizza o 8 funzioni di 14 variabili o una funzione di 21 variabili.

G O

Le ROM come circuiti di memoria

Ogni configurazione delle variabili di ingresso può essere vista come l’indirizzo di un dato formato dai bit che sono stati programmati nella riga corrispondente.

Bit di programmazione

D0 D1 Dk

A0

A1

.

.An-1

DEC

m0

m2n

-1

m1

Le “vere e proprie” ROM• I contatti vengono realizzati dal costruttore nell’ultimo stadio del processo di fabbricazione del circuito su ordine dell’acquirente:

• Le ROM sono programmabili una sola volta (OTP: one time programmable).

memorie a sola lettura (Read Only).

memorie non volatili

Memorie non volatili a sola lettura Memorizzazione di informazioni che devono permanere quando il sistema non è alimentato e che non non cambiano durante il funzionamento .

Limitazioni delle ROM

Esempi: il “loader” visto in 3.2, il programma di un sistema “embedded”, il BIOS del PC …..

Costi fissi elevati Non adatte allo sviluppo

(OTP)Grossi volumi di produzione.

PROM (Programmable ROM)

La programmazione viene effettuata dall’utente mediante un’apposita apparecchiatura che consente di “bruciare” selettivamente i fusibili inseriti dal costruttore.

Convenienti per bassi-medi volumi di produzione

Dispositivi programmabili una sola volta

i

Q

EPROM (Erasable PROM)

Costo superiore a quello delle PROM

Cancellazione ottenuta convogliando luce ultravioletta sui terminali di comando attraverso una finestra di quarzo presente sul contenitore.

Programmazione effettuata dall’utente mediante una apposita apparecchiatura che consente di inviare impulsi elettrici che provocano accumulazione di carica sul terminale di comando.

Dispositivi riprogrammabili

Q

Memorie a sola lettura cancellabili elettricamente

EEPROM (Electrically Erasable PROM) : si programmano e cancellano byte-per-byte tramite segnali elettrici e senza rimuovere il dispositivo dalla piastra stampata.

FLASH-EPROM: si programmano/cancellano elettricamente direttamente sulla piastra. La cancellazione è più veloce rispetto alle EEPROM: con un’unica operazione è possibile cancellare l’intero dispositivo oppure uno o più “settori”.

Bit di programmazione

Selezione a due dimensioni (1)F(A2,A1, A0) = A2’A1’A0’ F(0) + A2’A1’A0 F(1) + A2’A1A0’ F(2) + A2’A1A0 F(3) +

A2A1’A0’ F(4) + A2A1’A0 F(5) + A2A1A0’ F(6) + A2A1A0 F(7)

A2

F

A0

A1

DEC

m0

m3

m1

m2

MUX

= A2’(A1’A0’ F(0) + A1’A0 F(1) + A1A0’ F(2) + A1A0 F(3)) + A2 (A1’A0’ F(4) + A1’A0 F(5) + A1A0’ F(6) + A1A0 F(7))

F(0)

F(1)

F(2)

F(3)

F(4)

F(5)

F(6)

F(7)

Matrice di bit di programmazione

Selezione a due dimensioni (2)

D1 Dk

MUX

D0

Am

Am+1

An-1

A0

A1

Am-1

ROw

DEC

COL

DEC

Estensione del numero di uscite

Collegamento in parallelo di più ROM

zk+1 zk+2 …z2k+1z0 z1 … zk

A0 A1 ……..An-1

ROMD0 D1 …Dk

A0 A1 ……..An-1

ROMD0 D1 …Dk

xn

x1 x0

Estensione del numero di ingressi

Teorema di espansione

m

n-m

Dk

MUXAm

An-1

..

Dk

A0 A1 ……..Am-1

ROM

A0 A1 ……..Am-1

ROM

A0 A1 ……..Am-1

ROM

D0 D0 D0

D0

MUXAm

An-1

..

N.B. - Al primo livello occorrono 2(n-m) ROM

Amplificatore a 3 stati d’uscita

I O

OE

OE I OH L LH H HL X Z

I O

OE

Lo stato elettrico del segnaleè indefinito o fluttuante (Terzo Stato, Stato di Alta Impedenza)

OE

I

O

MUX con amplificatori 3-state (1)

In ogni istante di temponon deve esserci più

di un 3-state abilitato !

DEC

03 2 1

I0

I1

I2

I3

Z

A0

A1

MUX 4:1

Le uscite del decoder non variano simultaneamente

Situazione di corto circuito (conflitto elettrico) con possibili malfunzionamenti del sistema

Nei 3-state il tempo di risposta all’abilitazione (tpZH, tpZL) è inferiore a quello necessario per il passaggio nel terzo stato (tpHZ, tpLZ)

MUX con amplificatori 3-state (2)

DEC

03 2 1

I0

I1

I2

I3

Z

A0

A1

Ai

EN

Z

I0

I1

I2

I3

Z

DEC

03 2 1A0

A1

ENEN

Stadio di uscita di una ROM

CE’

OE’

O0 O1 Ok

D1 Dk

Bit di programmazione

D0

Am

Am+1

An-1

A0

A1

Am-1

DEC

COL

ROW

DEC

MUX

Progetto di un banco di ROM (1)Supponiamo di voler connettere 32K byte di ROM ad una CPU con 16 bit di indirizzo (A0..A15) ed 8 bit di dato e di avere a disposizione dispositivi ROM da 8K x 8 . Supponiamo inoltre che la CPU veda il banco di ROM nella parte alta del suo spazio di indirizzamento (8000H - FFFFH, cioè A15=1).

Estensione del numero degli ingressia[0..12]

A0 A1 …A12

ROMD0

A0 A1 …A12

ROMA0 A1 …A12

ROMA0 A1 …A12

ROMD0 D0 D0 D7

d0

MUX

d7

MUX

a[13,14]

MRDa15

Progetto di un banco di ROM (1)

a13a14a15

DEC

76543210

a[0..12]

ROM ROM ROM ROMA0 A1 …A12 A0 A1 …A12 A0 A1 …A12 A0 A1 …A12

D0 D0 D0 D0 D7D7D7D7

d0

d7

MRD*

OE* OE* OE*OE*CE* CE* CE* CE*

Esercizi 5.1 e 5.2

• Si riprogetti il banco di ROM da 32KB (byte) nel caso in cui si disponga di una ROM 16K x 8, una ROM 8K x 8, due ROM 4K x 8.

• Si individui uno schema che consente di collegare al bus dati 8 pulsanti di cui il processore deve poter fare il polling all’indirizzo di I/O 0000H.

5.2Matrici logiche programmabili

Matrice AND Programmata dal costruttore

Matrice OR Programmata dall’utente

Rappresentazione di una ROM in termini di matrici AND e OR

ROM 2x2 Caso generale

N.B. - Ogni AND realizza un potenziale mintermine e puòessere impiegato per la programmazione di ciascuna uscita (espressione generale SP).

NAND = 2n

Matrice AND Programmata dall’utente

Matrice OR Programmata dall’utente

PLA e PAL

Matrice AND Programmata dall’utente

Matrice OR Programmata dal costruttore

PLA: Programmable Logic Array

PAL: Programmable Array Logic

N.B. - Ogni AND realizza un implicante (espressione normale SP). Nelle PLA gli implicanti possono essere “comuni” a più uscite.

NAND << 2n

Sintesi con PLA

00 01 11 1000

a bcd

1 1 0 1

1 1 0 1

0 0 1 1

0 0 1 10111

10

z

00 01 11 1000

a bcd

0 0 0 1

0 0 1 1

1 1 0 0

0 0 0 00111

10

w

a

b

c

d

z

w

Sintesi con PAL00 01 11 10

00a b

cd

1 1 0 1

1 1 0 1

0 0 1 1

0 0 1 10111

10

z

00 01 11 1000

a bcd

0 0 0 1

0 0 1 1

1 1 0 0

0 0 0 00111

10

w

a

b

c

d

z’

w

N.B. - Quando non si dispone di un numero sufficiente di ANDpuò essere utile realizzare la funzione complemento.

Esercizio 5.3

BCD Gray

0 0 0 00 0 0 10 0 1 00 0 1 10 1 0 00 1 0 10 1 1 00 1 1 11 0 0 01 0 0 11 0 0 1

1 0 0 1

A B C D

0 0 0 00 0 0 10 0 1 10 0 1 00 1 1 01 1 1 01 0 1 01 0 1 11 0 0 11 0 0 0

X X X X

X X X X

W X Y Z

• Si sintetizzi un trascodificatore da codice BCD a codice Gray utilizzando una PAL con 4 ingressi, 4 uscite e 4 AND per uscita.

PAL con I/O programmabile (16L8)

5.3 Unità aritmetica

e logica

ALU: Arithmetic and Logic Unit

u = Fc (x , y)

ALU

x

y u

flag c

ALU - Rete combinatoria in grado di eseguire diverseoperazioni di tipo aritmetico o logico. L’operazione di volta in volta eseguita dipende dal valore attribuito ai bit di programmazione (codice operazione)

0 1CIC2 C1 C0

x + y x + y + 1

x -yx - y -1

x

y y + 1

- y-(y +1)

0 1

24 -1 , -1

0 0 0

0 0 1

0 1 0

0 1 1

1 0 0

1 0 1

1 1 0

1 1 1

x

x + 1

x - 1

0

M=0 pag. 5.25

0 1C3C2 C1 C0

x y x or y

(xy)’(x y)’

x

y y

x or y’ y ’

0000 x and y

1111

0 0 0

0 0 1

0 1 0

0 1 1

1 0 0

1 0 1

1 1 0

1 1 1

x’ or y

x

x ’

1111

M=1pag. 5.23

Sottrazione fra numeri naturali

an-1 ai a1 a0

bn-1 bi b1 b0

-

pn-1 pi p1 0

dn-1 di d1 d0

D = A - B (A B)

• Sottrazione fra due numeri da un bit 0 - 0 = 0 ; 1 - 0 = 1 ; 1 - 1 = 0 ; 0 - 1 : quantità non rappresentabile.

• Sottrazione “colonna per colonna” fra due numeri da n bit

p a b P D

0 0 0 0 00 0 1 1 10 1 0 0 10 1 1 0 01 0 0 1 11 0 1 1 01 1 0 0 01 1 1 1 1

Complemento a 2 di un numero naturale N formato da n bit

Calcolo di A - B con A B

A - B = A + (2n - B) - 2n

= (A + 2B) - 2n

• calcola A + 2B• elimina il bit più pesante

A

A - B

B

CI 4 BITa0 ADDERa1

a2

a3 s0 s1

s2

s3

b0

b1

b2

b3 CO

1

1

2N = 2n - N

Calcolo di 2N senza la sottrazione2N = 2n - N = (2n - 1) - N + 1 = not (N) + 1

Numeri relativi: rappresentazione segno-valore assoluto

N [-(2n-1 - 1), +(2n-1 - 1)]

bn-1 bn-2 b1 b0

n bit

segno (0: positivo, 1: negativo)

valore assoluto

|N| = (bn-2 .2n-2 + …+ b0 .20)

Numeri relativi: rappresentazione in complemento a 2

N = -2n-1 . bn-1 + bn-2 .2n-2 + …+ b0 .20 N [-2n-1, +(2n-1 - 1)]

bn-1 bn-2 b1 b0

n bit

+1 = 0 0 0 1-1 = 1 1 1 0 +

1 = 1 1 1 1

N.B. - anche nella rappresenta-zione in complemento a 2 il bit più significativo indica il segno (0:positivo, 1:negativo).

Esempi ( n=4 )

+7 = 0 1 1 1- 7 = 1 0 0 0 +

1 = 1 0 0 1

N 0 : segno-valore assoluto

N < 0 : 2(-N) con (-N) espresso in segno-valore assoluto

Proprietà della rappresentazione in complemento a 2

• eseguendo 2A si ottiene -A

• eseguendo A+B si ottiene la somma algebrica fra A e B:

Siano A e B due numeri nella rappresentazione in complemento a 2:

• eseguendo A + 2(B) si ottiene A - B

1 0 0 1

1 1 0 1 +1 1 0 0 =

A = -3 B = -4 -7 1 1 1 1

1 1 0 0 +0 0 1 1 =

A = -4 B = +3 -1 0 0 0 1

1 1 0 0 +0 1 0 1 =

A = -4 B = +5 +1

N.B. - per sommare o sottrarre due numeri relativi espressi in complemento a 2 è sufficiente un addizionatore.

A: 0 0 0 1 (+1) 1 1 1 0 +

1 2A: 1 1 1 1 (-1)

1 0 0 1 (-7) 0 1 1 0 +

1 0 1 1 1 (+7)

Esercizi 5.4 e 5.5• Utilizzando una rappresentazione in complemento a 2 con n=5 si eseguano le seguenti operazioni:

(-12) + (+4)(-12) + (-1)(-12) - (-12)(-12) + (+12)(-12) + (-4)(+10) - (+5)(+10) - (+11)(+12) +(+5)(-14) + (-4)

• Qual’è il valore dei seguenti numeri relativi espressi nella rappresentazione in complemento a 2:

1111, 11111111, 11111110, 1110, 01111111, 10000000

Un “adder/subtractor” programmabile

x

MUX

0

1

y

CI

C0

CI 4 BITa0 ADDERa1

a2

a3 s0 s1

s2

s3

b0

b1

b2

b3 CO

u

0

1

0 1CIC0

x + y x + y + 1

x -yx - y - 1

….. più operazioni aritmetiche0 1CI

C2 C1 C0

x + y x + y + 1

x -yx - y -1

x

y y + 1

- y-(y +1)

0 1

24 -1 , -1

0 0 0

0 0 1

0 1 0

0 1 1

1 0 0

1 0 1

1 1 0

1 1 1

x

x + 1

x - 1

0

CI

CI 4 BITa0 ADDERa1

a2

a3 s0 s1

s2

s3

b0

b1

b2

b3 CO

u

MUX

0

1

C0

x

‘0000’

MUX

0

1

y

‘0000’

MUX

0

1

C2

C1

Sintesi della rete di pre-elaborazione

bk = c0’ (c1’ yk) + c0 (c1’ yk)’. . . . = c0 (c1’ yk).

C0 C2

x0

x1

x2

x3

C1

y0

y1

y2

y3

CI

u s0 s1

s2

s3

4 BITADDER

CIa0

a1

a2

a3

b0

b1

b2

b3 CO

s0

s1

s2

s3

4 BITADDER

ak = c2’ xk +c2 0 = c2’ xk. . .

Bit di modalità e operazioni logiche

CIC2

Rete di

pre-elabor.

x

y

C1 C0

CIa0

a1

a2

a3

b0

b1

b2

b3 CO

s0 s1

s2

s3

u

4 BITADDERcon M

M

M (bit di modalità, 0: logica, 1: aritmetica)

FArab s

FArab

R

s

R

M

M=0 s = a b

M=0C2 C1 C0

x y

(x y)’

x

y

0000

1111

0 0 0

0 0 1

0 1 0

0 1 1

1 0 0

1 0 1

1 1 0

1 1 1

x’

y’

....più operazioni logicheC3

uk

xk

yk

C2C0C1

FA

M=0

ak

bk

sk

r

R

M=0 0 1 0 0 1 1 1 0 0 1 0 1 1 1 0 1 1 1 0 0 1 0 0 0

C2 C1 C0

C3

0

1

x y (xy)’ x x’ y’y 0000 1111

x + y (xy)’ x’ + yx y x + y’ x y 1111.

N. B. - In questa tabella “.” è il simbolo della somma logica e “+” quello del prodotto.

Segnali di “flag”

flag

ALU

x

y u

cZF ZERO FLAG: vale “1” se il

risultato vale “0”.

SF SIGN FLAG: vale “1” se ilrisultato è negativo.

CF CARRY FLAG: vale “1” se CO=1 .

OF OVERFLOW FLAG: vale “1” in caso di traboccamento del risultato di un’operazione fra numeri relativi rappresentati in complemento a 2.

PF PARITY FLAG: vale “1” se il bit di parità del risultatovale 1.

Generazione dei flag per una ALU a 4 bit

ZF = (u0 + u1 + u2 + u3)’

OF = r3 CO

SF = u3

CF = CO

PF = u0 u1 u2 u3

1 0 0 1 +1 1 1 0 =

(-7) (-2)

0 1 1 0

1 0 0 0 CO r3 r2 r1 0 1 1 1 +0 0 1 0 =

(+7) (+2)

1 0 0 1

0 1 1 0 CO r3 r2 r1

La ALU a 4 bitZF SF OF PFC1

Rete di

pre-elabor.

C3 C2 C0

y0

y1

y2

y3

x0

x1

x2

x3

u0

u1

u2

u3

M

a0

b0

M r0

R

a1

b1

M r1

R

a2

b2

s2

M r2

R

a3

b3

M r3

R

CI

s0

s1

s3

CF

CO

Uno “shifter” a 4 bit

w0

w1

w2

w3

LR

u0

u1

u2

u3

0

0

W0 = 0 L R’ + u0 L’ R’ + u1 L’ R

. .. .. .

Wi = ui-1 L R’ + ui L’ R’ + ui+1 L’ Ri=1,2

. .. .

. .

W3 = u2 L R’ + u3 L’ R’ + 0 L’ R

. .. .

. .

Esercizi 5.6 e 5.7

• Si determini la tabella delle operazioni eseguite dalla ALU nel caso M=1.

• Si indichi come deve essere modificato lo shifter per poter eseguire anche delle divisioni per 2 su numeri relativi rappresentati in complemento a 2.