Documente Academic
Documente Profesional
Documente Cultură
Curs 4.14 UAL II
Curs 4.14 UAL II
Sumator de n biţi
Qn
An An-1 An-2 … A1 A0 Qn-1 Qn-2 … Q1 Q0
Deplasare Y
Ştergere
Încărcare
Bloc de comandă
Încărcare N Test Q0
Start Stop
Fig. 3.6
Registrul A este utilizat ca acumulator pentru păstrarea produsului parţial.
La sfârşitul operaţiei de înmulţire, An va conţine semnul rezultatului. Registrul
trebuie să aibă intrări paralele pentru înscrierea informaţiei de la sumator şi să
funcţioneze ca registru de deplasare spre dreapta. Astfel la început se transferă
bitul A0 în poziţia n − 1 a registrului Q şi ulterior, pe măsură ce procesul de
înmulţire avansează, sunt transferaţi în registru Q biţii care urmează
(A1,A2,…An-1)
Start
B←X Q←Y
A←0 N←n
Qn ← Bn ⊕ Qn
Nu Da
Q0=1
A ← A+B
An ← 0, Ai ← Ai+1
Qn-1 ← A0, Qi ← Qi+1
N ← N-1
Nu
N=0
Da
An ← Qn
Stop
Fig. 3.7
Tabelul 3.3.
yi yi −1 Operaţii
00 Deplasare produs parţial la dreapta
01 Adunare deînmulţit, deplasare produs parţial la dreapta
10 Scădere deînmulţit, deplasare produs parţial la dreapta
11 Deplasare produs parţial la dreapta
Bn Bn-1 … B1 B0
Sumator / Scăzător
de n+1 biţi
Deplasare Y
Scădere/Adunare Ştergere
Încărcare
Bloc de comandă
Încărcare N Test Q0Q-1
Ştergere
Start Stop
Fig. 3.8
Start
B ← X Q ← Y Q-1=0
A ← 0 N ← n+1
Nu Da
Q-1=1
Nu Da Nu Da
Q0=1 Q0=1
00 10 01 11
A ← A-B A ← A+B
N ← N-1
Nu
N=0
Da
Stop
Fig.3.9
Observaţii:
1. Iniţial, bistabilul Q−1 este resetat, pentru ca bitul de referinţă pentru cifra
Q0 a înmulţitorului să fie zero.
2. La deplasare se tine cont de regula de deplasare pentru numerele cu
semn reprezentate în C2 (Tabelul 1.7). Bitul de semn de pe poziţia An , este
deplasat în An −1 , dar rămâne şi în An .
3. Se compară toţi biţii înmulţitorului, inclusiv bitul de semn.
4. Rezultatul se formează în registrul A _ Q de 2n+2 poziţii, bitul de semn
repetându-se pe primele două poziţii (rezultatul propriu-zis are 2n+1 biţi).
Organigrama operaţiei de înmulţire prin metoda Booth este prezentată în
figura 3.9.
In etapa de iniţializare, se încarcă deînmulţitul şi înmulţitorul în registrul B ,
respectiv Q , bistabilul Q−1 şi registrul acumulator sunt iniţializate cu 0 , iar
numărătorul N este iniţializat cu n + 1 .
In continuare se testează bitul de referinţă Q−1 şi bitul Q0 al înmulţitorului.
Dacă Q0Q−1 = 01, se adună deînmulţitul din registrul B la produsul parţial din
registrul A . Dacă Q0Q−1 = 10 , se scade deînmulţitul din produsul parţial. Pentru
celelalte două combinaţii ale biţilor testaţi, în această etapă nu se efectuează nici o
operaţie. La pasul următor se deplasează la dreapta registrul combinat A _ Q , astfel
încât în poziţia bitului de semn An să rămână aceeaşi valoare (păstrarea bitului de
semn este indicată în organigramă prin transferul An ← An ). Se decrementează
numărătorul N şi dacă acesta nu a ajuns la zero, se continuă operaţia cu testarea
biţilor Q0Q−1 . Dacă numărătorul N a ajuns la zero, operaţia se termină.
Exemplul
Considerăm X = 13 , Y = −10 . Exprimarea binară a acestor numere în C2
este următoarea:
X = 0 1101
Y = 1 0110
Scăderea deînmulţitului din conţinutul registrului acumulator A se efectuează
prin adunarea complementului faţă de 2 al acestuia X’.
X’ = - X = 1 0011
In tabelul 3.4 este prezentat conţinutul registrelor dispozitivului de
înmulţire la fiecare pas al operaţiei.
Sumator / Scăzător
de n biţi
Qn
An An-1 An-2 … A1 A0 Qn-1 Qn-2 … Q1 Q0
X
Ştergere
Bloc de comandă
Adunare Deplasare
Scădere N
Încărcare
Încărcare
Start Stop
Fig. 3.10
Start
A_Q ← X B ← Y
N←n
A ← A-B
−
Qo ← A n
Nu Da
An = 1
A←A + B
N ← N-1
Nu
N=0
Da
An ← Qn Qn ← Qn ⊕ Bn
Stop
Fig. 3.11
Tabelul 3.7 . Execuţia operaţiei de împărţire 13:5 prin metoda refacerii restului parţial.
Pas A Q B Q0 Qn N Operaţii
0 0 0000 1101 0101 0 0 4 Iniţializare
1 0 0001 + 1010 Deplasare A_Q la stânga
11011 Scădere împărţitor
1 1100 +
0 0101 Adunare împărţitor
0 0001 101 0 0 0 0 3
2 0 0011 + 01 0 0 Deplasare A_Q la stânga
1 1011 Scădere împărţitor
1 1110 +
0 0101 Adunare împărţitor
0 0011 01 00 0101 0 0 2
3 0 0110 + 100 0 Deplasare A_Q la stânga
1 1011 Scădere împărţitor
0 0001 1001 0101 1 0 1
4 0 0011 + 001 0 Deplasare A_Q la stânga
1 1011 Scădere împărţitor
1 1110 +
0 0101 Adunare împărţitor
0 0011 0010 0101 0 0 0