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

Topic attachments
I Attachment History Action Size Date WhoSorted ascending Comment
GIFgif alu_minima.gif r1 manage 3.0 K 2002-03-28 - 16:24 StefanoPalma  
GIFgif automa_cont.gif r1 manage 4.3 K 2002-03-28 - 23:47 StefanoPalma  
GIFgif clear.gif r1 manage 2.2 K 2002-03-28 - 23:55 StefanoPalma  
GIFgif cont_asinc.gif r1 manage 3.0 K 2002-03-28 - 23:47 StefanoPalma  
GIFgif cont_pres.gif r1 manage 3.1 K 2002-03-28 - 23:48 StefanoPalma  
GIFgif cont_sinc.gif r1 manage 3.2 K 2002-03-28 - 23:48 StefanoPalma  
GIFgif ffjk.gif r1 manage 1.1 K 2002-03-28 - 23:48 StefanoPalma  
GIFgif memoria.gif r1 manage 3.1 K 2002-03-28 - 23:49 StefanoPalma  
GIFgif overf.gif r1 manage 2.2 K 2002-03-28 - 16:25 StefanoPalma  
GIFgif reg_scor.gif r1 manage 2.0 K 2002-03-28 - 23:49 StefanoPalma  
GIFgif register.gif r1 manage 2.8 K 2002-03-28 - 23:50 StefanoPalma  
GIFgif schema_alu.gif r1 manage 3.2 K 2002-03-28 - 16:23 StefanoPalma  
Edit | Attach | Watch | Print version | History: r3 < r2 < r1 | Backlinks | Raw View | Raw edit | More topic actions
Topic revision: r3 - 2002-04-02 - GiuseppeMacario






 
Questo sito usa cookies, usandolo ne accettate la presenza. (CookiePolicy)
Torna al Dipartimento di Informatica
This site is powered by the TWiki collaboration platform Powered by PerlCopyright © 2008-2024 by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding TWiki? Send feedback