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

Synchronized reset и разные тактовые

Есть каскад из двух регистров для внешнего сброса (обычная схема, как в справке квартуса здесь). Этот каскад тактируется clk1 и (соответственно со схемой) сбрасывать им можно регистры, которые тактируеются также clk1. Как правильно сбрасывать регистры, которые используют clk2, clk3 и т.д.?

Для каждого clkX делать отдельный каскад?

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


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

Для каждого clkX делать отдельный каскад?

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

 

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


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

Еще есть зависимость от частоты. для пущей стабильности лично я такое только на частотах меньше 100 ставлю. на частотах повыше леплю от 3 регистров.

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


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

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

Спасибо. Вот так?

post-68692-1421050317_thumb.png

Получается, снятие сброса не будет "одновременным" для разных тактовых? Будет нарастающая задержка, которую надо компенсировать?

 

на частотах повыше от 3 регистров.
Это обязательно? Хотелось бы единообразия.

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


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

Получается, снятие сброса не будет "одновременным" для разных тактовых? Будет нарастающая задержка, которую надо компенсировать?

В сбросе опасен не момент сброса, а момент его снятия. Сброс всех доменов должен идти одновременно, а вот снятие по цепочке. И не надо там ничего компенсировать. Цепочка на рисунке у вас сделана правильно.

 

Это обязательно? Хотелось бы единообразия.

я обычно ставлю 4 ре регистра.

 

 

в приложении неплохая статья. изучайте.

CummingsSNUG2002SJ_Resets.pdf

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


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

Это обязательно? Хотелось бы единообразия.

вообще эти все регистры для защиты от метастабильности. и чем выше частота, тем меньше каждому регистру в каскаде дается времени на выход из метастабильного состояния. обязательно ли? зависит от того, на сколько критичен для вас вариант получения метастабильного состояния. если в случае, когда схема сбойнула, есть возможность распознать это и подать дополнительный сброс -- можно и вообще не ставить никаких регистров по входу. но если нужна стабильность, то лучше везде ставить с запасом. Хотите сделать единобразно? -- сделайте запас везде.

 

я обычно ставлю 4 ре регистра.

я обычно ставлю при f<100=2, 100..150=3, 150..200=4, 200..250=5.

но всё это как-то на глазок, что в корне неправильно. Интересно было бы знать, а сколько в действительности-то требуется? т.к. лишняя задержка -- она не всегда приятна.

Где бы посмотреть кривые вероятности метастабильного состояния на выходе в зависимости от частоты и количества регистров при условии, скажем, подачи "самого неудачно сдвинутого" относительно тактов сигнала на входе?

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


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

Где бы посмотреть кривые вероятности метастабильного состояния на выходе в зависимости от частоты и количества регистров при условии, скажем, подачи "самого неудачно сдвинутого" относительно тактов сигнала на входе?

формула MTBF есть в доках о метастабильности от вендоров плис.

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


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

формула MTBF есть в доках о метастабильности от вендоров плис.
При том там считается вполне достаточным использование 2 триггеров, независимо от частоты.

 

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


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

При том там считается вполне достаточным использование 2 триггеров, независимо от частоты.

значит мы разные доки читаем, либо делаем разные выводы.

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


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

формула MTBF есть в доках о метастабильности от вендоров плис.

 

 

Причем не все вендоры хотят их афишировать

http://forums.xilinx.com/t5/Virtex-Family-...ery/td-p/476482

 

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


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

Вот ещё полезная статья от Кена Чапмана до кучи.

Интересно. И здесь как раз 4 регистра - с указанием, что их число определяет минимальную длину сброса (и только?).

Но основная идея - нет особой необходимости в глобальном сбросе. Насколько это правильно?

В pdf есть ссылка на "Get your Priorities Right – Make your Design Up to 50% Smaller" - там в том числе и про сброс, но с привязкой к конкретной реализацией в кристаллах Xilinx. Насколько это соответсnвует Альтеровским кристаллам?

 

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

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


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

Но основная идея - нет особой необходимости в глобальном сбросе. Насколько это правильно?
Основная идея в том, что сбрасывать надо то, что действительно надо сбрасывать.

Например, если у вас есть некие данные, сопровождаемые флагом valid, то сброс нужен только для valid, а для данных не нужен, ведь если valid не активен, то какая разница, какие данные.

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


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

Причем не все вендоры хотят их афишировать

http://forums.xilinx.com/t5/Virtex-Family-...ery/td-p/476482

 

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

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


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

В сбросе опасен не момент сброса, а момент его снятия. Сброс всех доменов должен идти одновременно, а вот снятие по цепочке.

 

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

 

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

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


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

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

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

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

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

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

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

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

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

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