|
И снова про метастабильность, Почему 2 триггер "защищает" от метастабильности. |
|
|
|
 |
Ответов
|
Aug 18 2016, 13:14
|
Гуру
     
Группа: Свой
Сообщений: 2 198
Регистрация: 23-12-04
Пользователь №: 1 640

|
что-то не так в этой теме  там где можно применить констрейны, там никакой метастабильности не возникает (не должно в результате следования процессу разработки) возможное место метастабильности - асинхронные сигналы, то есть такие сигналы момент изменения которого не известен на этапе проектирования там ставится синхронизатор - два или больше последовательных триггера почему это помогает - существует время выхода триггера из метастабильности, как правило в современных ПЛИС и АЗИКах оно очень короткое (и тема метастабильности и применения больше чем 2х последовательных триггеров не имеет сейчас практического смысла) и к моменту следующего тактового сигнала и защелкивания следующим триггером этот выход имеет определенное значение а вот если бы за первым триггером была комбинаторная логика, а не триггер, то эта задержка на выход из метастабильности добавилась бы к пути и в следующих стадиях защелкивалась бы ошибка (хотя формально констрейн на эту логику, input_delay (upd : вернее clock, так как между триггерами дизайна) был бы удовлетворен синтезом) также окно входного сигнала триггера, которое защелкнется метастабильно гораздо уже, чем значение выхода в метастабильном состоянии - это применялось, когда строили цепочки из более чем 2х триггеров обычно асинхронный сигнал в виде импульса не ловят, это фронт, поэтому не важно, как разрешится метастабильность в 0 или 1 в этой цепочке - это просто приводит к задержке на 1 такт такта получателя, что приемлемо для асинхронного приемника ----------- на пальцах как-то так - если порыться в книжках или в сети, то можно найти и формулы
|
|
|
|
|
Aug 18 2016, 13:32
|

В поисках себя...
   
Группа: Свой
Сообщений: 729
Регистрация: 11-06-13
Из: Санкт-Петербург
Пользователь №: 77 140

|
Цитата(yes @ Aug 18 2016, 16:14)  что-то не так в этой теме  там где можно применить констрейны, там никакой метастабильности не возникает (не должно в результате следования процессу разработки) возможное место метастабильности - асинхронные сигналы, то есть такие сигналы момент изменения которого не известен на этапе проектирования там ставится синхронизатор - два или больше последовательных триггера почему это помогает - существует время выхода триггера из метастабильности, как правило в современных ПЛИС и АЗИКах оно очень короткое (и тема метастабильности и применения больше чем 2х последовательных триггеров не имеет сейчас практического смысла) и к моменту следующего тактового сигнала и защелкивания следующим триггером этот выход имеет определенное значение а вот если бы за первым триггером была комбинаторная логика, а не триггер, то эта задержка на выход из метастабильности добавилась бы к пути и в следующих стадиях защелкивалась бы ошибка (хотя формально констрейн на эту логику, input_delay (upd : вернее clock, так как между триггерами дизайна) был бы удовлетворен синтезом) также окно входного сигнала триггера, которое защелкнется метастабильно гораздо уже, чем значение выхода в метастабильном состоянии - это применялось, когда строили цепочки из более чем 2х триггеров обычно асинхронный сигнал в виде импульса не ловят, это фронт, поэтому не важно, как разрешится метастабильность в 0 или 1 в этой цепочке - это просто приводит к задержке на 1 такт такта получателя, что приемлемо для асинхронного приемника ----------- на пальцах как-то так - если порыться в книжках или в сети, то можно найти и формулы Я пока только учусь, и вопросы у меня глупые К чему я вообще эту тему создал. Я на просторах интернета как-то обнаружил тему про метастсбильность триггеров, прочитал, ничего не понял, но оставил пометку "РАЗОБРАТЬСЯ". Поигравшись с семисегментными индикаторами, реализовав на макетной плате всякие динамические индикации, часы, и прочую лабуду решил перейти к более серьезным вещам. Решил разобраться с протоколом UARТ, и всё что с ним связано. Сам протокол простой. А вот его регистровая модель - тихий ужас. Скачал на сайте проекта OpenCore готовую реализацию микросхемы UART приемопередатчика принялся его разбирать по винтикам. И обнаружил там такую штуку Код LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL;
ENTITY GH_EDGE_DET IS PORT ( CLK : IN STD_LOGIC; RST : IN STD_LOGIC; D : IN STD_LOGIC; RE : OUT STD_LOGIC; -- RISING EDGE (NEED SYNC SOURCE AT D) FE : OUT STD_LOGIC; -- FALLING EDGE (NEED SYNC SOURCE AT D) SRE : OUT STD_LOGIC; -- SYNC'D RISING EDGE SFE : OUT STD_LOGIC -- SYNC'D FALLING EDGE ); END GH_EDGE_DET;
ARCHITECTURE A OF GH_EDGE_DET IS SIGNAL Q0 : STD_LOGIC; SIGNAL Q1 : STD_LOGIC; BEGIN PROCESS ( CLK, RST ) BEGIN IF (RST = '1') THEN Q0 <= '0'; Q1 <= '0'; ELSIF (RISING_EDGE(CLK)) THEN Q0 <= D; Q1 <= Q0; END IF; END PROCESS; RE <= D AND (NOT Q0); FE <= (NOT D) AND Q0; SRE <= Q0 AND (NOT Q1); SFE <= (NOT Q0) AND Q1; END A; И очень часто там применяется выражение типа DATA <= SRE OR SFE Код DATA_SEND_READY : GH_EDGE_DET PORT MAP ( CLK => CLK, RST => RST, D => DSRN, SRE => DSRN_RE, SFE => DSRN_FE ); IDDSR <= DSRN_RE OR DSRN_FE; Я заинтересовался этим, поскольку с "наскока" понять смысл данной операции невозможно. Поковыряв этот модуль (GH_EDGE_DET) я обнаружил что его RTL описание, отображенное в виде схемы, очень похоже на то, что и в статьях про метастабильность триггера: так-же 2 D-триггера, идущих подряд. И решил разобраться в этой теме. Поскольку мне показалось, что автор приемопередатчика как раз и написал этот модуль, чтобы избавляться от метастабильности. Я правильно понял задумку ?
Сообщение отредактировал Flip-fl0p - Aug 18 2016, 13:34
|
|
|
|
|
Aug 18 2016, 13:49
|
Гуру
     
