Jump to content

    

Recommended Posts

Приветствую!

34 minutes ago, gin said:

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

Никак   :unknw::biggrin:
Грей защищает от ошибок FIFO из за метастабильности при передачи указателей через CDC.  При последовательном счете  код Грея меняется только в одном бите.  Соответственно если возникнет ошибка из за  метастабильности то она не приведет к фатальному, с точки зрения FIFO, изменению указателя. На приемной стороне указатель всегда будет двигаться в одну сторону (хоть и не равномерно).

Удачи! Rob.

Share this post


Link to post
Share on other sites
50 минут назад, RobFPGA сказал:

Грей защищает от ошибок FIFO из за метастабильности при передачи указателей через CDC.  При последовательном счете  код Грея меняется только в одном бите.  Соответственно если возникнет ошибка из за  метастабильности то она не приведет к фатальному, с точки зрения FIFO, изменению указателя. На приемной стороне указатель всегда будет двигаться в одну сторону (хоть и не равномерно).

Удачи! Rob.

Про фатальность - это вопрос)

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

Share this post


Link to post
Share on other sites
8 minutes ago, gin said:

Про фатальность - это вопрос)

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

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

Share this post


Link to post
Share on other sites

Приветствую!

19 minutes ago, gin said:

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

В "раскоряку" встанет не схема,  а дизайнер  :sorry::negative:  который забудет  поставить  2-3 триггера в цепочку устранения метастабильности в синхронизаторе CDC. 

Удачи! Rob.

Share this post


Link to post
Share on other sites
2 часа назад, RobFPGA сказал:

В "раскоряку" встанет не схема,  а дизайнер  :sorry::negative:  который забудет  поставить  2-3 триггера в цепочку устранения метастабильности в синхронизаторе CDC. 

Удачи! Rob.

Если счетчик Грея передается через цепочку регистров, то вопрос снимается :)

Share this post


Link to post
Share on other sites

Вообще то в современных условиях счётчик Грея уже не защищает, не смотря на то что он меняется только в одном разряде.

Это происходит, если задержка по разным линиям счетчика различается более чем на период тактовой частоты. Вполне возможна ситуация когда на одной линии 1.5 нс, на второй 2.5 нс. Тактовая 500 МГц.

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

Share this post


Link to post
Share on other sites

Приветствую!

52 minutes ago, dsmv said:

Вообще то в современных условиях счётчик Грея уже не защищает, не смотря на то что он меняется только в одном разряде.

В современных условиях  (да и старину былинную)   вместе с применением  кода Грея также требовалось использование timing constrain  которые задавали (для сигналов синхронизатора грея между клоковыми доменами)  set_max_skew не более минимального периода из wr/rd клоков. Если уж у вас счетчики адресов FIFO умудряется работать на 500 MHz то и обеспечить такой skew линий связи регистр-регистр тоже возможно.
Тогда все работает прекрасно. Не смотря на частоту и современные условия :yes3:

Вашим вариантом (handshake-based synchronization) тоже можно пользоваться,  проблем с кросс-clock тут меньше - но при этом  немного увеличивается latency FIFO,  что может увеличивать требуемый объем памяти и может быть критично для  для некоторых применений. 

Удачи! Rob.  

Share this post


Link to post
Share on other sites
47 minutes ago, RobFPGA said:

В современных условиях  (да и старину былинную)   вместе с применением  кода Грея также требовалось использование timing constrain  ....

Вот, и здесь появляются новые требования, про которые обычно все забывают. И новая область применения - low latency FIFO. Так что можно сформулировать - FIFO на основе счётчика Грея эффективно для небольших размеров, например до 64 слов. 

Share this post


Link to post
Share on other sites

Приветствую!

50 minutes ago, dsmv said:

Вот, и здесь появляются новые требования, про которые обычно все забывают.

Ну так в вашей схеме с handshake-based synchronization эти требования тоже "можно забыть" - ведь вы не можете оставить на произвол P&R  кросс-клок времянку для шины данных счетчика - тоже нужно ограничивать в constraint максимальное допустимое время  задержек роутинга.  :unknw:

Удачи! Rob.

Share this post


Link to post
Share on other sites
57 minutes ago, RobFPGA said:

Ну так в вашей схеме с handshake-based synchronization эти требования тоже "можно забыть" -

Да я и забываю. И полагаюсь на произвол P&R  

:unknw:

Но четыре такта задержки перекрывают весь произвол. Или всё-таки три ?

Share this post


Link to post
Share on other sites

Приветствую!

8 minutes ago, dsmv said:

Но четыре такта задержки перекрывают весь произвол. Или всё-таки три ?

Частота  500 MHz - такт 2ns возьмем  4  такта - всего 8 ns  -  если для цепи  в шине синхронизатора  wr_reg[*] -> rd_reg[*]  не объявлен констрэйн и тактовые  асинхронные то времянка для этой цепи не контролируется и  P&R запросто может сделать (и делает) любую веревку из этой шины и 10 ns  и 20 ns. и как ему захочется. И что самое важное - даже не выругается при этом.  

15 minutes ago, dsmv said:

Да я и забываю. И полагаюсь на произвол P&R  

Вы судя  по всему везучий человек!  Ну в таком случае и с Греем также должно везти :ok:  без констрейнов  :lol2:

Удачи! Rob.

Share this post


Link to post
Share on other sites
26 minutes ago, RobFPGA said:

Вы судя  по всему везучий человек!  Ну в таком случае и с Греем также должно везти :ok:  без констрейнов  :lol2:

Он просто грея не любит, это из комментов на хабре было понятно ;) 

Share this post


Link to post
Share on other sites

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

Констрейнты обязательны. Об этом уже написали.

 

p.s.

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

Edited by Aleх

Share this post


Link to post
Share on other sites
В 15.04.2020 в 15:07, RobFPGA сказал:

Наоборот, Джонсон хуже

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

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this