Борис Цирлин

Статья посвящена не столько рассмотрению собственно Г-триггера (С-элемент Малера) ключевого устройства асинхронной схемотехники, сколько иллюстрации на его примере различных приемов реализации устройства на КМОП транзисторах.

Введение

Определение Г-триггера дано в монографии “Апериодические автоматы” под ред. И. И. Варшавского, где было сказано, что это устройство, выходной сигнал которого изменяется только при равенстве 0 (1) всех входов. В этой статье для простоты будут рассмотрены примеры только двухвходовых Г-триггеров. Справедливости ради, надо сказать, что основоположник теории схем, не зависящих от скорости, предложил это устройство еще в 1955 году и в зарубежной, а зачастую и в отечественной литературе его называют С-элемент Маллера. В статье не затрагивается история создания Г‑триггера и не анализируются приоритеты его разработчиков; а сам Г‑триггеров используется только как иллюстрация приемов построения КМОП‑схем. Из приведенного определения Г-триггера следует следующее логическое уравнение, описывающее его работу:

\boldsymbol{Z = XY \vee Z (X \vee Y)}

Его реализация непосредственно по этому уравнению приведена на рис.1.

Рис.1
Рис.1

Дисциплина изменения значений входов Х и Y Г-триггера при переходе от нулевого набора к единичному и обратно, вообще говоря может быть произвольной. Однако обычно предполагают, что в первом случае значения входов только возрастают, а во втором - только убывают, а также, что нулевой (единичный) набор значений входов Г-триггера сохраняется до тех пор, пока значение выхода Z Г-триггера не станет равным 0 (1). С учетом этого замечания работоспособной будем называть такую реализацию Г-триггера, которая при любых величинах задержек ее элементов и при любых их соотношениях не допускает нарушений функционирования Г-триггера ни при каких возможных изменениях значений его входов. Дисциплину допустимых изменений значений входов Х и Y Г-триггера, абстрагируясь от той реальной cхемы в которой он функционирует, можно задать системой булевых уравнений :

\boldsymbol{X =\overline {Z}}\boldsymbol{Y =\overline {Z}}

Рассмотрим эти уравнения совместно с уравнением, описывающим поведение Г‑триггера, как единую систему. Тогда можно построить интерпретирующую схему (рис.2), в которой группа инверторов моделирует реальную внешнюю среду функционирования Г‑триггера.

Рис.2
Рис.2

Такая схема описывает все допустимые варианты изменения значений входов X и Y. После очередного переключения выхода Z значения входов могут изменяться в произвольные моменты времени — эти моменты определяются задержками соответствующих инверторов. Поскольку на величины задержек не накладывается никаких ограничений, допустимо даже такое изменение входов X и Y, при котором они обновляются непосредственно после переключения выхода Z: задержки инверторов могут принимать нулевые значения.

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

В статье “Обзор эквивалентных проблем реализации схем в базисе И‑НЕ, не зависящих от скорости” указанное условие признано достаточным; при этом сформулировано необходимое условие работоспособности и доказана невозможность такой реализации в базисе И‑НЕ. Для обоснования этих выводов в работе формализовано определение работоспособности, опирающееся на ряд понятий теории Малера.

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

Возбуждённый выход может перейти в устойчивое состояние двумя способами:

  1. путём изменения своего значения через время, определяемое его физической задержкой;

  2. за счёт изменения входного набора логической функции — тогда её значение приходит в соответствие с неизменившимся выходом элемента.Второй способ способен привести к нарушениям корректного функционирования схемы (например, к состязаниям), поэтому разработчики стремятся его избегать.

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

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

Необходимое и достаточное условие работоспособности реализации Г‑триггера в цитируемой статье сформулировано применительно к схеме, представленной на рис.2. При этом учитываются не только возможные нарушения полумодулярности схемы, но и ситуации, в которых значение выхода Z Г‑триггера перестаёт изменяться.

Для конкретного элемента выделяют два типа состояний:

  1. константное — если в любом достижимом из него состоянии схемы данный элемент остаётся устойчивым;

  2. живое — если ни одно из достижимых из него состояний не является константным для этого элемента.

Реализация Г‑триггера считается работоспособной тогда и только тогда, когда в схеме, образованной замыканием выхода Г‑триггера с каждым его входом через отдельный инвертор (рис.2), выполняются следующие условия:

  1. существует состояние, в котором все инверторы находятся в возбуждённом состоянии и схема является полумодулярной относительно этого состояния;

  2. это состояние является живым для выходного элемента реализации Г‑триггера.

С учетом этих определений и рассмотрим реализацию Г-триггеров на логических элементах и на КМОП транзисторах.

Г-триггеры на логических элементах

