Oldring 0 11 апреля, 2011 Опубликовано 11 апреля, 2011 · Жалоба Это рисунок 8, на который ссылается Мур. Думаю, часть темы стоит посвятить этой картинке. Мур совсем недавно опубликовал схему от себя. В общем, журнальная схема Иосифа - правильная, схема Мур потенциально ошибочна. Я сейчас смотрю в TimeQuest (пришло время), и прихожу к выводу, что по ПЛИС такты приходят на триггера совсем не одновременно. Разумеется, но все тулзы об этом знают отлично, обеспечивая согласованность прихода к каждому триггеру данных и соответствующего клока без нарушения setup/hold в самых крайних условиях эксплуатации. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Мур 1 11 апреля, 2011 Опубликовано 11 апреля, 2011 · Жалоба Про эту картинку речь идет? Пусть висит. Если на входе Data будет импульс в 3 такта Clock1, на Output появится 2 импульса длительностью Clock2. И без всякой метастабильности. В метастабильном состоянии триггер может висеть "между небом и землей" сколь угодно долго, в идеальном случае. Спасибо за науку! Для меня это новость. Серый уровень на выходе триггера возможен оказывается... тогда схема ошибочна............ А я поверил авторитету. Мур совсем недавно опубликовал схему от себя. В общем, журнальная схема Иосифа - правильная, схема Мур потенциально ошибочна. Это из-за дополнительного триггера на выходе? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Oldring 0 11 апреля, 2011 Опубликовано 11 апреля, 2011 · Жалоба Это из-за дополнительного триггера на выходе? Из-за дополнительного триггера в середине, который вместе со следующим триггером образуют нормальный синхронизатор. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Мур 1 11 апреля, 2011 Опубликовано 11 апреля, 2011 · Жалоба Из-за дополнительного триггера в середине, который вместе со следующим триггером образуют нормальный синхронизатор. Я понял! Проблема в первом =переходном триггере=, который берёт на себя =все грехи= метастабильности. К моей схеме надо добавить тригерок. Правильно? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Oldring 0 11 апреля, 2011 Опубликовано 11 апреля, 2011 · Жалоба Я понял! Проблема в первом =переходном триггере=, который берёт на себя =все грехи= метастабильности. К моей схеме надо добавить тригерок. Правильно? Примерно там. Можно сказать, что "берет грехи". Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ViKo 1 11 апреля, 2011 Опубликовано 11 апреля, 2011 · Жалоба Серый уровень на выходе триггера возможен оказывается... Да, возможен. И именно в триггере. В обычной логике такое невозможно. В момент фронта тактового сигнала, если изменяется сигнал на входе данных, триггер "не знает", что ему защелкивать. И думает до-о-о-о-о-о-лго... если сигнал на входе попадает точно на порог переключения. Если не точно, то думает недо-о-олго... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Мур 1 12 апреля, 2011 Опубликовано 12 апреля, 2011 (изменено) · Жалоба Да, возможен. И именно в триггере. В обычной логике такое невозможно. В момент фронта тактового сигнала, если изменяется сигнал на входе данных, триггер "не знает", что ему защелкивать. И думает до-о-о-о-о-о-лго... если сигнал на входе попадает точно на порог переключения. Если не точно, то думает недо-о-олго... ОК! Я считал, что проблема для триггера на входе, а не на выходе. В моём представлении триггер не может быть в сером уровне по определению. Тогда в =моём случае= действительно возможна ситуация отсутствия или удвоенного импульса на выходе. Всё будет зависеть от трактовки серости либо элементом искл-или либо выходным триггером. А дополнительный триггер по Oldring-у, если так случится при асинхронщине, может пребывать в неопределённом состоянии серости(а не чёрно-белом!) до следующего такта. Вот почему я его =за ненабностью= удалил!....(по сравнению с рис.8)-считал лишним. А он по грехам работает! Всем огромное спасибо! Усвоил качественно! :tort: Изменено 12 апреля, 2011 пользователем Мур Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Oldring 0 12 апреля, 2011 Опубликовано 12 апреля, 2011 · Жалоба А дополнительный триггер по Oldring-у, если так случится при асинхронщине, может пребывать в неопределённом состоянии серости(а не чёрно-белом!) до следующего такта. Нет, не до следующего. Выход из метастабильного состояния - это вероятностный процесс. Вероятность остаться в метастабильном состоянии понижается экспоненциально с увеличением премени. Поэтому достаточно несколько десятков постоянных времени выхода из метастабильности, чтобы эта вероятность стала практически нулевой. Но тонкость в том, что если после метастабильного триггера подключен на небольшом расстоянии следующий триггер, то разница между периодом клока и временем распространения сигнала превышает эти несколько постоянных времени, по крайней мере, для триггеров в FPGA. А если там еще несколько слоёв логики, то эти разница может оказаться близка а нулю, и хоть и первый триггер вывалится из метастабильного состояния к следующему фронту клока, сигнал на входах следующих триггеров, после этих слоёв логики, еще останется нелогическим или, скорее, нестабильным, с заметно отличной от нуля вероятностью. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Мур 1 12 апреля, 2011 Опубликовано 12 апреля, 2011 · Жалоба Нет, не до следующего. Выход из метастабильного состояния - это вероятностный процесс. Вероятность остаться в метастабильном состоянии понижается экспоненциально с увеличением премени. Поэтому достаточно несколько десятков постоянных времени выхода из метастабильности, чтобы эта вероятность стала практически нулевой. Но тонкость в том, что если после метастабильного триггера подключен на небольшом расстоянии следующий триггер, то разница между периодом клока и временем распространения сигнала превышает эти несколько постоянных времени, по крайней мере, для триггеров в FPGA. А если там еще несколько слоёв логики, то эти разница может оказаться близка а нулю, и хоть и первый триггер вывалится из метастабильного состояния к следующему фронту клока, сигнал на входах следующих триггеров, после этих слоёв логики, еще останется нелогическим или, скорее, нестабильным, с заметно отличной от нуля вероятностью. Интересно! И что, долбёжка по входу, при серости на выходе, не решает неопределённости? ...Базовый синхронизатор(в синем цвете)- это пара триггеров. По первому мы определились! А второй, получается, нужен для вероятностного вываливания первого из неопределённости? Призрак триггера Шмидта стоит передо мной! :rolleyes: Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Oldring 0 12 апреля, 2011 Опубликовано 12 апреля, 2011 · Жалоба Интересно! И что, долбёжка по входу, при серости на выходе, не решает неопределённости? ...Базовый синхронизатор(в синем цвете)- это пара триггеров. По первому мы определились! А второй, получается, нужен для вероятностного вываливания первого из неопределённости? Призрак триггера Шмидта стоит передо мной! :rolleyes: Нет, долбежка по входу не поможет - это же триггеры, они переключаются по фронту клока. Второй нужен только для того, чтобы оттянуть логику с выхода первого, дав ему времени на размышления о смысле его бытия. Поэтому, кстати, без отключения ретайминга через него, он бесполезен. Триггер Шмидта тут ничем помочь не может. Метастабильность принципиально неизбежна при перехода асинхронного сигнала в синхронный домен. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Мур 1 12 апреля, 2011 Опубликовано 12 апреля, 2011 (изменено) · Жалоба Нет, долбежка по входу не поможет - это же триггеры, они переключаются по фронту клока. Я и имел ввиду фронт клока! Понятие =неопределённо долго= я утрировал на события нескольких фронтов клока... Второй нужен только для того, чтобы оттянуть логику с выхода первого, дав ему времени на размышления о смысле его бытия. Поэтому, кстати, без отключения ретайминга через него, он бесполезен. Триггер Шмидта тут ничем помочь не может. Метастабильность принципиально неизбежна при перехода асинхронного сигнала в синхронный домен. А гистерезис? Уж он-то должен решать неопределённость выхода. Положительная обратная связь всё-таки!... А второй, получается, нужен для вероятностного вываливания первого из неопределённости? Можно считать второй триггер триггером Шмидта? Образно! 1.За ним последнее слово в оценке(в наихудшем истечении событий) состояния первого триггера. 2.Второй вариант- к следующему фронту клока первый триггер уже будет в норме гарантировано. И это повторит второй! Это черезвычайно важно для одноклоковых сигналов разрешения в синхронных проектах. Там всё строго и вариации длительности недопустимы Изменено 12 апреля, 2011 пользователем Мур Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Oldring 0 12 апреля, 2011 Опубликовано 12 апреля, 2011 · Жалоба А гистерезис? Уж он-то должен решать неопределённость выхода. Положительная обратная связь всё-таки!... Нет. Метастабильность и есть неустойчивое равновесие при наличии положительной обратной связи. Гистерезис тоже бесполезен, так как тут важно поведение линеаризованной системы вблизи точки неустойчивого равновесия при малом сигнале. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Мур 1 12 апреля, 2011 Опубликовано 12 апреля, 2011 · Жалоба Нет. Метастабильность и есть неустойчивое равновесие при наличии положительной обратной связи. Гистерезис тоже бесполезен, так как тут важно поведение линеаризованной системы вблизи точки неустойчивого равновесия при малом сигнале. Прошу не раздражаться на мои импровизации. Я это делаю умышленно, чтобы была полная ясность не только для меня, сомневающегося... Т.е. если провести аналогию с перевёрнутым маятником. Метастабильность порождается ситуацией попадания маятника в вертикальное положение, откуда он может свалиться в любую сторону и в случайный момент времени. Приход следующего фронта ускорит развязку, а может быть и раньше.... и без него... :smile3046: Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ViKo 1 12 апреля, 2011 Опубликовано 12 апреля, 2011 · Жалоба Долбежка тактами поможет. Ведь защелкиваться будет уже новое состояние входов, которое, будем надеяться, в этот момент уже стабильное. Гистерезис не поможет, потому что в этом случае просто появляется два порога восприятия сигнала как 0 или как 1 - при переходе из 0 в 1, и наоборот. Сами пороги технологически остаются примерно теми же. Так как метастабильное состояние выхода триггера не обязательно совпадает с порогом восприятия 0 или 1 для следующего триггера, то следующий триггер зашелкнет уже нечто, похожее на 0 или 1. Но и такой сигнал должен увеличить время срабатывания триггера. Вероятность, что напряжение будет вблизи порога, мала. Следующий триггер уменьшает эту вероятнось почти до нуля. P.S. нужно писать "триггер Шмитта" Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Мур 1 12 апреля, 2011 Опубликовано 12 апреля, 2011 (изменено) · Жалоба library IEEE; use IEEE.STD_LOGIC_1164.all; entity syn is port( clk : in STD_LOGIC; in_level : in STD_LOGIC; reset : in STD_LOGIC; imp : out STD_LOGIC ); end syn; architecture syn_body of syn is signal jjj : STD_LOGIC; signal qqq : STD_LOGIC; signal ddd : STD_LOGIC; begin tg: process (clk) begin if clk'event and clk = '1' then if reset='1' then jjj <= '0'; qqq <= '0'; ddd <= '0'; else jjj <= ddd; qqq <= jjj; ddd <= in_level; end if; end if; end process; imp <= jjj xor qqq; end syn_body; Тогда первый текст должен быть таким! P.S. нужно писать "триггер Шмитта" Призрак лейтенанта Штидта парил надо мной!... Посыпаю голову пеплом! :smile3009: Изменено 12 апреля, 2011 пользователем Мур Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться