Почему вентили И-НЕ используются для создания вентилей И в компьютерах?

Почему это стандарт для вентилей И

введите описание изображения здесь

когда это можно было сделать с двумя полевыми транзисторами и резистором вместо этого?введите описание изображения здесь

И-НЕ (и ИЛИ-НЕ) функционально завершены , то есть любая логическая функция может быть реализована с использованием только И-НЕ (или ИЛИ-НЕ). Что делает его очень удобным унифицированным строительным блоком для чего угодно. Не уверен, что это единственная (и основная) причина.
Технически вы могли бы сделать то, что предлагаете, если вы помните, что В О ЧАС (выходной высокий уровень) будет уменьшен примерно на пороговое напряжение MOSFET. Представьте, что вы держите это в уме с 1 миллиардом транзисторов... - Вам нужно помнить об этом, чтобы не соединять их в цепочку.
В контексте конструкции ИС резисторы физически больше, чем транзисторы. А рассеяние, вызванное резисторами, при проектировании ИС высокой плотности делает резисторы очень нежелательными в качестве компонентов логических элементов.
@ЕвгенийШ. Я не думаю, что функциональная полнота сама по себе была бы причиной для выбора пути NAND — если бы дополнительные транзисторы были значительными затратами, тогда было бы выгодно использовать менее унифицированный, но лучше настроенный подход. Однако на самом деле использовать NAND/NOR довольно практично : зачастую инверторы просто не нужны для получения логики И; просто Де Морган - переверните значение того, что 1 и 0 означают для следующих ворот.
дисбаланс скорости между движением вверх и вниз
Здесь, кажется, два вопроса. «Почему бы нам не использовать подтягивающие резисторы вместо двух дополнительных транзисторов, например, в затворе И-Н?» и «Почему мы используем дополнительные два транзистора для инвертирования вместо создания неинвертирующего затвора в первую очередь?»
Потому что рассеивание статической мощности ужасно. Вот почему от этой (рациональной логики) отказались в 1970-х годах. Тогда просто представьте себе это на микросхеме с миллиардом транзисторов.
@smci: Можно было бы заменить нагрузку на днище парой параллельных PFET. Это решило бы проблему рассеяния статического электричества, но выход И был бы слабее, чем входы.

Ответы (8)

Чтобы получить неинвертирующую операцию для логики (т. е. И или ИЛИ по сравнению с НЕ-И или ИЛИ-НЕ), вам необходимо использовать транзисторы в режиме с общим стоком, также известном как режим «истокового повторителя».

Среди проблем с этим режимом на логику:

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

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

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

В качестве бонуса вентили И-НЕ и ИЛИ-НЕ являются «функционально завершенными», что означает, что вы можете построить любую логическую функцию вообще (включая элементы хранения, такие как защелки и триггеры) из всех вентилей И-НЕ или всех вентилей ИЛИ-НЕ.


1 Чтобы быть точным, логические семейства, которые используют напряжения в качестве логических состояний. Сюда входят RTL, DTL, TTL, PMOS, NMOS и CMOS. Семейства логики токового режима, такие как ECL , действительно используют комбинацию эмиттерных повторителей и транзисторов с общей базой для достижения тех же целей, избегая при этом насыщения (для скорости).

Интересным побочным вопросом было бы, почему мы не используем это для всех остальных ворот.
@Joshua: я не уверен, к чему относится «это», но если это логика текущего режима, то это во многом связано с относительно огромным энергопотреблением на шлюз в установившемся режиме.
@DaveTweed Я полагаю, что Джошуа имел в виду следующее: делая то, что предлагает OP, имея 2 NMOS в качестве повторителя напряжения (без усиления по напряжению), и на следующем этапе любой реализуемой логики вы используете высокое усиление по напряжению. Таким образом, вы чередуете «повторитель напряжения» / «какой-то инвертор где-то». - Вопрос Джошуа заключается в том, почему эта конструкция (чередующийся повторитель/инвертор) специально не используется. - Возможно, ваш комментарий направлен против этого, у меня возникли трудности с пониманием/обоснованием вашего ответа.
@HarrySvensson: Возможно, ты прав. Я также не был уверен, что Джошуа имел в виду под «каждыми вторыми воротами», но решил рискнуть в темноте. Поскольку он так и не вернулся, чтобы уточнить, мы никогда не узнаем наверняка.
@ Джошуа Я правильно перевел твой комментарий?
@HarrySvensson Вы это сделали, и ДэйвТвид уже сказал, что с этим не так.

