Классификация всех унарных троичных логических элементов

топ 100 блогов nabbla106.08.2025 Ранее я писал, что унарных двоичных элементов, т.е элементов с одним входом и одним выходом, без какой-либо памяти, всего 4 (всегда "1", всегда "0", буфер и инвертор), причём "нетривиальный" всего один - это инвертор. А вот троичных заметно больше - 27 штук! И тогда я даже затруднился перечислить их всех и не мог сказать, все ли из них "полезные", и можем ли мы их все синтезировать?

Но оказалось, что всё не так сложно - для начала их все можно разбить на 3 группы, из 3, 6 и 18 элементов. Самую крупную группу из 18 - ещё на 3, и получившиеся 4 подгруппы по 6 в каждой - ещё пополам, на "прямые" и "инверсные". Как это лучше всего развернуть на плоскости - не знаю, пока что расположил 3×9, это больше для экрана смартфона.

Классификация всех унарных троичных логических элементов


Под катом некоторые пояснения, моё страшное недовольство вордом и бонусная Марта.


В первую очередь мы выбираем, сколько различных значений может принимать выход элемента при всех 3 возможных входах. Если значение всего одно - то это и унарным элементом не очень-то является, скорее это нуль-арный элемент, т.е элемент БЕЗ ВХОДОВ, только с выходом. Или, говоря русским языком, это КОНСТАНТА. Таковых у нас будет три: ЛОЖЬ, ВОЗМОЖНО и ИСТИНА. Или "-1", 0, 1. Вещь, безусловно, полезная, реализация очень простая - никаких транзисторов не нужно и в помине, надо просто к соответствующему источнику питания подсоединиться.

Следующим рассмотрим вариант, когда на выходе элемента будет все три возможных значения: "-1", 0, 1. Тогда можно сказать, что элемент "перемешивает", переставляет местами входные значения. Всего таких перестановок возможно 3! = 6. Три из них мы уже рассматривали: это Девушка, Генерал и Дипломат. Самые полезные элементы, на мой взгляд, Генерал, он же буферный элемент - основа для построения вообще всей последовательной логики. Из буфера и аналогового переключателя получается прозрачный D-триггер (latch), а из двух таких - непрозрачный (flip-flop, или просто ff), со срабатыванием по фронту или спаду (см зазеркалье отрицательных фронтов). Из "девушки" получается троичный счётчик "вверх", из "дипломата" - троичный счётчик "вниз".

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

Так мы рассмотрели 9 элементов из 27. Остаётся 18, они все попадают в категорию "два различных выхода из трёх". И тут же можно эту группу разбить на 3 поменьше:
- выходы "-1" и 1, тогда как 0 отсутствует,
- выходы 0 и 1, тогда как "-1" отсутствует,
- выходы "-1" и 0, тогда как 1 отсутствует.

Они очень схожи между собой, у них у всех "двоичный" выход, весь вопрос в выборе двух напряжений. Т.е масштабированием и смещением одна в другую переводится.

Элемент полностью можно охарактеризовать тремя битами: первый бит показывает реакцию на "1" на входе, второй бит - реакцию на "0", третий - реакцию на "-1". И просто пересчитать их как двоичные числа:
000
001
010
011
100
101
110
111

Получается 8 штук, только вот 000 и 111 имеют лишь одно значение на выходе, такой вариант мы уже рассмотрели ранее в группе "КОНСТАНТЫ". Так что нужно рассмотреть 6 оставшихся.

На рисунке показан логичный способ их пересчитать: один элемент выдаёт высокий уровень только на "-1" и низкий уровень на всё остальное, это мы записываем как X == -1. Второй выдаёт высокий уровень только на 0, третий - только на 1. И ещё три элемента - инверсных, выдают высокий уровень на "не равно".

Именно в таком виде они и будут использоваться для дешифровки адреса. Т.е захочется мне сделать троичный процессор по архитектуре TTA (Transport-triggered architecture), где команда всего одна, MOV DEST, SRC (взять данные с адреса SRC и поместить их по адресу DEST), только вот адреса не так просты - это не всё память, а ещё АЛУ, Program Counter (запись по его адресу вызовет безусловный прыжок, а запись по "соседнему" адресу - условный, только если один из флагов соответствует) и пр. Каждый модуль должен будет определять, не его ли адрес выбран в данный момент. Такая "проверка адреса" и будет сделана из нескольких унарных элементов, проверяющих каждый свой разряд, а уже их выходы будут объединяться по И, а может по ИЛИ, уж что выйдет удобнее. Тут, уж извините, до последнего держать троичность я не собираюсь - модуль или выбран, или не выбран. Скорее всего, здесь наиболее подходящей будет группа с максимальным размахом, т.е выдающая "-1" или 1. Выходы можно будет с чистой совестью подключить к стандартной двоичной логике - и они вполне подружатся.

