Настоящий однофазный триггер на базе тактового генератора

Кто-нибудь может подробно объяснить, как работают настоящие однофазные часы ниже?
Мне нужно хорошо это понимать, чтобы я мог спроектировать его с использованием технологии CMOS и знать, как определить размер W/L для каждого МОП-транзистора.

Ссылка: здесь , в разделе Edge-triggered dynamic D storage element.

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

Почему бы вам не смоделировать это в LTSpice (бесплатно)?
Я уже создал этот D-триггер и сделал сдвиговый регистр, но выходной сигнал сдвигового регистра перекрывается. Поэтому мне нужно сначала понять, как работает этот D-триггер. Я не понимаю, как это работает, просто симулируя. Если у меня есть базовые знания об этом, то моделирование может быть полезным. Однако этот тип флип-флопа для меня совершенно новый, поэтому он не помогает.
подробное объяснение дано здесь. ece.ncsu.edu/asic/ece733/2012/docs/FlipFlops.pdf Страницы 28–30 Внимательно записывайте проблемы на стр. 31.
@anhnha Это не нулевое время удержания, поэтому между этапами требуется некоторая логика, чтобы дать задержку между флопами. Обычный сдвиговый регистр соединит Q с D лишь с небольшой задержкой от выходного инвертора.
Обратите внимание на короткое если р ¯ утверждается в то время как Вопрос ¯ снижается из-за предыдущей ступени.
Обратите внимание, что этот вопрос уже хорошо документирован в Интернете, так что не является ли он излишним? Какие дополнительные параметры вам нужно определить, чтобы сделать этот «действительно» хороший вопрос для CMOS FF, запускаемого True edge

Ответы (2)

Это интересный дизайн, но он выглядит очень чувствительным к используемому процессу. По сути, это динамическая ячейка ОЗУ, поэтому состояние сохраняется в виде заряда на узле, помеченном !Q, с использованием емкостей затворов M7 и M12. Необычно то, что он также кратковременно накапливает заряд в двух других местах: у ворот M5 и у ворот M3 и M10.

Назовем каждый столбец транзисторов на схеме каскадом, например, каскад 1 состоит из M1, M4 и M8.

Предположим, что вход часов равен 0, а вход данных также равен 0. В этом случае выход этапа 1 равен 1, выход этапа 2 равен 1, а выход этапа 3 является высокоимпедансным, что означает, что его выход равен 1. не подключен ни к одной шине питания. В результате заряд на !Q не меняется. Теперь предположим, что тактовый сигнал становится высоким. Это приводит к тому, что выход каскада 1 становится высокоимпедансным, поэтому он остается равным 1 из-за заряда, накопленного на затворе M5. Стадия 2 теперь выводит 0, поэтому стадия 3 выводит 1, что приводит к сохранению заряда в !Q, если это еще не было. Значение данных зафиксировано.

Вместо этого предположим, что вход часов равен 0, а вход данных равен 1. В этом случае выход этапа 1 равен 0, выход этапа 2 равен 1, а выход этапа 3 является высокоимпедансным. В результате заряд на !Q не меняется. Теперь предположим, что тактовый сигнал становится высоким. Стадия 1 по-прежнему выдает 0, поэтому выход каскада 2 имеет высокий импеданс, что означает, что он остается равным 1 из-за заряда, накопленного на затворах M3 и M10. Стадия 3 теперь выводит 0, что удаляет любой заряд, хранящийся в !Q.

Этап 4 — это сброс: когда на !R устанавливается низкий уровень, включается M11, гарантируя, что !Q заряжен. Стадия 5 является инвертором, так что Q будет 1, когда !Q равно 0, и наоборот. Он также действует как буфер, позволяя потреблять ток от Q, не влияя на заряд на !Q.

Умный аспект этой конструкции и причина ее сложности заключается в том, что она срабатывает по фронту: изменение на D, когда тактовый сигнал находится на высоком уровне, не влияет на выход: предположим, что D равно 0, а тактовый сигнал равен 1, а затем D на 1. Это приведет к тому, что выход 1-го каскада станет равным 0, что приведет к тому, что 2-й каскад станет высокоимпедансным, поэтому его выход 0 будет сохранен за счет емкости, а выход 3-го каскада не изменится. Точно так же, если D равен 1, а часы равны 1, а затем D переходит в 0, ступень 1 станет высокоимпедансной, сохраняя на своем выходе 0, поэтому последующие стадии не изменятся.

