Троичный инвертор и триггер на КМОП

топ 100 блогов nabbla127.03.2025 Уже несколько лет, как эта идейка в голове вертелась, но окончательно оформилась до состояния "хочу опробовать" только после общения на конференции в ВМК МГУ.

А именно - САМАЯ ПРОСТАЯ РЕАЛИЗАЦИЯ троичной логики по КМОП-технологии, которую никто бы всерьёз не рассматривал в 80е годы, и тем более в 90е, да и сейчас тяжело пересилить убеждения, которые нам вложили в голову на уроках схемотехники, и решить: "а что, ТАК МОЖНО БЫЛО ЧТО ЛИ"? Однако, в эпоху тёмного кремния и скорой смерти закона Мура - все недостатки данной реализации, кажется, могут чудесным образом исчезнуть!

Пока что я поэкспериментировал с троичным инвертором на двух МОП-транзисторах, и потом на простейшем троичном триггере на основе двух инверторов. Как минимум, ОНО РАБОТАЕТ.

Троичный инвертор и триггер на КМОП


Троичный инвертор и триггер на КМОП



Как видно на фото, за основу я взял вполне себе ДВОИЧНЫЙ КМОП-инвертор К561ЛН2 (функциональный аналог CD4049). Идея в том, что если понизить питающее напряжение, то наступит момент, когда при половине напряжения питания (Vcc/2) на входе ОБА ТРАНЗИСТОРА окажутся закрыты, и выход "повиснет в воздухе". Но если теперь его аккуратно "притянуть" к Vcc/2, то у нас образуется схема с тремя устойчивыми уровнями, т.е малое изменение напряжения на входе не приведёт к резкому изменению напряжению на выходе. Коэффициент усиления в этих местах (по абсолютной величине) будет существенно меньше единицы.

Вот полная схема, которая изначально была реализована на макетке:
Троичный инвертор и триггер на КМОП


Хотелось сразу же "заземлить" все незадействованные входы, потому как у ЛН2 нет защитного диода к Vcc (специально, чтобы его можно было использовать как преобразователь уровней, например из КМОП в ТТЛ) и во время всяких изысканий могу их ненароком спалить. Vcc/2, не мудрствуя лукаво, получил делителем напряжения из двух резисторов 68 Ом.

Но если все эти подробности убрать, я, по сути, проверял вот что:
Троичный инвертор и триггер на КМОП


Или, если раскрыть "внутренности" микросхемы:
Троичный инвертор и триггер на КМОП


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

Полагаю, что "троичности" можно добиться и при питании от 3,3 вольт, и от 5, надо лишь ещё снизить сопротивление подтягивающего резистора, чтобы у него хватало силёнок перебороть "недооткрытый" МОП транзистор. При бОльших напряжениях я бы уже не рискнул - можно просто спалить нашу микросхемку.

Но всё же я полагаю, что куда перспективнее понизить напряжение, чтобы оно было лишь немногим больше порогового напряжения этих транзисторов (обычно пороговым называют такое напряжение, при котором ток сток-исток достигнет 0,25 мА. Чёткого порога, разумеется, нет - мы всё-таки в аналоговом мире живём!)

Да и в целом, проще было напряжение выставить другое на лабораторном источнике питания, чем резистор перепаивать по сто раз. При напряжении 2,5 вольта я получил примерно ту характеристику, что и хотел: наши 2,5 вольта условно разбиты на 5 участков по 0,5 вольта. Сначала "полочка" высокого логического уровня (хотя здесь она, увы, "срезалась", чуть ниже напряжение взял чем надо), затем переход к серединному уровню, ещё одна "полочка" посередине, ещё один переход и, наконец, "полочка" низкого логического уровня.
Троичный инвертор и триггер на КМОП


