Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Вот может кто подскажет по метастабильности
Форум разработчиков электроники ELECTRONIX.ru > Программируемая логика ПЛИС (FPGA,CPLD, PLD) > Работаем с ПЛИС, области применения, выбор
Builder
Всё в общем понятно, давно прочитано пройдено и т.д.
делал всегда по класике - 2 тригера, окружение - по ситуации.
Но вот попался на глаза альтеровский файлик an042.pdf , скорее не палался - а перечитывал.
Обратил внимание, что для того, что-бы уменьшить время перехода с частоты на частоту, предлагают
использовать удвоенный клок.
Вопрос - почему не предлагают тактировать второй тригер инверсным клоком?
Кто может сказать, почему во всех рекомендациях не встречается вариант с инверсным клоком, для уменьшения времени перехода?
Т.к. особых проблем вроде быть не должно, т.к. вероятность двойного метастабила та-же что и на удвоенной частоте.
С ходу есть только одна гипотеза: просто так, типа рекомендации на то и рекомендации - дана база, дальше сам думай, как удобнее.
Т.к. архитектурно вроде проблем нет, у альтеры 2 клока идут прям на ячейку, у ксанинкс чуть похуже, но тоже возможно.
Меандр вроде тоже не проблема.
Или я что-то недогоряю и есть в отказе от инверсного клока, в пользу умножения некое серьёзное основание?
Просто как-то лениво лишний клок в сигналах таскать.

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

В аттаче описание классической двух-инверторной схемы КМОП-триггера по фронту.
cdg
С метастабильностью вообще бороться бессмысленно с помощью увеличения частоты smile.gif Совершенно очевидно, что бороться с метастабильностью с помощью сдвигового регистра работающего на частоте сравнимой с временем распространения сигнала в триггере бесполезно. Проблема метастабильности в том, что переходные процессы в триггере становятся сравнимымми с частотой тактирования, чтобы разрешить проблему достаточно сигналы разрешения записи в соседние триггера разнести на расстояние большее времени быстродействия триггера, дальше после втрого триггера делайте, что угодно, можете работать на удвоенной, утроенной или даже учетверенной частоте, использовать прямые и инверсные клоки.
Builder
Цитата(cms @ Jan 22 2010, 11:47) *
Схему с инверсным клоком для борьбы с метастабильностью современных триггеров использовать бессмысленно.
Инверсный клок уже используется в схемотехнике D-триггера. Подав на второй триггер инверсный клок вы ничего хорошего не добьетесь.

В аттаче описание классической двух-инверторной схемы КМОП-триггера по фронту.
Спасибо, почитаю, что там внутрях. А то, так с ходу не понятно - данные-то с выхода тригера вроде появляются после переднего фронта (по крайней мере в дока всегда так рисуют), на не после заднего, вот и встал вопрос, а почему собственно нелься это использовать, т.к. удвоенные клок польше возни таскать по проекту.
cdg
Цитата(Builder @ Jan 22 2010, 13:39) *
............

Для чего все это, в каких ситуациях возникает метастабильность, каковы временные параметры тактовой и быстродействия триггера? Не пойму с чем Вы боретесь? Приведите пример задачи: частота 1 -> частота 2, задержка в триггере, время за которое надо сделать переход.
Builder
Цитата(cdg @ Jan 22 2010, 12:53) *
Для чего все это, в каких ситуациях возникает метастабильность, каковы временные параметры тактовой и быстродействия триггера? Не пойму с чем Вы боретесь? Приведите пример задачи: частота 1 -> частота 2, задержка в триггере, время за которое надо сделать переход.
Есть входная асинхронная шина, нужно её простробиравать, для того что-бы проанализировать что и как. Т.е. нарезаю сигналы цепочками по 2 тригера и смотрю что куда пишем/читаем.
Вот и прикидываю, как минимизировать время анализа, т.к. на двух тригерах имеюю задержку 2+1 такт, не успеваю вроанализировать. Частоты 10-30 мег могут быть. Видится 2 варианта, или поднимать тактовую, как минимум для входной части, ну или была вот шальная мысль поработать по обеим фронтам.
cdg
Цитата(Builder @ Jan 22 2010, 14:29) *
была вот шальная мысль поработать по обеим фронтам.

