Я немного поигрался с порогами срабатывания "дефолтных" SPICE-моделей MOSFET-транзисторов,Lavr wrote:Как должен выглядеть троичный RS-триггер попробуем представить,Lavr wrote:Ну по той-же индукции у двоичного триггера полжения 0 и 1 ...,Shaos wrote:А что из себя должен представлять троичный триггер?
а у троичного - 1, 0, -1 ...
отталкиваясь от принципов функционирования двоичного RS-триггера,
с учётом специфики троичной функции инверсии.
Здесь главная особенность, что троичный логический "0" при операции
инверсии остается нулём.
При этом учитываем также, что работаем в троичной симметричной
(уравновешенной) системе, где логические уровни 1, 0, -1 передаются
по одному проводу и не требуют никаких трёхпроводных линий.
Теперь вспомним определение двоичного RS-триггера, а это у нас устройство
с обратными связями, и двумя устойчивыми состояниями (бистабильная
ячейка), способное к хранению информации в пределах одного бита (0
или 1), и способное скачком переходить из одного состояния в другое.
При этом выводы исторически получили названия: Set – установка триггера в
единичное состояние и ReSet – установка триггера в нулевое состояние (сброс).
Подразумевается также, что состояние триггера – это логическое состояние его
прямого выхода Q (Quit).
Схемотехнически обычно всегда присутствует и инверсный выход /Q, но в ряде
случаев он не выводится из корпуса микросхемы.
По активным уровням управляющих сигналов у нас есть RS-триггеры, /R/S-триггеры,
хотя нетрудно представить и смешанные версии, если ввести в схему дополнительные
инверторы.
Будем также учитывать одно из известных свойств двоичного RS-триггера: будучи
единожды установленным (сброшенным) активным управляющим сигналом
по соответствующему входу, триггер более не реагирует на изменение сигнала
на этом входе и может быть переведён в противоположное состояние только
активным сигналом по другому входу.
Теперь по аналогии представим себе троичный RS-триггер:
Сигнал троичной логической 1 на входе S устанавливает прямой выход Q в состояние
троичной логической 1 (P), то есть выполняет операцию Set_P. На инверсном выходе
при этом устанавливается троичная логическая -1 или N.
В дальнейшем изменение состояния на входе S в пределах 0…1 не влияет на состояние
выхода Q.
Сигнал троичной логической -1 на входе S устанавливает прямой выход Q в состояние
троичной логической -1 (N), то есть выполняет операцию Set_N. На инверсном
выходе при этом устанавливается троичная логическая 1 или P.
В дальнейшем изменение состояния на входе S в пределах 0…-1 не влияет на состояние
выхода Q, а вот переход к троичной логической 1 на входе S – снова вызовет переход -
Set_P.
Активный троичный логический уровень на входе R сбросит триггер в состояние Q = 0 и
/Q = 0, то есть, в состояние троичного логического 0.
Активный троичный логический уровень может быть тот, который будет удобен с точки
зрения схемотехники.
Это описание справедливо для троичного RS-триггера. Если же троичной логической 1 на
входе S устанавливается прямой выход Q в состояние троичной логической -1 (N), то это,
соответственно, будет троичный /R/S-триггер.
Мне кажется, такой подход в условиях троичной симметричной (уравновешенной) системы
не противоречив, и троичный RS-триггер не нуждается как в отдельных входах S+ и S-, так и в
трёх раздельных выходах, поскольку все три состояния одной позиции в нашей системе передаются
по одному проводу. А триггер, по сути, и есть ячейка для хранения состояния одной позиции.
Триггеры на трёх элементах с тремя выходами – это многоустойчивые триггеры, а вовсе не
троичные.
Если против такого позиционирования троичного RS-триггера возражений нет, то перейдём далее
к троичным D-триггерам ?
и "допилил" одну из ранее тестируемых мною здесь моделей троичного NAND до устойчивой работы. (к сожалению, не нашел я, где я это здесь показывал - были у меня там трабблы с асимметрией переключения)
Ёмкость 5 пФ на выходе - чисто облегчает расчет переходных процессов SPICE-движку, иначе он
заметно притормаживает рассчет в момент переключения.
Ну и поскольку появился у меня рабочий экземпляр троичного NAND, я сразу же решил попробовать
на них модель троичного 'RS-триттера', вокруг которого мы тут как-то активно ломали копья...

И троичный 'RS-триттер' заработал!


Здесь - всё, как мы привыкли: /S = -1, /R = 1 ==> Q = 1, /Q = -1.
И /S = 1, /R = -1 ==> Q = -1, /Q = 1, т.е. функции Set и Reset работают привычно.
А вот где начинаются отличия, делающие этот троичный 'RS-триттер' чем-то похожим на двоичный JK-триггер.
Во-первых, получается так, что "запрещенного состояния" у троичного 'RS-триттера' нет!

Если /S = -1, /R = -1 ==> Q = 1, /Q = 1, - т.е. Вы просили? Я так и сделал!

Если при включении /S = 1, /R = 1, "триттер" установится в Q = 0, /Q = 0.
Если "триттер" был установлен ранее /S = -1, /R = 1 ==> Q = 1, /Q = -1, а после установили /S = 1, /R = 1 ,
"триттер" хранит это состояние, но если подать /S = 1, /R = 0 , он сбросится в Q = 0, /Q = 0.
Состояние /S = 0, /R = 1 , при этом не влияет.
Если же "триттер" был установлен ранее /S = 1, /R = -1 ==> Q = -1, /Q = 1, а после установили /S = 1, /R = 1 ,
"триттер" также хранит это состояние, но если подать /S = 0, /R = 1 , он также сбросится в Q = 0, /Q = 0.
Состояние /S = 1, /R = 0 , при этом не влияет.
Ну... логика RS-триггера соблюдается по меньшей мере - будучи единожды включенным или сброшенным
по входам /S или /R, он больше не реагирует на состояние этого входа.
Ну и "троичный" нюанс - "триттер" можно переключить активным сигналом по противоположному
входу, а можно и установить в состояние неопределенности: Q = 0, /Q = 0, если
подать сигнал логического "0".