Что делает АЛУ
Арифметико-логическое устройство (АЛУ) — это часть процессора, которая непосредственно вычисляет: оно принимает два операнда и код операции и выдаёт один из нескольких возможных результатов (AND, OR, ADD, SUB и т.д.) в зависимости от того, что выбирает код операции. Любая инструкция процессора, выполняющая арифметику или сравнение, проходит через какую-либо форму АЛУ.
Строительные блоки: сумматор и логические вентили
Большинство функций АЛУ уже описаны схемами из других статей: полный сумматор (или цепочка из них) вычисляет ADD, а тот же сумматор вычисляет SUB, если один операнд предварительно инвертирован и увеличен на 1 (отрицание в дополнительном коде). Операции AND и OR — это просто побитовые вентили AND/OR, применённые прямо к двум шинам операндов.
Выбор операции мультиплексором
Поскольку АЛУ должно выдавать один из нескольких результатов в зависимости от кода операции, каждый возможный результат (AND, OR, ADD, SUB...) вычисляется параллельно отдельными подсхемами, а мультиплексор выбирает, какой из них действительно попадёт на выход, управляемый битами кода операции.
- код операции = 00 → выход = A AND B
- код операции = 01 → выход = A OR B
- код операции = 10 → выход = A + B (сумматор)
- код операции = 11 → выход = A − B (сумматор с инвертированным B и Cin=1)
Разбор 1-битного АЛУ
Встроенный блок «1-битное АЛУ» в Boolflow — это ровно такая структура: вентиль AND, вентиль OR и полный сумматор (настраиваемый на сложение или вычитание инвертированием одного входа) подаются на мультиплексор 4:1, а 2-битный код операции управляет линиями выбора. Изменение кода операции при фиксированных A и B мгновенно показывает все четыре возможных результата без переподключения проводов.
Масштабирование до N бит
Соединение N 1-битных срезов АЛУ вместе — так же, как полные сумматоры соединяются в N-битный сумматор — даёт полное N-битное АЛУ, которое является арифметическим ядром простого процессора. Загрузите пример 1-битного АЛУ в Boolflow, переключайте биты кода операции и проверяйте каждый результат по таблице истинности, прежде чем экспортировать схему в Verilog или VHDL.