При понижении питающего напряжения до 1,8 вольта транзисторы уже потеряли возможность выдавать сколько-нибудь большой ток, поэтому резистор 2 кОм стал излишне их "перебарывать". Из-за этого центральная полка разрослась до неприличных размеров, а до верхней и нижней полочек мы так и не добрались... Опять же, увеличением номинала резистора это исправляется - и тогда можно получить 3 логических уровня и при питании +1,8 вольта.

Следующим опытом стало соединение двух инверторов в буферный элемент (повторитель). Полная схема на макетке была такой:
Троичный инвертор и триггер на КМОП


Резистор 1 МОм на входе - потому что я был настолько ленив, что в качестве входа использовал ещё один канал лабораторного источника питания. У него аналоговая ручка регулировки и цифровые показания напряжения от 0 до 30 вольт. Выставлять на нём доли вольта - то ещё мучение (270° соотв 31,5 вольтам!), поэтому и применил деление в 11 раз. Пока что снимал характеристики вручную - собирать стенд, подающий что-то пилообразное на вход и рисующий характеристики сразу на осциллографе было лениво. Чуть попозже сделаю и так.

А по сути проверял вот что:
(извините, схему не сохранил на флэшку, завтра вставлю. В общем, два инвертора друг за дружкой)

Сначала снял характеристику при питающем напряжении 2,5 вольта. Как видно, нижняя полочка, увы, отсутствует. Если поставить такие буферные элементы в ряд, уровень лог "0", можно считать, исчезнет! Допустим, на вход мы подали 0 вольт. После первого буфера у нас выйдет 0,3 вольта. Если подать их на второй буфер, он выдаст уже 0,65 вольта. Тогда с третьего буфера мы снимем 1,2 вольта - т.е уже выйдем на центральный уровень...

Троичный инвертор и триггер на КМОП


Ещё замечаем асимметрию характеристики - мы же в реальном мире, где как ни подбирай комплементарную пару транзисторов, но всё же n-канальные и p-канальные вот ни разу не являются зеркальным отражением друг друга, разные у них ВАХ и всё тут.

Чтобы не перепаивать уже два резистора, но всё-таки получить правильно работающий буфер, я чуточку приподнял напряжение, до 2,7 вольта. И вот тогда уже получил правильную характеристику!

И тут же провёл третий опыт, соединив вход буфера с его выходом.
Именно так устроен самый простой триггер. А сохраняем в него очередное значение методом "грубой силы": кнопка, напрямую соединяющая вход с одним из 3 логических уровней, всяко пересилит выход буфера, ещё и работающий на пониженном напряжении!

Полная схема макета:
Троичный инвертор и триггер на КМОП


Реально проверялось вот что:
Троичный инвертор и триггер на КМОП


И да, я получил три устойчивых положения этой схемы:


Ещё и приятный побочный эффект: этот триггер при подаче питания заведомо установится в центральный логический уровень! Обычный двоичный триггер устанавливается случайным образом либо в ноль, либо в единицу, и для правильной работы схем почти всегда приходится организовывать цепи сброса. Здесь же, когда питающее напряжение только начало свой рост от нуля, изначально все транзисторы закрыты, поэтому на входе буфера сидит ровно половина напряжения питания, в итоге, даже если транзисторы немного приоткроются, они из этого устойчивого положения уже не выйдут самопроизвольно.

Мне кажется, даже такой триггер "сам по себе" иногда может пригодиться: управление каким-нибудь моторчиком. Только нас включили - он отключён. Нажали одну кнопку - он запустился "вперёд", нажали другую - запустился "назад".

Напомню, что КМОП D-триггеры получаются из этого простейшего добавлением аналоговых коммутаторов! (см. Безумный MAX3032: зазеркалье отрицательных фронтов) Т.е вместо двух сигналов "разной силы", делается вход C, управляющий аналоговым коммутатором на основе параллельно соединённых n-МОП и p-МОП транзисторов. Так что исходно вход буферного элемента соединён со своим же выходом, что обеспечивает хранение текущего уровня. А при подаче C=1 вход попросту соединяется с входом D. При последующем переключении в C=0 это новое значение станет храниться.

