реклама на сайте
подробности

 
 
> И снова про метастабильность, Почему 2 триггер "защищает" от метастабильности.
Flip-fl0p
сообщение Aug 18 2016, 08:52
Сообщение #1


В поисках себя...
****

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



Помогите разобраться с метастабильным состоянием. Я прочитал кучу статей, но так и не понял главного. Почему второй триггер позволяет уменьшить вероятность возникновения метастабильности ?
Допустим у нас нарушены параметры времени установки или удержания сигнала данных для триггера и он переходит в так называемое метастабильное состояние.
Далее до прихода второго синхросигнала у нас возможны 3 варианта развития событий.
1 вариант. У нас триггер так и остался в метастабильном состоянии и эта неопределенность на выходе передается на второй триггер. Что будет на выходе второго триггера зависит лишь от параметров его транзисторов. Триггер прочитает это состояние как 0, или как 1. Либо так-же перейдет в метастабильное состояние
2 вариант. Триггер побыл в метастабильном состоянии и до прихода второго синхроимпульса решил переключится в состояние 1. С приходом второго синхросигнала значение выхода первого триггера передалось на второй триггер. И все работает как положено.
3 вариант. Триггер решил переключитсья в состояние нуля. В этом случае с приходом второго синхроимпульса триггер передал ноль в следующий регистр. И этот ноль является ошибкой.
Вот читаю я статьи про метастабильность и никак не могу понять, что же делает такого особенного второй триггер, что на его выходе получается правильный сигнал ? Может я что-то не понимаю ?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
yes
сообщение Aug 18 2016, 13:14
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 2 198
Регистрация: 23-12-04
Пользователь №: 1 640



что-то не так в этой теме sm.gif

там где можно применить констрейны, там никакой метастабильности не возникает (не должно в результате следования процессу разработки)

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

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

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

также окно входного сигнала триггера, которое защелкнется метастабильно гораздо уже, чем значение выхода в метастабильном состоянии - это применялось, когда строили цепочки из более чем 2х триггеров
обычно асинхронный сигнал в виде импульса не ловят, это фронт, поэтому не важно, как разрешится метастабильность в 0 или 1 в этой цепочке - это просто приводит к задержке на 1 такт такта получателя, что приемлемо для асинхронного приемника

-----------

на пальцах как-то так - если порыться в книжках или в сети, то можно найти и формулы
Go to the top of the page
 
+Quote Post
Flip-fl0p
сообщение Aug 18 2016, 13:32
Сообщение #3


В поисках себя...
****

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



Цитата(yes @ Aug 18 2016, 16:14) *
что-то не так в этой теме sm.gif

там где можно применить констрейны, там никакой метастабильности не возникает (не должно в результате следования процессу разработки)

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

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

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

также окно входного сигнала триггера, которое защелкнется метастабильно гораздо уже, чем значение выхода в метастабильном состоянии - это применялось, когда строили цепочки из более чем 2х триггеров
обычно асинхронный сигнал в виде импульса не ловят, это фронт, поэтому не важно, как разрешится метастабильность в 0 или 1 в этой цепочке - это просто приводит к задержке на 1 такт такта получателя, что приемлемо для асинхронного приемника

-----------


на пальцах как-то так - если порыться в книжках или в сети, то можно найти и формулы


Я пока только учусь, и вопросы у меня глупые smile3046.gif
К чему я вообще эту тему создал. Я на просторах интернета как-то обнаружил тему про метастсбильность триггеров, прочитал, ничего не понял, но оставил пометку "РАЗОБРАТЬСЯ".
Поигравшись с семисегментными индикаторами, реализовав на макетной плате всякие динамические индикации, часы, и прочую лабуду решил перейти к более серьезным вещам. Решил разобраться с протоколом 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
Go to the top of the page
 
+Quote Post
iosifk
сообщение Aug 18 2016, 13:49
Сообщение #4


Гуру
******

Группа: Модераторы
Сообщений: 4 011
Регистрация: 8-09-05
Из: спб
Пользователь №: 8 369



Цитата(Flip-fl0p @ Aug 18 2016, 16:32) *
Я пока только учусь, и вопросы у меня глупые smile3046.gif
К чему я вообще эту тему создал. Я на просторах интернета как-то обнаружил тему про метастсбильность триггеров, прочитал, ничего не понял, но оставил пометку "РАЗОБРАТЬСЯ".


Я заинтересовался этим, поскольку с "наскока" понять смысл данной операции невозможно.
Поковыряв этот модуль (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
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- 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


Reply to this topicStart new topic
3 чел. читают эту тему (гостей: 3, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 18th July 2025 - 21:31
Рейтинг@Mail.ru


Страница сгенерированна за 0.01476 секунд с 7
ELECTRONIX ©2004-2016