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
B1
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