Dan NICULA
ELECTRONIC
˘
A DIGITAL
˘
A
Carte de ˆınat¸˘atur˘a 2.0
Editura Universit˘at¸ii TRANSILVANIA din Bra¸sov
ISBN 978-606-19-0563-8
2015
Lect¸ia 10
Circuite aritmetice
10.1 Not¸iuni teoretice
Circuitele logice combinat¸ionale implementeaz˘a funct¸ii logice.
ˆ
Ins˘a funct¸iile logice pot interpretate ca funct¸ii arit-
metice aplicate asupra unor date binare ce codific˘a valori numerice.
Semi-sumatorul de 1 bit este un circuit logic combinat¸ional cu dou˘a intr˘ari ¸si dou˘a ie¸siri ce poate considerat ca
aand funct¸ia aritmetic˘a de a aduna 2 bit¸i (operanzii) ¸si a genera rezultatul pe un bit (S) ¸si transportul la bitul de
ordin superior (C
O
). Simbolul bloc ¸si tabelul de adev˘ar ale semi-sumatorului de 1 bit sunt prezentate ˆın figura 10.1.
Intr˘ari Ie¸siri
A B C
O
S
0 0 0 0
0 1 0 1
1 0 0 1
1 1 1 0
Figura 10.1 Circuitul semi-sumator de 1 bit: tabelul de adev˘ar ¸si simbolul bloc.
Sumatorul complet de 1 bit este un circuit logic combinat¸ional cu trei intr˘ari ¸si dou˘a ie¸siri ce poate considerat ca
aand funct¸ia aritmetic˘a de a aduna 2 bit¸i (operanzii) plus transportul de la bitul inferior (C
I
) ¸si a genera rezultatul
pe un bit (S) ¸si transportul la bitul de ordin superior (C
O
). Simbolul bloc ¸si tabelul de adev˘ar ale sumatorului complet
de 1 bit sunt prezentate ˆın figura 10.2.
Intr˘ari Ie¸siri
A B C
I
C
O
S
0 0 0 0 0
0 0 1 0 1
0 1 0 0 1
0 1 1 1 0
1 0 0 0 1
1 0 1 1 0
1 1 0 1 0
1 1 1 1 1
Figura 10.2 Circuitul sumator complet de 1 bit: tabelul de adev˘ar ¸si simbolul bloc.
Valorile numerice sunt codate ˆın binar, pe unul sau mai mult¸i bit¸i. Aceast˘a lect¸ie introduce not¸iunile asociate
operat¸iilor aritmetice de adunare, sc˘adere ¸si comparare cu operatori numere ˆıntregi. Numerele ˆıntregi pozitive sunt
codate ˆın binar. Numerele ˆıntregi negative sunt codate ˆın complement fat¸˘a de 2.
134 LECT¸ IA 10. Circuite aritmetice
10.2 Pentru cei ce vor doar a promoveze examenul
1. Implementat¸i cu port¸i logice un circuitul semi-sumator de un bit.
Solut¸ie
Circuitul semi-sumator de 1 bit are dou˘a intr˘ari asociate celor 2 bit¸i de date A, B ¸si genereaz˘a dou˘a ie¸siri:
suma S ¸si transportul de ie¸sire C
O
. Tabelul de adev˘ar asociat semi-sumatorului de 1 bit ¸si structura celulei
semi-sumator sunt prezentate ˆın figura 10.3.
Intr˘ari Ie¸siri
A B C
O
S
0 0 0 0
0 1 0 1
1 0 0 1
1 1 1 0
Figura 10.3 Celula semi-sumator de 1 bit: tabelul de adev˘ar ¸si structura.
Funct¸iile ie¸sirilor sunt:
S = A B
C
O
= A · B
2. Implementat¸i cu port¸i logice circuitul sumator complet de un bit.
Solut¸ie
Circuitul sumator complet de 1 bit are trei intr˘ari asociate celor 2 bit¸i de date A, B ¸si transportului de intrare
C
I
. Celula genereaz˘a dou˘a ie¸siri: suma S ¸si transportul de ie¸sire C
O
. Tabelul de adev˘ar asociat sumatorului de
1 bit ¸si structura acestuia sunt prezentate ˆın figura 10.4.
Intr˘ari Ie¸siri
A B C
I
C
O
S
0 0 0 0 0
0 0 1 0 1
0 1 0 0 1
0 1 1 1 0
1 0 0 0 1
1 0 1 1 0
1 1 0 1 0
1 1 1 1 1
Figura 10.4 Celula sumator de 1 bit: tabelul de adev˘ar ¸si structura.
Funct¸iile ie¸sirilor sunt:
S = A B C
I
C
O
= A · B + A · C
I
+ B · C
I
3. Implementat¸i un sumator complet de un bit cu un circuit decodificator de 3 bit¸i.
Solut¸ie
Funct¸iile de transfer ale sumatorului complet de 1 bit sunt:
S = A B C
in
=
(1, 2, 4, 7)
C
out
= A · B + A · C
in
+ B · C
in
=
(3, 5, 6, 7)
Implementarea, prezentat˘a ˆın figura 10.5, utilizeaz˘a un decodificator pentru generarea tuturor mintermilor ¸si
ate o poart˘a OR pentru fiecare funct¸ie de ie¸sire.
10.2. Pentru cei ce vor doar a promoveze examenul 135
Figura 10.5 Sumator complet de 1 bit implementat cu decodificator.
4. Proiectat¸i un sumator complet de 1 bit utilizˆand multiplexoare 4:1.
Solut¸ie
Tabelul de adev˘ar al sumatorului complet de 1 bit este:
A B C
i
C
o
S
0 0 0 0 0
0 0 1 0 1
0 1 0 0 1
0 1 1 1 0
1 0 0 0 1
1 0 1 1 0
1 1 0 1 0
1 1 1 1 1
Pe baza tabelului de adev˘ar rezult˘a expresiile funct¸iilor:
S(A, B, C
i
) = m
0
· C
i
+ m
1
· C
i
+ m
2
· C
i
+ m
3
· C
i
C
o
(A, B, C
i
) = m
0
· 0 + m
1
· C
i
+ m
2
· C
i
+ m
3
· 1, unde m
i
(A, B).
Rezult˘a implementarea cu MUX 4:1 prezentat˘a ˆın figura 10.6.
Figura 10.6 Sumator complet de 1 bit implementat cu multiplexor 4:1.
136 LECT¸ IA 10. Circuite aritmetice
10.3 Pentru cei ce vor a ˆınvet¸e
1. Proiectat¸i cu port¸i logice un circuit care converte¸ste un num˘ar de 4 bit¸i ˆın num˘arul negat (reprezentat ˆın
complement fat¸˘a de 2).
Solut¸ie
Complementul fat¸˘a de 2 al unui num˘ar binar se poate afla prin negarea bit cu bit a num˘arului respectiv ¸si
adunarea cu 1. Operat¸ia se poate implementa cu ajutorul a 4 inversoare ¸si a 4 semi-sumatoare, ca ˆın figura
10.7-a.
Circuitul se poate optimiza dac˘a se observ˘a a:
- semi-sumatorul cel mai put¸in semnificativ are transport init¸ial tot timpul 1. Ca efect, circuitul se poate
simplifica:
O
0
= A
0
1 = A
0
¸si C
0
= A
0
· 1 = A
0
- semi-sumatorul cel mai semnificativ nu trebuie a genereze transport de ie¸sire.
a)
b)
Figura 10.7 Circuit de conversie a unui num˘ar ˆın num˘arul negat (reprezentat ˆın complement fat¸˘a de 2).
ˆ
In final, circuitul prezentat ˆın figura 10.7-b const˘a din 4 inversoare, 3 port¸i XOR cu 2 intr˘ari ¸si 2 port¸i AND cu
2 intr˘ari. Se observ˘a a O
0
= A
0
, adic˘a circuitul de complementare fat¸˘a de 2 astreaz˘a paritatea.
2. Proiectat¸i un circuit de ”vot majoritar” cu 3 intr˘ari ¸si implementat¸i-l cu sumator complet de 1 bit. Ie¸sirea
circuitului are valoarea logic˘a a majorit˘at¸ii intr˘arilor.
Solut¸ie
Tabelul de adev˘ar al circuitului ”vot majoritar” este prezentat ˆın figura 10.8.
Funct¸ia circuitului este:
V OT = V
2
· V
1
+ V
2
· V
0
+ V
1
· V
0
Comparˆand funct¸ia ”vot majoritar” cu funct¸iile implementate de un sumator complet de 1 bit, se observ˘a
identitatea ecuat¸iilor funct¸iei ”vot majoritar” ¸si a ie¸sirii de transport a sumatorului complet de 1 bit:
C
o
= A · B + A · C
i
+ B · C
i
Funct¸ia ”vot majoritar” poate implementat˘a cu un sumator complet de 1 bit dac˘a acesta este conectat ca ˆın
figura 10.8.
10.3. Pentru cei ce vor a ˆınvet¸e 137
V
2
V
1
V
0
VOT
0 0 0 0
0 0 1 0
0 1 0 0
0 1 1 1
1 0 0 0
1 0 1 1
1 1 0 1
1 1 1 1
Figura 10.8 Funct¸ia ”vot majoritar”: tabelul de adev˘ar ¸si implementarea cu sumator complet de 1 bit.
3. a se proiecteze un circuit sc˘az˘ator de 2 bit¸i, utilizˆand dou˘a circuite sc˘az˘atoare complete de 1 bit.
Solut¸ie
Sc˘az˘atorul de ordin inferior scade bit¸ii mai put¸in semnificativi ai operanzilor ¸si are bitul de ˆımprumut de intrare
egal cu 0. Sc˘az˘atorul de ordin superior scade bit¸ii mai semnificativi ai operanzilor ¸si are bitul de ˆımprumut de
intrare provenit de la bitul de ˆımprumut al sc˘az˘atorului de ordin inferior.
4. a se proiecteze un circuit sumator de 4 bit¸i, utilizˆand patru circuite sumatoare complete de 1 bit.
5. a se proiecteze un circuit sumator/sc˘az˘ator de 4 bit¸i. Select¸ia funct¸iei se va face cu o intrare suplimentar˘a.
Solut¸ie
Implementarea porne¸ste de le observat¸ia a diferent¸a numerelor reprezentate ˆın complement fat¸˘a de 2 se poate
scrie ca:
A B = A + (B) = A + B + 1, unde s-a notat cu + operatorul de adunare binar˘a.
Rezult˘a a cele dou˘a operat¸ii de adunare ¸si de sc˘adere pot implementate cu acela¸si circuit conform expresiilor:
A + B = A + B + 0 = A + B OP + OP , (pentru OP = 0, sum˘a) ¸si
A B = A + B + 1 = A + B OP + OP , (pentru OP = 1, diferent¸˘a).
Pentru implementare s-a folosit observat¸ia a poarta XOR realizeaz˘a o ”negare comandat˘a” (B OP = B dac˘a
OP = 0 ¸si B OP = B dac˘a OP = 1). Circuitul propus este prezentat ˆın figura 10.9.
Figura 10.9 Circuit de adunare/sc˘adere pe 4 bit¸i implementat cu 4 sumatoare complete de 1 bit.
6. Proiectat¸i o unitate logico-aritmetic˘a, ALU (Engl. ”Arithmetic Logic Unit”) pe 4 bit¸i care implementeaz˘a
urm˘atoarele operat¸ii:
138 LECT¸ IA 10. Circuite aritmetice
Select¸ia Ie¸siri Operat¸ia
S
2
S
1
S
0
{C
O
, REZ
[3:0]
}
0 0 0 00000 reset
0 0 1 B A sc˘adere
0 1 0 A B sc˘adere
0 1 1 A + B adunare
1 0 0 A B XOR
1 0 1 A + B OR
1 1 0 A · B AND
1 1 1 A trece A
ˆ
In plus fat¸˘a de cei 4 bit¸i de date de ie¸sire, ALU mai are o ie¸sire C
o
, cu semnificat¸ia ”dep˘sire”, activat˘a doar ˆın
cazul operat¸iilor aritmetice.
Care sunt valorile rezultatelor la ie¸sirea ALU, dac˘a la intrare se aplic˘a operanzii A
[3:0]
= 1101 ¸si B
[3:0]
= 0101?
7. Proiectat¸i o unitate logico-aritmetic˘a pe 1 bit care are simbolul ¸si tabela de funct¸ionare prezentate ˆın figura
10.10. ALU are dou˘a intr˘ari de date (A ¸si B), o intrare de transport relevant˘a la operat¸iile aritmetice ¸si 2 bit¸i
de select¸ie a operat¸iei realizate.
ˆ
In plus fat¸˘a de ie¸sirea de rezultat R mai exist˘a o ie¸sire de transport C
o
a arei
valoare este setat˘a ˆın cazul operat¸iilor aritmetice (ˆın rest C
o
= 0).
Select¸ie Ie¸siri Operat¸ie
S
2
S
1
S
0
{C
O
, REZ
[3:0]
}
0 0 0 0 reset
0 0 1 A B C
i
sc˘adere
0 1 0 B A C
i
sc˘adere
0 1 1 A + B + C
i
adunare
1 0 0 A B XOR
1 0 1 A + B OR
1 1 0 A · B AND
1 1 1 A trece A
Figura 10.10 ALU pe 1 bit: simbol ¸si tabel de funct¸ionare.
Solut¸ie
ALU implementeaz˘a 8 funct¸ii. Cele 3 intr˘ari de select¸ie ale funct¸iei S[2 : 0] se conecteaz˘a pe intr˘arile de select¸ie
ale unui MUX 8:1. Ie¸sirea multiplexorului va ie¸sirea ALU, R. Intr˘arile multiplexorului sunt conectate conform
tabelului de funct¸ionare astfel: I
0
= 0, I
4
= A B, I
5
= A + B, I
6
= A · B, I
7
= A.
Operat¸iile aritmetice se pot implementa cu circuite aritmetice sumatoare/sc˘az˘atoare de 1 bit. Ie¸sirile de date
ale acestora se conecteaz˘a la intr˘arile multiplexorului I
1
, I
2
, I
3
. Se poate face o optimizare pentru a se utiliza
acela¸si circuit de sc˘adere ˆın cazurile S = 1 ¸si S = 2, dac˘a la intr˘arile de date se plaseaz˘a dou˘a multiplexoare 2:1
aand datele A ¸si B inversate ¸si pe select¸ie S[0].
Bitul de transport C
o
poate generat fie cu un multiplexor 8:1 cu select¸ie S[2 : 0] ¸si date provenind de la bitul de
transport al circuitelor de adunare/sc˘adere, fie cu un MUX 4:1 (select¸ie S[1 : 0]) urmat de un MUX 2:1 (select¸ie
S[2]).
8. Utilizat¸i module de tipul ”ALU pe 1 bit” descrise la problema 7 pentru a proiecta o unitate logico-aritmetic˘a pe
8 bit¸i.
9. Proiectat¸i un circuit de incrementare (adunare cu 1) a numerelor reprezentate pe 4 bit¸i, utilizˆand 4 semi-
sumatoare de 1 bit.
Solut¸ie
Un semi-sumator adun˘a doi bit¸i de date ¸si prezint˘a la ie¸sirea circuitului suma lor, reprezentat˘a pe doi bit¸i. Se
poate considera a cel mai put¸in semnificativ bit este rezultatul iar cel mai semnificativ bit este bitul de transport
atre un sumator de ordin superior.
Circuitul de incrementare se poate realiza cu 4 semi-sumatoare de 1 bit dac˘a acestea se conecteaz˘a astfel:
- Cel mai put¸in semnificativ semi-sumator adun˘a 1 la cel mai put¸in semnificativ bit al operandului. Rezultatul
reprezina bitul cel mai put¸in semificativ iar transportul devine unul din operanzii semi-sumatorului de ordin
superior.
10.4. Pentru cei ce vor a devin˘a profesioni¸sti 139
- Celelalte semi-sumatoare adun˘a un bit al operandului cu transportul de la bitul inferior ¸si produc ate un bit
de rezultat ¸si un transport atre semi-sumatorul de ordin superior.
Circuitul este prezentat ˆın figura 10.11.
Figura 10.11 Circuit de incrementare pe 4 bit¸i realizat cu 4 semi-sumatoare.
10. Verificat¸i dac˘a structura de port¸i logice din figura 10.12 implementeaz˘a un sumator complet de un bit.
Figura 10.12 Circuit referit la problema 10.
Solut¸ie
Ecuat¸iile logice ale ie¸sirilor sunt:
W
1
= A · B
W
2
= A + B
W
3
= C
C
o
= W
2
+ (W
1
· W
3
)
S = (W
1
· W
2
) W
3
Din tabelul de adev˘ar prezentat ˆın continuare rezult˘a a valorile ie¸sirilor C
o
¸si S corespund ie¸sirilor unui sumator
complet de 1 bit.
A B C
in
W
1
W
2
W
3
W
1
· W
3
W
1
· W
2
C
0
S
0 0 0 1 1 1 1 0 0 0
0 0 1 1 1 0 0 0 0 1
0 1 0 1 0 1 1 1 0 1
0 1 1 1 0 0 0 1 1 0
1 0 0 1 0 1 1 1 0 1
1 0 1 1 0 0 0 1 1 0
1 1 0 0 0 1 0 0 1 0
1 1 1 0 0 0 0 0 1 1
10.4 Pentru cei ce vor a devin˘a profesioni¸sti
1. Implementat¸i cu port¸i logice circuitul sumator complet cu considerarea gener˘arii ¸si a propag˘arii transportului.
140 LECT¸ IA 10. Circuite aritmetice
Solut¸ie
Circuitul sumator complet de 1 bit are trei intr˘ari asociate celor 2 bit¸i de date A, B ¸si transportului de intrare
C
I
. Celula genereaz˘a dou˘a ie¸siri: suma S ¸si transportul de ie¸sire C
O
.
Funct¸iile ie¸sirilor sunt:
S = A B C
I
C
O
= A · B + A · C
I
+ B · C
I
Transportul C
O
produs de o celul˘a sumatoare poate generat de celula curena sau poate transportul primit
la intrare C
I
care se propag˘a prin celul˘a.
ˆ
In aceast˘a nuant¸˘a, se pot defini dou˘a variabile intermediare: generare
G ¸si propagare P .
Generarea transportului de ie¸sire are loc and A = B = 1, adic˘a G = A · B.
Propagarea transportului de la intrare la ie¸sire are loc and doar una din intr˘ari este 1, adic˘a P = A B.
Tabelul de adev˘ar asociat sumatorului de 1 bit este:
Intr˘ari Ie¸siri Variabile
intermediare
A B C
I
C
O
S P G
0 0 0 0 0 0 0
0 0 1 0 1 0 0
0 1 0 0 1 1 0
0 1 1 1 0 1 0
1 0 0 0 1 1 0
1 0 1 1 0 1 0
1 1 0 1 0 0 1
1 1 1 1 1 0 1
Ecuat¸iile sumatorului de 1 bit cu considerarea semnalelor itermediare G ¸si P se pot scrie astfel:
S = A B C
I
= P C
I
C
O
= A · B + A · C
I
+ B · C
I
= A · B + (A + B) · C
I
= A · B + (A B) · C
I
= G + P · C
I
Aceste relat¸ii determin˘a implementarea din figura 10.13.
Figura 10.13 Structura sumatorului complet de 1 bit, implementat cu semnale intermediare P ¸si G.
2. Proiectat¸i cu port¸i logice un circuit combinat¸ional care determin˘a complementul fat¸˘a de 2 al num˘arului prezentat
la intrare, pe orice num˘ar de bit¸i. Circuitul proiectat este unul iterativ, format dintr-un circuit de procesare a
unui bit instant¸iat pentru fiecare bit al operandului. Propunet¸i circuite pentru ambii algoritmi de complementare:
a) se complementeaz˘a tot¸i bit¸ii operandului ¸si se adaug˘a 1;
b) se copiaz˘a bit¸ii de la dreapta la stˆanga an˘a la primul 1, inclusiv, iar ceilalt¸i bit¸i se neag˘a.
Solut¸ie
a) Pentru procesarea unui bit, se neag˘a acel bit ¸si se adun˘a cu o valoare provenit˘a de la bitul anterior (mai put¸in
semnificativ), obt¸inˆandu-se bitul rezultat curent ¸si un bit de transport. Pentru bitul 0, transportul de intrare
10.4. Pentru cei ce vor a devin˘a profesioni¸sti 141
este C
i
= 1. Bit¸ii se proceseaz˘a ˆın ordine, ˆıncepˆand de la cel mai put¸in semnificativ spre cel mai semnificativ.
Circuitul pentru procesarea unui bit este prezentat ˆın figura 10.14-a ¸si se bazeaz˘a pe ecuat¸ia aritmetic˘a:
{C
o
, Out} = In + C
i
, unde cu + s-a notat op eratorul de sum˘a aritmetic˘a.
Rezult˘a ecuat¸iile logice:
C
o
= In · C
i
Out = In C
i
a) b)
Figura 10.14 Circuit iterativ de complementare (celul˘a pentru 1 bit): a) se complementeaz˘a tot¸i bit¸ii operandului ¸si se adaug˘a
1 (C
i[0]
= 1), b) se copiaz˘a bit¸ii de la dreapta la stˆanga an˘a la primul 1, inclusiv, iar ceilalt¸i bit¸i se neag˘a (C
i[0]
= 0).
b) Pentru procesarea unui bit se decide dac˘a acesta este negat sau nu pe baza unei informat¸ii provenite de la
bitul de ordin inferior. Pentru bitul 0, transportul de intrare este C
i
= 0. Bit¸ii se proceseaz˘a ˆın ordine, ˆıncepˆand
de la cel mai put¸in semnificativ spre cel mai semnificativ. Circuitul pentru un bit are acelea¸si porturi ¸si este
caracterizat de urm˘atorul tabel de adev˘ar:
In C
i
Out C
o
Explicat¸ie
0 0 0 0 zero-uri init¸iale, se copiaz˘a
0 1 1 1 bitul este 0, dup˘a ce deja s-a asit un 1, deci se neag˘a
1 0 1 1 primul bit egal cu 1, se copiaz˘a ¸si se activeaz˘a transportul
1 1 0 1 bitul este 1, dup˘a ce deja s-a asit un 1, deci se neag˘a
Rezult˘a funct¸iile logice:
C
o
= In + C
i
, unde operatorul + reprezina OR logic ¸si
Out = In C
i
Circuitul pentru procesarea unui bit este prezentat ˆın figura 10.14-b. Figura 10.15 prezint˘a circuitele de aflare a
num˘arului negat, ˆın complement fat¸˘a de 2, ˆın cele dou˘a variante.
3. a se deduc˘a funct¸iile iterative ale unui circuit de incrementare a numerelor naturale reprezentate ˆın binar. a
se implementeze circuitul pentru 4 bit¸i.
Solut¸ie
Dup˘a minimizarea funct¸iilor, utilizˆand diagramele V-K prezentate ˆın figura 10.17, se obt¸in ecuat¸iile:
O
0
= I
0
O
1
= I
1
· I
0
+ I
1
· I
0
= I
1
I
0
O
2
= I
2
· I
1
+ I
2
· I
0
+ I
2
· I
1
· I
0
= I
2
· (I
1
+ I
0
) + I
2
· I
1
· I
0
= I
2
· I
1
· I
0
+ I
2
· I
1
· I
0
= I
2
(I
1
· I
0
)
O
3
=
I
3
I
2
·
I
1
·
I
0
Ecuat¸iile se pot deduce observˆand ca un bit al ie¸sirii este egal cu 1 fie dac˘a bitul de intrare este egal cu 0 ¸si
tot¸i bit¸ii anteriori (mai put¸ini semnificativi) sunt 1, fie dac˘a bitul este egal cu 1, iar bit¸ii mai put¸in semnificativi
nu sunt tot¸i egali cu 1. Altfel spus: funct¸ia XOR ˆıntre bitul curent ¸si funct¸ia AND ˆıntre tot¸i bit¸ii mai put¸ini
semnificativi.
O
0
= I
0
O
N
= I
N
(
N 1
0
I
i
), pentru N > 0.
142 LECT¸ IA 10. Circuite aritmetice
a)
b)
Figura 10.15 Circuit de complementare pe 4 bit¸i: a) se complementeaz˘a tot¸i bit¸ii operandului ¸si se adaug˘a 1, b) se copiaz˘a
bit¸ii de la dreapta la stˆanga an˘a la primul 1, inclusiv, iar ceilalt¸i bit¸i se neag˘a.
4. a se deduc˘a funct¸iile iterative ale unui circuit de decrementare a numerelor naturale reprezentate ˆın binar.
Solut¸ie
Se observ˘a a ˆın urma unei operat¸ii de decrementare (sc˘adere cu 1) un bit de index N al rezultatului este egal
cu 1 ˆın dou˘a situat¸ii:
- tot¸ii bit¸ii mai put¸in semnificativi ai operandului, cu indec¸si ˆıntre N ¸si 0 sunt egali cu 0, caz ˆın care exist˘a un
ˆımprumut de la bitul de ordin N + 1 sau
- bitul N este egal cu 1 ¸si mai exist˘a cel put¸in un bit egal cu 1 de index inferior, ˆıntre N 1 ¸si 0, caz ˆın care
bitul N nu este afectat de operat¸ia de decrementare.
Rezult˘a ecuat¸iile:
O
0
= I
0
O
N
= I
N
· I
N
1
· · · · · I
0
+ I
N
· (I
N
1
+ · · · + I
0
) = I
N
·
N 1
i=0
I
i
+ I
N
·
N 1
i=0
I
i
, pentru N > 0.
5. Proiectat¸i urm˘atoarele circuite de ˆınmult¸ire:
a) circuit de ˆınmult¸ire a dou˘a numere de 1 bit;
b) circuit de ˆınmult¸ire a dou˘a numere de ate 2 bit¸i, utilizˆand port¸i AND cu 2 intr˘ari ¸si semisumatoare de 1 bit;
c) circuit de ˆınmult¸ire a dou˘a numere de ate 4 bit¸i, utilizˆand port¸i AND cu 2 intr˘ari ¸si semisumatoare de 1 bit;
d) circuit de ˆınmult¸ire a dou˘a numere de ate 4 bit¸i, utilizˆand circuite de ˆınmult¸ire a ate 2 bit¸i (similare celor
descrise la punctul b).
6. Cum poate determinat˘a dep˘sirea ˆın cazul operat¸iilor de adunare cu numere reprezentate ˆın complement fat¸˘a
de 2?
Solut¸ie
ˆ
In cazul operat¸iilor cu numere reprezentate ˆın complement fat¸˘a de 2 asupra bitului de semn (cel mai semnificativ)
se efectueaz˘a acelea¸si operat¸ii ca ¸si asupra celorlalt¸i bit¸i. Valoarea bitului de semn (0 pentru rezultat pozitiv ¸si
1 pentru rezultat negativ) va rezulta ˆın urma prelucr˘arilor aritmetice.
ˆ
In cazul ˆın care cei doi operanzi ai unei
adun˘ari au acela¸si semn, este posibil ca rezultatul a nu poat˘a reprezentat pe acela¸si num˘ar de bit¸i.
ˆ
In acest
caz se consider˘a a operat¸ia genereaz˘a ”dep˘sire” a domeniului de reprezentare a numerelor. De exemplu, pe
8 bit¸i, pot reprezentate numere ˆıntregi ˆıntre 128 ¸si 127. Prin ˆınsumarea numerelor 100 + 120 rezultatul nu
poate reprezentat pe 8 bit¸i.
100+ 0_110_0100+
120 0_111_1000
=== ==========
220 1_101_1100
10.4. Pentru cei ce vor a devin˘a profesioni¸sti 143
Num˘ar Increment (+1)
I
3
I
2
I
1
I
0
O
3
O
2
O
1
O
0
0 0 0 0 0 0 0 1
0 0 0 1 0 0 1 0
0 0 1 0 0 0 1 1
0 0 1 1 0 1 0 0
0 1 0 0 0 1 0 1
0 1 0 1 0 1 1 0
0 1 1 0 0 1 1 1
0 1 1 1 1 0 0 0
1 0 0 0 1 0 0 1
1 0 0 1 1 0 1 0
1 0 1 0 1 0 1 1
1 0 1 1 1 1 0 0
1 1 0 0 1 1 0 1
1 1 0 1 1 1 1 0
1 1 1 0 1 1 1 1
1 1 1 1 0 0 0 0
Figura 10.16 Tabelul de adev˘ar al circuitului de incrementare pe 4 bit¸i.
O
1
O
2
O
3
Figura 10.17 Diagramele V-K pentru circuitul de incrementare, problema 3.
Rezultatul binar 1101 1100 este aso ciat ˆın complement fat¸˘a de 2 num˘arului negativ 36. Gre¸seala provine din
faptul a rezultatul corect 200 ar avea nevoie de 9 bit¸i pentru a reprezentat ˆın format complement fat¸˘a de 2.
Determinarea dep˘sirii se p oate face comparˆand semnul rezultatului obt¸inut cu semnul rezultatului steptat.
Dac˘a ambii operatori sunt pozitivi, atunci rezultatul trebuie a fie pozitiv, deci a aib˘a bitul de semn egal cu 0.
Dac˘a ambii operatori sunt negativi, atunci rezultatul trebuie a fie negativ, deci a aib˘a bitul de semn egal cu 1.
ˆ
In cazul ˆın care un operand este negativ ¸si cel˘alalt este pozitiv, nu se genereaz˘a niciodat˘a dep˘sire iar rezultatul
poate atˆat pozitiv, at ¸si negativ.
Circuitul de detect¸ie a erorii de dep˘sire are trei intr˘ari: semnul celor 2 operanzi ¸si semnul rezultatului. Tabelul
de adev˘ar al funct¸iei de eroare este prezentat ˆın continuare. S-au notat S
A
= A[7], S
B
= B[7] semnele (bitul cel
mai semnificativ) operanzilor ¸si S
S
= S[7] semnul sumei acestora.
S
A
S
B
S
S
ERR
0 0 0 0
0 0 1 1
0 1 0 0
0 1 1 0
1 0 0 0
1 0 1 0
1 1 0 1
1 1 1 0
Ecuat¸ia logic˘a a ie¸sirii este:
144 LECT¸ IA 10. Circuite aritmetice
ERR = S
A
· S
B
· S
S
+ S
A
· S
B
· S
S
.
Implementarea circuitului este prezentat˘a ˆın figura 10.18.
Figura 10.18 Circuit de depistare a erorii ˆın cazul adun˘arii numerelor ˆın complement fat¸˘a de 2, referit la problema 6.
Este interesant de observat a bitul de eroare poate utilizat pentru a interpreta rezultatul ˆın mod corect.
ˆ
In
exemplul prezentat, rezultatul este 1 101 1100|
C
2
= 36.
ˆ
Ins˘a, dac˘a se utilizeaz˘a informat¸ia a de fapt rezultatul
este eronat, acesta trebuie interpretat ca fiind o combinat¸ie binar˘a aand un bit suplimentar de aceea¸si valoare ca
¸si operanzii.
ˆ
In acest caz, rezultatul trebuie interpretat ca fiind 0 1101 1100|
C
2
= +220. Se observ˘a a rezultatul
corect se obt¸ine din rezultatul eronat prin adunarea num˘arului 256|
10
= 2
8
, adic˘a 36 + 256 = 220.
Aceea¸si corect¸ie se face ¸si ˆın cazul sumei a doi operanzi negativi.
-107+ 1_001_0101+
-105 1_001_0111
==== ==========
-212 0_010_1100
Rezultatul este 0 010 1100|
C
2
= +44.
ˆ
Ins˘a, dac˘a se utilizeaz˘a informat¸ia a de fapt rezultatul este eronat, acesta
trebuie interpretat ca fiind o combinat¸ie binar˘a avˆand un bit suplimentar de aceea¸si valoare ca ¸si operanzii.
ˆ
In
acest caz, rezultatul trebuie interpretat ca fiind 1 0010 1100|
C
2
= 212. Se observ˘a a rezultatul corect se obt¸ine
din rezultatul eronat prin adunarea num˘arului 256|
10
, adic˘a 44 + (256) = 212.