~~NOCACHE~~
require($_SERVER["DOCUMENT_ROOT"] . "/interactive/interactive.php");
===== Однобитный полусумматор =====
Соберем первое устройство, которое способно выполнять арифметическую операцию — сложение. Для простоты это будет устройство, способное сложить два однобитных числа. Ранее мы рассмотрели логику работы с двоичными числами. Попробуем вспомнить рассмотренные ранее логические элементы и подумать, какой же из них наиболее похож на сумматор? Правильно — это «ИСКЛЮЧАЮЩЕЕ-ИЛИ». Вспомним его таблицу истинности:
Таблица истинности элемента Исключающее ИЛИ
^ Вход А ^ Вход B ^ Выход C ^
| 0 | 0 | 0 |
| 1 | 0 | 1 |
| 0 | 1 | 1 |
| 1 | 1 | 0 |
Как видно из таблицы истинности, он складывает два бита и выдает на выход результат сложения. Действительно:
|0 + 0 = 0|
|0 + 1 = 1 |
|1 + 0 = 1|
|1 + 1 = 10|
Но так как у нас элемент имеет один выход, показывающий состояние младшего разряда, то у него на выходе 0, как в младшем разряде числа 10. Получается, что Исключающее ИЛИ и есть элемент для сложения однобитных чисел, но если использовать только его, то у нас нет никаких данных о переполнении разряда. Поэтому, чтобы получить полусумматор осталось только дополнить этот элемент сигналом переполнения (переноса). Его легко получить, если добавить элемент «И».
===Принципиальная схема===
pinlab_draw_picture("polusummator");
===Таблица компонентов===
pinlab_bom("polusummator.mont");
===Монтажная схема===
pinlab_draw_instruction("polusummator.mont");
Двумя левыми переключателями задаются числа для сложения. Желтый светодиод отображает сумму, красный сигнализирует о переполнении.
Мы собрали схему, которая суммирует два однобитных числа. Почему же она называется полусумматор, когда она отображает сумму и даже перенос? А все потому, что она не умеет оперировать с сигналом переноса из другого, младшего разряда. Дело в том, что полным сумматором называется устройство, которое умеет обрабатывать входной сигнал переноса от предыдущего младшего бита.
Полные сумматоры можно объединять для увеличения разрядности оперируемых чисел. Каждый каскад сумматора складывает свои биты и бит переноса из предыдущего разряда, а также передает сигнал переноса на следующий каскад.