Как мы понимаем из названия, аналоговый коммутатор с тем же успехом сможет переключать троичные уровни, так что D-триггеры с переключением по уровню и по фронту У НАС В КАРМАНЕ!

У меня уже есть соображения, как реализовать всю остальную логику. Так, элементы AND, OR, XOR, NAND и пр. ВОЛШЕБНЫМ ОБРАЗОМ сохраняют свою схемотехнику, но начинают реализовывать логику "ИСТИНА-ЛОЖЬ-НЕ ЗНАЮ". Например, AND выдаст ИСТИНУ только если на входе будет две ИСТИНЫ, и заведомо выдаст ЛОЖЬ, если хоть на одном входе ЛОЖЬ. В противном случае будет "НЕ ЗНАЮ".

Но этого недостаточно для реализации уравновешенной троичной арифметики или хотя бы троичных счётчиков: тут нужно комбинировать МОП-транзисторы с двумя разными порогами (то, как оно должно стать "в железе") или играться с напряжением подложки (как я поначалу буду пробовать в макете, уже заказал себе 15 штучек К176ЛП1). Как ни странно, получается весьма компактно. По предварительным результатам, полный уравновешенный троичный сумматор требует где-то в 1,6 раз больше транзисторов, чем полный двоичный, но нам и тритов надо в 1,6 раз меньше, чем битов, для представления того же диапазона чисел, так что выходит "то на то". Но зато умножитель уже ВООБЩЕ НЕ СЛОЖНЕЕ, просто вместо n-разрядного AND (который умножает число на 1 бит, т.е выдаёт как есть, либо нолик) нужен n-разрядный XNOR, который либо занулит число, либо оставит как есть, либо проинвертирует. Зато шагов умножения в те же 1,6 раз МЕНЬШЕ.

Но это Остапа понесло...

Если всё так просто и замечательно - то почему до сих пор не используется?

Что ж, недостатки есть, и в 80е годы они были АБСОЛЮТНО ФАТАЛЬНЫМИ.

1. подтягивающий резистор - это шаг назад! Возвращение от ТТЛ (транзисторно-транзисторной) логики к РТЛ (резисторно-транзисторной), или от КМОП (Комплементарные транзисторы Металл-Окисел-Полупроводник) к n-МОП или p-МОП. У КМОП логики в своё время появилось шикарнейшее свойство: она потребляла ток только во время переключении, а в статическом режиме буквально микроамперы. Когда стоят подтягивающие резисторы - это свойство мы тут же теряем. При низком и высоком логическом уровне у нас будет идти бесполезный ток через этот резистор. Ещё и придётся искать компромисс между быстродействием и потреблением: если резисторы сделать большой ёмкости, схема выйдет сколько-нибудь экономичной, но очень медленной, т.к входные ёмкости последующих элементов будут печально перезаряжаться через этот большой резистор. Либо наоборот - прийти почти что к КМОПовской скорости, но отчаянно греться.

2. транзисторы не смогут раскрыть весь свой потенциал по выходному току. Мы вынуждены выставить питающее напряжение лишь немного выше порогового, а ведь по превышении порога ток растёт примерно квадратично от напряжения "затвор-подложка". Тут, выходит, мы задействуем только самую медленную часть этой параболы, где она нормально не "раскочегарилась". Значит, при прочих равных, быстродействие будет ниже, чем при использовании тех же транзисторов в двоичной логике. А не забываем: в 80х годах КМОП не могла похвастаться хорошим быстродействием. За быстродействием шли в ТТЛШ, а то и в ЭСЛ, тогда как КМОП хорошо если на мегагерц выходил, ну так и быть на два. В 90е и дальше КМОП всех заткнул за пояс, но пошла такая гонка за тактовые частоты, что предложи кто замедлиться в несколько раз ради троичности - он бы не был услышан.

