~~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"); Двумя левыми переключателями задаются числа для сложения. Желтый светодиод отображает сумму, красный сигнализирует о переполнении. Мы собрали схему, которая суммирует два однобитных числа. Почему же она называется полусумматор, когда она отображает сумму и даже перенос? А все потому, что она не умеет оперировать с сигналом переноса из другого, младшего разряда. Дело в том, что полным сумматором называется устройство, которое умеет обрабатывать входной сигнал переноса от предыдущего младшего бита. Полные сумматоры можно объединять для увеличения разрядности оперируемых чисел. Каждый каскад сумматора складывает свои биты и бит переноса из предыдущего разряда, а также передает сигнал переноса на следующий каскад.