Все зависит от быстродействия кристала какая ПЛИС? Но даже для тормознутых 10МГц это не проблема, а вот при 30 уже можно напороться на неприятности, от которых в прочим не избавиться удвоением частоты. К тому же скорость нарастания на асинхронном интерфейсе будет играть не маловажное значение. В общем что бы предметно обсуждать нужны параметры входного сигнала и тип кристала.
Builder
Цитата(cdg @ Jan 22 2010, 14:06) *
Все зависит от быстродействия кристала какая ПЛИС? Но даже для тормознутых 10МГц это не проблема, а вот при 30 уже можно напороться на неприятности, от которых в прочим не избавиться удвоением частоты. К тому же скорость нарастания на асинхронном интерфейсе будет играть не маловажное значение. В общем что бы предметно обсуждать нужны параметры входного сигнала и тип кристала.
Спартаны, начиная с третьих, циклоны, с третьих. В общем я так понял, что-б меньше было проблем в перспективе и не не иметь немприятных неожиданностей, лучше брать высокую частоту и ей всё протактировать.
IL-76
Цитата(Builder @ Jan 22 2010, 14:29) *
Есть входная асинхронная шина, нужно её простробиравать, для того что-бы проанализировать что и как. Т.е. нарезаю сигналы цепочками по 2 тригера и смотрю что куда пишем/читаем.
...


Но ведь, просто стробируя внешним клоком асинхронную шину, Вы избавитесь только от метастабильности для отдельных сигналов шины, но не для суммарного слова в шине. Т.е. часть сигналов в шине в момент времени Т может защелкнуться как Сигналы(Т), а часть как Сигналы(Т+1), если Т придется на момент изменения состояния шины, к примеру. В итоге изменения состояний синхронной шины будут отличаться от асинхронной.
Или в данном случае шина - это сигналы, не связанные друг с другом по времянке и функционалу?
Andy-P
Цитата(Builder @ Jan 22 2010, 02:27) *
что-то альтера старый an042.pdf убрала


Более свежий документ
http://www.altera.com/literature/wp/wp-010...tastability.pdf
Builder
Цитата(IL-76 @ Jan 22 2010, 15:04) *
Но ведь, просто стробируя внешним клоком асинхронную шину, Вы избавитесь только от метастабильности для отдельных сигналов шины, но не для суммарного слова в шине. Т.е. часть сигналов в шине в момент времени Т может защелкнуться как Сигналы(Т), а часть как Сигналы(Т+1), если Т придется на момент изменения состояния шины, к примеру. В итоге изменения состояний синхронной шины будут отличаться от асинхронной.
Или в данном случае шина - это сигналы, не связанные друг с другом по времянке и функционалу?
Ну, это уже проще, первое - диаграмма обмена есть и по ней можно сказать что может защёлкнутся раньше, а что не может. Т.е. можно заранее просчитать что и как, если скажем имею строб, то можно с уверенгостью сказать что данные гарантированно уже защёлкнуты. Второе, можно сделать задержку сигналов ещё на 1 такт, смотреть что сигналы не сменились, и это будет говорить о том, что имеем корректное стабильное защёлкивание сигналов, и можно забирать и анализировать.
В общем это это уже следующая стадия, по ней много рекомендаций в инете.
evg123
Цитата(Andy-P @ Jan 22 2010, 16:06) *
Более свежий документ
http://www.altera.com/literature/wp/wp-010...tastability.pdf

В этом документе "Figure 3. Sample Synchronization Register Chain" - указывает на синхро-цепочку из двух триггеров и двумя строчками выше говориться о некой "длине" этой цепочки - т.е. явно указывается, что цепочка может быть и длиннее, чем два триггера, например - три. Что это за штука? Зачем три триггера? Что это даёт? Большую защиту - т.е. меньшую вероятность сбоя, если два триггера одновременно могут оказаться в метастабильном состоянии - то сбоя не будет?
evg123
Цитата(des333 @ Feb 4 2010, 19:01) *

Спасибо за статью.
dspx
Если нет жестких ограничений по ресурсам, из домена в домен передать шину проще через 2-хпортовую память, или фифо. Меньше вероятности ошибиться. Либо перетактовываете импульс write_en первого домена и используете его во 2-м домене как read_en, главное обеспечить, чтоб в это время данные не менялись в регистре.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.