То, что вы описываете, это логика PMOS . Он имеет несколько существенных недостатков по сравнению с CMOS:

  • Если значение резистора низкое, затвор будет потреблять значительное количество статической энергии, когда затвор активен. Затворы CMOS практически не потребляют энергии, когда они не переключаются активно.

  • Если значение резистора велико, затвор медленно выключается, потому что емкость любых затворов, управляемых выходом, должна разряжаться через резистор. Кроме того, резистор с большим номиналом, скорее всего, займет больше места, чем набор комплементарных транзисторов.

  • По причинам, связанным с процессом, PMOS менее эффективна, чем обратная — логика NMOS .

Нет, ОП показывает N-канальные транзисторы. Не получается совсем по другой причине.
@DaveTweed Я работал, предполагая, что часть была ошибкой наброска. Если вы хотите объяснить, в чем они ошиблись, в отдельном ответе, это тоже может быть полезно.
Это все еще должно было быть очевидным - если бы это были транзисторы с P-каналом, они реализовали бы функцию НЕ-ИЛИ, а не И.
Небольшая придирка, просто я одержим, это больше связано с физикой, чем с процессом, подвижность дырок ниже, чем подвижность электронов.
Количество голосов, которые получил этот ответ, меня сильно смущает.
@HarrySvensson, возможно, синдром горячего сетевого вопроса. Поток пользователей всего сайта со 101 представителем, которые плохо разбираются в предметной области и могут только голосовать за , а не против. На таком маленьком сайте, как этот, сильно искажается статистика.

Причина, о которой, я думаю, еще никто не упомянул: Технологические ограничения:

  1. Резисторы на микросхеме массивны по сравнению с транзисторами. Чтобы получить приличное значение, мы говорим на порядки больше, чем у самых маленьких транзисторов. Другими словами, наряду со всеми другими преимуществами, которые вы получаете с правильной CMOS (статический ток, уровни возбуждения, размах выходного сигнала), она также намного дешевле.

  2. Структурирование: Транзисторы в логике могут быть такими маленькими, потому что они структурированы повторяющимся образом. Это также позволяет им получать более высокие урожаи и более стабильную производительность. Добавление резисторов разрушит это.

  3. Емкость: ограничением скорости в логической системе является емкость следующего каскада. Чем больше емкость, тем медленнее (меньше производительность) или требуется большая мощность привода (больше транзисторы, больше площадь, больше статический ток, больше потребляемая мощность, больше емкость, представленная на предыдущем этапе). Большой резистор, вероятно, даст вам большую емкость для зарядки, поскольку он занимает физически большую площадь. Это может повредить производительности.

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

Транзисторно-резисторная логика - это область знаний. Свойства логических элементов, основанных на резисторах, сильно отличаются от свойств элементов, использующих транзисторы. Во-первых, подтягивающие резисторы, которые находятся в высоком состоянии, постоянно рассеивают мощность. Это может быть проблемой для аккумуляторных батарей или конструкций с высокой плотностью размещения. То же самое применимо и в обратном порядке (для опускания вниз).

Еще одна область, где есть большая разница, — это скорость и сила драйва. Двухтактная структура выхода, используемая в CMOS, может быстро переключаться без рассеивания мощности в статике.

Обратите внимание, что нарисованная вами схема вообще не будет работать. Вы не можете поместить NMOS в верхнюю ветвь, если входное напряжение не выше, чем VCC. Если на выходе вообще большая нагрузка, ваша схема не сможет управлять где-либо рядом с VCC. Он может быть даже недостаточно высоким, чтобы некоторые логические вентили признали его «высоким».

Это не просто придирка. Как оказалось, очень сложно построить что-то, что переключает рельсы на рельсы за один этап, если только это не инвертирование по своей природе (как NAND и NOR). И это настоящая причина, по которой логические элементы И используют И-НЕ, а затем НЕ (инвертор). Никто в мире не знает способа сделать КМОП общего назначения с вентилем менее чем из 6 транзисторов. То же самое относится и к ИЛИ.