Группа: Модераторы
Сообщений: 4 011
Регистрация: 8-09-05
Из: спб
Пользователь №: 8 369

|
Цитата(Flip-fl0p @ Aug 18 2016, 16:32)  Я пока только учусь, и вопросы у меня глупые К чему я вообще эту тему создал. Я на просторах интернета как-то обнаружил тему про метастсбильность триггеров, прочитал, ничего не понял, но оставил пометку "РАЗОБРАТЬСЯ". Я заинтересовался этим, поскольку с "наскока" понять смысл данной операции невозможно. Поковыряв этот модуль (GH_EDGE_DET) я обнаружил что его RTL описание, отображенное в виде схемы, очень похоже на то, что и в статьях про метастабильность триггера: так-же 2 D-триггера, идущих подряд. И решил разобраться в этой теме. Поскольку мне показалось, что автор приемопередатчика как раз и написал этот модуль, чтобы избавляться от метастабильности. Я правильно понял задумку ? Лучше бы Вы взяли примеры Ксайлинкса, которые ставятся вместе с ИСЕ. На самом деле, если говорить о приемной части UARТ, то там надо данные и сброс привести к системной частоте проекта. А само ядро UARТ делается либо на FSM, либо берутся 2 сдвиговых регистра по 11 бит. В одном принимаются биты, другой заполняется 1 и когда 1 появится в крайнем разряде, то значит все биты приняты... И никакие фокусы типа: RE <= D AND (NOT Q0); FE <= (NOT D) AND Q0; SRE <= Q0 AND (NOT Q1); SFE <= (NOT Q0) AND Q1; не применяйте вообще никогда...
--------------------
www.iosifk.narod.ru
|
|
|
|
Сообщений в этой теме
Flip-fl0p И снова про метастабильность Aug 18 2016, 08:52 _Anatoliy Цитата(Flip-fl0p @ Aug 18 2016, 11:5... Aug 18 2016, 09:53 Flip-fl0p Цитата(Flip-fl0p @ Aug 18 2016, 11:5... Aug 18 2016, 11:28  Кнкн Цитата(Flip-fl0p @ Aug 18 2016, 14:2... Aug 18 2016, 11:49  BackEnd Данное схемное решение снижает вероятность нежелат... Aug 18 2016, 11:57   Flip-fl0p Цитата(BackEnd @ Aug 18 2016, 14:57) Данн... Aug 18 2016, 11:59    BackEnd Именно. Чудес не бывает. Aug 18 2016, 12:01 Dima_G Цитата(Flip-fl0p @ Aug 18 2016, 15:5... Aug 18 2016, 12:05 Flip-fl0p Цитата(Dima_G @ Aug 18 2016, 15:05) Не ва... Aug 18 2016, 12:10  ViKo Цитата(Flip-fl0p @ Aug 18 2016, 15:1... Aug 18 2016, 12:15   Flip-fl0p Цитата(ViKo @ Aug 18 2016, 15:15) Случайн... Aug 18 2016, 12:25    Dima_G Цитата(Flip-fl0p @ Aug 18 2016, 19:2... Aug 18 2016, 12:42     Flip-fl0p Цитата(Dima_G @ Aug 18 2016, 15:42) Еще р... Aug 18 2016, 12:49      Dima_G Цитата(Flip-fl0p @ Aug 18 2016, 19:4... Aug 18 2016, 12:58    ViKo Цитата(Flip-fl0p @ Aug 18 2016, 15:2... Aug 18 2016, 13:09   Flip-fl0p Цитата(iosifk @ Aug 18 2016, 16:49) Лучше... Aug 18 2016, 14:03    _Anatoliy Цитата(Flip-fl0p @ Aug 18 2016, 17:0... Aug 19 2016, 07:49     Maverick от Xilinx Aug 19 2016, 08:07    iosifk Цитата(Flip-fl0p @ Aug 18 2016, 17:0... Aug 19 2016, 07:59 ViKo Там, по-моему, просто находится фронт или срез сиг... Aug 18 2016, 13:55 Flip-fl0p Сам приёмопердатчик UART достаточно простой. Но во... Aug 19 2016, 04:50 Flip-fl0p Спасибо за готовые решения. Поковыряю их на выходн... Aug 19 2016, 08:28 iosifk Цитата(Flip-fl0p @ Aug 19 2016, 11:2... Aug 19 2016, 08:39 Maverick Цитата(Flip-fl0p @ Aug 19 2016, 11:2... Aug 19 2016, 08:57  Flip-fl0p Цитата(Maverick @ Aug 19 2016, 11:57) вро... Aug 19 2016, 09:03 justontime Наверное, спрошу глупость, но, тем не менее, метас... Nov 16 2016, 20:42 iosifk Цитата(justontime @ Nov 16 2016, 23:42) А... Nov 16 2016, 20:49 Shivers Цитата(justontime @ Nov 16 2016, 23:42) Н... Nov 25 2016, 06:20 justontime С гонкой понятно, меня интересовало, может ли не-т... Nov 16 2016, 20:56 iosifk Цитата(justontime @ Nov 16 2016, 23:56) С... Nov 16 2016, 21:05 dvladim Цитата(justontime @ Nov 16 2016, 23:42) Н... Nov 17 2016, 20:10 rudy_b В логическом элементе подобное тоже может быть есл... Nov 18 2016, 05:03 Arranje Хочу добавить свои 5 копеек по теме вопроса.
Топи... Nov 24 2016, 23:59 Flip-fl0p Цитата(Arranje @ Nov 25 2016, 02:59) Хочу... Nov 25 2016, 04:45  Arranje Цитата(Flip-fl0p @ Nov 25 2016, 07:4... Nov 25 2016, 08:58   Shivers Цитата(Arranje @ Nov 25 2016, 11:58) У от... Nov 27 2016, 15:31    ViKo Цитата(Shivers @ Nov 27 2016, 18:31) Я мо... Nov 27 2016, 17:42     Shivers Цитата(ViKo @ Nov 27 2016, 20:42) Не выда... Nov 27 2016, 18:58 ViKo Имел в виду логические выходы целиком. Не обязател... Nov 27 2016, 19:09 Shivers Компрехенсив гайд по метастабильности: https://ha... Dec 13 2016, 15:57 ViKo Цитата(Shivers @ Dec 13 2016, 18:57) Комп... Dec 14 2016, 05:33  Shivers Цитата(ViKo @ Dec 14 2016, 08:33) Автор с... Dec 14 2016, 06:30   ViKo Цитата(Shivers @ Dec 14 2016, 09:30) p.s.... Dec 14 2016, 07:27 sonycman Так это что получается, полностью от метастабильно... Dec 13 2016, 19:18 dima32rus Цитата(sonycman @ Dec 13 2016, 22:18) Так... Dec 13 2016, 19:34 likeasm Всех с наступившим! Родился у меня вопрос про ... Jan 5 2017, 16:55 des333 Цитата(likeasm @ Jan 5 2017, 19:55) Всех ... Jan 5 2017, 17:17 Shivers Вероятность сбоя на выходе синхронизатора мультипл... Jan 5 2017, 17:44 rudy_b Есть достаточно надежный способ полностью избежать... Jan 6 2017, 09:46
3 чел. читают эту тему (гостей: 3, скрытых пользователей: 0)
Пользователей: 0
|
|
|