|
И снова про метастабильность, Почему 2 триггер "защищает" от метастабильности. |
|
|
|
 |
Ответов
(1 - 51)
|
Aug 18 2016, 11:28
|

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

|
Цитата(Flip-fl0p @ Aug 18 2016, 11:52)  А здесь смотрели? Обратите внимание на ответы SM и Oldring Читал. Внимательно и долго. Но на свой вопрос я ответ не нашел. Как я понял основная задача второго триггера обеспечить время равное 1 периоду частоты для того чтобы первый триггер успел "разобраться" со своей метастабильностью, и к моменту начала второго периода синхросигнала он был в устойчивом состоянии. Но вот я не могу понять одного. Ведь триггер из метастабильного состояния может переключиться не только в единицу, так-же он может переключиться в ноль. По аналогии как везде рисуют мяч на горе. Он может как в одну сторону скатиться, так и в другую. И мы вторым триггером лишь даем время упасть мячу. Но никак на процесс падения не влияем. И даже поставив 2 триггер мы не можем быть уверенны в достоверности данных. Или я что-то путаю ?
Сообщение отредактировал Flip-fl0p - Aug 18 2016, 11:28
|
|
|
|
|
Aug 18 2016, 12:05
|
Местный
  
Группа: Свой
Сообщений: 279
Регистрация: 2-07-08
Из: Новосибирск
Пользователь №: 38 699

|
Цитата(Flip-fl0p @ Aug 18 2016, 15:52)  1 вариант. У нас триггер так и остался в метастабильном состоянии и эта неопределенность на выходе передается на второй триггер. Что будет на выходе второго триггера зависит лишь от параметров его транзисторов. Триггер прочитает это состояние как 0, или как 1. Либо так-же перейдет в метастабильное состояние Не вариант. Триггер рано или поздно выпадет из метастабильного состояния. Если это время меньше периода тактовой - хватит двух триггеров в цепочке. Если больше - ставят три. Цитата(Flip-fl0p @ Aug 18 2016, 15:52)  3 вариант. Триггер решил переключитсья в состояние нуля. В этом случае с приходом второго синхроимпульса триггер передал ноль в следующий регистр. И этот ноль является ошибкой. Вы не верно понимаете задачи цепочек синхронизации - они не защищают от "ошибочного вычитывания" (*), они защищают от ошибочного состояния (между нулем и единицей). (*) тут не совсем корректен термин "ошибочное вычитывание". Скажем так, в случае метастабильности первого триггера, значение просто считается с задержкой в такт
|
|
|
|
|
Aug 18 2016, 12:42
|
Местный
  
Группа: Свой
Сообщений: 279
Регистрация: 2-07-08
Из: Новосибирск
Пользователь №: 38 699

|
Цитата(Flip-fl0p @ Aug 18 2016, 19:25)  Если второй триггер словил чушь, то и все остальные будут принимать эту чушь, как эстафетную палочку. Еще раз - синхронизаторы предназначены лишь для недопущения на вход схемы неопределенного значения. Вот пример - заводите извне сигнал enable в схему и нарываемся на метастабильность (те внешний сигнал меняется рядом с тактовой частотой вашей схемы из 0 в 1). И тут получается, что часть триггеров вашей FPGA решила, что enable == 1, другая, что enable == 0. Логика работы схемы гарантированно разрушится! В случае синхронизаторов, вы лишь ЧУТЬ ПОЗЖЕ (на такт) получите сигнал enable, если первый синзхронизатор ошибочно "свалится" в ноль. Обычно это не страшно при корректном выборе соотношений внутренних и внешних частот.
|
|
|
|
|
Aug 18 2016, 12:49
|

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

|
Цитата(Dima_G @ Aug 18 2016, 15:42)  Еще раз - синхронизаторы предназначены лишь для недопущения на вход схемы неопределенного значения. Вот пример - заводите извне сигнал enable в схему и нарываемся на метастабильность (те внешний сигнал меняется рядом с тактовой частотой вашей схемы из 0 в 1). И тут получается, что часть триггеров вашей FPGA решила, что enable == 1, другая, что enable == 0. Логика работы схемы гарантированно разрушится!
В случае синхронизаторов, вы лишь ЧУТЬ ПОЗЖЕ (на такт) получите сигнал enable, если первый синзхронизатор ошибочно "свалится" в ноль. Обычно это не страшно при корректном выборе соотношений внутренних и внешних частот. Кажется понял. Например мы где-то из вне жамкаем кнопку, которая всю схему сбрасывает. При нажатии кнопки у нас триггер вошел в метастабильное состояние. Второй триггер считал с него данные и выдал гарантированно ноль или единицу. Таким образом существует вероятность, что мы кнопку нажали, а схема не сбросилась ?
Сообщение отредактировал Flip-fl0p - Aug 18 2016, 12:50
|
|
|
|
|
Aug 18 2016, 12:58
|
Местный
  
