Что можно сделать на 12 транзисторах? Если схема аналоговая, это может быть, например, радиоприёмник или усилитель с достойными характеристиками. Для цифровой же схемы это катастрофически мало. Даже в такой простой микросхеме, как АЛУ К155ИП3 (74181), их значительно больше.
На самом деле транзисторов и здесь не 12, а 27, но из них в собственно АЛУ используются только 11 (двенадцатый транзистор, принудительно подающий логический нуль на вход переноса при выборе логических операций, не установлен). Остальные транзисторы задействованы в формирователе сигналов, подаваемых на входы АЛУ. При включении АЛУ в состав транзисторного процессора формирователь может и не понадобиться, если все необходимые сигналы там уже сформированы.
Как уложиться в это количество? Во-первых, сделать АЛУ однобитным, во-вторых, сократить количество операций до двух арифметических и пяти логических (у К155ИП3 и тех и других по 16, но и здесь их на самом деле больше), в третьих...
… выполнить АЛУ по необычной технологии DCTL (direct coupled transistor logic), позволяющей заметно сократить количество компонентов.
Симуляция выполнена в Falstad, этот симулятор удобен тем, что показывает направление протекания тока в виде «бегущих огней». Файлы: только полный сумматор и готовый АЛУ.
Для начала построим «АЛУ» с одной функцией — полный сумматор. Разобьём схему на две половины. Первая предназначена для подготовки входных сигналов для сумматора:
Выключателями можно задать два однобитных числа — A и B и сигнал переноса. Из них схема формирует четыре сигнала (четвёртый — тот же самый B, только инвертированный).
Вторая половина схемы — собственно сумматор:
Он представляет собой реализацию классического полного сумматора. На структурной схеме дополнительно показано распределение транзисторов по логическим элементам:
Чтобы всё это превратить в многофункциональное АЛУ, сначала переделаем формирователь входных сигналов таким образом, чтобы она формировала в прямом и инвертированном виде не только величину B, но и величину A:
Но поскольку автор планирует применить своё АЛУ в составе процессора на дискретных компонентах, такой формирователь, может и не потребоваться: там обе величины и так будут в прямом и инвертированном виде. Поэтому транзисторы формирователя и не входят в число транзисторов АЛУ. Да и без процессора можно просто взять переключатели с перекидными контактами. Ну а теперь — собственно АЛУ:
Четырьмя выключателями можно выбирать выполняемую АЛУ функцию. Ниже показаны только 7 основных:
Чтобы АЛУ не было «сферическим в вакууме», а могло получать сигналы извне, выключатели нужно заменить транзисторами. Поскольку транзистора, принудительно подающего логический нуль на вход переноса при выборе логических функций, пока нет, подавать нуль на этот вход в таких случаях нужно вручную.
Хотя на рисунке показаны всего 7 функций, можно попробовать все 16 сочетаний положений выключателей. Будут получаться, в частности, функции И-НЕ, ИЛИ-НЕ, ИСКЛЮЧАЮЩЕЕ ИЛИ-НЕ, пропускание сигнала B насквозь, инвертирование того же сигнала.
Симуляция может преподносить сюрпризы. Знаете ли вы, что биполярный транзистор может работать при пропускании через него тока в обратном направлении? Так получается при некоторых сочетаниях входных сигналов. В аналоговом усилителе при этом уменьшается коэффициент усиления, но логические схемы продолжают работать так же, как в нормальном режиме.
Напряжение питания составляет +5 В. В симуляторе выбраны транзисторы общего применения структуры NPN.
Сумматор получается со сквозным переносом. Сигналу переноса приходится проходить через транзистора T8 и T9. Если это слишком медленно, нужно сначала проверить, как влияет на работу схемы цепь, подключённая к эмиттеру транзистора T8. Перенос можно также сделать быстрее, если выполнять его для двух бит одновременно.
Если нужен только полный сумматор, подойдёт и обычная диодно-транзисторная логика (DTL). Транзисторов понадобится всего два, а вот диодов… Можно заменить эти транзисторы лампами, получится то, что автор называет DVTL — diode-vacuum-tube-logic.
Верхняя часть схемы вырабатывает инвертированный сигнал переноса. Вторая вычисляет инвертированную сумму: СУММА = ( ( A или B или C вх ) и /C вых ). Данное выражение может быть представлено также как ( A и B и C вх ).
Структурная схема получается следующей:
Добавив ещё немного компонентов, можно принудительно подавать на вход переноса нуль или единицу. Тогда схема сможет выполнять операцию И (на входе переноса единица, на инвертированном выходе переноса — нуль), а также ИЛИ (на входе переноса нуль, на инвертированном выходе переноса — единица).
Чтобы подать сигнал «инвертированный C вых» на вход «C вх» схемы для следующего бита, нужен транзисторный инвертор. Либо можно принять правило, согласно которому между битами чередуется прямая и инверсная логика.
Всё это можно превратить в действующее АЛУ, рассчитав номиналы резисторов и добавив дополнительные компоненты для оптимизации «отзывчивости» схемы. Устройства, подключённые к входам, должны содержать ключи, замыкающие их на землю (для входов диодных «И»), либо соединяющие их с плюсом питания (для входов диодных «ИЛИ»).
Это очень простая схема, в ней не реализован быстрый перенос.