Уровень 8: 8-битный Сумматор

Открыть уровень →Где это в машине →

Задание

Соберите 8-битный сумматор ADDER8, используя FullAdder и шины.

Соберите 8-битный сумматор из цепочки восьми полных сумматоров (FullAdder). Это как сложение столбиком для 8-разрядных чисел.

Главная идея уровня: шина — это 8 проводов как одно целое, а байт складывается столбиком: восемь одинаковых FullAdder соединяются только переносом. Из одинаковых блоков растёт схема любого размера.

Материалы по теме

Решение для самопроверки

Сначала попробуйте собрать схему сами. Решение ниже — способ свериться, если застряли или уже справились.

Подсказка в игре на этом уровне вставляет каркас: схема без двух проводов — входа шины A в первый FullAdder и переноса между первым и вторым сумматорами. Провода нужно замкнуть самостоятельно: каркас списывает половину штрафа, а заодно показывает, где проходит принцип уровня.

Обратите внимание на цепочку переносов: бит 7 (самый старший) считается последним — перенос должен «пробежать» через все 8 сумматоров. Это задержка распространения: чем длиннее цепочка, тем позже стабилизируется результат и тем ниже максимальная тактовая частота. Подробнее — в статье «Задержка распространения».

Шаг 1 — разбор шин: Поставьте два Splitter. На первый подайте шину A, на второй — шину B. Каждый Splitter выдаст 8 битов: Bit0 — младший, Bit7 — старший.

Шаг 2 — расстановка сумматоров: Расставьте 8 FullAdder вертикально друг под другом. На каждый подайте соответствующие биты: - FullAdder#1: A.Bit0 и B.Bit0 - FullAdder#2: A.Bit1 и B.Bit1 - ... - FullAdder#8: A.Bit7 и B.Bit7

Шаг 3 — цепочка переносов: Соедините CarryOut первого сумматора с CarryIn второго, CarryOut второго с CarryIn третьего, и так далее. Первый CarryIn оставьте неподключённым (по умолчанию 0).

Шаг 4 — сборка результата: Выходы Sum всех 8 сумматоров подайте на входы Maker (Sum#1→Bit0... Sum#8→Bit7). Выход Maker — это Sum всей схемы. CarryOut последнего сумматора — это Carry.

Отдельного внимания стоят векторы на границе диапазона: 127+1 даёт Sum=128 и Carry=0 (знаковое переполнение: старший бит результата — знаковый), 200+100 даёт Sum=44 и Carry=1 (беззнаковый перенос за границу 255), 255+1 даёт Sum=0 и Carry=1. Один и тот же сумматор — два разных смысла у его выходов.

Схема решения уровня 8 — 8-битный Сумматор
Авторское решение уровня 8 в симуляторе (тёмная тема)