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

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

 

Для любых связанных частот без асинхронщины между ними.

Мне toggle тоже больше нравится, но обсуждалась в стакане воды именно схема из Т-Ш, растягивающая и синхронизирующая асинхронные импульсы произвольной длины, то есть без входного клока.

 

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

 

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

 

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

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


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

Для любых связанных частот без асинхронщины между ними.

Мне toggle тоже больше нравится, но обсуждалась в стакане воды именно схема из Т-Ш, растягивающая и синхронизирующая асинхронные импульсы произвольной длины, то есть без входного клока.

 

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

 

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

И асинхронных тоже!(его основная функция по статье применяется для переходов между доменами и синхронизациями).

На HDL три триггера описываются легко.

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

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


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

И асинхронных тоже!(его основная функция по статье применяется для переходов между доменами и синхронизациями).

 

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

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


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

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

В наших силах держать эту пару рядом друг с другом :biggrin: , чтобы уйти от проблемы метастабильности.

 

Мне важен факт события, а не момент...

Изменено пользователем Мур

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


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

В наших силах держать эту пару рядом друг с другом :biggrin: , чтобы уйти от проблемы метастабильности.

 

Эта метастабильность выходит через логику на выход этой схемы.

 

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


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

Эта метастабильность выходит через логику на выход этой схемы.

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

Изменено пользователем Мур

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


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

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

 

 

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

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


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

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

Когда на фронте f2 попадется переключение входного триггера, защелкивающего инверсное состояние f1.

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


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

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

Ну почему же? Даже если возникнет неопределённость при соотношении входного уровня на D-входе и фронта CLK, он уверенно поймается следующим фронтом! Триггер в любом случае в сером уровне не останется (иначе бы это не был триггер!). Мне не важен (ещё раз!) момент. Мне важен факт! Он гарантировано появится! И на выходе будет выдан одноклоковый импульс, но привязанный уже к другой опорной частоте. Что и требуется...

Я постараюсь расширить варианты проблем.. Помогите!

 

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


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

может привести к неправильной работе логики в последующих схемах

 

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

это состояние или будет отработано последующим триггером как переход из например 0 в 1 или нет.

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

Важно что событие на входе будет отработано однозначно. Нет?

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


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

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

это состояние или будет отработано последующим триггером как переход из например 0 в 1 или нет.

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

Важно что событие на входе будет отработано однозначно. Нет?

Вот и я о том!

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

 

 

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


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

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

это состояние или будет отработано последующим триггером как переход из например 0 в 1 или нет.

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

Важно что событие на входе будет отработано однозначно. Нет?

 

 

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

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


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

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

Про эту картинку речь идет? Пусть висит.

Если на входе Data будет импульс в 3 такта Clock1, на Output появится 2 импульса длительностью Clock2. И без всякой метастабильности.

В метастабильном состоянии триггер может висеть "между небом и землей" сколь угодно долго, в идеальном случае. До следующего такта. А если в следующем такте вход неопределен, то все продолжится.

Если вдруг почему-то Clock1 отстанет от Data, доберется до "желтого" триггера чуть позже, триггер влетит в метастабильное состояние.

Это я не к тому, что схема плохая или неправильная, а к тому, что идеального в мире ничего нет. Нужно смотреть внимательно.

post-10362-1302524335_thumb.jpg

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


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

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

...

Если вдруг почему-то Clock1 отстанет от Data, доберется до "желтого" триггера чуть позже, триггер влетит в метастабильное состояние.

 

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

 

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

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


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

Вероятность оставания в метастабильном состоянии экспоненциально уменьшается со временем...

Конечно. Это мы обсуждали год назад :)

В вашей схеме 4 триггера, а в обсуждаемой - три. В вашей схеме внутри полноценный голубой синхронизатор, в обсуждаемой его нет.

Это рисунок 8, на который ссылается Мур. Думаю, часть темы стоит посвятить этой картинке.

Но предполагается, что Data синхронна по отношению к Clock 1, и поэтому она отстать не может.

Я сейчас смотрю в TimeQuest (пришло время), и прихожу к выводу, что по ПЛИС такты приходят на триггера совсем не одновременно.

 

P.S. Отстаивая честь Quartus'а, скомпилировал следующий код.

  always @(posedge clkin, posedge din)
    if (din)  dout[4] <= din;
    else dout[4] <= 0;

Для Циклона-2 получил триггер с ADATA и ALOAD, подключенными к din, тактовым сигналом на clkin, и нулем на входе данных. Спасен!

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


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

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

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

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

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

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

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

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

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

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