Группа: Свой
Сообщений: 279
Регистрация: 2-07-08
Из: Новосибирск
Пользователь №: 38 699

|
Цитата(Flip-fl0p @ Aug 18 2016, 19:49)  Таким образом существует вероятность, что мы кнопку нажали, а схема не сбросилась ? Если время нажатия кнопки примерно равно (или меньше) тактовой триггеров синхронизатора. Почему я и написал ранее - "при корректном выборе частот". Сделайте тактовую в 10 раз выше, чем частота внешнего сигнала - и все будет отлично работать. Для случая сравнимых частот применяются другие решения. Например, двухклоковое ФИФО. Вообщем, читайте инфу по CDC - информации море.
|
|
|
|
|
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
|
|
|
|
|
Aug 18 2016, 14:03
|

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

|
Цитата(iosifk @ Aug 18 2016, 16:49)  Лучше бы Вы взяли примеры Ксайлинкса, которые ставятся вместе с ИСЕ. На самом деле, если говорить о приемной части 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; не применяйте вообще никогда... А что там некрасиво ? Просто это готовый проект где реализована регистровая модель. Вот мне и интересно с ней разобраться. Увы готовых решений акромя этого я не нашел. Цитата(ViKo @ Aug 18 2016, 16:55)  Там, по-моему, просто находится фронт или срез сигнала. Был 1, стал 0 - ага, срез... Да не как-то он хитрее работает. Вот времянки:
|
|
|
|
|
Nov 16 2016, 20:42
|
Местный
  
Группа: Свой
Сообщений: 254
Регистрация: 6-12-14
Из: СПб
Пользователь №: 84 003

|
Наверное, спрошу глупость, но, тем не менее, метастабильность может возникнуть только в триггере ?
А если, условно говоря, на один из входов логического "И" придет единица практически в тот же момент, когда со второго входа она исчезнет, не может получиться, что этот элемент перейдет в метастабильное состояние ?
|
|
|
|
|
Nov 17 2016, 20:10
|
Знающий
   
Группа: Свой
Сообщений: 654
Регистрация: 24-01-07
Из: Воронеж
Пользователь №: 24 737

|
Цитата(justontime @ Nov 16 2016, 23:42)  Наверное, спрошу глупость, но, тем не менее, метастабильность может возникнуть только в триггере ? Метастабильность может возникнуть в элементе, который хранит состояние (т.е. с положительной обратной связью). У логического И обратной связи нет.
|
|
|
|
|
Nov 24 2016, 23:59
|
Участник

Группа: Участник
Сообщений: 36
Регистрация: 5-02-09
Пользователь №: 44 455

|
Хочу добавить свои 5 копеек по теме вопроса.
Топикстартер спрашивал почему 2-й триггер "защищает" от метастабильности. Я хочу пояснить суть слова "защищает". Как вы знаете, есть 2 стабильных состояния 0 и 1, но из-за некорректных таймингов триггер может попадать в метастабильное состояние "0.5". Я назвал его "0.5" потому что с точки зрения напряжения это "среднее" значение между напряжениями 0 и 1. При напряжении "0.5" все транзисторы, на которое это напряжение поступает, будут полуоткрыты, что повлечёт за собой жуткое потребление тока и сильный нагрев микросхемы (микросхема гипотетически может повредиться, если комбинационная логика (а значит кол-во полуоткрытых транзисторов) после метастабильного триггера большая).
Так вот второй триггер не даёт напряжению "0.5" поступать на комбинационную логику, защищая микросхему от опасного состояния.
Сообщение отредактировал Arranje - Nov 25 2016, 00:02
|
|
|
|
|
Nov 25 2016, 04:45
|

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

