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

И снова про метастабильность

Помогите разобраться с метастабильным состоянием. Я прочитал кучу статей, но так и не понял главного. Почему второй триггер позволяет уменьшить вероятность возникновения метастабильности ?

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

Далее до прихода второго синхросигнала у нас возможны 3 варианта развития событий.

1 вариант. У нас триггер так и остался в метастабильном состоянии и эта неопределенность на выходе передается на второй триггер. Что будет на выходе второго триггера зависит лишь от параметров его транзисторов. Триггер прочитает это состояние как 0, или как 1. Либо так-же перейдет в метастабильное состояние

2 вариант. Триггер побыл в метастабильном состоянии и до прихода второго синхроимпульса решил переключится в состояние 1. С приходом второго синхросигнала значение выхода первого триггера передалось на второй триггер. И все работает как положено.

3 вариант. Триггер решил переключитсья в состояние нуля. В этом случае с приходом второго синхроимпульса триггер передал ноль в следующий регистр. И этот ноль является ошибкой.

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

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


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

 

А здесь смотрели? Обратите внимание на ответы SM и Oldring

мета

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


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

А здесь смотрели? Обратите внимание на ответы SM и Oldring

Читал. Внимательно и долго. Но на свой вопрос я ответ не нашел.

Как я понял основная задача второго триггера обеспечить время равное 1 периоду частоты для того чтобы первый триггер успел "разобраться" со своей метастабильностью, и к моменту начала второго периода синхросигнала он был в устойчивом состоянии. Но вот я не могу понять одного. Ведь триггер из метастабильного состояния может переключиться не только в единицу, так-же он может переключиться в ноль. По аналогии как везде рисуют мяч на горе. Он может как в одну сторону скатиться, так и в другую. И мы вторым триггером лишь даем время упасть мячу. Но никак на процесс падения не влияем. И даже поставив 2 триггер мы не можем быть уверенны в достоверности данных.

Или я что-то путаю ?

Изменено пользователем Flip-fl0p

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


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

Читал. Внимательно и долго. Но на свой вопрос я ответ не нашел.

Как я понял основная задача второго триггера обеспечить время равное 1 периоду частоты для того чтобы первый триггер успел "разобраться" со своей метастабильностью, и к моменту начала второго периода синхросигнала он был в устойчивом состоянии. Но вот я не могу понять одного. Ведь триггер из метастабильного состояния может переключиться не только в единицу, так-же он может переключиться в ноль. По аналогии как везде рисуют мяч на горе. Он может как в одну сторону скатиться, так и в другую. И мы вторым триггером лишь даем время упасть мячу. Но никак на процесс падения не влияем. И даже поставив 2 триггер мы не можем быть уверенны в достоверности данных.

Или я что-то путаю ?

 

Достигается только однозначность работы схем, зависящих от ресинхронизированного сигнала.

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


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

Данное схемное решение снижает вероятность нежелательного события. "Вероятность" - ключевое слово.

 

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


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

Данное схемное решение снижает вероятность нежелательного события. "Вероятность" - ключевое слово.

То есть самое правильное решение - это задавать констрейны таким образом чтобы времена установки и удержания триггеров были в соответствии с рекомендациями производителя чипа ? Ну и периодически добавлять триггеры в "узких местах" ?

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


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

1 вариант. У нас триггер так и остался в метастабильном состоянии и эта неопределенность на выходе передается на второй триггер. Что будет на выходе второго триггера зависит лишь от параметров его транзисторов. Триггер прочитает это состояние как 0, или как 1. Либо так-же перейдет в метастабильное состояние

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

Если больше - ставят три.

 

3 вариант. Триггер решил переключитсья в состояние нуля. В этом случае с приходом второго синхроимпульса триггер передал ноль в следующий регистр. И этот ноль является ошибкой.

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

 

(*) тут не совсем корректен термин "ошибочное вычитывание". Скажем так, в случае метастабильности первого триггера, значение просто считается с задержкой в такт

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


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

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

Если больше - ставят три.

 

 

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

 

(*) тут не совсем корректен термин "ошибочное вычитывание". Скажем так, в случае метастабильности первого триггера, значение просто считается с задержкой в такт

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

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


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

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

Случайное, но конкретное. Мала вероятность, что состояние на входе второго триггера загонит его в метастабильное состояние. Здесь получается произведение малых вероятностей.

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


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

Случайное, но конкретное. Мала вероятность, что состояние на входе второго триггера загонит его в метастабильное состояние. Здесь получается произведение малых вероятностей.

Полностью согласен, что вероятность того, что второй триггер "свалиться" в метастабильное состояние - это очень и очень маленькая вероятность.

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

Изменено пользователем Flip-fl0p

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


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

Если второй триггер словил чушь, то и все остальные будут принимать эту чушь, как эстафетную палочку.

Еще раз - синхронизаторы предназначены лишь для недопущения на вход схемы неопределенного значения.

Вот пример - заводите извне сигнал enable в схему и нарываемся на метастабильность (те внешний сигнал меняется рядом с тактовой частотой вашей схемы из 0 в 1).

И тут получается, что часть триггеров вашей FPGA решила, что enable == 1, другая, что enable == 0.

Логика работы схемы гарантированно разрушится!

 

В случае синхронизаторов, вы лишь ЧУТЬ ПОЗЖЕ (на такт) получите сигнал enable, если первый синзхронизатор ошибочно "свалится" в ноль.

Обычно это не страшно при корректном выборе соотношений внутренних и внешних частот.

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


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

Еще раз - синхронизаторы предназначены лишь для недопущения на вход схемы неопределенного значения.

Вот пример - заводите извне сигнал enable в схему и нарываемся на метастабильность (те внешний сигнал меняется рядом с тактовой частотой вашей схемы из 0 в 1).

И тут получается, что часть триггеров вашей FPGA решила, что enable == 1, другая, что enable == 0.

Логика работы схемы гарантированно разрушится!

 

В случае синхронизаторов, вы лишь ЧУТЬ ПОЗЖЕ (на такт) получите сигнал enable, если первый синзхронизатор ошибочно "свалится" в ноль.

Обычно это не страшно при корректном выборе соотношений внутренних и внешних частот.

Кажется понял. Например мы где-то из вне жамкаем кнопку, которая всю схему сбрасывает.

При нажатии кнопки у нас триггер вошел в метастабильное состояние. Второй триггер считал с него данные и выдал гарантированно ноль или единицу.

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

Изменено пользователем Flip-fl0p

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


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

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

Если время нажатия кнопки примерно равно (или меньше) тактовой триггеров синхронизатора.

Почему я и написал ранее - "при корректном выборе частот". Сделайте тактовую в 10 раз выше, чем частота внешнего сигнала - и все будет отлично работать.

 

Для случая сравнимых частот применяются другие решения. Например, двухклоковое ФИФО.

Вообщем, читайте инфу по CDC - информации море.

 

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


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

Полностью согласен, что вероятность того, что второй триггер "свалиться" в метастабильное состояние - это очень и очень маленькая вероятность.

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

На следующем такте получим 1, если не получили на текущем (а получили 0, хотя на входе сигнал изменяется из 0 в 1).

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


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

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

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

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

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

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

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

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

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

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