Спасибо за подробный ответ! Я думаю, что проблема здесь. В вашем анализе данные не меняются, пока часы находятся на высоком уровне. Что произойдет, если вход D изменится с 0 на 1, пока часы находятся на высоком уровне? Выход Q также изменяется, поскольку изменяется S1.
@anhnha На самом деле это срабатывает только по краю: я отредактировал свой ответ, указав некоторые подробности того, как это работает. По сути, изменение D при высоком уровне тактового сигнала приводит к тому, что некоторые узлы становятся высокоимпедансными, но они сохраняют свое состояние из-за емкости затвора.
Спасибо. Я вижу это сейчас. Для случая D изменяется от 0 до 1, пока часы находятся на высоком уровне, выход первого каскада изменится, но выход второго каскада не изменится. Это сохранит выход Q неизменным.
@anhnha Точно. Что-то еще неясно в его работе? Кстати, если вы на самом деле реализуете этот триггер в дизайне, убедитесь, что часы будут переключаться достаточно часто, чтобы сохраненный заряд не утекал (сколько времени это займет, это вопрос к кремниевой фабрике).

Чтобы обсудить, я добавил на вашу диаграмму 3 метки сигналов (синий):

введите описание изображения здесьЧтобы понять эту схему, полезно представить ее поэтапно.

Этап 5 представляет собой простой инвертор.

Этап 4 — подтягивание, контролируемое р ¯ сигнал, который, когда он установлен, вытягивает высокий уровень S3, заставляя Q равняться 1. Единственная проблема, которую я здесь вижу, заключается в том, что существует возможность короткого замыкания Vdd на Gnd через M11-M6-M3. Давайте пока проигнорируем это.

Стадию 1 можно рассматривать как:введите описание изображения здесь

Когда есть Z (высокий импеданс), предполагается, что значение такое же, как у последнего активно управляемого, и поддерживается паразитными емкостями (в основном затвором (затворами) MOSFET следующего каскада).

Обратите внимание, что RST имеет приоритет. Это эффективно ведет себя как защелка SR с инвертированным входом S.

Этап 2 и этап 3 топологически идентичны и очень похожи на этап 1 (за исключением того, что С Е Т ¯ имеет приоритет). Их можно представить следующим образом:

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

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

Соединения следующие:

Stage !SET  RST
  1    Clk  D
  2    Clk  S1
  3    S2   Clk

Хитрость в том, как это работает, сводится к тому, что первые два этапа (S1 и S2) имеют Clk в качестве своего значения. С Е Т ¯ .

Мы начинаем с Clk как 0. S1 в основном инвертирует D, а S2 фиксируется на 1.

На восходящем фронте Clk их С Е Т ¯ становится неактивным, что означает, что их выходы могут только переключаться на 0 (или оставаться на 1). Поскольку они соединены последовательно, S1 определяет переворот S2 в 0 (когда S1 равен 1). Но если S1 изначально было 1, то S2 изменилось на 0 на фланге (что противоположно S1, и теперь S2 не может вернуться к 1), а если S1 изначально было 0, то S1 не может измениться. в любом случае (даже если D изменится), а S2 останется с исходным значением 1 (что также противоположно S1).

Таким образом, вместе они захватывают D в S2 на положительном фронте часов.

Пока Clk остается равным 1, S3 эффективно С 2 ¯ . А так как S2 не меняется, то и S3 не меняется. Между прочим, так как S2 был зафиксирован на 1 прямо перед флангом, S3 может на мгновение перейти в 0, прямо перед тем, как получит свое правильное значение.

Когда Clk падает до 0, S2 принудительно устанавливается в 1 (потому что С Е Т ¯ имеет приоритет), поэтому S3 не имеет ни С Е Т ¯ или RST, и он сохраняет свое значение. Тем временем S1 становится Д ¯ , готовясь к следующему восходящему фронту Clk.

Таким образом, в основном S2 изменяется на предварительно подготовленное значение D S1 на переднем фронте Clk и остается там, вскоре после этого оно распространяется на S3 (и становится Q после инвертора ступени 5), и когда Clk падает до 0, S3 сохраняется (отсюда Q), в то время как S1 ставит в очередь следующий D, а S2 фиксируется на 1.

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

Спасибо за отличный ответ. Я почти понял только одну проблему, связанную с изменениями вывода, когда часы высокие, а данные меняются с 0 на 1. Для триггера, запускаемого фронтом, вывод не должен меняться, пока данные меняются сразу после повышения тактовой частоты.
@anhnha Это не так. На краю разрешается S2 и D больше на него не влияет. Поэтому S3 и Q также устойчивы. Вы можете убедиться в этом с помощью моделирования.