Реализуются эти 18 элементов достаточно просто - некоторые на 1 транзисторе, но есть и на 4 транзисторах, например, "X==0". Тут нужно два чувствительных транзистора верхней ветви, последовательно соединённых, подключённых к X и ~X, чтобы только на нуле открылись оба. И ещё два малой чувствительности в "нижней ветви", один к X и второй к ~X, чтобы они надёжно подсоединяли выход к "-1" в ответ на "-1" или 1.

Вот, собственно, и всё. Все 27 синтезируемы, и, как минимум 15 вполне полезны.

Думал в пол-пинка эту табличку нарисовать в Ms Word, и поначалу действительно пошло шустро. Включил сетку, и начал по клеточкам все эти линии рисовать. Но когда где-то половину закончил, а на лист А4 оно перестало влезать, я сменил формат на А3 и то ли поэтому, то ли само по себе, вдруг сетка нахрен куда-то съехала и вообще чуть ли не перестала быть квадратной. И назад пытался формат вернуть, и выключал-включал программу, жмакал undo - ничего не помогло, съехала и всё тут. Ещё и заметил, что эти линии "притягиваются" не только к сетке, но и к каждому кончику пунктирной линии, причём там две точки очень близко, и хрен выберешь правильную - в последний момент курсор дрогнет. Так что где-то горизонтальные линии перестали таковыми быть.

Ну, худо-бедно выправил, "сойдёт для сельской местности". А затем начался новый квест: А как же теперь эту хрень сохранить в виде картинки??? Тут вообще сохранение во что угодно, кроме .docx, оказалось сопряжено с непонятными глюками. В .pdf - сжираются "минус единицы", т.е единицы с черточкой сверху. Не пойдёт... Просто всё выделить, Ctrl-C и Ctrl-V в paint - обрезает низ. То же самое, но в paint.net - пишет, недостаточно памяти. То же самое, но в Inkscape - вставляет, притом в векторном виде, но НЕ ВСЁ - часть прямых куда-то исчезает! В итоге сохранил сначала в старый формат .doc, а из него уже нормально преобразовалось в .pdf. Но потерь избежать не удалось - та самая "минус единица" растеризовалась с недостаточным разрешением, кончик единицы как-то "поблек".

В общем, последний раз я такой фигнёй страдал - в следующий раз думаю в Inkscape такое рисовать. Хотя зачастую мне быстрее программку наваять, которая через старый добрый GDI (все эти Pen, Brush, Rectangle, Fill, Ellipse и пр) чего надо нарисует и в png сохранит.

Обещанная Марта, сегодняшние фото:
Классификация всех унарных троичных логических элементов


Классификация всех унарных троичных логических элементов




Очень прошу коллективный разум придумать более ёмкие названия для антидипломата, антигенерала и антидевушки!

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

Архив записей в блогах:
«Я хочу драться, меня вынуждают к этому любовь и моя внутренняя религия. Я не могу оставаться в стороне и спокойно смотреть на это». Антуан де Сент-Экзюпери Он летал за ...
На пресс-конференции Владимира Путина попросили прокомментировать слухи о восстановлении памятников лидерам СССР в Москве. Президент привел пример ...
Был сегодня в магазине ИКЕА и накупил там кучу контейнеров Samla. Буду бороться с бардаком. :) Раньше у IKEA был только один вид дешёвых контейнеров - Gles ( http://ammo1.livejournal.com/140572.html ). Я даже специально проектировал мебель под размер этих контейнеров, в частности шк ...
Похоже на то, что на полях фермеров могут появляться не только загадочные круги (которые на поверку оказываются не столь уж и загадочными). Семья канадских фермеров создала на своем поле самый большой QR-код в мире, что было подтверждено ...
Как сообщило 12 мая 2020 года ООО «Судостроительный комплекс «Звезда» (Большой Камень, Приморский край), со стапеля судостроительного комплекса «Звезда» спущен на воду первый российский танкер типа «Афрамакс» «Владимир Мономах». Спущенный на воду головной строящийся на ...