Дискретна математика алгоритми

Полусумматор - це логічний ланцюг, яка виробляє сигнали суми (S) і перенесення (С) при складанні двох двійкових чисел a і b.

З таблиці отримаємо:

S = a ¬ b + ¬ a b
C = a b

Наведемо до вигляду, зручного для реалізації на елементах «АБО-НЕ» (виробники інтегральних мікросхем зазвичай випускають кілька логічних елементів на одній мікросхемі, зокрема, широко використовується елемент «АБО-НЕ», що містить в собі кілька елементів OR і кілька елементів NOT) :

S = a ¬ b + ¬ ab = a (¬ b + ¬ a) + b (¬ a + ¬ b) = ¬¬ (a (¬ b + ¬ a)) + ¬¬ (b (¬ a + ¬ b )) = ¬ (¬ a + ¬ (¬ b + ¬ a)) + ¬ (¬ b + ¬ (¬ a + ¬ b))
C = a b = ¬¬ (a b) = ¬ (¬ a + ¬ b)

Виходячи з отриманих формул, складемо схему полусумматора:

Оскільки полусумматор має широке застосування і його випускають у вигляді окремої мікросхеми, він має власне позначення:

Складаючи діз'юнктівную нормальну форму для полусумматора, ми отримали наступні булеві функції:

S = a ⊕ b
C = a b

Отже, перенесення відбувається за допомогою функції AND, а вироблення сигналу суми виробляється елементом XOR. На малюнку показана схема полусумматора, складена з цих елементів.

Суматор. на відміну від полусумматора повинен сприймати 3 вхідних сигналу: 2 доданків і сигнал переносу з попереднього розряду. Сумматором називається операційний вузол ЕОМ, що виконує операцію арифметичного додавання двох чисел. Щоб зрозуміти сутність роботи комбінаційного суматора, розглянемо приклади підсумовування двох однорозрядних двійкових чисел:

З наведених прикладів (1-4) видно, що якщо відсутня перенесення з молодшого розряду, то перенесення в старший розряд може бути тільки в одному випадку, коли обидва числа дорівнюють одиниці. Якщо ж є перенесення з молодшого розряду, то перенесення в старший розряд буде завжди, крім одного випадку, коли обидва доданків дорівнюють нулю.

Складемо таблицю функціонування:

Для складання двох багаторозрядних двійкових чисел на кожен розряд необхідний один повний суматор. Тільки в молодшому розряді можна обійтися полусумматора. На малюнку приведена схема, призначена для складання двох чотирирозрядний чисел А і В. Ця схема випускається в інтегральному виконанні. В її молодшому розряді також використовується повний суматор, щоб мати можливість нарощування розрядності схеми.

Багаторозрядний суматор з послідовним переносом:

Час виконання операції в суматорі з послідовним переносом набагато більше часу складання в однорозрядного сумматоре. Дійсно, сигнал перенесення З 4 тільки тоді може прийняти істинне значення, коли буде встановлено правильне значення С 3. Такий порядок виконання операцій називається послідовним переносом (Ripple Carry).

Щоб зменшити час операції додавання багаторозрядних чисел, можна використовувати схеми паралельного переносу (Carry look-ahead). При цьому всі сигнали перенесення обчислюються безпосередньо за значеннями вхідних змінних. Для сигналу переносу i -го розряду справедливо співвідношення:

Величини g i. r i обчислюються як проміжних результатів і в повному суматорі. Отже, їх отримання не вимагає додаткових витрат. Сигнал g i виробляється тоді, коли в даному розряді перенесення відбувається через комбінації вхідних змінних a i. b i. Тому його називають функцією генерації перенесення. Сигнал p i показує, чи передається отриманий в молодшому розряді сигнал перенесення C i далі. Тому він називається функцією поширення перенесення.

Таким чином, можна вивести наступні формули для обчислення сигналів перенесення:

Хоча отримані вирази досить складні, часом формування сигналу перенесення в будь-який розряд за допомогою допоміжних функцій визначається тільки часом затримки поширення сигналу на двох елементах. Ці функції реалізуються спеціальним комбінаційною пристроєм - схемою прискореного перенесення.

Схема суматора з паралельним переносом приведена на малюнку. На іншому малюнку зображена схема пристрою паралельного перенесення в групі з чотирьох розрядів. Ця схема реалізує отриману раніше систему рівнянь.

Список літератури

Дуже хороша публікація. Особливо зрозуміло об'єднання логічних елементів для реалізації операції підсумовування.