ALU (Arithmetic Logic Unit)
Esempio di ALU minima:
T è il
trabocco (o
overflow)
c1,c0 linee di selezione
R è il riporto
Rin il riporto in entrata
Trabocco
In complemento a 2 i bit hanno il peso usuale, eccetto il
MSB (bit più significativo) che ha peso usuale ma positivo se uguale a 0, negativo se uguale a 1. Ad esempio 1011 in compl. a 2 è uguale a -5 in decimale (il MSB vale -8).
La somma (intesa come algebrica, dunque somma o differenza) tra due numeri in compl. a 2 dà problemi in due casi:
- somma di due negativi che danno risultato positivo
- somma di due positivi che danno risutato negativo
Sono i due casi in cui c'è
trabocco.
In una
ALU per segnalare queste situazioni si usa un semplice circuito combinatorio:
nel circuito sopra, le due condizioni sono in
OR, se se ne verifica una viene segnalato.
Ora vediamo a cosa servono i controlli entranti nella nostra "ALU minima".
c0 è il segnale che ci dice se dobbiamo fare addizione o sottrazione. Potremo avere ad esempio l'addizione con c0=0 e la sottrazione con c0=1.
c1 segnala che l'operando a cui è collegato è uguale a 0.
Vediamo la tabella per il nostro schema di ALU
c1c0Rin |
Risultato |
Operazione |
0 0 0 |
S=0+B=B |
selezione di B |
0 0 1 |
S=0+B+1 |
incremento di B |
0 1 0 |
S=0+ ¬B=¬B |
complemento di B |
0 1 1 |
S=0+ ¬B-1=-B |
opposto di B |
1 0 0 |
S=A+B |
somma |
1 0 1 |
S=A+B+1 |
non usato |
1 1 0 |
S=a+ ¬B=A-B-1 |
non usato |
1 1 1 |
S=A+ ¬B+1=A-B |
sottrazione |
questa ALU fa somma, sottrazione, incremento, opposto, selezione (far passare una stringa senza alterarla).
Selezione opposto e incremento sono operazioni "unarie" (su un solo operando).
Somma e sottazione sono operazioni "binarie" (su due operandi).
Somma, sottrazione, incremento e opposto sono operazioni aritmetiche.
Complemento e selezione sono operazioni logiche.
Per le operazioni in virgola mobile serve una ALU apposita.
Richiami di *Moduli Sequenziali
In un circuito sequenziale l'uscita è funzione del tempo oltre che dell'entrata. Occorre dunque un dispositvo di memorizzazione, in grado cioè di "ricordare" l'informazione. Tale dispositivo è il
Flip Flop (anche abbreviato come FF). Esistono vari tipi di FF, quello nell'esempio è il JK:
Il FF ha i valori in entrata J e K più un segnale di
clock, e in uscita Q e Q negato. Di seguito la tabella del FF di tipo JK:
JK |
Q(t+1) |
|
00 |
Q(t) |
memorizzaz. |
01 |
0 |
scrittura |
10 |
1 |
scrittura |
11 |
¬Q(t) |
negazione |
I FF possono essere utilizzati per realizzare
contatori.
I contatori possono essere
asincroni o
sincroni
- Asincroni: non tutti i FF sono cadenzati dal clock. Solo il primo è sensibile al clock
è un contatore mod. 8
- Sincroni: hanno tutti i FF collegati allo stesso clock.
FF2 ha una porta AND perchè commuta solo quando tutti gli altri sono a 1.
Con 2 FF possiamo contare fino a 2^n; Ad esempio con 3 FF possiamo contare fino a 8; se però vogliamo contare fino a 5, bisogna far sì che appena arrivati a 5 si torni a 0. Si usa allora l'entrata sincrona
clear.
Nella porta AND va collegata l'ultima configurazione accettata.
L'altra entrata sincrona,
set, serve invece a realizzare
contatori preselezionabili (utili ad esempio eseguire i salti nei programmi).
Uso dei contatori:
- contatore di eventi
- selezione di celle di memoria sequenzialmente
Registri di Memorizzazione
Sono dispositivi sui quali posso caricare e dai quali posso prelevare l'informazione.
Registri a scorrimento
Consentono:
- lettura e scrittura seriale
- operazioni logiche e aritmetiche
lo scorrimento è eventualmente ad anello.
Contatori preselezionabili
Sono dispositivi parallelo-seriale-parellelo
--
StefanoPalma - 28 Mar 2002