Как в ALU реализованы различные функции (например, сложение, вычитание и т. Д.)?

9

Мне интересно, так как ALU нужно выполнять так много функций, как я мог бы начать реализовывать одну из них (домашнее задание, где я должен реализовать систему MIPS с Logisim, используя базовые Gates, триггеры и т. Д.).

Часть, в которой я запутался, это то, как я могу реализовать ALU, который может выполнять различные функции, такие как Add / Subtract / AND / OR / etc. Нужно ли мне больше контролировать логику (см. Справа вверху в разделе «Предыдущее назначение» ниже).

В предыдущем задании я реализовал ALU, который может делать Add / Subtract / Negate. Теперь я думаю, что АЛУ должен уметь выполнять такие функции, как

Мое предыдущее назначение

Jiew Meng
источник

Ответы:

7

Хотя внутреннее вычисление всех ответов, а затем использование мультиплексора для выбора из них будет работать, это, конечно, не минимальный дизайн.

Учтите, что вы можете нарезать проблему на кусочки; вместо одного блока логики с двумя 8-битными входами вы можете разделить его на две 4-битные секции, при условии, что вы можете связать их, чтобы получить правильный общий результат. К счастью, связывание фрагментов не хуже одного бита, который в случае добавления представляет бит переноса. Таким образом, каждый 4-битный фрагмент имеет бит переноса и бит переноса. (Обратите внимание, что логикам вроде AND и NOR это даже не понадобится, хотя, если позже вы реализуете сдвиги влево / вправо, этот бит легко переопределить).

Если довести до крайности, вы можете использовать 8 кусочков по 1 биту каждый. Полезно подумать об 1-битных срезах, потому что это облегчает обдумывание подхода, который масштабируется до более крупных срезов. Таким образом, с 1-битным срезом у вас есть только 7 входов: 4-битный код функции, бит от входа A, бит от входа B и бит переноса. У вас также есть только два выхода: функционировать и выполнять. Так что теперь вы можете написать две выходные функции с точки зрения всего 7 входов, что находится в пределах способности человека разумно сокращать. В итоге вы получите несколько элементов, которые не всегда будут вычислять все функции, но не имеет значения, что происходит внутри среза, а только то, что он дает правильный результат при просмотре извне.

Теперь вы можете пойти несколькими путями. Один из способов - просто использовать 8 из этих 1-битных срезов, и все готово. Другой способ - сделать большие кусочки, а затем использовать их. Переходя от 1-битного к 2-битному, уравнения переходят от 7 входов к 9, а для 4-битных требуются функции из 13 входов. Это не обязательно легко, но даст более компактные результаты, чем подход «вычислить все, затем мультиплексировать». Кроме того, если вы посмотрите на внутреннюю часть 4-битного среза ALU 74181, вы не увидите там мультиплексора.

JustJeff
источник
Я больше нацелился на мой ответ в конце спектра «легко понять, с чего начать», но спасибо за то, что указал на более оптимальную (с аппаратной точки зрения) возможность.
Мартин Томпсон
5

Да, вам нужно больше логики управления.

Ваше предыдущее задание было чисто арифметическим (это слово?), Поэтому вы можете использовать один сумматор и массировать входы, используя управляющие сигналы, чтобы создать нужные вам функции

Ваши новые функции логичны , поэтому вам нужен еще один блок для выполнения логических операций. Управляющие сигналы изменят функциональность этого блока.

Затем в нижней части диаграммы вам понадобится мультиплексор (иногда называемый «мультиплексором»), управляемый управляющими сигналами, чтобы выбрать, какой из ответов вы собираетесь вывести (один из сумматора и его схему «входного массирования»). или один из логического оператора).

Если вы можете выбрать новые кодировки для ваших линий управления ALU, у меня может возникнуть соблазн использовать MSB в качестве «арифметического / логического» выбора, а другие выбрать «подфункцию», если это имеет смысл, поскольку это упрощает декодирование для окончательный мультиплекс

Мартин Томпсон
источник
Да, арифметика это слово :)
Majenko
1
Мне кажется, просто арифметика это слово, которое вы хотите. Обратите внимание, что это слово имеет ударение на третьем слоге. С ударением на втором слоге это другое слово, относящееся к механике выполнения базовых числовых операций, которые вы изучаете в начальной школе.
Олин Латроп
1

Один хороший подход к обработке логических операций состоит в том, чтобы биты двух операндов служили входами селектора для мультиплексора с 4 входами и передавали на входы «данных» мультиплексора четырехбитную комбинацию, соответствующую желаемой операции (обычно в в 8-битном ALU будет восемь мультиплексоров - по одному на каждый бит - и входы «данных» всех 8 мультиплексоров будут связаны друг с другом).

Supercat
источник
вроде использования мультиплексора в качестве очень маленького ПЗУ - и это еще один способ использования реальных ПЗУ.
JustJeff
Nx1-битное ПЗУ - это мультиплексор, чьи входы «данных» имеют аппаратную проводку. В описанном мною сценарии входы «данных» мультиплексора выбираются оператором. На практике можно было бы использовать небольшое ПЗУ для выбора нескольких из 16 возможных логических операций, а также нескольких других операций из 3- или 4-битного кода операции (можно при желании передать код операции напрямую через логическая единица, но используйте другие мультиплексоры для выбора других операций в случаях, когда код операции не будет генерировать полезную логическую операцию).
суперкат