Начнем опять с рис.1. Представленные теоретические модели предполагают такое устройство логического элемента, при котором он содержит безынерционную логическую составляющую мгновенно вычисляющую булеву функцию реализуемую элементом и произвольной величины задержку, с которой результат вычисления поступает на выход. Аналогией может служить последовательное включение элемента И-ИЛИ-НЕ и инвертора на рисунке, правда, здесь каждый элемент устроен описанным образом. Насколько реальные логические элементы соответствуют этой гипотезе здесь рассматриваться не будет, а покажем к чему может привести ее откровенное отрицание.

Рис.3
Рис.3

На рис.3 показана неработоспособная реализация Г-триггера (выделена красным контуром), полученная в соответствии с эквивалентным преобразованием его логического уравнения:

\boldsymbol{Z= XY \vee Z (X \vee Y)= XY \vee  XZ \vee  YZ = \overline{\overline{XY \vee  XZ \vee  YZ}} = \overline{\overline{XY} \cdot \overline{XZ} \cdot \overline{YZ}}}

Рассмотрим пример ее неработоспособности. Допустим, в ходе функционирования на выходах правого и среднего элементов ее нижнего яруса застряло значение 1 — например, из-за повышенной задержки этих элементов. Напомним, что допустимы любые величины этих задержек. И пусть такое же значение остаётся неизменным на выходе инвертора Y. Тогда остальные три элемента схемы образуют генератор (описанный в одноимённой статье). В результате значение выхода Z будет циклически изменяться между 0 и 1 при фиксированном значении на одном из входов схемы, что является нарушением алгоритма работы Г‑триггера.

Схема, выделенная красным контуром, по сути реализует элемент И‑ИЛИ с нарушением принятого допущения о задержках - отсюда и возникает описанная коллизия. Однако такое нарушение не всегда делает Г‑триггер неработоспособным: иначе было бы невозможно создавать корректные реализации на логических элементах. При этом в качестве последних выбирают такие, в которых выполнение допущения о задержках кажется очевидным. Как правило это И-НЕ, ИЛИ-НЕ и инверторы, хотя встречаются более экзотические наборы.

Рис.4
Рис.4

Образец такой работоспособной реализации из авт. свидетельства СССР № 1324106 (рис.4) не сводится к уравнению Г‑триггера, как в предыдущем случае, хотя бы потому, что выход Z не подключён ко входам элементов схемы.

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

Г-триггеры на КМОП транзисторах

Для построения таких схем можно использовать стандартные КМОП логические элементы. При этом оптимальное решение требует компромисса между сложностью отдельных элементов и их общим количеством. Так, реализация схемы на рис.4 требует 30 КМОП‑транзисторов, тогда как схема на базе рис.1 - всего 12 (она приведена на рис.5).

Рис.5
Рис.5

Характерная особенность этой схемы — симметрия p‑сети (верхняя часть) и n‑сети (нижняя часть). Она обусловлена тем, что уравнение для инверсии Z, полученное эквивалентными преобразованиями исходного логического уравнения Г‑триггера,

\boldsymbol{\overline{Z} = \overline{Z}(\overline{X} + \overline{Y}) + \overline{X}\overline{Y}}

совпадает с исходным с точностью до инверсий. Такая симметрия имеет место для многих КМОП‑реализаций Г‑триггера. Если рис.5 использует традиционную параллельно-последовательную реализацию логической функции Г-триггера, то рис.6 - мостовую, что, правда, не дает этой схеме никаких преимуществ перед предыдущей.

Рис.6
Рис.6

Эффективные с точки зрения экономии числа КМОП‑транзисторов реализации Г‑триггера основаны на эвристиках, отклоняющихся от исходного логического уравнения, но сохраняющих алгоритм работы устройства.

Рис.7
Рис.7

К ним относится схема рис.7, содержащая всего 8 КМОП‑транзисторов. В ней выделяют входную цепь - 4 последовательно включённых транзистора (слева), затворы которых подключены к входам X и Y Г‑триггера, и ячейку памяти (обведена красным контуром), из двух инверторов: выходного (верхний), подключенного к выходу Z, и обратной связи (нижний).

Средняя точка входной цепи подключена ко входу выходного инвертора и формирует значение выхода Z в зависимости от состояния входов: при

\boldsymbol{X = Y}

на выходе Z устанавливается значение, совпадающее с общим уровнем на входах (0 или 1). При

\boldsymbol{{X \neq Y}}

входная цепь разорвана, и состояние на входе выходного инвертора не определяется входной цепью, но за счёт инвертора обратной связи сохраняется предыдущее напряжение на средней точке, а следовательно, и на выходе Z. Это соответствует корректному алгоритму функционирования Г‑триггера.

Однако схема не лишена недостатков. При формировании очередного значения входная цепь сталкивается с противодействием инвертора обратной связи. Геометрия КМОП‑транзисторов оптимизирована в пользу входной цепи, благодаря чему она побеждает в этом конфликте, но в момент переключения инверторов возникает короткое замыкание через открытые транзисторы входной цепи и инвертора обратной связи — это снижает энергоэффективность КМОП‑схемы.

