Circuite aritmetice elementare

Download Report

Transcript Circuite aritmetice elementare

Circuite aritmetice elementare

Sumator





Multiplicator




Intregi fara semn
Intregi cu semn
Evitarea depasirii
Sumatoare rapide
Multiplicator cu arbore binar
Multiplicator secvential
Multiplicator pipe-line
Divizor
1
Circuite aritmetice elementare

Sumatorul
Celula elementara de sumare cu 2 intrari foloseste
structura de logica si structura de transport a unui Slice
(vezi curs2).
Ci
1
Co
0
A
W
B
Rez
Ci
B
A
W Rez Co
0
0
0
0
1
1
1
1
0
0
1
1
0
0
1
1
0
1
0
1
0
1
0
1
0
1
1
0
0
1
1
0
0
1
1
0
1
0
0
1
0
0
0
1
0
1
1
1
2
Circuite aritmetice elementare

Sumatorul

Intregi fara semn: in binar intregii pozitivi se aduna bit
cu bit incepand de la cel mai putin semnificativ.
Exemplu: sumator pe 4 biti
A3
B3
A2
B2
A
B
A
B
Co
Ci
Co
Ci
A1
B1
A0
B0
A
B
A
B
Co
Ci
Co
Ci
Rez
Rez
Rez
Rez
Rez3
Rez2
Rez1
Rez0
0
3
Circuite aritmetice elementare

Intregi cu semn in c2: sumarea se face ca la intregii
fara semn, bitul cel mai semnificativ reprezentand de
aceasta data semnul.
Exemplu: adunarea a 2 intregi fara semn pe 4 biti,
respectiv a 2 intregi cu semn pe 4 biti.
5+10=15
5+(-6)=-1
0101
0101
1010
1010
1111
1111
4
Circuite aritmetice elementare

Evitarea depasirii:



2 intregi fara semn pe B biti => depasire daca
B1
rezultatul corect este mai mare decat 2
2 intregilor cu semn in c2 reprezentati pe B+1 =>
depasire daca rezultatul real nu este in intervalul
2B : 2B 1 (vezi curs3)
depasirea poate aparea numai daca cei 2 operanzi
au acelasi semn si se manifesta prin schimbarea
semnului rezultatului
5
Circuite aritmetice elementare

Folosirea bitilor de garda:
X(B)
X(B)
X(B-1)
X(1)
X(0)
Y(B)
Y(B)
Y(B-1)
Y(1)
Y(0)
Z(B)
Z(B)
Z(B-1)
Z(1)
Z(0)
+
Z(B)
1
0
X(B)
6
Circuite aritmetice elementare
Exemplu: suma a 2 intregi cu semn in c2 pe 4 biti. Se
repeta bitul de semn, se claculeaza suma pe 5 biti si
se alege rezultatul fara depasire.
6+3=9>7
depasire
-6+(-3)=-9<-8
depasire
2+3=5<7
corect
00110
00011
11010
11101
00010
00011
01001
10111
00101
0100
1011
0101
rez=4
rez=-5
rez=5
7
Circuite aritmetice elementare

Saturare: daca se constata depasirea, se alege ca
rezultat una dintre limitele intervalului de reprezentare,
in functie de semnul operanzilor.
Exemplu: suma a 2 intregi cu semn in c2 pe 4 biti.
6+3=9>7
depasire
-6+(-3)=-9<-8
depasire
0110
0011
1010
1101
1001
0111
0111
1000
rez=7
rez=-8
8
Circuite aritmetice elementare

Sumatoare rapide


Fan-out mare
Calculeaza simultan bitii de transport
A(7) B(7)
A
B
Co Rez
Rf(7)
A(6) B(6)
A
B
Co Rez
.
.
.
A(5) B(5)
A
B
Co Rez
.
Rf(6)
A(4) B(4)
A
B
Co Rez
.
A(3) B(3)
A
B
Co Rez
A(2) B(2)
A
B
Co Rez
.
. .
A(1) B(1)
A
A(0) B(0)
B
A
Co Rez
.
B
Co Rez
. .
Rf(5)
Rf(4)
Rf(3)
Rf(2)
Rf(1)
Rf(0)
9
Circuite aritmetice elementare

Exemplu: suma a 2 intregi fara
semn pe 4 biti.
0
0
0
1
1
0
1
1
A
B
A
B
A
B
A
B
Co Rez
.
Co Rez
3+5=8
0
Co Rez
0
0
0011 +
0101
---------------1000
1
.
. .
0
1
0
Co Rez
1
1
0
1
1
1
0
0
0
10
Circuite aritmetice elementare

Multiplicator

Multiplicatorul cu arbore binar
AB  A  b3 23  b2 22  b1 21  b0 20 
AB   Ab3 21  Ab2  22   Ab1 21  Ab0 
11
Circuite aritmetice elementare

Multiplicatorul secvential
AB 
 0  b
N 1
A  2  bN 2 A  2 
2  b A
0
12
Circuite aritmetice elementare

Multiplicatorul pipe-line
Furnizeaza rezultatele pe ceas, dupa o latenta de
procesare de N2 tacte
13
Circuite aritmetice elementare

Divizorul

Reg2_1=LO=Deimpartitul
Reg2_2=HI=zerouri
Reg1=Impartitorul
Poate fi realizat doar cu
registre de deplasare si
sumatoare
Reg2 <- 1/0
K=1
NU
DA
Var=HI-Reg1 <0
HI=Var
Reg2 <- 1/1
k=k+1
HI=HI
Reg2 <- 1/0
k=k+1
DA
NU
K>8
HI -> 1
Rest = HI
Catul=LO
14
Circuite aritmetice elementare
Exemplu: 101 impartit la 7
Impartitor Deimpartit
Reg1
Reg2 = [Reg2_1 Reg2_2]
Hi
Lo
0000 0111 0000 0000 0110 0101
0000 0000 1100 1010
0000 0001 1001 0100
0000 0011 0010 1000
0000 0110 0101 0000
0000 1100 1010 0000
-0000 0111
--------------------0000 0101 1010 0000
0000 1011 0100 0001
-0000 0111
--------------------0000 0100 0100 0001
0000 1000 1000 0011
-0000 0111
--------------------0000 0001 1000 0011
0000 0011 0000 0111
0000 0110 0000 1110
0000 0011 0000 1110
Rest = 3 Cat = 14
Incarcare registre
Pas 0: <-- Shift 0
Pas 1: Scadere/Reincarcare Shift 0
Pas 2: Scadere/Reincarcare Shift 0
Pas 3: Scadere/Reincarcare Shift 0
Pas 4: Scadere/Reincarcare Shift 0
Pas 5: Scadere/Pastrare rezultat
Apoi <-- Shift 1
Pas 6: Scadere/Pastrare rezultat
Apoi <-- Shift 1
Pas 7: Scadere/Pastrare rezultat
Apoi <-- Shift 1
Pas 8: Scadere/Reincarcare Shift 0
Pas final: --> Shift HI
15