CALCOLATORI ELETTRONICI
A cura di Luca Orrù
Lezione n.3
I moduli combinatori e sequenziali
1
CALCOLATORI ELETTRONICI
A cura di Luca Orrù
Sommario:
• Register Transfer Level (RTL)
• I moduli base RTL
In questa lezione verranno presentate le caratteristiche del livello RTL e i moduli
primitivi utilizzati. Questi moduli corrispondono ad elementi fisici che sono usati sia
nel caso della progettazione discreta sia in quella VLSI.
Livello RTL
I Moduli combinatori
(l’uscita dipende solo dagli ingressi presenti ai moduli stessi)
Modulo
Funzioni eseguite
Porte generalizzate Operazioni booleane su parole e non su singoli bit
Multiplexer
Instradamento dei dati. Un Mux consente di instradare i dati in
base alle varie situazioni che si presentano (valore degli ingressi
di selezione)
Codificatori e
Verifica e conversione di codici
decodificatori
Matrici logiche
Consentono di costruire funzioni booleane complesse anche a
più uscite
Moduli aritmetici
Operazioni numeriche (sommatori, ALU, comparatori)
Oltre ai moduli combinatori esistono anche i moduli sequenziali, in cui l’uscita
dipende non solo dall’ingresso in quel momento applicato, ma anche dagli stati
interni memorizzati nei flip flop (elementi base dei registri).
Moduli sequenziali
Modulo
Registro a
scorrimento
Contatori
Funzione eseguita
Conversione serie-parallelo e parallelo-serie; è un elemento di
memorizzazione
Controllo e generazione di temporizzazioni
Si farà ora una descrizione di ciascun modulo.
Poiché questi moduli ( sequenziali e combinatori) devono essere interconnessi tra
loro si vedranno anche le strutture d’interconnessione.
2
CALCOLATORI ELETTRONICI
A cura di Luca Orrù
Porte generalizzate
Sono dei moduli combinatori per svolgere operazioni (funzioni booleane) su parole.
Esempio:
Supponiamo di avere un’operazione booleana di NAND tra due variabili X e Y, cioè
Z = X •Y
operazione di Nand . Nel caso di porta generalizzata, X e Y non sono
delle variabili booleane ma sono dei vettori.
Quindi X e Y avranno ciascuno m componenti.
X=(x1,x2,x3,-----xm)
Y=(y1,y2,y3,-----ym)
X1
Y1
X2
Y2
Xm
Ym
X
Y
m
m
m
Z1
Z2
Zm
X,Y,Z sono vettori a
m componenti
Z
Schema 2
Schema 1
invece di considerare lo schema 1 si può considerare direttamente lo schema 2
semplificato.
Così come per le porte logiche semplici, anche nelle porte logiche generalizzate si
possono svolgere operazioni con scalari. In tal caso ogni componente vettoriale sarà
interessata all’operazione.
Esempio
y + X = ( y + x1, y + x 2,...... y + xm )
il + indica un’operazione di or tra lo scalare y e il vettore X di componenti
x1,x2,…xm.
y è una variabile booleana, quindi può assumere solo i valori 0 o 1.
3
CALCOLATORI ELETTRONICI
A cura di Luca Orrù
Multiplexer
• Elemento combinatorio che seleziona uno fra più dati d’ingresso e li invia
verso una destinazione comune
• I dati d’ingresso sono vettori di bit
m
Ingressi di
selezione
Abilitazione
enable
Abilita il Mux
a trasferire
l’informazione
X1
Xn
Multiplexer
(MUX)
Mux a ningressi di m
bit
m
Z
Vettore di m
bit in uscita
X1, X2, Xn
sono i vettori
d’ingresso di m
bit
Solo uno degli n vettori d’ingresso sarà presente in uscita, cioè sarà selezionato.
La selezione avviene attraverso opportuni ingressi di selezione. Per poter selezionare
tutti gli n vettori d’ingresso occorre un numero di selettori p dato dalla seguente
espressione:
numero Ingressi = 2^p
Per n ingressi sarà n=2^p e quindi il numero p di selettori è dato da
P=log2 n
Vediamo ora un esempio di espansione a livello logico di un Multiplexer a 2 ingressi
di 4 bit. L’esercizio consiste nel fare una rappresentazione logica tramite gli elementi
primitivi che sono le porte logiche.
4
CALCOLATORI ELETTRONICI
A cura di Luca Orrù
X0
X1
4
4
So
En
Xo=(X00,X01,X02,X03)
X1=(X10,X11,X12,X13)
Z=(Z0,Z1,Z2,Z3)
MUX
4
Z
C’è un bit di selezione (So) e ci sono due vettori d’ingresso X0 e X1 a 4 bit.
Se il select So=0 viene selezionato il vettore X0, mentre se il select So=1 viene
selezionato il vettore X1. In uscita sarà presente in base al select, uno dei due vettori
d’ingresso (X0 oppure X1).
L’uscita Z assume quindi la seguente espressione logica
Z = select ⋅ X 0 + select ⋅ X 1
X00
X10
X01
X11
X02
X12
X03
X13
Select
Enable=1
Z0
Z1
Z2
Z3
Ricaviamo per esempio l’uscita Z0. Supponiamo naturalmente che l’enable valga 1
cioè Mux abilitato. Allora si ottiene la seguente espressione logica:
Z 0 = select ⋅ X 00 + select ⋅ X 10
5
CALCOLATORI ELETTRONICI
A cura di Luca Orrù
Uso dei MUX
• Con soli Mux è possibile realizzare (implementare) una qualunque funzione
booleana di n variabili f(x1,x2,x3,….xn). Per realizzare la funzione booleana a
n variabili è necessario un Mux con
o 2^n ingressi da 1 bit
o n ingressi di selezione per la selezione codificata (n selettori)
• Agli ingressi del Mux sono posti i valori assunti dalla funzione per le varie
combinazioni delle variabili della funzione
• Le variabili della funzione sono poste agli ingressi di selezione
Esempio
E’ possibile realizzare K funzioni di 3 variabili con 7 multiplexer a 2 ingressi di K
bit.
Occorrono quindi 3 selettori (S0,S1,S2). Agli ingressi dei Mux sono posti i valori
assunti dalle funzioni per le varie combinazioni delle variabili della funzione.
X0
X1
X2
X4
X3
X5
X6
X7
K
S0
MUX
S1
MUX
MUX
MUX
MUX
MUX
S2
MUX
enable
2
Z
Supponiamo per semplicità di avere K=1 e quindi gli ingressi sono dei bit e non dei
vettori. Se S0=0 allora in uscita dal primo Mux si ha X0.
Se poi abbiamo anche S1=0 e S2=0 allora in uscita si ha Z=X0.
6
CALCOLATORI ELETTRONICI
A cura di Luca Orrù
Se vogliamo che per S0=0, S1=0 e S2=0 la funzione Z assuma il valore zero basta
porre X0=0 in ingresso al Mux. In funzione dei valori degli ingressi avremmo in
uscita il valore scelto.
Decodificatore (DEMUX)
Detto anche Decoder o demux è un circuito combinatorio che:
• Pone a 1 (attiva) una e solo 1 delle 2^n uscite
• La variabile è scelta in funzione del valore degli ingressi che sono in numero di
n
X0
Enable
X1
X2
Esempio con n=3
Numero uscite= 2^n=2^3=8
Decoder
Z0
Z7
Questo è il meccanismo con cui vengono identificate le celle di memoria a partire da
un indirizzo. Per esempio con 3 bit si selezionano 2^3=8 celle; con 10 bit si
selezionano 1024 celle di memoria.
Delle 2^n uscite sola un’uscita assume il valore 1, tutte le altre sono a zero.
Quella che assume il valore 1 dipende dagli ingressi.
Nell’esempio dei 3 bit, per X0=0,X1=0,X2=0 si ha Z0=1 e Zi=0 con i<>0.
Vediamo ora l’espansione a livello logico ( vale a dire rappresentazione tramite porte
logiche) di un Demux a 2 ingressi e 4 uscite.
Ingressi
X0 X1
0
0
0
1
1
0
1
1
Uscite
Z0 Z1
1 0
0 1
0 0
0 0
Z2
0
0
1
0
Z3
0
0
0
1
7
CALCOLATORI ELETTRONICI
A cura di Luca Orrù
In sintesi abbiamo
X0
0
0
1
1
X1
0
1
0
1
Z
Z0
Z1
Z2
Z3
In corrispondenza della combinazione d’ingresso X0=0 e X1=0 viene attivata l’uscita
Z0. Se X0=1 e X1=1 viene attivata l’uscita Z3.
L’espansione a livello logico di un decoder a 2 ingressi e 4 uscite è rappresentata nel
seguente schema
X0
X1
Enable
Z0
Z1
Z2
Z3
Matrici logiche o dispositivi logici programmabili (PLD)
Una matrice logica è un elemento (modulo primitivo) fondamentale a livello RTL.
Le matrici logiche sono circuiti combinatori a 2 livelli con struttura topologica
ordinata. Realizzano funzioni tipo somma di prodotti. Le matrici logiche di tipo PLA
sono usate per realizzare circuiti di controllo nei processori. Una struttura ordinata ha
dei vantaggi.
8
CALCOLATORI ELETTRONICI
A cura di Luca Orrù
Implicanti
PIANO
AND
Il piano OR realizza i
termini somme logiche
OR
PIANO
OR
Ingressi
Il piano AND realizza
i termini prodotti
logici AND
Uscite
Somme di prodotti logici
Es. Y
= x1 x 2 x3 + x1 x 2 x3
Il flusso informativo è il seguente: Ingressi inviati al piano degli AND e poi al piano
degli OR che fornisce il valore delle uscite.
Esempio a livello logico
Rappresenta la
connessione
programmata
A
B
C
Blocco che trasferisce
la variabile negata o la
variabile non negata
Ingressi
X
Y
Z
Uscite
Piano OR
9
CALCOLATORI ELETTRONICI
A cura di Luca Orrù
Nell’esempio rappresentato sopra le uscite X e Y valgono rispettivamente:
X = ABC
Y = A B C + A BC
Per realizzare funzioni diverse basta cambiare le interconnessioni e il numero di
elementi OR e AND. La struttura topologica resta la stessa.
Elementi aritmetici (Moduli aritmetici)
Sono gli elementi fondamentali della CPU per l’esecuzione dei calcoli, ossia gli
elementi che realizzano la ALU. Sono gli elementi combinatori più complessi.
Esempi:
Sommatore parallelo a 4 bit
X0
X3
Y0
Y3
Riporto in ingresso
Z=X+Y
Riporto in uscita
Z0
Z1
Z2
Z3
Esegue la somma
aritmetica di due
numeri in ingresso
a 4 bit (X e Y)
Comparatore
X0
Abilitazione
X3
Y0
Y3
Verifica che uno dei due
numeri in ingresso sia
maggiore, uguale o
minore dell’altro
numero
Comparatore
X>Y
X=Y
X<Y
Nel comparatore una sola delle tre uscite diventa 1, a seconda che sia X<Y, X>Y o
X=Y.
10
CALCOLATORI ELETTRONICI
A cura di Luca Orrù
Linguaggi di descrizione del Hardware
Per la descrizione del Hardware con schemi non vi sono tecniche formali
standardizzate. Si sono invece affermati linguaggi di descrizione del Hardware che
derivano da linguaggi di programmazione ad alto livello come ADA o C.
I linguaggi di descrizione più affermati sono:
• Verilog: ha origini industriali e deriva dal linguaggio C
• VHDL-VHSIC (Very High Speed Integrated Circuit): Hardware Description
Language; deriva da ADA ed è stato promosso dal DoD;
Questi linguaggi sono usati nella progettazione che utilizza tecniche automatiche
(CAD).
Esempio
Semisommatore
E’ un circuito che ha due ingressi X e Y, una uscita somma e una uscita riporto.
X
Y
Half Adder
(HA)
Somma
Riporto in uscita
(Cout)
La tabella di verità che descrive il suo funzionamento è la seguente:
Ingressi
Uscite
X Y Somma Riporto
0 0
0
0
0 1
1
0
1 0
1
0
1 1
0
1
Somma = X ⊕ Y
Riporto = X • Y
Facciamo l’esempio di come l’oggetto Half Adder possa essere descritto con un
semplice linguaggio.
11
CALCOLATORI ELETTRONICI
A cura di Luca Orrù
Entity is Half Adder
Port (x,y: in bit; somma, riporto: out bit)
end Half Adder
Architecture behaviour of half-adder is
Begin
{somma<=X xor Y
Riporto<=X and Y}
end behaviour
•
•
•
•
•
•
somma e riporto rappresentano il comportamento del Half Adder
x e y sono i bit in ingresso
somma e riporto sono i bit in uscita;
in=ingresso
out=uscita
entity è l’oggetto
Moduli sequenziali (Elementi di memoria)
I registri
Sono insiemi di Flip Flop in grado di trattare delle parole di molti bit (4,8,16,32,64
bit). Ogni Flip Flop può memorizzare un solo bit.
Riassumendo:
• elementi di memoria a livello RTL: i registri
• i registri sono costituiti da Flip Flop collegati per memorizzare e operare su
insieme di bit
X0
X1
X2
X3
D
D
D
D
CK
CK
CK
CK
Clear
CK
Z0
Z1
Z3
Z2
12
CALCOLATORI ELETTRONICI
A cura di Luca Orrù
• Il segnale di Clear porta a zero le uscite in modo asincrono rispetto al clock.
• I flip flop sono caratterizzati da un clock comune che consente la
lettura/scrittura dei dati nello stesso istante
• X0,X1,X2,X3 è il vettore d’ingresso
• Z0,Z1,Z2,Z3 sono le uscite
• I flip flop sono di tipo D e realizzano un registro con ingresso/uscita paralleli;
in pratica quando viene inviato un segnale di clock i dati presenti agli ingressi
dei Flip Flop vengono immagazzinati negli stessi flip flop e presentati alle
uscite
Registri a scorrimento a 4 bit
Ingresso seriale e uscita seriale
X
Clear
Registro a 4 bit
Clock
Z
X
D
D
D
D
CK
CK
CK
CK
Clear
CK
Uscita
In questo caso il registro serve per riportare in uscita il segnale d’ingresso facendo
scorrere il bit di una posizione alla volta. Quando viene attivato il clock, il dato
presente all’ingresso viene memorizzato nel primo FF e il dato precedentemente
13
CALCOLATORI ELETTRONICI
A cura di Luca Orrù
memorizzato nel primo FF passa al secondo FF e cosi via fino all’ultimo FF dalla
quale si preleva l’uscita (singolo bit).
Dopo un numero di colpi di clock pari al numero di FF che formano il registro, i dati
sono memorizzati nel registro. Per memorizzare 4 bit occorrono quindi 4 colpi di
clock. I flip flop sono connessi in modo che i bit possano trasferirsi ordinatamente da
un elemento a quello adiacente. Il trasferimento avviene ad ogni colpo di clock.
Registro generalizzato
Registro che consente le seguenti funzioni:
• Ingresso parallelo
• Ingresso seriale
• Uscita parallela
• Uscita seriale
• Abilitazione scorrimento
• Scorrimento a destra e sinistra
Ingresso sinistro
Dati in ingresso
con shift a destra
Ingresso parallelo
Ingresso destro
Dati in ingresso
con shift a sinistra
Caricatore parallelo
Scorrimento a sinistra
Abilitazione scorrimento
Registro a
scorrimento
generalizzato a 4 bit
Clear
Uscita sinistra
Dati in uscita con
shift a sinistra
Uscita parallela
Uscita destra
Dati in uscita con
shift a destra
I dati possono scorrere da sinistra a destra o da destra a sinistra. Inoltre il registro può
accettare i dati sia in serie che in parallelo.
14
CALCOLATORI ELETTRONICI
A cura di Luca Orrù
Contatori
I contatori sono moduli sequenziali che hanno come solo ingresso il segnale di clock.
Permettono di realizzare funzioni di conteggio, ma sono anche usati per generare
segnali di controllo. Nell’esempio seguente gli ingressi T di tutti i flip flop devono
essere posti allo stato logico 1 perché in questo stato i flip flop T commutano ad ogni
colpo di clock ed è quello che deve avvenire per poter incrementare di 1 il conteggio
ad ogni colpo di clock. La configurazione dei flip flop deve essere di tipo Master
Slave in modo da avere commutazione degli stati durante i fronti di discesa del clock.
1
P
Count
P
P
P
T
T
T
T
CK
CK
CK
CK
Clear
Ingresso
principale
X0
X1
X3
X2
• P è l’ingresso di preset che porta ad 1 le singole uscite.
• Il clear effettua un azzeramento dei FF, ponendo a zero tutte le uscite. Da
inizio al conteggio
• Questo è un circuito asincrono dove il segnale di clock va al primo FF e non a
tutti i FF direttamente, e si propaga agli altri FF tramite l’uscita del FF dello
stadio precedente.
• Il FF di tipo T quando T=1 commuta il valore dello stato precedente ad ogni
colpo di clock. Si ricorda brevemente il funzionamento di un FF T
FF T
Clock T
1
0
1
1
0
X
Qt+1
Qt
Qt
Qt
15
CALCOLATORI ELETTRONICI
A cura di Luca Orrù
Qt+1 è l’uscita all’istante t+1, mentre Qt è l’uscita all’istante t
Funzionamento:
• quando il clock=1 l’uscita Qt+1 vale Qt se T=0 e vale Qt se T=1;
• quando il clock=0 l’uscita Qt+1 è pari al valore dell’uscita all’istante precedente
indipendentemente dal valore dell’ingresso.
Diagramma temporale di un contatore modulo 4 (conta fino a 4).
clock
1
X0
0
1
0
0
1 1
X1
0
0
0
l’uscita X0 agisce da clock per l’uscita X1. Al quinto colpo di clock il conteggio
riprende da zero. Si noti come la commutazione delle uscite avvenga durante il fronte
di discesa del clock; in caso contrario, cioè se la commutazione avvenisse durante il
fronte di salite del clock, il conteggio sarebbe errato. Si può infatti verificare come
già al primo colpo di clock la configurazione delle uscite passa da 00 a 11.
X0
0
0
1
1
X1
0
1
0
1
conteggio
0
1
2
3
Questi sono solo alcuni moduli per la descrizione dei sistemi a livello RTL.
16
Scarica

lezione n.3 i moduli combinatori e sequenziali