Электроника:Цифровая электроника/Функции комбинационной логики/Полный сумматор

Материал из Онлайн справочника
Перейти к навигацииПерейти к поиску

Перевод: Макаров В. (valemak) Контакты:</br>* Habr: @vakemak</br>* Сайт: www.valemak.com</br>Перевёл статей: 656.
Проверка/Оформление/Редактирование: Мякишев Е.А.


Полный сумматор[1]

Полусумматор (он же неполный сумматор) – чрезвычайно полезная штука, если складывать просто по две цифры. Медленный способ разработки сумматоров не с одном, а уже с двумя двоичными разрядами – составить таблицу истинности и затем упростить её. Аналогично можно действовать, чтобы создать сумматор с тремя двоичными разрядами. Если делать четырёхразрядный сумматор, то снова можно пойти этим путём. Ну, и так далее… Получившиеся схемы будут быстродействующими, но времени на их разработку уйдёт немало.

Глядя на суммирование двух двоичных цифр, напрашивается мысль, что неплохо бы расширить сложение до нескольких двоичных цифр.

Рис. 1. Для сумматора, складывающего многоразрядные (в данном случае – двухразрядные) числа, нужно разработать способ переноса накапливающихся младших разрядов в старшие.
Рис. 1. Для сумматора, складывающего многоразрядные (в данном случае – двухразрядные) числа, нужно разработать способ переноса накапливающихся младших разрядов в старшие.

Давайте прикинем, сколько входных данных использует средний столбец на рисунке 1 выше. Нашему сумматору нужны три входа: a, b и CМл. – перенос младшего разряда в старший из предыдущей суммы (когда мы сначала сложили единицы в крайнем правом столбце). При этом мы можем использовать наш сумматор с двумя входами для построения сумматора с тремя входами.

Найти Σ достаточно легко. Стандартная арифметика гласит, что если Σ = a + b + CМл. и Σ1 = a + b, то Σ = Σ1 + CМл..

Рис. 2. Полный сумматор с тремя входами как комбинация двух неполных сумматоров с двумя входами – принципиальная вентильная схема.
Рис. 2. Полный сумматор с тремя входами как комбинация двух неполных сумматоров с двумя входами – принципиальная вентильная схема.
Рис. 3. Полный сумматор с тремя входами как комбинация двух неполных сумматоров с двумя входами – релейная схема.
Рис. 3. Полный сумматор с тремя входами как комбинация двух неполных сумматоров с двумя входами – релейная схема.

Что мы на схеме (см. рисунок 3 выше) делаем с C1 и C2? Давайте посмотрим на три входные суммы и быстро посчитаем:

CМл. + а + б = ?
0 + 0 + 0 = 0 0 + 0 + 1 = 1 0 + 1 + 0 = 1 0 + 1 + 1 = 102
1 + 0 + 0 = 1 1 + 0 + 1 = 102 1 + 1 + 0 = 102 1 + 1 + 1 = 112

Если у вас есть какие-либо опасения по поводу бита младшего разряда, убедитесь, что схема и релейная диаграмма вычисляют его правильно.

Чтобы вычислить бит старшего разряда, обратите внимание, что он равен 1 в обоих случаях, когда a + b даёт C1. Кроме того, бит старшего разряда равен 1, когда a + b даёт Σ1, а CМл. равно 1. Таким образом, у нас появляется перенос, когда «C1 ИЛИ (Σ1 И CМл.)». Наш полный сумматор с тремя входами:

Рис. 4. Полный сумматор (как комбинация двух неполных) с тремя входами – принципиальная вентильная схема.
Рис. 4. Полный сумматор (как комбинация двух неполных) с тремя входами – принципиальная вентильная схема.
Рис. 5. Полный сумматор (как комбинация двух неполных) с тремя входами – релейная схема.
Рис. 5. Полный сумматор (как комбинация двух неполных) с тремя входами – релейная схема.

В некоторых проектах важна возможность исключения одного или нескольких типов вентилей. В подобных случаях можно заменить конечный вентиль ИЛИ вентилем «Исключающее ИЛИ» с тем же результатом на выходе.

Теперь мы можем подключить два сумматора, чтобы складывать 2-битные величины:

Рис. 6. Принципиальная вентильная схема – комбинация неполного и полного сумматоров для складывания 2-битных чисел.
Рис. 6. Принципиальная вентильная схема – комбинация неполного и полного сумматоров для складывания 2-битных чисел.
Рис. 7. Релейная схема – комбинация неполного и полного сумматоров для складывания 2-битных чисел.
Рис. 7. Релейная схема – комбинация неполного и полного сумматоров для складывания 2-битных чисел.

