Понять время смены регистра


8

(Я изучаю дизайн цифровых схем. Извините, если это наивный вопрос.)

Из Википедии я нашел следующую диаграмму о регистре сдвига SIPO:

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

Как я понимаю, этот сдвиговый регистр сделан из DFF (D Flip-Flop). DFF срабатывает на переднем фронте тактового периода. Таким образом, для каждого переднего фронта Clockсигнала данные от Data Inбудут распространяться через одну стадию DFF.

Мой вопрос заключается в том, что поскольку Clockвсе DFF совместно используются, когда наступает передний фронт, все 4 DFF должны находиться в сработавшем / прозрачном состоянии. Так что же гарантирует, что данные распространяются через only 1этап DFF, а не через 2 или более этапов?

Скажем так:

  • Td внутренняя задержка для 1 этапа DFF для загрузки данных из D в Q.
  • Trявляется продолжительным временем нарастающего фронта часов. Смотрите ниже рис.

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

Я думаю, чтобы ограничить распространение до 1 стадии, это должно быть:

Td < Tr < Td*2

Я прав?

Но в ссылке выше сказано:

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

Это меня смущает из-за нескольких вещей.

  • Что halves the frequencyзначит?
  • Как можно охарактеризовать DFF с частотой?
  • Разве DFF не работает только на переднем фронте часов и вообще не волнует, на какой частоте часы?
  • И как частота может быть связана с рабочим циклом? Частота связана с периодом, в то время как рабочий цикл просто означает процент от одного периода, в котором сигнал или система активны . Я не вижу связи между частотой и рабочим циклом.

ДОБАВИТЬ 1

Как Neil_UK сказал в своем ответе ниже, приведенная цитата вики совершенно неверна. И он исправил страницу вики.

Как сказал Е.М. Филдс в своем ответе ниже,

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

Строго говоря, нет идеально вертикального переднего фронта. Там должно быть несколько, Trкак показано на рисунке выше. Я предполагаю, что для ограничения распространения сигнала через каскады DFF нарастающий фронт должен длиться достаточно долго, чтобы сигнал распространялся через одну ступень, и достаточно короткий, чтобы сигнал не распространялся до следующей ступени.

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


что именно вы подразумеваете под "Tr - это время восходящего фронта часов"?
Elbehery

1
@Elbehery Спасибо за ответ. Я добавил иллюстрацию. Поскольку часы используются совместно всеми этапами DFF, поэтому во время Tr, я думаю, все DFF должны быть прозрачными для ввода. Вот почему я думаю, что нужно контролировать, как далеко может распространяться сигнал.
smwikipedia

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

Ответы:


5

Мой вопрос заключается в том, что поскольку часы совместно используются всеми DFF, когда наступает передний фронт, все 4 DFF должны находиться в сработавшем / прозрачном состоянии. Так что же гарантирует, что данные распространяются только через 1 этап DFF, а не через 2 или более этапов?

Рассмотрим требования к времени типичного D-триггера .

Буду шлепать время

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

Вход (на D) должен быть стабильным в течение указанного периода (от TsU в Tчас).

Для этой конкретной части минимальное требуемое время удержания составляет 3 нсек. Это минимальное количество времени, в течение которого вход должен быть стабильным за часами для гарантированной производительности (т.е. D передается в Q)

Время установки и удержания

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

Теперь давайте посмотрим на задержки распространения ( и )TпLчасTпчасL

Из таблицы данных это обычно 14 нсек:

Задержка распространения

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

Обратите внимание, что максимальная скорость, на которую может работать сдвиговый регистр, составляет поскольку вход D должен быть стабильным в течение по крайней мере времени установки после предыдущего Q выход стал стабильным.1TsU(мяN) +Tпроп(мaИкс)

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

Таким образом, суть в том, что при условии, что задержка распространения от D до Q больше, чем требуемое время удержания, одно событие синхронизации не может распространяться на более чем один триггер.

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


5

Эта ссылка на Википедию имела неверное описание, она каскадно делилась на 2 счетчика. Теперь я исправил запись в Википедии, так что она описывает сдвиговый регистр. Возможно, это не самое лучшее описание (сделанное за минуту), но, по крайней мере, это не совсем так!


2

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

Для NXP 74HC74 мы видим из таблицы данных, что время удержания составляет 3 нс в наихудшем случае, а задержка распространения обычно составляет 14 нс, поэтому сдвиг тактовой частоты до 11 нс не вызовет проблемы (при 5 В) с этими временами. Тем не менее, обратите внимание, что задержка распространения типична, а не минимальна, поэтому поля в конкретной части могут быть намного более жесткими, однако по довольно очевидным причинам большинство D-триггеров спроектированы так, что подобные вещи работают по времени, так как получение особенно быстрого также вероятно более короткие требования к времени выдержки.


1

DFF не прозрачны, они работают на границе синхросигнала. Граница тактового сигнала должна быть достаточно быстрой, чтобы схемы работали должным образом.

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

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

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


Но как вы собираетесь достичь 100% симметричного phi и phi_bar? Вероятно, вы бы использовали инвертор, ведущий по крайней мере одну задержку затвора между ними. Таким образом, теперь ваш первый вентиль передачи может передать «0» немного дольше, чем «1», а второй вентиль передачи может передать «1» немного дольше, чем «0», из-за неравномерности тактовых импульсов. Подобные эффекты происходят с устройствами с обратной связью. Между точками часов также есть металлическая прокладка. Нет ничего точного Таким образом, этот идеальный анализ скрывает только проблемы, которые существуют в реальной жизни. Имо.
jbord39

