Почему мы часы флип-флоп?


19

Я пытаюсь понять шлепки и защелки. Я читаю из книги «Цифровая логика» Морриса Мано. Одна вещь, которую я не могу понять, - почему мы часы шлепанцы?

Я понимаю, почему нам нужны «включенные» или закрытые защелки. Но какая польза от часов? Я не могу этого понять. Почему мы не можем просто включить необходимые триггеры и дать им вход? По мере того как мы меняем вход, выход меняется. Почему мы должны менять выходной сигнал с ростом или снижением тактового фронта (в случае триггера с триггером)?

Любая помощь в этом отношении приветствуется.

Ответы:


18

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

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

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

Например, предположим, что мы хотим построить машину, которая «вычисляет» увеличивающийся счет 4 бита от 0000 до 1111, а затем оборачивается до 0000 и продолжает работать. Мы можем сделать это с помощью 4-битного регистра (который представляет собой банк из четырех D-триггеров). Выходные данные регистра передаются через комбинаторную логическую функцию, которая добавляет 1 (четырехразрядный сумматор) для получения увеличенного значения. Это значение затем просто возвращается в регистр. Теперь, когда бы ни приходил фронт часов, регистр будет принимать новое значение, равное единице плюс его предыдущее значение. У нас упорядоченное, предсказуемое поведение, которое проходит через двоичные числа без каких-либо затруднений.

Поведение синхронизации полезно и в других ситуациях. Иногда цепь имеет много входов, которые не стабилизируются одновременно. Если выходной сигнал мгновенно создается на входах, то он будет хаотичным до тех пор, пока входы не стабилизируются. Если мы не хотим, чтобы другие цепи, которые зависят от выхода, видели хаос, мы делаем схему синхронизированной. Мы даем щедрое количество времени для входа, и затем мы указываем схеме принять значения.

Синхронизация также является неотъемлемой частью семантики некоторых видов триггеров. AD триггер не может быть определен без входа часов. Без входа синхронизации он либо игнорирует свой вход D (бесполезно!), Либо просто постоянно копирует вход (не триггер!). Триггер RS не имеет часов, но использует два входа управлять состоянием, которое позволяет входам быть «самосинхронизирующимися»: то есть быть входами, а также триггерами для изменения состояния. Все триггеры нуждаются в некоторой комбинации входов, которая программирует их состояние, а некоторая комбинация входов позволяет им поддерживать свое состояние. Если все комбинации входов запускают программирование или все комбинации входов игнорируются (состояние сохраняется), это бесполезно. Теперь, что такое часы? Часы особенные, выделенный вход, который определяет, игнорируются ли другие входы или программируют ли они устройство. Полезно иметь это как отдельный вход, а не кодировать его между несколькими входами.


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

Теперь, когда дело доходит до стабильности, если выходы продолжают изменяться, то другие устройства, которым необходим вывод триггерами, не смогут получить его правильно, и это может привести к ошибочному поведению. Так это проблема стабильности? Сейчас я пытаюсь понять концепцию стабильности. Особенно эти два параграфа вы объяснили: «чтобы предотвратить изменение состояния триггера до тех пор, пока выход (и, следовательно, вход) не станет стабильным». «Иногда цепь имеет много входов, которые не стабилизируются одновременно»
avi

7

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

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

Более «современный» подход заключается в том, чтобы каждый фиксирующий элемент (регистр) получал один провод синхронизации и по существу генерировал свои собственные внутренние непересекающиеся часы. Это требует, чтобы максимальный перекос тактового генератора не превышал минимальное время распространения между регистрами, но современные инструменты позволяют контролировать перекос тактового сигнала более точно, чем это было возможно в прошлые десятилетия. Кроме того, во многих случаях однофазное тактирование упрощает конструкции, устраняя необходимость разбивать логику на две группы.


2

Мы все знаем, что цифровые реальные схемы будут содержать МНОГО ворот. Сигналу, возможно, придется пройти несколько путей, чтобы добраться до последнего гейта, который дает выход. Сигналу требуется некоторое время, чтобы «распространиться» по разным путям, достигающим последних ворот. Время, затрачиваемое на распространение, не одинаково на разных путях. Это приводит к тому, что мы называем глюками. Глюки возникают из-за того, что некоторые пути короче других, и когда сигнал достигает последнего элемента ранее, выбирая более короткий путь, он воздействует на него непосредственно перед тем, как другие сигналы на более длинном пути достигают элемента. Вывод, который это приводит на мгновение, неверен и может стать опасным в цифровой цепи, что приведет к распространению ошибок.

