Rys. 5-85. Zastosowanie sumatora do dodawania i odejmowania
taki można zbudować jaszcze inaczej (ry3. 5.85c), jeżeli we wzorach (5.1) zamiast zamiany ^ na ^ zamienimy jednocześnie Yn na oraz Cn na 5^.
*n © \ © \ = ^ © Yq @ Bn = Rn
oraz _
X ? + (X + Y„)TL = Yx + {1 + Y_ )B_ = S . n n 'Ti n' n n n ' n n' n n+1
Układ z rys. 5.85c jest szczególnie korzystny do budowy wielobitowych układów dodająco odejmujących. Wystarczy bowiem zanegować przeniesienie przychodzące na pozycję najmniej znaczącą (przyjąć CJ0 = 1), aby, po zanegowaniu liczby X, otrzymać zanegowana pożyczki na wszystkich wyższych bitach. . Pokazano to na rys. 5-86 używając do negowania X układy 7486 zawierające po cztery bramki EXCHJSIVE-OR.
*0-1 *0-1
Vt *0-1
Rys. 5*86. -8-bitOwy sumator/subtraktor liczb binarnych
5.11.2. Dodawania w kodzie BCD
O
Zgodnie z definicją, każda dekada liczby BCD Jest czterobitową liczbą dwójkową. Podczas sumowania odpowiadające sobie czwórki bitów liczb X i Y mogą więc być bezpośrednio podane na wejścia sumatorów 7483.Obliczona suma binarna mole zawierać się w granicach od O do 19 (9 + 9 + 1 z przeniesienia). Dla przedstawienia jej w kodzie BCD niezbędna Jest korekcja,której zasady wynikają z porównania kodów binarnych i BCD zestawionych w tabeli na rys. 5*87. Jak widać, korekcja konieczna jest dla sum o wartościach od 10 do 19 1 polega na odjęciu 10 i wygenerowaniu przeniesienia, tzn. dodaniu liczby 16, czyli łącznie polega na dodaniu liczby 6.
SUMA |
DWU |
CYFR |
DZIESIĘTNYCH |
KOREKCJA | ||||||
DZIESIĘTNA |
SMARNA (MCSKomOWANA) c:, sjsfsfsj |
SCD (SKORYGOWANA' CH |
Sę | |||||||
6 |
1 |
0 |
0 |
8 |
8 |
0 |
8 8 |
8 |
8 | |
II |
0 |
3 |
0 |
1 |
0 |
8 3 |
8 |
1 | ||
l |
1 |
0 |
0 |
1 |
8 |
8 |
8 8 |
1 |
8 | |
3 |
t |
0 |
3 |
1 |
1 |
8 |
8 8 |
1 |
1 | |
A |
t |
1 |
1 |
0 |
3 |
8 |
8 1 |
8 |
8 |
ZBYTECZNA |
5 |
( |
i |
1 |
3 |
1 |
0 |
0 1 |
8 |
1 | |
( |
0 |
0 |
1 |
1 |
1 |
0 |
8 1 |
1 |
3 | |
7 |
0 |
0 |
1 |
1 |
1 |
8 |
8 1 |
1 |
1 | |
S |
t |
1 |
3 |
8 |
8 |
8 |
1 8 |
8 |
8 | |
9 |
s |
1 |
3 |
3 |
1 |
1 |
1 8 |
8 |
1 | |
M |
t |
1 |
3 |
1 |
8 |
1 |
0 8 |
0 |
8 | |
11 |
0 |
1 |
0 |
1 |
1 |
1 |
8 8 |
8 |
1 | |
1! |
o |
1 |
1 |
8 |
0 |
1 |
8 8 |
1 |
8 |
3DJA.Ć 10 |
U |
0 |
1 |
1 |
8 |
1 |
1 |
0 0 |
1 |
1 |
1 WYTWORZYĆ |
U |
0 |
1 |
1 |
1 |
8 |
1 |
8 1 |
8 |
8 |
PRZENIESIENIE |
15 |
3 |
1 |
1 |
1 |
1 |
1 |
8 1 |
8 |
1 |
LU 6 |
1( |
1 |
6 |
3 |
0 |
8 |
1 |
8 1 |
1 |
8 |
DODAĆ S |
17 |
1 |
0 |
3 |
3 |
1 |
1 |
8 1 |
1 |
1 | |
11 |
1 |
0 |
3 |
1 |
3 |
1 |
1 8 |
0 |
3 | |
13 |
1 |
8 |
3 |
1 |
1 |
1 |
1 8 |
0 |
1 |
Rys. 5.87. Korekcja sumy przy dodawaniu liczb BCD Jak łatwo sprawdzić, funkcja wykrywająca liczby od 10 do 19 ma postać
"+1
♦ S3S2
+ S*s*
Sygnalizuje ona konieczność korekcji 1 jednocześnie stanowi, przeniesienie do następnej dekady.
Korektor składa się więc z układu realizującego przeniesienie C+1 oraz sumatora 7483 dodającego 6, gdy przeniesienie to jest równe jeden. Całość sumatora BCD pokazana jest na rys. 5.88, gdzie w celu przyśpieszenia generacji przeniesienia zastosowano szybką .bramkę AND-OR.