A0 — младший бит A, A1 — старший бит A, B0 — младший бит B, B1 — старший бит B, Σ0 — младший бит суммы, Σ1 — старший бит суммы, а CСт. — перенос бита из младшего разряда в старший.

Это сугубо гипотетическая схема, на практике двухразрядный сумматор конструируется немного по-другому. Младшие биты также проходят через полный сумматор:

Рис. 8. Полный сумматор двух двухбитных чисел как комбинация двух полных сумматоров – принципиальная вентильная схема.
Рис. 8. Полный сумматор двух двухбитных чисел как комбинация двух полных сумматоров – принципиальная вентильная схема.
Рис. 9. Полный сумматор двух двухбитных чисел как комбинация двух полных сумматоров – релейная схема.
Рис. 9. Полный сумматор двух двухбитных чисел как комбинация двух полных сумматоров – релейная схема.

На то есть весомые причины, одна из которых заключается в том, что мы позволяем схеме определять, следует ли включать перенос самого низкого порядка в сумму. Это позволяет объединять даже большие суммы. Рассмотрим два разных подхода к суммированию 2-х четырёхбитных чисел:

Рис. 10. Слева – стандартное сложение 2-х четырёхбитных чисел целиком. Справа – складываем по два бита и объединяем результаты.
Рис. 10. Слева – стандартное сложение 2-х четырёхбитных чисел целиком. Справа – складываем по два бита и объединяем результаты.

Если программа складывает двухбитные числа и запоминает переносимый старший разряд для использования в следующем сложении, то такой подход позволяет суммировать любое количество битов, даже если в наличии только двухбитный сумматор. Небольшие ПЛК (программируемые логические контролёры), рассчитанные на складывание двух битов, могут быть объединены в цепочки для увеличения количества обрабатываемых битов.

Подобные полные сумматоры могут быть расширены до любого количества битов, насколько позволяет объём памяти. В качестве примера, вот как сделать 8-битный сумматор:

Рис. 11. Полный 8-битный сумматор – числа складываются стандартно, последовательно обрабатывая от младших разрядов к старшим.
Рис. 11. Полный 8-битный сумматор – числа складываются стандартно, последовательно обрабатывая от младших разрядов к старшим.

Мы получим аналогичный результат, если используем два 2-разрядных сумматора для создания 4-разрядного сумматора, а затем используя два 4-разрядных сумматора для создания 8-разрядного сумматора или повторного дублирования релейной логики и обновления чисел:

Рис. 12. На основе 2-битных сумматоров создаём 4-битные сумматоры, на основе которых создаём 8-битный сумматор.
Рис. 12. На основе 2-битных сумматоров создаём 4-битные сумматоры, на основе которых создаём 8-битный сумматор.

Каждое «2+» на рисунке 12 выше – это 2-битный сумматор, состоящий из из двух полных сумматоров. Каждое «4+» на рисунке 12 выше – это 4-битный сумматор, состоящий из двух 2-битных сумматоров. И результатом двух 4-битных сумматоров является искомый 8-битный сумматор, для построения которого мы использовали простейшие полные сумматоры.

Для любой большой комбинационной схемы обычно есть два подхода к проектированию: можно взять более простые схемы и воспроизвести их; или же можно спроектировать сложную схему как завершённое (т.е. единое, а не состоящее из наращиваемых 1/2/4/8/… блоков) устройство. Использование более простых схем для создания сложных позволяет тратить меньше времени на проектирование, но при этом потребуется больше времени для прохождения сигналов через транзисторы.

В схемах 8-битного сумматора, приведённых на рисунках 11 и 12 выше, ожидается, пока все выходные сигналы CxСт. переместятся от A0 + B0 до входов Σ7. Если разработчик строит 8-битный сумматор как завершённое устройство, упрощённое до суммы произведений, то сигнал на каждом этапе просто проходит через один вентиль НЕ, один вентиль И и один вентиль ИЛИ.

Семнадцать устройств ввода имеют таблицу истинности со 131072-ю элементами, и преобразование 131072 элементов в сумму произведений займёт некоторое время. При проектировании систем с максимально допустимым временем отклика для получения конечного результата можно начать с использования более простых схем, а затем попытаться заменить слишком медленные части схемы.

Таким образом, вы тратите большую часть своего времени на разработку именно критичных частей схемы.

См.также

Внешние ссылки