|
Цитата(Arranje @ Nov 25 2016, 02:59)  Хочу добавить свои 5 копеек по теме вопроса.
Топикстартер спрашивал почему 2-й триггер "защищает" от метастабильности. Я хочу пояснить суть слова "защищает". Как вы знаете, есть 2 стабильных состояния 0 и 1, но из-за некорректных таймингов триггер может попадать в метастабильное состояние "0.5". Я назвал его "0.5" потому что с точки зрения напряжения это "среднее" значение между напряжениями 0 и 1. При напряжении "0.5" все транзисторы, на которое это напряжение поступает, будут полуоткрыты, что повлечёт за собой жуткое потребление тока и сильный нагрев микросхемы (микросхема гипотетически может повредиться, если комбинационная логика (а значит кол-во полуоткрытых транзисторов) после метастабильного триггера большая).
Так вот второй триггер не даёт напряжению "0.5" поступать на комбинационную логику, защищая микросхему от опасного состояния. Спасибо ! Я долго врубался в смысл второго триггера и понял наконец в чём смысл его. И правильно я понимаю, что если период входного асинхронного сигнала меньше чем период синхрочастоты, то есть вероятность что этот сигнал после выхода триггера из метастабильного состояния так и не попадет на выход (по аналогии с мячиком, мячик скатиться в область нуля..)
|
|
|
|
|
Nov 25 2016, 06:20
|

Знающий
   
Группа: Свой
Сообщений: 680
Регистрация: 11-02-08
Из: Msk
Пользователь №: 34 950