@ jbord39 - Конечно, время должно быть проверено. Сделать phi и phi_bar симметричными не так сложно. Если необходим предел погрешности, может быть введена задержка между двумя TG. Маршрутизация только локальная и очень короткая. Задержки обычно определяются после паразитарной экстракции и также могут быть проверены. Конечно, есть более надежные конструкции, но я уже видел этот в стандартных библиотеках ячеек.
Марио

Да, это все время в стандартных клеточных библиотеках, это самый простой DFF. Но часы редко бывают симметричными. Задержка 10ps / инвертор является «достаточно хорошим». Механизм определения характеристик поймает различия подъема / падения и представит их в любом случае в таблицах. Я хочу сказать, что ОП поднимает совершенно логичный вопрос, который вызвал реальные ошибки в дизайне. Сбросить его с толку «на переднем крае, оно мгновенно захватывает его» - это большое упрощение, но не очень хорошее, хотя, с точки зрения нюансов времени.
jbord39

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

1

Проще говоря, ничто не может помешать описанной вами ситуации, кроме собственных знаний дизайнеров при ее создании. Имейте в виду, что существует конечная задержка между запуском фронта тактового сигнала и изменением выхода, обычно называемая clk-to-q или clk-to-out.

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

На самом деле нарушения считаются самыми смертоносными для цифровых чипов. Если есть нарушение настройки, вы можете просто замедлить часы, пока медленный путь не перестанет работать. Но, если есть нарушение удержания, обычно ничего не поделаешь (если только вы не установите отказоустойчивые меры, такие как подвижные фронты часов на регистр). Поскольку они настолько смертоносны, это нормально яростно дополнять, чтобы предотвратить любые нарушения правил удержания. Так что, если у вас есть велосипедная дорожка (скажем, 400ps @ 2.5GHz), это только flop-> flop; нет никаких причин не использовать несколько буферов. Это на самом деле поощряется.

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

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

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

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


1

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

Три (3) этапа D-триггеров показаны ниже как часть или регистр сдвига, который может быть последовательным параллельным выходом (SIPO) или последовательным последовательным выходом (SISO)

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

схематический

смоделировать эту схему - схема, созданная с использованием CircuitLab


1

На самом деле это очень хороший вопрос! Для того, как работает DFF, перейдите сюда , для синхронизации и перехода, вы найдете здесь ответ, который говорит следующее

Действие триггера Шмитта на входе тактовой частоты делает схему очень устойчивой к замедлению времени нарастания и спада тактовой частоты.

Реализация этого действия Шмитта максимально удалит метастабильность при переходе часов. Таким образом, часы будут логически подниматься только один раз, заставляя триггер проверять свое состояние только один раз. Для частоты тактовых импульсов DFF обычно имеют минимальные и максимальные значения в своих таблицах данных, чтобы обеспечить синхронное распространение сигнала в его логических элементах.

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


0

Когда тактовый вход триггера типа «D» становится высоким, состояние входа D - в этот момент - будет передано на выход Q, и Q останется в этом состоянии независимо от любых изменений в D до следующего Высокий край часов.

Прозрачная защелка, с другой стороны, работает, когда Q следует за D, когда часы находятся на высоком уровне, а затем фиксирует состояние D на Q в момент, когда часы идут на низкое значение.

В схеме, которую вы показываете, часы параллельны всем dflops, поэтому, как только появляется высокий фронт тактовых импульсов, и содержимое D передается в Q - и, следовательно, в D следующего этапа - больше ничего не может произойти, пока следующий передний край часов, так как край часов, который сделал работу, уже умер.

Ниже приводится описание вашей схемы с некоторыми драйверами, а ее ответ иллюстрируется временной диаграммой.

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

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


Спасибо за ответ. Как вы сказали, ... больше ничего не может произойти до следующего нарастающего фронта часов, так как фронт часов, который выполнил работу, уже умер . Строго говоря, нет идеального вертикального переднего фронта, как Trпоказывает мой вопрос. Поэтому я предполагаю, что передний фронт должен длиться достаточно долго, чтобы сигнал распространялся через одну стадию, и достаточно короткий, чтобы сигнал не распространялся до следующей стадии. Я просто думаю, что этот вид контроля слишком сложен / деликатен, чтобы быть правдой. Но если это правда, как это достигается?
smwikipedia

0

Это работает так, что каждый DFF включен на очень короткий период. Чтобы превратить защелку в триггер, вы используете что-то вроде следующей схемы в своем сигнале включения. край часов Часы подключены как вход. Когда вы получаете передний фронт, генерируется только очень короткий импульс. Предположим, что изначально часы имеют значение 0. Выходы логических элементов NOT в логический элемент AND являются высокими. Когда вы получаете нарастающий фронт тактовых импульсов, оба входа в логический элемент И имеют высокий уровень, генерируя ваш сигнал высокого разрешения. Однако вскоре после этого высокие тактовые импульсы распространяются через шлюзы, и выход логического элемента И снова становится низким.

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


1
Я должен не согласиться с вами в этом. Добавление этой схемы в защелку просто превращает ее в «импульсную защелку»: eetimes.com/document.asp?doc_id=1271447 Чтобы преобразовать защелку в триггер (истинный FF), вы берете две защелки, кладете их вплотную и дайте им противоположные фазовые часы как позволяет. Вы можете сделать это с любой защелкой. JK, D, SR и т.д .; это не имеет значения - принципиальная разница между защелкой и триггером заключается в топологии «ведущий-ведомый».
jbord39

1
Кроме того, это просто неправда. Импульсные защелки используются, но они должны быть сильно маржинальными из-за их более динамичной природы. Например, как вы должны убедиться, что импульс достаточно длинный для записи данных как при низком, так и при высоком напряжении, по всем температурам и углам процесса. Это, конечно, возможно, но, вероятно, в 3-5 раз сложнее, чем традиционный триггер мастер-раб.
jbord39
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.