Кто-нибудь может подробно объяснить, как работают настоящие однофазные часы ниже?
Мне нужно хорошо это понимать, чтобы я мог спроектировать его с использованием технологии CMOS и знать, как определить размер W/L для каждого МОП-транзистора.
Ссылка: здесь , в разделе Edge-triggered dynamic D storage element.
Это интересный дизайн, но он выглядит очень чувствительным к используемому процессу. По сути, это динамическая ячейка ОЗУ, поэтому состояние сохраняется в виде заряда на узле, помеченном !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, поэтому последующие стадии не изменятся.
Чтобы обсудить, я добавил на вашу диаграмму 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 эффективно . А так как 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 извне, за исключением того, что, поскольку внутренние сигналы поддерживаются емкостью, утечка в конечном итоге испортит значения, если они не обновляются часто, циклируя часы и постоянно повторяя эту последовательность событий. .
Энди ака
эмнха
РойС
РойС
апалопохапа
Тони Стюарт EE75