Теперь я понимаю, почему нам нужны часы. Часы по существу «синхронизируют» схему с одним внешним сигналом. Думайте об этом как о ритме, который кругооборот настроен, чтобы любить музыку. Вещи происходят в гармонии с этими часами, нет часов = цепь отключена. Используя часы, мы гарантируем, что различные части схемы работают в гармонии одновременно . Таким образом, поведение схемы более предсказуемо. На него также меньше влияют изменения задержки распространения из-за изменения температуры и изготовления. Это охватывает часы.

Триггеры - это такие цифровые элементы схемы, которые выполняют действие (изменяя свой выход в ответ на вход на их входном порте), когда происходит «КРАЙ ЧАСОВ». Край тактовой частоты - это когда тактовый сигнал изменяется от 0 до 1 или от 1 до 0. Просто нарисуйте часовую волну, и вы поймете, что я имею в виду. Есть еще одна группа элементов, называемых защелками, выходные данные защелок изменяются, чтобы отражать входной сигнал, когда определенный управляющий сигнал находится на определенном логическом УРОВНЕ, и не ждут каких-либо фронтов, этот управляющий сигнал в защелках называется ENABLE. Защелки могут работать, когда enable - 1, и изменять их выход или когда enable - 0. Это зависит от типа защелки. В отличие от флип-флопов на самом деле делать что-то толькокогда они питаются от часов EDGE. Обратите внимание на это различие между защелками и триггерами, и помните, что защелки соединяются вместе, чтобы создать триггер, так что включение заставляет триггер делать что-то только тогда, когда возникает тактовый импульс. В этом случае мы называем сигнал включения для Clock, и это также имеет смысл. Часы для людей идут как тик, тик, тик, флип-флоп делает что-то только на тиках и НИЧЕГО между тиками.

Если это все еще не ясно, чем вы выиграете, посмотрев лекцию nptelhrd на YouTube от Индийского технологического института по цифровым схемам.


«Используя часы, мы гарантируем, что различные части схемы работают в гармонии одновременно.» - Как мы это делаем? Я проверю видео.
Ави

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

1

Есть такие вещи как асинхронные счетчики. Вот один из них: введите описание изображения здесь

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

Если затем все выходы ABCD были поданы через триггеры D-типа и синхронизированы вместе, через некоторое время после периода установления, эта «лучшая» версия ABCD никогда не будет «отображать» это переходное поведение.

Чтобы избежать этого, инженеры иногда используют синхронные схемы синхронизации. Извините, ввод слева на этом и Q0 к Q3 отображается на ABC и D на предыдущей диаграмме: -

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

Он немного сложнее, но он быстрее и имеет меньше деталей, чем асинхронный счетчик с кучей D-типов на выходах.


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

@avi Первый пример (асинхронный счетчик) не должен восприниматься как получение его от «часов». Это могут быть импульсы, исходящие от магнитного датчика, чтобы увидеть, как быстро вращается вал. В системе были бы «главные» часы, которые «контролируют» счетчик каждую секунду, но «сигнал», поступающий в счетчик, не обязательно является часами. Выход аналогового компаратора может «синхронизировать» «1» на выходе типа D, а выход другого аналогового компаратора может сбрасывать тип D - это можно использовать для получения сигнала, полученного из аналогового сигнала - без тактов как таковой
Энди ака

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

... имея начало цепочки переноса, например, с четвертого бита, генерируя "и" первых трех битов, а затем переворачивая каждый бит, только если вход из цепочки переноса был высоким, бит 2 был высоким, бит 1 был высокий, а бит 0 был высоким. Даже если семь импульсов счета поступят во время, необходимое для распространения сигнала через цепь переноса, это не составит проблемы, поскольку цепь переноса начнет распространять перенос, когда будет достигнут счет xxx111 ... 111000, но его выход не будет иметь значения, пока тактовый импульс после xxx111 ... 111111 был достигнут.
суперкат

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

0

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

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.