Sei sulla pagina 1di 60

Il Livello Logico-Digitale

Blocchi funzionali combinatori


Circuiti integrati

 Un circuito integrato è una piastrina di silicio (o chip), quadrata o


rettangolare, sulla cui superficie vengono realizzati e collegati
transistor e dunque porte logiche, che complessivamente realizzano
uno o più circuiti digitali
• La piastrina di silicio di un IC ha solitamente dimensioni comprese tra:
– 5  5 mm e
– 1  1 cm (di rado superiore)
• La piastrina di silicio integra i transistor, i collegamenti tra i transistor e i
collegamenti con i morsetti di ingresso/uscita del chip

 Su un singolo chip si possono integrare:


– porte logiche sparse e indipendenti
– una o più reti combinatorie, con funzioni definite
– una o più reti sequenziali
– unità funzionali complesse: memoria, processore, unità di controllo di periferiche, e
così via

-2-
Famiglie di circuiti integrati

 I circuiti integrati sono classificati in base alle loro dimensioni, cioè al


numero di porte logiche contenute:
– SSI (Small Scale Integrated): IC a scala di integrazione piccola, da 1 a 10 porte
– MSI (Medium Scale Integrated): IC a scala di integrazione media, da 10 a 100
porte
– LSI (Large Scale Integrated): IC a scala di integrazione grande, da 100 a 100.000
porte
– VLSI (Very Large Scale Integrated): IC a scala di integrazione molto grande, 
100.000 porte

 Ogni famiglia ha degli usi caratteristici nei calcolatori e in generale nei


dispositivi elettronici, che dipendono dalle sue dimensioni, cioè dalla
quantità di porte presenti nel circuito integrato stesso

-3-
Usi caratteristici

 SSI: piccoli circuiti digitali di contorno a circuiti più complessi (glue logic)
 MSI: circuiti digitali semplici, dotati di un’unica funzione ben definita. Ad
es.:scambio di due o più segnali, confronto di due numeri, addizione o sottrazione di due numeri
 LSI: circuiti digitali complessi, dotati di funzionalità multiple,
eventualmente programmabili. Ad es.: un intero insieme di op. aritmetiche
(addizione, sottrazione, moltiplicazione, divisione - ALU), memorie di piccole
dimensioni, processori semplici
 VLSI: circuiti digitali molto complessi o di grandi dimensioni, spesso