В 5-вольтовых NMOS-устройствах нередко коммутируют сигналы верхнего плеча с помощью NMOS-транзисторов без источника смещения затвора выше VDD. Порог переключения ниже 2,4 вольта, поэтому можно позволить себе слабую подтяжку, которая поднимает узел до 4 вольт, а затем использовать его для управления затвором проходного транзистора. Динамические регистры сдвига, содержащиеся в чипе TIA Atari 2600, реализованы таким образом.
Спасибо, @supercat. Я этого не знал. Хотя ограничений конечно много. И это не меняет того факта, что схема OP не является жизнеспособным логическим элементом И общего назначения. Однако это может работать для нагрузок, которым не нужен вход рядом с VCC.

Преимущества использования конструкции CMOS многочисленны:

  1. В логике NMOS, которую вы описали, если выход высокий (оба входа высокие), существует прямой (резистивный) путь для протекания тока. Таким образом, в этом случае ворота будут потреблять большое количество энергии (V^2/R) даже в устойчивом состоянии. Однако в КМОП ток может течь только тогда, когда все 4 транзистора открыты (то есть когда затвор переключается).
  2. Как правило, сопротивления очень трудно получить на кремнии, и они занимают много места в микросхеме. Также практически невозможно получить точные значения сопротивления.
  3. В логике NMOS выходное напряжение не может достичь своего максимального значения (+5 В), потому что после достижения некоторого минимального значения транзисторы начнут отключаться (следовательно, отключая ветвь зарядки). Это напрямую приводит к уменьшению запаса шума.
  4. Логику CMOS можно очень легко использовать для создания любой схемы с очень небольшим количеством транзисторов, потребляющей мало энергии и для работы на высоких скоростях. Таким образом, выполнение части схемы в виде NMOS (с резистивной нагрузкой) очень громоздко и неэффективно.

Таким образом, вентиль И-НЕ, за которым следует инвертор, используется для разработки вентиля И.

Пункт № 1 прекрасно показывает, почему NMOS требует большей мощности, чем CMOS.

Основная причина в логике TTL, и я бы предположил, что в большинстве семейств логики, заключается в том, что элемент усиления является инвертирующим. Чтобы иметь неинвертирующий выход с хорошими характеристиками привода, требуется дополнительный инвертор.

Этот инвертор плохая вещь.

  • Он использует силу
  • Это замедляет логическую функцию
  • Обычно вы не заботитесь об инверсии, а иногда она вам нужна.

Поскольку мы обычно боремся за скорость с дискретными гейтами (или мы боролись, когда они были единственным выбором), инвертирующие гейты правили днем. Были доступны неинвертирующие вентили (сравните 7400 с 7408).

Основным примером этого является вентиль « и-или-инверт» . Для типичных чисел TTL задержка распространения такая же, как у NAND и NOR, но включает два уровня логики.

Построение И из И-НЕ позволяет использовать минимальный размер затвора для логики и размер двух (и только двух) транзисторов в инверторе для управления линией. Это максимизирует скорость и минимизирует потери мощности за счет лишь немного большей площади, используемой для дополнительных транзисторов (с учетом размера резистора, необходимого для управления линией в предполагаемом приложении).

Кроме того, поделюсь мудростью, которую я усвоил в колледже (давным-давно, в далекой-далекой галактике...): Однажды нам понравилась презентация о логике вентильной матрицы. В конце студент спросил, почему инженер должен заботиться о минимизации количества используемых вентилей И-НЕ, если все эти вентили И-НЕ изначально были на чипе? Ответ ведущего запомнился мне на 30 лет: потому что если не мы, то сделают наши конкуренты.

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

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

Обратите внимание, что даже если у кого-то есть как NMOS, так и PMOS-транзисторы, и вы хотите построить вентиль AND со слабым выходом, следует построить вентиль способом, аналогичным вентилю CMOS NOR, но инвертируя транзисторы NMOS и PMOS, чтобы избежать рассеивание статической мощности. Резисторы очень дороги, поэтому их следует избегать без крайней необходимости.

Однако момент, который не упоминался в других ответах, заключается в том, что инвертирующий вентиль может содержать смесь последовательных и параллельных выходов. Например, можно иметь практичный комплексный вентиль, который вычисляет «не ((X и Y) или (X и Z) или (Y и Z))», используя только один уровень инверсии. Хотя нецелесообразно иметь «И», который подает свой выход в несколько мест в схеме, можно включить логический элемент «И» на один или несколько входов вентиля «ИЛИ» или логический элемент «ИЛИ» на один или несколько входов. больше входов ворот «И-НЕ».