Перейти к содержанию
    

Вот может кто подскажет по метастабильности

Всё в общем понятно, давно прочитано пройдено и т.д.

делал всегда по класике - 2 тригера, окружение - по ситуации.

Но вот попался на глаза альтеровский файлик an042.pdf , скорее не палался - а перечитывал.

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

использовать удвоенный клок.

Вопрос - почему не предлагают тактировать второй тригер инверсным клоком?

Кто может сказать, почему во всех рекомендациях не встречается вариант с инверсным клоком, для уменьшения времени перехода?

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

С ходу есть только одна гипотеза: просто так, типа рекомендации на то и рекомендации - дана база, дальше сам думай, как удобнее.

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

Меандр вроде тоже не проблема.

Или я что-то недогоряю и есть в отказе от инверсного клока, в пользу умножения некое серьёзное основание?

Просто как-то лениво лишний клок в сигналах таскать.

 

добавлено:

что-то альтера старый an042.pdf убрала, присоединяю

an042.pdf

Изменено пользователем Builder

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

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

 

В аттаче описание классической двух-инверторной схемы КМОП-триггера по фронту.

bookch8.pdf

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

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

 

В аттаче описание классической двух-инверторной схемы КМОП-триггера по фронту.

Спасибо, почитаю, что там внутрях. А то, так с ходу не понятно - данные-то с выхода тригера вроде появляются после переднего фронта (по крайней мере в дока всегда так рисуют), на не после заднего, вот и встал вопрос, а почему собственно нелься это использовать, т.к. удвоенные клок польше возни таскать по проекту.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

............

Для чего все это, в каких ситуациях возникает метастабильность, каковы временные параметры тактовой и быстродействия триггера? Не пойму с чем Вы боретесь? Приведите пример задачи: частота 1 -> частота 2, задержка в триггере, время за которое надо сделать переход.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для чего все это, в каких ситуациях возникает метастабильность, каковы временные параметры тактовой и быстродействия триггера? Не пойму с чем Вы боретесь? Приведите пример задачи: частота 1 -> частота 2, задержка в триггере, время за которое надо сделать переход.
Есть входная асинхронная шина, нужно её простробиравать, для того что-бы проанализировать что и как. Т.е. нарезаю сигналы цепочками по 2 тригера и смотрю что куда пишем/читаем.

Вот и прикидываю, как минимизировать время анализа, т.к. на двух тригерах имеюю задержку 2+1 такт, не успеваю вроанализировать. Частоты 10-30 мег могут быть. Видится 2 варианта, или поднимать тактовую, как минимум для входной части, ну или была вот шальная мысль поработать по обеим фронтам.

Изменено пользователем Builder

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

была вот шальная мысль поработать по обеим фронтам.

Все зависит от быстродействия кристала какая ПЛИС? Но даже для тормознутых 10МГц это не проблема, а вот при 30 уже можно напороться на неприятности, от которых в прочим не избавиться удвоением частоты. К тому же скорость нарастания на асинхронном интерфейсе будет играть не маловажное значение. В общем что бы предметно обсуждать нужны параметры входного сигнала и тип кристала.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Все зависит от быстродействия кристала какая ПЛИС? Но даже для тормознутых 10МГц это не проблема, а вот при 30 уже можно напороться на неприятности, от которых в прочим не избавиться удвоением частоты. К тому же скорость нарастания на асинхронном интерфейсе будет играть не маловажное значение. В общем что бы предметно обсуждать нужны параметры входного сигнала и тип кристала.
Спартаны, начиная с третьих, циклоны, с третьих. В общем я так понял, что-б меньше было проблем в перспективе и не не иметь немприятных неожиданностей, лучше брать высокую частоту и ей всё протактировать.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Есть входная асинхронная шина, нужно её простробиравать, для того что-бы проанализировать что и как. Т.е. нарезаю сигналы цепочками по 2 тригера и смотрю что куда пишем/читаем.

...

 

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

Или в данном случае шина - это сигналы, не связанные друг с другом по времянке и функционалу?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

что-то альтера старый an042.pdf убрала

 

Более свежий документ

http://www.altera.com/literature/wp/wp-010...tastability.pdf

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

Или в данном случае шина - это сигналы, не связанные друг с другом по времянке и функционалу?

Ну, это уже проще, первое - диаграмма обмена есть и по ней можно сказать что может защёлкнутся раньше, а что не может. Т.е. можно заранее просчитать что и как, если скажем имею строб, то можно с уверенгостью сказать что данные гарантированно уже защёлкнуты. Второе, можно сделать задержку сигналов ещё на 1 такт, смотреть что сигналы не сменились, и это будет говорить о том, что имеем корректное стабильное защёлкивание сигналов, и можно забирать и анализировать.

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Более свежий документ

http://www.altera.com/literature/wp/wp-010...tastability.pdf

В этом документе "Figure 3. Sample Synchronization Register Chain" - указывает на синхро-цепочку из двух триггеров и двумя строчками выше говориться о некой "длине" этой цепочки - т.е. явно указывается, что цепочка может быть и длиннее, чем два триггера, например - три. Что это за штука? Зачем три триггера? Что это даёт? Большую защиту - т.е. меньшую вероятность сбоя, если два триггера одновременно могут оказаться в метастабильном состоянии - то сбоя не будет?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Если нет жестких ограничений по ресурсам, из домена в домен передать шину проще через 2-хпортовую память, или фифо. Меньше вероятности ошибиться. Либо перетактовываете импульс write_en первого домена и используете его во 2-м домене как read_en, главное обеспечить, чтоб в это время данные не менялись в регистре.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

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

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...