8-битный сумматор (ADDER8)

Входы (Inputs)

ПинТипОписание
Abus8Первое слагаемое
Bbus8Второе слагаемое

Выходы (Outputs)

ПинТипОписание
Sumbus88-битная сумма (A+B) mod 256

Логика работы

ADDER8 складывает два байта точно так же, как ты складываешь числа столбиком на бумаге. Только вместо десятичных цифр здесь биты, а вместо десятка «в уме» — сигнал переноса. Внутри чипа прячется цепочка: один полусумматор обслуживает младший бит, а за ним выстроились семь полных сумматоров. Перенос каждого разряда подаётся на вход следующего: CarryOut одного Full Adder соединён с CarryIn следующего.

Главное свойство этой цепочки: перенос может прокатиться через весь чип. Сложи 00001111 (15) и 00000001 (1). В нулевом разряде 1+1 даёт 0 и перенос, перенос гасит первый разряд — и волна бежит дальше, пока не остановится на четвёртом бите. Итог — 00010000 (16). Как и в столбике, изменение одного младшего бита способно перекроить половину старших.

Нюанс, о котором стоит помнить: волна переноса не мгновенна. Каждый Full Adder отвечает с небольшой задержкой, и в худшем случае сигнал проходит все восемь разрядов подряд — схемотехники называют такую схему ripple-carry. Именно поэтому сложение — самая медленная базовая операция процессора, а вопрос «как ускорить перенос» — классика инженерной мысли. Подробнее — в статье «Задержка распространения».

Примеры (8 бит)

A (bin)A (dec)B (bin)B (dec)Sum (bin)Sum (dec)
00001111150000000110001000016
000001015000000113000010008
11111111255000000011000000000 (переполнение)
1000000012810000000128000000000 (перенос за край)

В двух последних строках сумма «не влезает» в 8 бит: настоящий девятый бит теряется, и Sum равен сумме по модулю 256.

Применение

ADDER8 — награда за уровень 8, где ты собираешь его руками: Splitter разбирает шины A и B на отдельные биты, цепочка Full Adder складывает разряды, а Maker собирает биты результата обратно в шину. С уровня 13 чип выдаётся как готовый компонент и предустановлен в уровнях 13–16 — на построении АЛУ и финального процессора.

В компьютере проекта у сумматора две главные работы. Первая — ядро АЛУ: операция ADD выполняется именно им, а вычитание строится рядом с ним через дополнительный код. Вторая — счётчик команд: после каждой инструкции ProgramCounter прибавляет к адресу единицу, и делает это тем же сумматором. Без ADDER8 процессор не смог бы ни посчитать, ни перейти к следующей команде.

Собери это сам →

Смежные компоненты

Статьи по теме

Частые вопросы

Что произойдёт при переполнении, например 255 + 1?

Сумма обернётся в 0, а флаг переноса покажет, что результат не поместился в 8 бит.

Как устроен ADDER8 внутри?

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

Почему сложение медленнее, чем И или ИЛИ?

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