Одна из причин, по которой мы синхронизируем триггеры, чтобы не было хаоса, когда выходы триггеров передаются через некоторые логические функции и возвращаются на свои собственные входы.
Если выходные данные триггера используются для вычисления его входных данных, мы должны иметь упорядоченное поведение: предотвращать изменение состояния триггера до тех пор, пока выходные данные (и, следовательно, входные данные) не станут стабильными.
Это тактирование позволяет нам создавать компьютеры, которые являются конечными автоматами: они имеют текущее состояние и рассчитывают свое следующее состояние на основе текущего состояния и некоторых входных данных.
Например, предположим, что мы хотим построить машину, которая «вычисляет» увеличивающийся счет 4 бита от 0000 до 1111, а затем оборачивается до 0000 и продолжает работать. Мы можем сделать это с помощью 4-битного регистра (который представляет собой банк из четырех D-триггеров). Выходные данные регистра передаются через комбинаторную логическую функцию, которая добавляет 1 (четырехразрядный сумматор) для получения увеличенного значения. Это значение затем просто возвращается в регистр. Теперь, когда бы ни приходил фронт часов, регистр будет принимать новое значение, равное единице плюс его предыдущее значение. У нас упорядоченное, предсказуемое поведение, которое проходит через двоичные числа без каких-либо затруднений.
Поведение синхронизации полезно и в других ситуациях. Иногда цепь имеет много входов, которые не стабилизируются одновременно. Если выходной сигнал мгновенно создается на входах, то он будет хаотичным до тех пор, пока входы не стабилизируются. Если мы не хотим, чтобы другие цепи, которые зависят от выхода, видели хаос, мы делаем схему синхронизированной. Мы даем щедрое количество времени для входа, и затем мы указываем схеме принять значения.
Синхронизация также является неотъемлемой частью семантики некоторых видов триггеров. AD триггер не может быть определен без входа часов. Без входа синхронизации он либо игнорирует свой вход D (бесполезно!), Либо просто постоянно копирует вход (не триггер!). Триггер RS не имеет часов, но использует два входа управлять состоянием, которое позволяет входам быть «самосинхронизирующимися»: то есть быть входами, а также триггерами для изменения состояния. Все триггеры нуждаются в некоторой комбинации входов, которая программирует их состояние, а некоторая комбинация входов позволяет им поддерживать свое состояние. Если все комбинации входов запускают программирование или все комбинации входов игнорируются (состояние сохраняется), это бесполезно. Теперь, что такое часы? Часы особенные, выделенный вход, который определяет, игнорируются ли другие входы или программируют ли они устройство. Полезно иметь это как отдельный вход, а не кодировать его между несколькими входами.
Триггер с восходящим фронтом может быть представлен в виде двух защелок, один из которых включается вскоре после того, как тактовый сигнал становится низким, и остается включенным до тех пор, пока он не станет высоким; вторая активируется вскоре после того, как часы становятся высокими, и остаются включенными, пока не станут низкими. Короткий момент, в течение которого ни один триггер не включен, означает, что выход триггера может быть безопасно возвращен на его вход через комбинаторную логику. Изменение выхода на один тактовый цикл может привести к изменению входа, но это изменение не будет иметь никакого эффекта до следующего тактового цикла.
Исторически сложилось так, что для цифровых устройств было довольно распространенным использование так называемых «двухфазных часов», которые имели два провода синхронизации, которые были высокими для неперекрывающихся интервалов в течение каждого цикла. Все защелки разделены на две группы: одни часы управляют первой группой защелок, а другие - второй; в большинстве случаев выходные данные каждой группы используются только для расчета входных данных другой группы. Каждый тактовый цикл состоит из одного или нескольких импульсов на первом тактовом сигнале, по крайней мере, один из которых должен соответствовать характеристикам минимальной длины, и одного или нескольких импульсов на втором (то же самое требование). Одним из преимуществ такой конструкции является то, что она может быть очень терпимой к перекосу тактового сигнала, при условии, что мертвое время между фазами тактового генератора превышает величину перекоса тактового сигнала.
Более «современный» подход заключается в том, чтобы каждый фиксирующий элемент (регистр) получал один провод синхронизации и по существу генерировал свои собственные внутренние непересекающиеся часы. Это требует, чтобы максимальный перекос тактового генератора не превышал минимальное время распространения между регистрами, но современные инструменты позволяют контролировать перекос тактового сигнала более точно, чем это было возможно в прошлые десятилетия. Кроме того, во многих случаях однофазное тактирование упрощает конструкции, устраняя необходимость разбивать логику на две группы.
источник
Мы все знаем, что цифровые реальные схемы будут содержать МНОГО ворот. Сигналу, возможно, придется пройти несколько путей, чтобы добраться до последнего гейта, который дает выход. Сигналу требуется некоторое время, чтобы «распространиться» по разным путям, достигающим последних ворот. Время, затрачиваемое на распространение, не одинаково на разных путях. Это приводит к тому, что мы называем глюками. Глюки возникают из-за того, что некоторые пути короче других, и когда сигнал достигает последнего элемента ранее, выбирая более короткий путь, он воздействует на него непосредственно перед тем, как другие сигналы на более длинном пути достигают элемента. Вывод, который это приводит на мгновение, неверен и может стать опасным в цифровой цепи, что приведет к распространению ошибок.
Теперь я понимаю, почему нам нужны часы. Часы по существу «синхронизируют» схему с одним внешним сигналом. Думайте об этом как о ритме, который кругооборот настроен, чтобы любить музыку. Вещи происходят в гармонии с этими часами, нет часов = цепь отключена. Используя часы, мы гарантируем, что различные части схемы работают в гармонии одновременно . Таким образом, поведение схемы более предсказуемо. На него также меньше влияют изменения задержки распространения из-за изменения температуры и изготовления. Это охватывает часы.
Триггеры - это такие цифровые элементы схемы, которые выполняют действие (изменяя свой выход в ответ на вход на их входном порте), когда происходит «КРАЙ ЧАСОВ». Край тактовой частоты - это когда тактовый сигнал изменяется от 0 до 1 или от 1 до 0. Просто нарисуйте часовую волну, и вы поймете, что я имею в виду. Есть еще одна группа элементов, называемых защелками, выходные данные защелок изменяются, чтобы отражать входной сигнал, когда определенный управляющий сигнал находится на определенном логическом УРОВНЕ, и не ждут каких-либо фронтов, этот управляющий сигнал в защелках называется ENABLE. Защелки могут работать, когда enable - 1, и изменять их выход или когда enable - 0. Это зависит от типа защелки. В отличие от флип-флопов на самом деле делать что-то толькокогда они питаются от часов EDGE. Обратите внимание на это различие между защелками и триггерами, и помните, что защелки соединяются вместе, чтобы создать триггер, так что включение заставляет триггер делать что-то только тогда, когда возникает тактовый импульс. В этом случае мы называем сигнал включения для Clock, и это также имеет смысл. Часы для людей идут как тик, тик, тик, флип-флоп делает что-то только на тиках и НИЧЕГО между тиками.
Если это все еще не ясно, чем вы выиграете, посмотрев лекцию nptelhrd на YouTube от Индийского технологического института по цифровым схемам.
источник
Есть такие вещи как асинхронные счетчики. Вот один из них:
Он также известен как счетчик пульсаций, потому что когда входной импульс поступает на вход (изменяя состояние 1-го триггера), это изменение состояния занимает конечный промежуток времени, чтобы пройти через оставшиеся триггеры. В течение этого небольшого, но конечного промежутка времени выходы ABCD будут иметь непредсказуемое переходное значение до тех пор, пока не установится окончательный триггер.
Если затем все выходы ABCD были поданы через триггеры D-типа и синхронизированы вместе, через некоторое время после периода установления, эта «лучшая» версия ABCD никогда не будет «отображать» это переходное поведение.
Чтобы избежать этого, инженеры иногда используют синхронные схемы синхронизации. Извините, ввод слева на этом и Q0 к Q3 отображается на ABC и D на предыдущей диаграмме: -
Он немного сложнее, но он быстрее и имеет меньше деталей, чем асинхронный счетчик с кучей D-типов на выходах.
источник
Потому что проще проектировать синхронные системы (под синхронной системой подразумевается любая комбинация комбинаторной логики и триггеров с тактовой частотой), чем асинхронные системы, и синхронные системы более надежны. Тем не менее, проект асинхронного конечного автомата заслуживает изучения, поскольку он может вычислять выходной сигнал намного быстрее и с меньшей мощностью, чем синхронная система.
источник