|
Цитата(justontime @ Nov 16 2016, 23:42)  Наверное, спрошу глупость, но, тем не менее, метастабильность может возникнуть только в триггере ? Метастабильность бывает только у триггеров (бистабильных элементов). При этом, все равно какой триггер - Шмитдта, на элементах И, ИЛИ, либо сделанный на проходных ключах и двунаправленных буферах. Абсолютно любой триггер может попасть в метастабильное состояние, это доказано с помощью математики в Theory of metastable Operations. Условие для возникновения метастабильного состояния - энергии переключающего импульса(ов) недостаточно, чтобы полностью переключить триггер, но и обратно в стабильное состояние триггер вернуться уже не может, и как бы подвисает в некоем устойчивом состоянии между логическим нулем и единицей. Время выхода из метастабильного состояния определяется распределением по Пуассону и может теоретически достигать бесконечности. На практике всегда присутствуют тепловые токи, которые выводят триггер из метастабильного состояния. Можно рассчитать вероятность попадания триггера в метастабильное состояние. К примеру, такой расчет проводят для CDC - Clock Domains Crossing. Двух триггеров достаточно, чтобы метастабильность возникала раз в несколько лет, трех триггеров - раз в несколько миллионов лет. Но всегда остается шанс, что даже три триггера не защитят от метастабильности на выходе. Цитата(Arranje @ Nov 25 2016, 02:59)  При напряжении "0.5" все транзисторы, на которое это напряжение поступает, будут полуоткрыты, что повлечёт за собой жуткое потребление тока и сильный нагрев микросхемы (микросхема гипотетически может повредиться, Сопротивление открытых КМОП каналов очень велико и токи низкие, поэтому никакого жуткого потребления и нагрева нет. Метастабильность плоха только неправильной интерпретацией схемы логического уровня - к примеру вместо 0 схема отработала 1, это считается сбоем.
|
|
|
|
|
Nov 25 2016, 08:58
|
Участник

Группа: Участник
Сообщений: 36
Регистрация: 5-02-09
Пользователь №: 44 455

|
Цитата(Flip-fl0p @ Nov 25 2016, 07:45)  Спасибо ! Я долго врубался в смысл второго триггера и понял наконец в чём смысл его. И правильно я понимаю, что если период входного асинхронного сигнала меньше чем период синхрочастоты, то есть вероятность что этот сигнал после выхода триггера из метастабильного состояния так и не попадет на выход (по аналогии с мячиком, мячик скатиться в область нуля..) ДА, при метастабильности значение выхода будет "случайным". И выход триггера может потерять информацию о входе (если держать входной сигнал меньше 1-го такта). Добавлю только, что это справедливо и для обратного случай (вход триггера переключился из 1 в 0, а выход так и остался 1). Цитата(Shivers @ Nov 25 2016, 09:20)  Сопротивление открытых КМОП каналов очень велико и токи низкие, поэтому никакого жуткого потребления и нагрева нет. У открытых каналов сопротивление очень маленькое, у закрытых - очень большое. У полуоткрытых, когда вместо логической '1', например, величиной в 2.5В подают 1.25В, сопротивление транзисторов на стоке и истоке относительно небольшое, в результате имеем большой ток от питания к земле. Как известно, кМОП логика потребляет при переключении, а если состояние переключение "зависло" (из-за метастабильности), то микросхема начнёт потреблять, оснобенно при развесистой комбинационной логике после триггера. Некорректные значения - это тоже проблема.
Сообщение отредактировал Arranje - Nov 25 2016, 09:29
|
|
|
|
|
Nov 27 2016, 15:31
|

Знающий
   
Группа: Свой
Сообщений: 680
Регистрация: 11-02-08
Из: Msk
Пользователь №: 34 950

|
Цитата(Arranje @ Nov 25 2016, 11:58)  У открытых каналов сопротивление очень маленькое, у закрытых - очень большое. Я моделировал эти режимы на спайсе для 65нм, в т.ч. и токи "КЗ", когда у инвертора открыты оба транзистора. Сопротивление между шинами в этот момент - килоОмы, так о "КЗ" речь вообще не идет! Не будет ни нагрева, ни повышенной электромиграции, ничего. Просто, течет чуть повышенный ток. Цитата(Arranje @ Nov 25 2016, 11:58)  Как известно, кМОП логика потребляет при переключении, а если состояние переключение "зависло" (из-за метастабильности), то микросхема начнёт потреблять, оснобенно при развесистой комбинационной логике после триггера. Кому известно, где это написано? Если схема состоит из одного транзистора и десяти логических элементов, то ток вырастет заметно. А если в схеме транзисторов - миллионы, и один попал в метастабильность, то разницу в потреблении ни один прибор не увидит. Метастабильность конечно распространяется в логике, но через 3-5 вентилей уровень сигнала достигает нижнего или верхнего порога, и дальше уже идет нормальный сигнал.
|
|
|
|
|
Dec 13 2016, 19:34
|
Частый гость
 
Группа: Свой
Сообщений: 134
Регистрация: 9-11-12
Из: г. Брянск
Пользователь №: 74 311

|
Цитата(sonycman @ Dec 13 2016, 22:18)  Так это что получается, полностью от метастабильности избавиться нельзя, и сбои будут в любом случае? И все эти clock crossing bridge не дают 100% гарантии корректности передаваемых данных? 100% не дают, зато дают 99,9999....%
|
|
|
|
|
Dec 14 2016, 06:30
|

Знающий
   
Группа: Свой
Сообщений: 680
Регистрация: 11-02-08
Из: Msk
Пользователь №: 34 950

|
Цитата(ViKo @ Dec 14 2016, 08:33)  Автор статьи сам легонько плавает в теме. Особенно умиляет вывод 5. Засунул голову в песок, и нет проблемы. Плавает, конечно. Не плавают те, кто постит в IEEE, а не хабр  Да и то не факт По пункту 5 - пост все же о метастабильности, а не STA. Хороший гайд по STA+CDC получится объемом не меньше, а может быть даже больше. Есть желающие написать? Я бы почитал p.s. Вы просили спайс модели - там в комментах есть ссылки на FreePDK 45
|
|
|
|
|
Dec 14 2016, 07:27
|

Универсальный солдатик
     
Группа: Модераторы
Сообщений: 8 634
Регистрация: 1-11-05
Из: Минск
Пользователь №: 10 362

|
Цитата(Shivers @ Dec 14 2016, 09:30)  p.s. Вы просили спайс модели - там в комментах есть ссылки на FreePDK 45 Да-да, я заметил. Пойду качать. А вот поставить параллельно два триггера, и объединить выходы. Лучше три.  Тоже вероятность получить неопределенное состояние значительно уменьшится. Особенно, если на вход данных подать сигналы с разными подтяжками. А такт не теряем. ? Цитата(Shivers @ Dec 14 2016, 09:30)  Хороший гайд по STA+CDC получится объемом не меньше, а может быть даже больше. Есть желающие написать? Я бы почитал http://www.alterawiki.com/wiki/Timing_Constraintshttp://www.alterawiki.com/wiki/File:TimeQuest_User_Guide.pdfИли чуть-чуть задержать данные по-разному.
|
|
|
|
|
Jan 5 2017, 17:17
|
Профессионал
    
Группа: Свой
Сообщений: 1 129
Регистрация: 19-07-08
Из: Санкт-Петербург
Пользователь №: 39 079

|
Цитата(likeasm @ Jan 5 2017, 19:55)  Всех с наступившим! Родился у меня вопрос про вероятность появления метастабильного состояния. Что будет надежнее при приеме асинхронного сигнала, цепочка из 2-х Д триггеров работающая на частоте CLK, или цепочка из 3-х или может 4-х  Д триггеров работающая на частоте CLK*2? Я думаю, что самый простой и надежный способ узнать ответ -- это подставить числа в формулу и посчитать. Судя по графикам -- на 4-х триггерах будет надежнее.
--------------------
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|