3.4.1
Операция
събиране и
операция
изваждане на
2/10-чни числа
Тези
две операции
се
осигуряват
чрез 2/10-я суматор. Тъй като
2/10-те числа
могат да
бъдат
представени
в различни
кодове,
схемата на
този суматор
трябва да е в
пълно
съответствие
с
използувания
код.
Правилата за
изпълнение
на операция
аритметическо
събиране в
кодовете “8421” и
“8421+3” бяха разгледани
в глава 1 (пункт
1.6.6). Пълният
логически
синтез на 2/10-те
суматори в
тези кодове
читателят
може да намери
в книга [2],
където са
представени
също така
множество
числени
примери за
изпълнение
на алгоритмите
на 2/10-ните
операции.
А)
Устройство
за събиране
и изваждане
на десетични
числа
представени
в код “8421”
Общият алгоритъм за събиране (изваждане) на числа със знак (Z=X+Y), представени в прав код, може да бъде изказан по следния начин:
1.
Представяне
на
операндите в
допълнителен
код;
2.
Изпълнение
на
операцията и
формиране на
признаците
на резултата;
3.
Проверка за
препълване;
4.
Ако
резултатът е
верен, същият
се
преобразува
и представя в
прав код.
Правилата
за
получаване
на
допълнителен
код бяха
изложени в
глава 1 (пункт
1.6.6). Една
примерна
логическа
структура на
устройство
за събиране и
изваждане на
2/10-чни числа в
код “8421” може да
има вида,
показан на
фигура 3.4.1.1.
Както може да
се види,
структурата
в голяма
степен
съответства
на тази за
събиране на
двоични
числа.
Добавените възли
и връзки са
необходими
за да се
реализира
схемата на
допълнителния
код. В структурата
са показани
само тези
управляващи
сигнали,
които ще
бъдат
споменати
при описание
на
алгоритъма.
Ще припомним,
че синтезираните
тук
логически
структури са
примерни и са
подчинени на
формулираните
в началото на
тази глава
предпоставки,
осигуряващи
ни простота и
яснота.
В
логическата
структура се
изпълнява
следния
алгоритъм: първият
операнд Х се
зарежда във
входния
регистър РгY.
Според
приетата
постановка
той е представен
в прав код. Ако
неговият
знак е плюс (+), чрез
управляващия
сигнал УС1 той се
изпраща в
буферния
регистър БуфРгY, а след
преминаване
през 2/10СМ
и РгСМ,
чрез УС4
се прехвърля
в буферния
регистър БуфРгХ, където
представен в
допълнителен
код очаква
подготовката
на втория
операнд. Ако
знакът на Х е
минус (-),
чрез УС3
на двоичния
суматор СМ се
подава
константата "66...6", имаща
разрядността
на мрежата.
Така този двоичен
суматор и
тази
константа
реализира част
от схемата (1.6.6.9) и (1.6.6.10) за
получаване
на
допълнителен
код на отрицателно
2/10-чно число в
кода 8421.
Логическата
инверсия на
получената
(без знаковия
разряд) сума
се записва
чрез УС2
в БуфРгY,
откъдето
постъпва в 2/10СМ. По
същото време
чрез УС7
се
установява
тригерът ТП,
чийто прав
изход подава
добавката +1СМ.
Така на
изхода на
двоично-десетичния
суматор се
получава
допълнителният
код на първия
операнд. През
РгСМ с
помощта на
УС4 този
операнд
попада в БуфРгХ. С други
думи в този
буферен
регистър
винаги се
намира
допълнителният
код на първия
операнд.
Фиг. 3.4.1.1.
Логическа
структура на
устройство
за събиране и
изваждане
на
числа
представени
в код “8421”
След
описаната
подготовка
на първия
операнд, в РгY се
приема
вторият
операнд Y. Той също е
представен в
прав код.
По-нататъшните
действия
зависят от
заповяданата
операция.
Ако
операцията е събиране,
зареденото
число трябва
да се подаде
за събиране в
допълнителен
код. Този код
се получава
аналогично –
ако числото е
положително, УС1
го записва в БуфРгY
без
изменение.
Ако то е
отрицателно –
чрез УС3 и УС2
се получава
обратния му
код, а добавката
+1СМ се прибавя
в 2/10-ния
суматор. Така
на неговия
изход
възниква
сумата от
двата
допълнителни
кода,
намиращи се в
буферните
регистри.
Ако
е назначена
операция изваждане,
с помощта на
управляващ
сигнал УС8
знакът на
числото Y се
инвертира,
след което се
формира допълнителният
код [-Y]дк.
Допълнителният
код на втория
операнд с инверсен
знак се
получава в 2/10-я
суматор по
формулата
За
целта преди
това, както
вече
пояснихме, с
помощта на
УС3 и УС2 в
буферния
регистър БуфРгY се
получава
неговият
обратен код.
В
следващия
такт в
регистъра на
суматора РгСМ се
приема
готовата
сума
(разлика),
която, ако
няма
препълване, е
представена
в допълнителен
код. Когато
резултатът е
положително
число, той не
се променя.
Ако обаче е
отрицателно
число, той
трябва да се
преобразува
в прав код. За
целта с помощта
на УС5
съдържанието
на РгСМ
се зарежда в РгY.
Буферните
регистри се
нулират и по
описания
вече начин, с
помощта на
управляващите
сигнали УС3,
УС2 и УС7 в
двоично-десетичния
суматор се
получава
правия код на
числото,
което се
записва в
изходния регистър
РгСМ, като
окончателен
резултат.
Заедно с това
се фиксират и
неговите
признаци.
Описаните алгоритми, както устройството за тяхното изпълнение, могат да се ускорят и опростят, ако се приеме за представяне на числата допълнителен, а не прав код, по аналогия с двоичните числа.
Б)
Устройство
за събиране и
изваждане на
числа
представени
в код “8421+3”
Когато операндите са кодирани в кода с излишък +3, алгоритъмът за събиране (изваждане) на числа със знак, описан по-горе, остава същия, а логическата структура от фигура 3.4.1.1 се променя незначително (вижте фигура 3.4.1.2). Корекциите се отнасят до два възела:
1. 2/10-ният
суматор
трябва да
съответствува
на схемата за
кода “8421+3” (вижте
книга [2]);
2. Двоичният
суматор се
премахва, тъй
като
получаването
на обратния
код на
отрицателно
число в
случая се
изпълнява
чрез
логическа
инверсия, т.е.
той се взема
от
инверсните
изходи на РгY. По
този начин
логическата
структура
приема вид,
близък до
този от
фигура 3.2.1.1, ето
защо този код
се счита
по-удобен за
реализиране
на
аритметическите
операции.
Фиг. 3.4.1.2.
Логическа
структура на
устройство
за събиране и
изваждане
на
числа
представени
в код “8421+3”
Тъй
като
алгоритъмите
на разглежданите
операции са
същите, ще си
спестим
описанието им в
горното
устройство,
оставяйки ги като
задача на
любознателния
читател.
Следващият
раздел е:
3.4.2
Операция
двоично-десетична
корекция ( Binary-decimal correction
)