Altifigence Academy

13 / 36 · Теория

Полусумматоры и полные сумматоры

Вычислите сумму и перенос, затем соедините разряды.

Цели урока

  • Вычислите сумму и перенос, затем соедините разряды.

Сумма и перенос

Полусумматор вычисляет sum=a^b и carry=a&b. Для 1+1 двоичный результат 10: sum=0, carry=1. Полный сумматор добавляет cin: sum=a^b^cin, cout=(a&b) OR (a&cin) OR (b&cin). Перенос равен 1, когда единиц не меньше двух.

Фрагмент RTL
assign sum = a ^ b ^ cin;
assign cout = (a & b) | (a & cin) | (b & cin);

Измените входы

Связь соседних разрядов

cout разряда 0 становится cin разряда 1. Для суммы двух N-битных входов с последним переносом нужен N+1 бит. Явно расширьте входы: {1'b0,a}+{1'b0,b}. Последовательный перенос имеет физическую задержку; арифметическое выражение не проверяет быстродействие.

Попробуйте сами

Найдите sum и cout при a=1,b=0,cin=1.

Прочитать объяснение

Сумма 2, то есть 10: sum=0, cout=1.

Выбор действует в этом браузере. Его можно изменить внизу страницы.