Формально при значительной задержке инвертора обратной связи имеет место нарушение полумодулярности: его выход, находясь в возбуждённом состоянии, переходит в устойчивое состояние без изменения значения. Однако применительно к данному элементу понятие “возбуждённое состояние” неприменимо: значение выхода изменяется принудительно ещё до смены значения на входе.

Поскольку подобные эффекты типичны для КМОП‑схем, вопрос полумодулярности для них здесь не рассматривается.

Рис.8
Рис.8

Схема рис.8, созданная на основе авторского свидетельства СССР № 1411934, демонстрирует подход, в котором недостаток (короткое замыкание) не только допускается, но и сознательно используется, что позволяет построить реализацию Г‑триггера всего из 5 КМОП транзисторов.

По сути, схема представляет собой элемент 2ИЛИ‑НЕ с p‑канальным проходным транзистором, соединяющим входы этого элемента. Затвор транзистора подключён к выходу элемента, реализуя необходимую Г‑триггеру обратную связь.

На выходе элемента ИЛИ‑НЕ уровень 1 формируется при нулевых значениях на обоих входах. В этот момент открывается проходной транзистор, замыкающий входы элемента; после этого ни один из входов не может перейти в состояние 1 без одновременного перехода в это состояние и другого входа. При единичных значениях на обоих входах на выходе элемента 2ИЛИ‑НЕ устанавливается уровень 0, проходной транзистор закрывается, и уровень 1 на выходе 2ИЛИ-НЕ как и положено появится только после того, как на обоих входах снова установится 0.

Таким образом реализуется корректный алгоритм работы Г-триггера, хотя его выход является инверсным по сравнению с исходным логическим уравнением. А вот то, что входы в одной из фаз работы мешая друг другу вызывают короткое замыкание - это существенный недостаток этой схемы.

Нетрадиционный прием КМОП реализации

Рассмотренные реализации Г‑триггера можно разделить на две группы: классические - построенные по его логическому уравнению (рис.5 и рис.6), использующие по 12 КМОП‑транзисторов на каждую схему, и более экономичные с эвристической структурой, не связанной с этим уравнением, но имеющие определённые недостатки.

Естественно стремление упростить классику, не привнося в неё недостатки эвристических решений. “Лишним” элементом в обеих классических схемах представляется инвертор: он формирует сигнал Z обратной связи в соответствии с логическим уравнением Г‑триггера. Если его удалить, может использоваться лишь инверсия этого сигнала. При этом для сохранения функционала схемы, необходимо поменять местами NMOS‑ и PMOS‑транзисторы, на затворы которых поступает этот сигнал, - то есть заменить их на транзисторы противоположного типа. В результате получаются схемы, приведённые на рис.9,а и рис.9,б: каждая из них содержит по 10 КМОП‑транзисторов.

Рис.9
Рис.9

Разумеется, такое схемное “улучшение” не обошлось без появления иных недостатков. Как правило, транзисторы‑“чужаки” искажают выходной сигнал схемы на величину своего порогового напряжения (напряжение порог‑исток). Более того, если такой искаженный сигнал, поступает на затвор “чужака”, то в результате лавинообразного накопления искажения, выходной сигнал может оказаться в средней точке между уровнями 0 и 1.

В рассматриваемом случае значение выхода схемы устанавливается через родные цепи n‑ и p‑сетей, а “чужаки” срабатывают уже при наличии на стоке корректного напряжения. Аналогичная ситуация уже рассматривалась для инвертора обратной связи в схеме рис.7.

Заметим, схемы рис.8, рис.9,а и рис.9,б имеют набольшее быстродействие среди приведенных КМОП реализаций, что, впрочем, и объяснимо,- они вырабатывают инверсное значение выходного сигнала Г-триггера.

Заключение

Все КМОП реализации, приведённые в статье (кроме двух последних - рис.9), имеют знаменитых авторов и в литературе используются с соответствующими названиями, которые здесь не приводятся, чтобы не отвлекаться на историю предмета. Целью было проанализировать КМОП‑реализации с точки зрения их полумодулярности. При этом оказалось, что такой важный термин теории Маллера, как “возбуждённый выход элемента”, в этой схемотехнике зачастую неприменим и на данном этапе такое направление оказалось бесперспективным.

Тем не менее проделанная работа не напрасна: предложена не только пара новых схем Г‑триггеров (как раз рис.9), но и нетрадиционный приём синтеза - замена NMOS‑ и PMOS‑транзисторов на транзисторы противоположного типа.

Более того, если можно заменить один транзистор, то отчего не заменить и все? Эта операция фактически сводится к обмену местами полюсов питания схемы. При этом, если исходная схема реализует некую логическую функцию, то после такой замены будет реализована её инверсия.

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

Характерно, что такие опыты уже проводились - правда, на самой простой КМОП‑схеме, инверторе (рис.10,а и рис.10,б).

Рис.10
Рис.10

Выяснилось, что полученный в результате повторитель описан в патенте US5929669A -“Complementary push‑pull CMOS source follower analog video buffer”.После такого статья не могла быть не опубликована.