3. судя по всему, для чёткой работы троичной логики нужен меньший разброс характеристик логических элементов и питающего напряжения, которым ранние цифровые микросхемы похвастать не могли. В справочниках приводится "область допустимых параметров", где на 5-вольтовом питании переход с "1" в "0" может случиться на одном вольте, а может на четырёх. Так что вполне возможно, что тогда пришлось бы ещё и проводить отбраковку используемых микросхем, что также "не дело".

А что же изменилось с тех пор? Примерно ВСЁ.

1. по мере уменьшения размера транзисторов, рабочие токи всё более приближались к неуправляемым токам - токам утечки. А те, в свою очередь начали в какой-то момент расти из-за квантовых эффектов, и всё же была выгода в увеличении токов утечки ценой снижения ОБЩЕГО потребления. Сейчас утечки вносят чуть ли не основной вклад в энергопотребление цифровых чипов. И тогда выходит, что подтягивающие резисторы там уже стоят! В смысле, что подтекает и верхний, и нижний ключ, и если оба их запереть - на выходе как раз и установится половина напряжения питания. Весь вопрос - использовать ли эти "подтягивающие резисторы" во благо или относиться к ним исключительно как к паразитным (как это происходит сейчас).

2. Давным-давно, где-то после 4-го пентиума, перестал действовать закон масштабирования Деннарда. Пока он работал, можно было при уменьшении размера транзистора заодно увеличить его тактовую частоту, при этом мощность, выделяемая на ЕДИНИЦУ ПЛОЩАДИ, оставалась неизменной. Теперь уменьшить транзистор можно, упаковать их поплотнее тоже можно, но сколько они жрали при данной тактовой частоте - столько же и будут, а плотность мощности, напротив, только будет расти. Как результат, пришлось тактовую частоту "откатывать назад" - то все на 3 ГГц работали, а теперь снова в сотни мегагерц уползли. При этом питающее напряжение снизили, оно приблизилось к пороговому напряжению, но не ради троичности, а для снижения потребления одиночного транзистора, чтобы он тупо не сгорел!

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

В общем, КМОП-технология уже приползла в "зону троичности", но в мечтах о квантовых компьютерах, спинтронике, оптических процессорах и прочей экзотике этого как-то никто не заметил!

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


View Poll: КМОП троичная логика

Оставить комментарий

Предыдущие записи блогера :
Архив записей в блогах:
Опубликована инфографика потерь сирийской армии и ее союзников со стороны проиранских шиитских группировок в северной Хаме, где последние две недели шли боевые действия с целью обезопасить авиабазу Хмеймим. С учетом продолжающихся обстрелов авиабазы, цель очевидно не достигнута. Источник ...
Венедиктов задумал выкупить у «Газпрома» акции «Эха Москвы». В настоящее время 66 % всех акций ЗАО «Эхо Москвы» принадлежат Газпром-Медиа Холдинг, 34 % поделены между журналистами радиостанции, из них 18 % принадлежат лично Алексею Венедиктову. Но ранее ситуация была другая. Изначально уч ...
 Танцевали мы с Наташей под Dance Me to the End of Love и я подумал вот какую мысль: У многих пациентов Наташи присутствуют те или иные проблемы в отношениях в браке, и ее работа постоянно напоминает о хрупкости эмоциональной связи в браке. Сам брак - по видимому достаточно ...
 Весна. Приехали на дачу. Я, брат и жёны наши заряжёны. Солнышко греет, птички поют- всё, как положено… Машка с Дашкой разбирают вещи, продукты. А мы сидим на лавочке, курим и думаем, чего делать будем… Мангал под шашлык ставить ещё рано- пока ...
Кандидат юридических наук, профессор Российской академии правосудия, заслуженный юрист России, а с 2000 года – бессменный председатель Мосгорсуда Ольга Егорова сделала признание, которое по своей откровенности куда более серьезное, нежели признание в нетрадиционной сексуальное ориентацйии. ...