programmabili. Ad es.: processori (dai microcontrollori ai processori di uso generale -
Pentium, SPARC, memorie, da qualche Kbyte in su, unità di controllo delle periferiche

– Nessuno progetta un circuito integrato VLSI, ma anche LSI, trattandolo


come un’unica rete combinatoria o sequenziale (104-106 porte logiche)
– Per progettare circuiti digitali di tali dimensioni, si usano tecniche
modulari, per scomporre il problema

-4-
Blocchi funzionali combinatori

 Esiste una ben nota e ormai stabilizzata libreria di blocchi


funzionali predefiniti di tipo combinatorio che contiene i
blocchi per tutte le funzioni combinatorie di base
– Questi blocchi appartengono alle famiglie MSI e (alcuni di essi) LSI
– La libreria contiene anche blocchi funzionali di tipo sequenziale

 I tipici blocchi funzionali combinatori sono:

•Multiplexer •Half adder e Full adder


•Demultiplexer •Addizionatore a n bit
•Decoder (decodificatore) •Unità aritmetico-logiche
•Confrontatore
•Shifter combinatorio

-5-
Multiplexer o selettore

 Il blocco funzionale multiplexer ha:


 n  1 ingressi di selezione
 2n  2 ingressi dati
 un’uscita
 Gli ingressi dati sono numerati a partire da 0: k = 0, 1, 2,
…, 2n  1
 Se sugli ingressi di selezione è presente il numero binario
k, il kesimo ingresso dati viene inviato in uscita

-6-
Multiplexer a 1 ingresso di selezione

 1 ingresso di selezione, 2 ingressi dati, un’uscita

Sel I0 I1 OUT
(Ctrl)
0 0 0 0
Sel I0 I1 OUT
0 0 1 0
(Ctrl)
0 D1 D2 D1 0 1 0 1
1 D1 D2 D2 0 1 1 1

1 0 0 0

1 0 1 1
Tabella della verità
1 1 0 0

1 1 1 1

-7-
Multiplexer a 1 ingresso di selezione

 1 ingresso di selezione, 2 ingressi dati, un’uscita

I0I1
Sel 00 01 11 10
0 0 0 1 1 Sel
1 0 1 1 0 I0
U
I1
Mappa di Karnaugh MUX

OUT = !Sel I0 + Sel I1

-8-
Multiplexer a 2 ingressi di selezione

ingressi di Tabella delle verità


selezione
MUX a 2 # riga S0 S1 I0 I1 I2 I3 U
ingressi di 0 0 0 0 X X X 0
selezione
1 0 0 1 X X X 1
S1
ingressi S0 uscita 2 0 1 X 0 X X 0
I0
dati 3 0 1 X 1 X X 1
I1
U
I2 4 1 0 X X 0 X 0
I3 5 1 0 X X 1 X 1
MUX
6 1 1 X X X 0 0
7 1 1 X X X 1 1

-9-
Multiplexer a 2 ingressi dati da k bit

Esempio: k=3
Ctrl Ctrl
1
MUX
3 bit

B B(1)
B 0 M
3 U
3
A(1) 1 X

B(2)
OUT
0 M OUT
A(2) 3 U
1 X 3
B(3)

A(3) 0 M
A A U
3 1 X
3

- 10 -
Demultiplexer

 Il blocco funzionale demultiplexer ha:


 n  1 ingressi di selezione
 1 ingresso dati
 2n  2 uscite
 Le uscite sono numerate a partire da 0: k = 0, 1, 2, …, 2n
1
 Se sugli ingressi di selezione è presente il numero binario
k, l’ingresso dati viene inviato alla kesima uscita, le
rimanenti sono a 0

- 11 -
Demultiplexer a 2 ingressi di selezione

Ingressi Selezione Uscite


I S1 S2 O1 O2 O3 O4 O 1 = !S 1 !S 2 I O 3 = !S 1 S 2 I
D 0 0 D 0 0 0
O 2 = S 1 !S 2 I O 4 = S 1S 2I
D 1 0 0 D 0 0
D 0 1 0 0 D 0
D 1 1 0 0 0 D

S1 S2
S1 S2
O1

O2 O1
00
I O3 O2
I 10
O3
O4 01
O4
11
DMUX

- 12 -
Decodificatore (decoder)

 Il blocco funzionale decodificatore ha:


 n  1 ingressi
 2n  2 uscite
 Le uscite sono numerate a partire da 0: k = 0, 1, 2, …, 2n
1
 Se sugli ingressi è presente il numero binario k, la kesima
uscita assume il valore 1 e le restanti uscite assumono il
valore 0

- 13 -
Decodificatore a 2 ingressi

DEC a 2 Tabella delle verità


ingressi
# riga I1 I0 U0 U1 U2 U3

ingressi U0 uscite 0 0 0 1 0 0 0
I1
U1 1 0 1 0 1 0 0
U2
I0 2 1 0 0 0 1 0
U3
3 1 1 0 0 0 1
DEC
U0 = !I1 !I0
U1 = !I1 I0
U2 = I1 !I0
U3 = I1 I0
- 14 -
Confrontatore (comparator)

 Il blocco funzionale confrontatore ha:


 due gruppi A e B di ingressi da n  1 bit ciascuno
 tre uscite: minoranza A  B, uguaglianza A  B e maggioranza A
B

• Il blocco confronta i due numeri binari A e B da n bit


presenti sui due gruppi di ingressi, e attiva (a 1) l’uscita
corrispondente all’esito del confronto

- 15 -
Confrontatore
Tabella delle verità
# riga A1 A0 B1 B0 AB AB AB
0 0 0 0 0 0 1 0
COMP a 2 bit 1 0 0 0 1 1 0 0
2 0 0 1 0 1 0 0
A0 3 0 0 1 1 1 0 0
ingressi AB uscite 4 0 1 0 0 0 0 1
A1
5 0 1 0 1 0 1 0
AB 6 0 1 1 0 1 0 0
B0 7 0 1 1 1 1 0 0
AB 8 1 0 0 0 0 0 1
B1
COMP 9 1 0 0 1 0 0 1
10 1 0 1 0 0 1 0
11 1 0 1 1 1 0 0

Confrontatore di numeri 12 1 1 0 0 0 0 1

a 2 bit
13 1 1 0 1 0 0 1
14 1 1 1 0 0 0 1
15 1 1 1 1 0 1 0

- 16 -
Confrontatore di uguaglianza a 2 bit
Tabella delle verità •L’uscita vale 1 se i 2 insiemi di 2 bit
hanno valore uguale, altrimenti vale
# riga A1 A0 B1 B0 C0 C1 AB
0 0 0 0 0 1 1 1
1 0 0 0 1 0 1 0
0
2 0 0 1 0 1 0 0
C0 = A0 xnor B0
3 0 0 1 1 0 0 0
4 0 1 0 0 0 1 0 C1 = A1 xnor B1
5 0 1 0 1 1 1 1
6 0 1 1 0 0 0 0 U = C0 C1
7 0 1 1 1 1 0 0
8 1 0 0 0 1 0 0
9 1 0 0 1 0 0 0
10 1 0 1 0 1 1 1
11 1 0 1 1 0 1 0
12 1 1 0 0 0 0 0
13 1 1 0 1 1 0 0
•Esercizio: Esprimere l’uscita U del
14 1 1 1 0 0 1 0 comparatore usando porte logiche
15 1 1 1 1 1 1 1 xor e nor
- 17 -
Shifter combinatorio

 Il blocco funzionale shifter ha:


 n  1 ingressi
 1 ingresso per il bit aggiunto a dx (scorrimento a sinistra)
 1 ingresso per il bit aggiunto a sx (scorrimento a destra)
 1 ingresso di controllo che comanda lo scorrimento a destra o a sinistra
 n  1 uscite
 Uscite:
– scorrimento a dx: bit aggiunto a sx + ingressi shiftati di una posizione a dx (viene
“perso” il bit meno significativo degli ingressi)
– scorrimento a sx: bit aggiunto a dx + ingressi shiftati di una posizione a sx (viene
“perso” il bit più significativo degli ingressi)

 Si noti che se si considerano gli ingressi come un valore numerico espresso in binario
naturale
– lo scorrimento a dx (con bit aggiunto a sx = 0) equivale ad una divisione per 2
– lo scorrimento a sx (con bit aggiunto a dx = 0) equivale ad una moltiplicazione per 2

- 18 -
Shifter combinatorio 5 ingressi

Nuovo bit Nuovo bit


S/!D scorrimento a I4 I3 I2 I1 I0 scorrimento a
sinistra
destra

0 1 0 1 0 1 0 1 0 1
MUX MUX MUX MUX MUX

O4 O3 O2 O1 O0

- 19 -
Blocchi aritmetici fondamentali

 Rappresentazione dei numeri in binario naturale intero


su k  1 bit
– Addizionatore ad 1 bit
• half adder
• full adder

– Addizionatore a k bit in binario naturale intero

 Addizionatore/Sottrattore a k bit di numeri interi in


complemento a 2

- 20 -
Half adder

HALF-ADDER

A B Carry Sum
Sum = A  B
0 0 0 0 Carry = A B
0 1 0 1 A B
1 0 0 1
1 1 1 0
Carry

Sum

- 21 -
Full adder

FULL ADDER
A B
A B Carry Sum Carry CarryIn
In Out
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
CarryO ut
Sum

- 22 -
Addizionatore a propagazione di riporto
per numeri binari naturali interi su 4 bit

Y
X

x3 y3 x2 y2 x1 y1 x0 y0

c4 xi yi c3 xi yi xi yi c1 xi yi
c2
ci+1 FA ci ci+1 FA ci ci+1 FA ci ci+1 HA
CARRY si si si si
OUT
4-bit RCA
s3 s2 s1 s0

SUM

21/01/2016
Addizionatore a propagazione di riporto
per numeri binari naturali interi su 4 bit
con riporto in ingresso
Y
X

x3 y3 x2 y2 x1 y1 x0 y0

xi yi xi yi xi yi xi yi
c4 c3 c2 c1 c0
ci+1 FA ci ci+1 FA ci ci+1 FA ci ci+1 FA ci
CARRY CARRY
si si si si IN
OUT
4-bit RCA
s3 s2 s1 s0

SUM

21/01/2016
Addizionatore/Sottrattore a
propagazione di riporto per numeri
binari interi con segno in C2 su 4 bit
y3 y2 y1 y0

x3 0 1 x2 0 1 x1 0 1 x0 01

c4 xi yi c3 xi yi xi yi c1 xi yi c0
c2
ci+1 FA ci ci+1 FA ci ci+1 FA ci ci+1 FA ci
CARRY si si si si ADD/
OUT
SUB
4-bit RCA
s3 s2 s1 s0

21/01/2016
SUM
Unità Aritmetico-Logica

Add
Sub
comandi …
Rin, Pin ALU
n
A C
n
ALU U
n
operandi B E
risultato

esiti
… …

A0 AB AB AB Rusc Pusc


- 26 -
Unità Aritmetico-Logica

# riga Comando Operazione R Esito


0 Add somma A e B A  B  Rin riporto in uscita Rusc
1 Sub Esegue A + (-B) A + ( B) riporto in uscita Rusc
2 Pass A A passa A -
in uscita
3 Pass B B passa B -
in uscita
4 Zero annulla uscita 0 -
5 Shift Left A A scorre a SX 2A bit più significativo di A
6 Shift Right A A scorre a DX A/2 bit meno significativo di A
7 Confronta
Null - A0
A con 0
8 Confronta
Compare A ,, B A  B, A  B, A  B
A con B
9 Multiply prodotto di A e B AB riporto in uscita
10 Divide divisione A / B A/B divisione per 0 ?
… … … … …

- 27 -
Semplice esempio di progetto
in stile funzionale
 Si chiede di progettare un circuito digitale combinatorio
(ALU a 1 ) che abbia:
– in ingresso due numeri interi binari naturali (positivi) A e B da 1
bit ciascuno
– in ingresso 2 segnali di comando F0 e F1
– in uscita un numero intero binario naturale da 1 bit

 Sull’uscita deve presentarsi (A and B) se F0 =F1 =0,


(A or B) se F0 =1 F1 =0, (notB) se F0=0 F1=1, la somma
se F0=F1=1

- 28 -
ALU a 1 bit per eseguire:
and, not, or, somma
F1 F0 B A

F0F1 Operazione svolta Half–Adder

0 0 A and B
1 0 A or B
0 1 !B
1 1 A + B

CarryOut

Multiplexer

Uscita

- 29 -
Numeri relativi e numeri reali

 I numeri relativi sono rappresentabili tramite sequenze di bit,


proprio come i numeri interi naturali (sempre positivi)
– La tecnica più usata per rappresentare i numeri interi relativi è il
complemento a due (two’s complement)
– Le ALU sono normalmente in grado di operare sia con numeri interi
naturali sia con numeri interi relativi rappresentati in complemento a
due

 I numeri reali sono rappresentabili tramite sequenze di bit, proprio


come i numeri interi
– Esiste uno standard internazionale per la rappresentazione binaria di
numeri reali: lo standard IEEE 754 per la rappresentazione in virgola
mobile
– Esistono ALU in grado di effettuare i calcoli aritmetici con i numeri
reali, oltre che con i numeri interi

- 30 -
Dispositivi Logici Programmabili
Dispositivi Programmabili a due livelli

Introduzione
ROM (Read Only Memory)
PLA (Programmable Logic Array)
PAL (Programmable Array Logic)
PLA e PAL avanzate
Logiche programmabili

 Sono dispositivi hardware che mettono a disposizione componenti


logici più o meno complessi che possono essere connessi tra loro
(programmazione delle connessioni) a seconda delle esigenze di
progetto
 Dispongono di:
– Componenti logici (Porte logiche, Flip-flop, Buffer…)
– Linee di connessione

 Tipologie di dispositivi programmabili


– ROM (Read-Only Memory ), PLA (Programmable Logic Array), PAL
(Programmable Array Logic): dispositivi logici programmabili a 2 livelli
• il termine 2 livelli indica che il dispositivo base è costituito da 1 sezione
AND e da 1 sezione OR disgiunte
– CPLD
– FPGA

- 32 -
Logiche programmabili - Modalità di programmazione

 Programmabili una sola volta (One-Time Programmable - OTP) - durante


la fase non attiva del dispositivo
– Fuse: le connessioni tra le linee sono inizialmente tutte attive. La fase di
programmazione disattiva permanentemente le connessioni non utili.
– Antifuse: Le connessioni tra le linee sono inizialmente tutte non attive. La fase di
programmazione attiva permanentemente le connessioni utili

 Riprogrammabili (Reprogrammable) - durante la fase non attiva del


dispositivo
– E2PROM: Le connessioni tra le linee, inizialmente tutte non attive, possono essere
attivate e disattivate elettricamente (deposito di carica per conduzione)
– SRAM: La connessione tra le linee, inizialmente tutte non attive, viene realizzata
memorizzando nella cella di RAM statica il valore 0 o 1 (maggiore velocità di
programmazione rispetto alla tecnologia E2PROM)

 Riconfigurabili (Reconfigurable) - durante la fase attiva del dispositivo


– SRAM: oltre ad una elevata velocità di programmazione, è richiesta anche la
possibilità di intervenire separatamente su parti del dispositivo.

- 33 -
Connessioni

 Connessioni globali
• linea che attraversa buona parte del dispositivo e che è condivisa da
molti elementi logici (elevati ritardi, può essere usata come uscita
di un solo elemento logico limitandone la flessibilità)
– sono caratteristiche dei dispositivi logici programmabili a 2 livelli
(ROM, PLA, PAL)
– e dei Complex Programmable Logic Devices (CPLD).

 Connessioni locali e distribuite


• Linea che attraversa una parte ridotta del dispositivo e che è
condivisa da pochi elementi logici (ritardi contenuti, coesistenza di
differenti linee di lunghezza differente, quindi elevata flessibilità)
– sono caratteristiche dei Field Programmable Gate Array (FPGA).

- 34 -
Logiche programmabili a 2 livelli

 Nello schema base realizzano funzioni a 2 livelli del tipo SOP a n


ingressi e m uscite
fi = fi(x1, x2, ..., xn) con i={1, 2, ..., m}

 Dispongono di:
– Un numero di ingressi fissato;
– Un numero di uscite fissato;
– Un piano AND, per la costruzione dei mintermini o degli implicanti;
– Un piano OR, per la somma dei mintermini o degli implicanti;
– Buffer di ingresso e di uscita (per ragioni elettriche e funzionali).
• In seguito, negli schemi logici, i buffer non saranno riportati per comodità
sebbene siano sempre presenti

X1 f1
X2 Input Piano Piano Output f2
Ingresso Buffers Buffers Uscita
AND OR
Xn fm

- 35 -
Piano AND – Piano OR: Esempio 1

– Prima forma canonica della funzione a più uscite:


f1 = a’b’c+a’bc+ab’c’+ab’c+abc’+abc
f2 = a’b’c+ab’c+abc
f3 = a’b’c+a’bc’+a’bc+ab’c’+ab’c+abc’
f4 = a’b’c’+a’b’c+a’bc+ab’c’+ab’c+abc’+abc
f5 = a’bc’+ab’c’+ab’c+abc’+abc

– Tabella della verità della funzione a più uscite:


abc f1 f2 f3 f4 f5
000 0 0 0 1 0
001 1 1 1 1 0 Il piano OR
Il piano AND 010 0 0 1 0 1 realizza le
realizza tutti i 011 1 0 1 1 0 singole funzioni
mintermini 100 1 0 1 1 1 di uscita
101 1 1 1 1 1
110 1 0 1 1 1
111 1 1 0 1 1

- 36 -
Piano AND – Piano OR: Esempio 2

Prima forma canonica della funzione a più uscite:


Il piano OR realizza le
f1 = a’b’c+a’bc+ab’c’+ab’c+abc’+abc singole funzioni di uscita
f2 = a’b’c+ab’c+abc
f3 = a’b’c+a’bc’+a’bc+ab’c’+ab’c+abc’
f4 = a’b’c’+a’b’c+a’bc+ab’c’+ab’c+abc’+abc abc f1 f2 f3 f4 f5
f5 = a’bc’+ab’c’+ab’c+abc’+abc P1=a 1-- 1 0 0 0 0
P2=bc -11 1 0 0 0 0
P3=b’c’ -00 1 0 0 0 0
P4=ac 1-1 0 1 0 0 0
Funzione a più uscite ottimizzata P5=ab’ 10- 0 0 1 0 0
f1 = a+bc+b’c’ Il piano AND P6=a’c 0-1 0 0 1 0 0
f2 = ac realizza questi P7=ac’ 1-0 0 0 1 0 0
f3 = ab’+a’c+ac’+bc’ termini P8=bc’ -10 0 0 1 0 0

f4 = a+b’+bc prodotto P1=P9=a 1-- 0 0 0 1 0


P10=b’ -0- 0 0 0 1 0
f5 = a+bc’ P2=P11=bc -11 0 0 0 1 0
P1=P12=a 1-- 0 0 0 0 1
P8=P13=bc’ -10 0 0 0 0 1

- 37 -
Logiche programmabili a 2 livelli
 Read-Only Memory (ROM)
– Piano AND fissato.
• Implementa tutti i possibili mintermini (decoder).
– Piano di OR adattabile.
 Programmable Logic Array (PLA)
– Piano AND programmabile.
• E’ dato il numero di termini prodotto generabili, si programmano solo i
mintermini/implicanti necessari.
– Piano OR programmabile.
 Programmable Array Logic (PAL)
– Piano AND programmabile.
• E’ dato il numero di termini prodotto generabili, si programmano solo i
mintermini/implicanti necessari.
– Piano di OR fissato.
• Ogni funzione (OR) può essere costruita solo con un certo sottoinsieme
(cablato) di termini prodotto.

- 38 -
Logiche programmabili a 2 livelli: campi di applicazione

– Reti combinatorie a due livelli non ottimizzate:


• Read-Only Memory (ROM)
– Anche PLA e PAL

– Reti combinatorie a due livelli ottimizzate:


• Programmable Logic Array (PLA), Programmable Array Logic (PAL)

– Reti combinatorie multi livello costituite da reti a due livelli


ottimizzate:
• PLA e PAL con retroazione

– Macchine Sequenziali Sincrone con reti combinatorie multi livello


costituite da reti a due livelli ottimizzate:
– PLA e PAL con retroazione e registri

- 39 -
Read-Only Memory (ROM)

 Un Memoria a Sola Lettura (ROM) implementa la prima forma


canonica di m funzioni di uscita a n ingressi
– Somma di Prodotti (SOP)
 In una ROM, una configurazione di ingresso, denominata
indirizzo, è associata una configurazione di uscita,
denominata parola

Indirizzo Decodificatore Parola (contenuto


X1 degli
f1
= Piano
della)
X2 Indirizzi f2
configurazione OR =
- Piano valore delle funzioni
delle variabili programmabile
Xn AND fm
di ingresso in corrispondenza
Fissato -
del mintermine
Parola selezionata
=
mintermine

- 40 -
ROM: decodificatore degli indirizzi

 Decodificatore degli indirizzi (Address decoder)


– Il decodificatore degli indirizzi nelle memorie ROM realizza tutti i 2n
mintermini, dove n sono le variabili di ingresso xi
 Infatti
– Gli ingressi sono le variabili xi
– Una ed una sola uscita è attiva alla volta; le uscite del decoder sono
tutti i mintermini costruiti a partire dalle variabili di ingresso
• Esempio di decodificatore a 3 ingressi:
0 0
1 0
Esempio: x1
x1x2x3 = 111 x2
x3

2n-1
1

- 41 -
ROM: piano AND e decodificatore degli indirizzi

 Schema logico del piano di AND che implementa l’Address Decoder


– Per semplicità si utilizza la rappresentazione che si riferisce al decoder.
Significato: ogni croce indica quali variabili sono coinvolte, il tipo di porta indica
schematicamente come tali variabili collegate tra loro.

a Ia
000
Ia’ 001
b Ib 010
a
Ib’
c b
Ic
c
Ic’

111

000 001 111


Address
m0 m1 m7 Decoder

- 42 -
ROM: schema logico

 Schema logico di una ROM:


– Esempio di una ROM a 3 ingressi e 4 uscite (non programmata).

ROM
000
001
010
x1 Piano
x2 OR
x3

111 Connessioni
Address Programmabili
Decoder

f1 f2 f3 f4
mintermini

- 43 -
ROM: Esempio

 Esempio:
– Prima forma canonica della funzione a più uscite:
f1 = a’b’c+a’bc+ab’c’+ab’c+abc’+abc
f2 = a’b’c+ab’c+abc
f3 = a’b’c+a’bc’+a’bc+ab’c’+ab’c+abc’
f4 = a’b’c’+a’b’c+a’bc+ab’c’+ab’c+abc’+abc
f5 = a’bc’+ab’c’+ab’c+abc’+abc
– Tabella della verità della funzione a più uscite:
abc f1 f2 f3 f4 f5
000 0 0 0 1 0
001 1 1 1 1 0
010 0 0 1 0 1
011 1 0 1 1 0
100 1 0 1 1 1
101 1 1 1 1 1
110 1 0 1 1 1
111 1 1 0 1 1

- 44 -
ROM: Esempio

 Esempio (cont.):
– Realizzazione della funzione a più uscite (aspetto logico):

000
001
010
a 011
b 100
c
101 Piano
110 OR
abc f1 f2 f3 f4 f5 111
000 0 0 0 1 0
001 1 1 1 1 0
010 0 0 1 0 1
011 1 0 1 1 0
100 1 0 1 1 1 f1 f2 f3 f4 f5
101 1 1 1 1 1
110 1 0 1 1 1
111 1 1 0 1 1
- 45 -
Programmable Logic Array (PLA)

 Un Array Logico Programmabile (Programmable Logic Array - PLA)


consente di implementare una somma di prodotti espressa in forma
minima a due livelli (somma di implicanti)
– Nota: l’estensione a forme non minime è naturale.

 In generale una PLA è definita da: numero di ingressi (n° variabili


delle funzioni), numero dei termini prodotto generabili, numero di
uscite (n° di funzioni realizzabili)

X1 f1
X2 Piano Piano f2
ingressi AND OR uscite
Xn programmabile programmabile fm

termini prodotto

- 46 -
Programmable Logic Array (PLA): schema logico

 Schema logico di una PLA


– Esempio di PLA a 3 ingressi, 2 uscite, 4 termini prodotto (non programmata):

a Ia PLA
Ia’
b Ib
Ib’ Connessioni
c Piano Programmabili
Ic
AND
Ic’

P1 P2 P3 P4
Piano f1
OR
f2

- 47 -
PLA: Esempio 1

 Esempio 1: Formato PLA:


11- 10
– Realizzazione delle funzioni:
1-0 10
f1 = ab +ac’+a’b’c 001 10
f2 = ab +ac +a’b’c 11- 01
• Prodotti: 1-1 01
P1 = ab
001 01
P2 = ac
P3 = ac’
P4 = a’b’c
• Somme:
f1 = P1 + P3 + P4
f2 = P1 + P2 + P4

- 48 -
PLA: Esempio 1

 Esempio 1 (cont.): (PLA programmata per le funzioni f1 ed f2)


a Ia PLA
Ia’
b
Formato PLA: Ib

11- 10 Ib’
c Piano
1-0 10 Ic
AND
001 10 Ic’
11- 01
1-1 01
001 01
P1 P2 P3 P4

f1

Piano f2
OR

- 49 -
PLA: Esempio 2

 Esempio 2:
Prima forma canonica della funzione a più uscite:
f1 = a’b’c+a’bc+ab’c’+ab’c+abc’+abc
f2 = a’b’c+ab’c+abc
f3 = a’b’c+a’bc’+a’bc+ab’c’+ab’c+abc’ Formato PLA:
f4 = a’b’c’+a’b’c+a’bc+ab’c’+ab’c+abc’+abc 1-- 10000
-11 10000
f5 = a’bc’+ab’c’+ab’c+abc’+abc -00 10000
1-1 01000
10- 00100
Funzione a più uscite ottimizzata (espressioni logiche): 0-1 00100
f1 = a+bc+b’c’ 1-0 00100
f2 = ac -10 00100
1-- 00010
f3 = ab’+a’c+ac’+bc’ -0- 00010
f4 = a+b’+bc -11 00010
1-- 00001
f5 = a+bc’ -10 00001

- 50 -
PLA: Esempio 2

 Esempio (cont.):
a PLA
Formato PLA: b
1-- 10000
c
-11 10000
-00 10000
Piano
1-1 01000
10- 00100 AND
0-1 00100
1-0 00100 f1
-10 00100 Piano
f2
1-- 00010 OR
-0- 00010 f3
-11 00010
1-- 00001 f4
-10 00001
f5
13 termini prodotto
di cui 9 diversi

- 51 -
Programmable Array Logic (PAL)

 Un Array Programmabile Logico (PAL) consente di implementare una


somma di prodotti espressa in forma minima a due livelli (somma di
implicanti)
– PLA e PAL coprono lo stesso spazio d’applicazione.

 In generale una PAL è definita da: numero di ingressi (n° variabili delle
funzioni), numero dei termini prodotto generabili, numero di uscite
(n° di funzioni realizzabili)
• Il piano OR fissato nasce da un trade-off tra il n° di ingressi per OR e il n° di OR

X1 f1
X2 Piano Piano f2
ingressi AND OR uscite

Xn programmabile fissato fm

termini prodotto

- 52 -
PAL: schema logico

 Schema logico di una PAL


– Esempio di PAL a 3 ingressi, 4 termini prodotto, 2 uscite (non programmata):

a Ia PAL
I!a
b Ib
I!b Connessioni
c Piano Programmabili
Ic
AND
I!c

P1 P2 P3 P4 Connessioni
Fisse
Piano f1
OR
f2

- 53 -
PLA e PAL

 Nelle PLA, le uscite possono condividere termini prodotto


 Nelle PAL, le uscite non possono condividere termini
prodotto e inoltre il numero di ingressi alle porte OR è fissato
– Il piano OR fissato può implicare comunque una realizzazione
multilivello

 A pari funzionalità da implementare, in caso di possibilità di


condivisione di termini prodotto, la sezione AND di una PAL
deve essere più grande (termini prodotto replicati) di quella
di una PLA
 Le PLA sono più lente delle PAL a causa della
programmabilità della sezione OR: le connessioni fuse-based,
o comunque programmate, presentano una resistenza
maggiore rispetto a quelle cablate
- 54 -
PAL: Esempio 1 di PLA realizzato con PAL

 Realizzazione tramite una PAL (a 3 ingressi, 6 termini prodotto, OR a 3


ingressi e 2 uscite) delle funzioni:
f1 = ab +ac’+a’b’c
f2 = ab +ac +a’b’c
• Prodotti: Formato PAL:
P1 = ab
11- 10
P2 = ac’
1-0 10
P3 = a’b’c
P4 = ab
001 10
P5 = ac 11- 01
P6 = a’b’c 1-1 01
• Somme: 001 01
f1 = P1 + P2 + P3
f2 = P4 + P5 + P6

E se fossero disponibili solo OR a 2 ingressi, e 4 uscite? Realizzazione multi livello

- 55 -
PAL: Esempio 1

 Esempio 1 (cont.): (PAL programmata per le funzioni f1 ed f2)


a Ia PAL
Ia’
b
Formato PAL: Ib

11- 10 Ib’
c Piano
1-0 10 Ic
AND
001 10 Ic’
11- 01
1-1 01
001 01
P1 P2 P3 P4 P5 P6

f2

Piano f1
OR

- 56 -
PLA e PAL Avanzate

 Lo schema base mostrato consente di realizzare solo


reti combinatorie a due livelli

 Questo limite è superato:


 Introducendo delle linee di retroazione
• Permette di implementare reti combinatorie multi livello a più
uscite
 Introducendo elementi di memoria (bistabili)
• Permette di implementare macchine sequenziali sincrone in cui la
parte combinatoria è costituita da una rete multi livello a più
uscite

- 57 -
PLA avanzate: rete multi livello - esempio

 Esempio di implementazione tramite PLA di una rete


combinatoria multi livello a più uscite.
A v2 = !C + !A;
B Y = !v1 + !v2; Y
C V1 = !v3 + !B;
v3 = !D + !C; Z = !v4 + !v1; Z
D v4 = !E + !v3;

A v3 = !D + !C;
B v1 = !v3 + !B;
C v4 = !E + !v3;
D v2 = !C + !A;
E Y = !v1 + !v2; Y

Z = !v4 + !v1; Z

- 58 -
PLA: rete multi livello - esempio

 Esempio di implementazione di una rete combinatoria multi livello


a più uscite.
A v2 = !C + !A;
B Y = !v1 + !v2; Y
C v1 = !v3 + !B;
v3 = !D + !C; Z = !v4 + !v1; Z
D v4 = !E + !v3;

Funzioni da realizzare (piano OR) Termini prodotto da realizzare (piano AND)


v1 = !v3 + !B p1 = !A p6 = !v1
v2 = !C + !A p2 = !B p7 = !v2
v3 = !D + !C p3 = !C p8 = !v3
v4 = !E + !v3 p4 = !D p9 = !v4
Y = !v1 + !v2 uscita p5 = !E
Z = !v4 + !v1 uscita

- 59 -
PLA: rete multi livello - esempio
Piano AND
 Esempio (cont): Diretto e con Retroazione PLA

C
A v3 = !D + !C;
D
B V1 = !v3 + !B;
E
C v4 = !E + !v3;
p1 p2 p3 p4 p5 p9 p6 p8 p7
D v2 = !C + !A;
V2

E Y = !v1 + !v2; Y V3

V1
Z = !v4 + !v1; Z
V4

Y
Z

Piano OR

- 60 -