|
Синхронизатор, Две тактовые, единичные импульсы |
|
|
|
 |
Ответов
|
Apr 10 2011, 18:54
|

Гуру
     
Группа: Свой
Сообщений: 3 041
Регистрация: 10-01-05
Из: Москва
Пользователь №: 1 874

|
Цитата(sazh @ Apr 10 2011, 22:07)  Код if(in_flag) dff_a <= 1'b1; else dff_a <= 1'b0; end В Верилоге нельзя написать проще? Код dff_a <= in_flag; Кстати, не стоит бездумно доверять даже Т-Ш. Его схема расширения импульсов с двумя триггерами хороша, но первый триггер тем не менее может порождать переход dff_a с нарушением сетапа выходного триггера, соответственно второй триггер может попасть в метастабильность, о чем Т-Ш забыли упомянуть. Соответственно, чтобы избежать риска метастабильности ena_out_flag, вам нужно добавить в сдвиговый регистр на вход еще один триггер, реализовав нормальный синхронизатор.
--------------------
Пишите в личку.
|
|
|
|
|
Apr 10 2011, 19:41
|
Гуру
     
Группа: Свой
Сообщений: 2 435
Регистрация: 6-10-04
Из: Петербург
Пользователь №: 804

|
Цитата(Oldring @ Apr 10 2011, 22:28)  Я понял. И что, это описание приводит к необходимости писать if? Да, в верилоге есть некая неистественность при описании асинхронной установки. Но VHDL еще более неистественнен process (C, CLR) begin if (CLR = ’1’)then Q <= ’0’; elsif (C’event and C=’0’)then Q <= D; end if; Тот же if при описании асинхронной установки. И еще круче if при описании фронта клока, да еще с закрытием end if Фронт клока - это фронт клока, а не приоритетность в описании
|
|
|
|
|
Apr 10 2011, 19:47
|

Гуру
     
Группа: Свой
Сообщений: 3 041
Регистрация: 10-01-05
Из: Москва
Пользователь №: 1 874

|
Цитата(sazh @ Apr 10 2011, 23:41)  Да, в верилоге есть некая неистественность при описании асинхронной установки. Но VHDL еще более неистественнен process (C, CLR) begin if (CLR = ’1’)then Q <= ’0’; elsif (C’event and C=’0’)then Q <= D; end if;
Тот же if при описании асинхронной установки. И еще круче if при описании фронта клока, да еще с закрытием end if Фронт клока - это фронт клока, а не приоритетность в описании Еще раз спрощу. в вашем коде if просто копирует один сигнал в другой. Неужели он необходим чтобы синтезатор синтезировал триггер с асинхронным сбросом? в VHDL есть стандартные функции rising_edge, falling_edge, для приведения описания к "более естественному" if falling_edge( C ) then ... end if; Необходимость писать end if - это хорошо. Вы не упустили моё дополнение про ошибку в вашем коде?
--------------------
Пишите в личку.
|
|
|
|
|
Apr 10 2011, 20:01
|

Гуру
     
Группа: Свой
Сообщений: 3 041
Регистрация: 10-01-05
Из: Москва
Пользователь №: 1 874

|
Цитата(sazh @ Apr 10 2011, 23:50)  Я реализовал схему из учебника. Эта схема отрабатывает импульс любой длительности в импульс длительность нужного периода. Все. С риском метастабильности на выходе. Да, посмотрел еще раз в Т-Ш, и так как эта потенциально метастабильная схема растяжения импульса из двух триггеров описана у них в пункте "синхронизация импульсов" как усовершенствование обычного двухтриггерного синхронизатора, можно прийти к выводу, что Т-Ш не "забыли упомянуть про риск метастабильности", а на самом деле его не заметили. В общем, еще раз повторю. Не стоит бездумно доверять учебникам. Цитата(sazh @ Apr 10 2011, 23:57)  Я подумал, что это наезд на верилог со стороны ярого сторонника VHDL. А это он меня оказывается в ошибке уличил. Смешно. И в ошибке тоже уличил А наезд был несерьезным. Понятно, что можно написать там и без if, и синтезатор наверняка поймет правильно. Хотелось узнать причину использования вами такой конструкции.
--------------------
Пишите в личку.
|
|
|
|
|
Apr 10 2011, 20:17
|
Частый гость
 
Группа: Свой
Сообщений: 114
Регистрация: 7-05-08
Из: РФ, Москва
Пользователь №: 37 354

|
Цитата(Oldring @ Apr 11 2011, 00:01)  Понятно, что можно написать там и без if, и синтезатор наверняка поймет правильно. Хотелось узнать причину использования вами такой конструкции. Не поймет. Квартусовский, например, на такие конструкции ругается.
Сообщение отредактировал Ethereal - Apr 10 2011, 20:23
--------------------
SystemVerilog - язык, заточенный Альтерой под свои кристаллы теми же приемами использования примитивов, что и AHDL. ©
|
|
|
|
|
Apr 11 2011, 09:55
|

Знающий
   
Группа: Свой
Сообщений: 815
Регистрация: 7-06-06
Из: Харьков
Пользователь №: 17 847

|
Цитата(ViKo @ Apr 11 2011, 11:05)  ..Кто из нас неправ? Прямо буря в стакане воды! Вот что требовалось ...по рис 8! Код, предложенный мной в начале, описывает два выходных регистра. Первый триггер - делитель. Схема достаточно универсальна для любых частот...
Сообщение отредактировал Мур - Apr 11 2011, 09:56
|
|
|
|
|
Apr 11 2011, 10:04
|

Гуру
     
Группа: Свой
Сообщений: 3 041
Регистрация: 10-01-05
Из: Москва
Пользователь №: 1 874

|
Цитата(Мур @ Apr 11 2011, 13:55)  Схема достаточно универсальна для любых частот... Для любых связанных частот без асинхронщины между ними. Мне toggle тоже больше нравится, но обсуждалась в стакане воды именно схема из Т-Ш, растягивающая и синхронизирующая асинхронные импульсы произвольной длины, то есть без входного клока. Цитата(sazh @ Apr 11 2011, 13:58)  Я бы сказал, золотая середина. Ведь на выходе - качественный продукт, понятный каждому. До тех пор, пока указанные вами условия не начинают вступать в противоречие друг с другом, вы, безусловно, правы. Поэтому схематики более понятны для "золотой середины", чем любой HDL. Но, как как хорошо известно из истории развития программирования, по мере усложнения любой системы балланс неизбежно смещается в сторону использования более удобных языков с более продвинутой идеологией и, соответственно, более сложных в изучении.
--------------------
Пишите в личку.
|
|
|
|
|
Apr 11 2011, 10:15
|

Знающий
   
Группа: Свой
Сообщений: 815
Регистрация: 7-06-06
Из: Харьков
Пользователь №: 17 847

|
Цитата(Oldring @ Apr 11 2011, 14:04)  Для любых связанных частот без асинхронщины между ними. Мне toggle тоже больше нравится, но обсуждалась в стакане воды именно схема из Т-Ш, растягивающая и синхронизирующая асинхронные импульсы произвольной длины, то есть без входного клока.
До тех пор, пока указанные вами условия не начинают вступать в противоречие друг с другом, вы, безусловно, правы. Поэтому схематики более понятны для "золотой середины", чем любой HDL.
Но, как как хорошо известно из истории развития программирования, по мере усложнения любой системы балланс неизбежно смещается в сторону использования более удобных языков с более продвинутой идеологией и, соответственно, более сложных в изучении. И асинхронных тоже!(его основная функция по статье применяется для переходов между доменами и синхронизациями). На HDL три триггера описываются легко. Я в своих проектах разделяю эту схему на два фрагмента. Один я уже привёл(выходной), а второй, в большинстве своём, прячется в моих автоматах. События у меня- просто смена состоояния на противоположный!
|
|
|
|
|
Apr 11 2011, 10:41
|

Гуру
     
Группа: Свой
Сообщений: 3 041
Регистрация: 10-01-05
Из: Москва
Пользователь №: 1 874

|
Цитата(Мур @ Apr 11 2011, 14:36)  Может я чего не понимаю... Можете сформулировать вариант, когда на один входной импульс на выходе не появиться отклик вообще , или их вдруг появится пара? А вы не видите сами условие, когда на выходе вашей схемы появится метастабильность, которая может привести к неправильной работе логики в последующих схемах, если не хватит времени на её разрешение? А времени там может не хватить, потому что неизвестно сколько логики подключено к вашей схеме, и каковы задержки в самой этой подключенной логике. Да, можно в принципе попытаться обконстрейнить время распространения сигнала с выхода, если очень хочется, с огромной вероятностью не вписаться в тайминги вблизи максимальной частоты кристалла.
--------------------
Пишите в личку.
|
|
|
|
|
Apr 11 2011, 10:55
|
Гуру
     
Группа: Свой
Сообщений: 2 435
Регистрация: 6-10-04
Из: Петербург
Пользователь №: 804

|
Цитата(Oldring @ Apr 11 2011, 13:41)  может привести к неправильной работе логики в последующих схемах Если метастабильность - неопределенное состояние на выходе триггера, то ведь конкретно для этой схемы это состояние или будет отработано последующим триггером как переход из например 0 в 1 или нет. Что на выходе будет давать формирование импульса или в одном такте или в последующем, что для флага не так уж и важно. Важно что событие на входе будет отработано однозначно. Нет?
|
|
|
|
|
Apr 11 2011, 12:28
|

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

|
Цитата(Мур @ Apr 11 2011, 14:02)  Страшно, когда на один входной импульс на выходе не появиться отклик вообще , или их вдруг появится пара! Вот это есть ошибка! Возможно тут такое? Про эту картинку речь идет? Пусть висит. Если на входе Data будет импульс в 3 такта Clock1, на Output появится 2 импульса длительностью Clock2. И без всякой метастабильности. В метастабильном состоянии триггер может висеть "между небом и землей" сколь угодно долго, в идеальном случае. До следующего такта. А если в следующем такте вход неопределен, то все продолжится. Если вдруг почему-то Clock1 отстанет от Data, доберется до "желтого" триггера чуть позже, триггер влетит в метастабильное состояние. Это я не к тому, что схема плохая или неправильная, а к тому, что идеального в мире ничего нет. Нужно смотреть внимательно.
Эскизы прикрепленных изображений
|
|
|
|
|
Apr 11 2011, 16:22
|

Знающий
   
Группа: Свой
Сообщений: 815
Регистрация: 7-06-06
Из: Харьков
Пользователь №: 17 847

|
Цитата(ViKo @ Apr 11 2011, 16:28)  Про эту картинку речь идет? Пусть висит. Если на входе Data будет импульс в 3 такта Clock1, на Output появится 2 импульса длительностью Clock2. И без всякой метастабильности. В метастабильном состоянии триггер может висеть "между небом и землей" сколь угодно долго, в идеальном случае. Спасибо за науку! Для меня это новость. Серый уровень на выходе триггера возможен оказывается... тогда схема ошибочна............  А я поверил авторитету. Цитата(Oldring @ Apr 11 2011, 17:38)  Мур совсем недавно опубликовал схему от себя. В общем, журнальная схема Иосифа - правильная, схема Мур потенциально ошибочна. Это из-за дополнительного триггера на выходе?
|
|
|
|
|
Apr 12 2011, 05:47
|

Знающий
   
Группа: Свой
Сообщений: 815
Регистрация: 7-06-06
Из: Харьков
Пользователь №: 17 847

|
Цитата(ViKo @ Apr 11 2011, 22:30)  Да, возможен. И именно в триггере. В обычной логике такое невозможно. В момент фронта тактового сигнала, если изменяется сигнал на входе данных, триггер "не знает", что ему защелкивать. И думает до-о-о-о-о-о-лго... если сигнал на входе попадает точно на порог переключения. Если не точно, то думает недо-о-олго... ОК! Я считал, что проблема для триггера на входе, а не на выходе. В моём представлении триггер не может быть в сером уровне по определению. Тогда в =моём случае= действительно возможна ситуация отсутствия или удвоенного импульса на выходе. Всё будет зависеть от трактовки серости либо элементом искл-или либо выходным триггером. А дополнительный триггер по Oldring-у, если так случится при асинхронщине, может пребывать в неопределённом состоянии серости(а не чёрно-белом!) до следующего такта. Вот почему я его =за ненабностью= удалил!....(по сравнению с рис.8)-считал лишним. А он по грехам работает! Всем огромное спасибо! Усвоил качественно!
Сообщение отредактировал Мур - Apr 12 2011, 05:55
|
|
|
|
|
Apr 12 2011, 05:56
|

Гуру
     
Группа: Свой
Сообщений: 3 041
Регистрация: 10-01-05
Из: Москва
Пользователь №: 1 874

|
Цитата(Мур @ Apr 12 2011, 09:47)  А дополнительный триггер по Oldring-у, если так случится при асинхронщине, может пребывать в неопределённом состоянии серости(а не чёрно-белом!) до следующего такта. Нет, не до следующего. Выход из метастабильного состояния - это вероятностный процесс. Вероятность остаться в метастабильном состоянии понижается экспоненциально с увеличением премени. Поэтому достаточно несколько десятков постоянных времени выхода из метастабильности, чтобы эта вероятность стала практически нулевой. Но тонкость в том, что если после метастабильного триггера подключен на небольшом расстоянии следующий триггер, то разница между периодом клока и временем распространения сигнала превышает эти несколько постоянных времени, по крайней мере, для триггеров в FPGA. А если там еще несколько слоёв логики, то эти разница может оказаться близка а нулю, и хоть и первый триггер вывалится из метастабильного состояния к следующему фронту клока, сигнал на входах следующих триггеров, после этих слоёв логики, еще останется нелогическим или, скорее, нестабильным, с заметно отличной от нуля вероятностью.
--------------------
Пишите в личку.
|
|
|
|
|
Apr 12 2011, 06:12
|

Знающий
   
Группа: Свой
Сообщений: 815
Регистрация: 7-06-06
Из: Харьков
Пользователь №: 17 847

|
Цитата(Oldring @ Apr 12 2011, 09:56)  Нет, не до следующего. Выход из метастабильного состояния - это вероятностный процесс. Вероятность остаться в метастабильном состоянии понижается экспоненциально с увеличением премени. Поэтому достаточно несколько десятков постоянных времени выхода из метастабильности, чтобы эта вероятность стала практически нулевой. Но тонкость в том, что если после метастабильного триггера подключен на небольшом расстоянии следующий триггер, то разница между периодом клока и временем распространения сигнала превышает эти несколько постоянных времени, по крайней мере, для триггеров в FPGA. А если там еще несколько слоёв логики, то эти разница может оказаться близка а нулю, и хоть и первый триггер вывалится из метастабильного состояния к следующему фронту клока, сигнал на входах следующих триггеров, после этих слоёв логики, еще останется нелогическим или, скорее, нестабильным, с заметно отличной от нуля вероятностью. Интересно! И что, долбёжка по входу, при серости на выходе, не решает неопределённости? ...Базовый синхронизатор(в синем цвете)- это пара триггеров. По первому мы определились! А второй, получается, нужен для вероятностного вываливания первого из неопределённости? Призрак триггера Шмидта стоит передо мной!
|
|
|
|
|
Apr 12 2011, 06:27
|

Гуру
     
Группа: Свой
Сообщений: 3 041
Регистрация: 10-01-05
Из: Москва
Пользователь №: 1 874

|
Цитата(Мур @ Apr 12 2011, 10:12)  Интересно! И что, долбёжка по входу, при серости на выходе, не решает неопределённости? ...Базовый синхронизатор(в синем цвете)- это пара триггеров. По первому мы определились! А второй, получается, нужен для вероятностного вываливания первого из неопределённости? Призрак триггера Шмидта стоит передо мной!  Нет, долбежка по входу не поможет - это же триггеры, они переключаются по фронту клока. Второй нужен только для того, чтобы оттянуть логику с выхода первого, дав ему времени на размышления о смысле его бытия. Поэтому, кстати, без отключения ретайминга через него, он бесполезен. Триггер Шмидта тут ничем помочь не может. Метастабильность принципиально неизбежна при перехода асинхронного сигнала в синхронный домен.
--------------------
Пишите в личку.
|
|
|
|
|
Apr 12 2011, 06:59
|

Знающий
   
Группа: Свой
Сообщений: 815
Регистрация: 7-06-06
Из: Харьков
Пользователь №: 17 847

|
Цитата(Oldring @ Apr 12 2011, 10:27)  Нет, долбежка по входу не поможет - это же триггеры, они переключаются по фронту клока. Я и имел ввиду фронт клока! Понятие =неопределённо долго= я утрировал на события нескольких фронтов клока... Цитата(Oldring @ Apr 12 2011, 10:27)  Второй нужен только для того, чтобы оттянуть логику с выхода первого, дав ему времени на размышления о смысле его бытия. Поэтому, кстати, без отключения ретайминга через него, он бесполезен. Триггер Шмидта тут ничем помочь не может. Метастабильность принципиально неизбежна при перехода асинхронного сигнала в синхронный домен. А гистерезис? Уж он-то должен решать неопределённость выхода. Положительная обратная связь всё-таки!... Цитата(Мур @ Apr 12 2011, 10:12)  А второй, получается, нужен для вероятностного вываливания первого из неопределённости? Можно считать второй триггер триггером Шмидта? Образно! 1.За ним последнее слово в оценке(в наихудшем истечении событий) состояния первого триггера. 2.Второй вариант- к следующему фронту клока первый триггер уже будет в норме гарантировано. И это повторит второй! Это черезвычайно важно для одноклоковых сигналов разрешения в синхронных проектах. Там всё строго и вариации длительности недопустимы
Сообщение отредактировал Мур - Apr 12 2011, 07:20
|
|
|
|
|
Apr 12 2011, 09:39
|

Знающий
   
Группа: Свой
Сообщений: 815
Регистрация: 7-06-06
Из: Харьков
Пользователь №: 17 847

|
Цитата(Oldring @ Apr 12 2011, 12:22)  Почти....У механического маятника бывает трение покоя, приводящее к появлению на самом верху глобального максимума энергии небольшого локального минимума, приводящего к появлению там немного устойчивого состояния. Поэтому механический маятник может в принципе там находиться бесконечно долго, тем более, если его ось со временем заржавеет. В случае электронных триггеров всё обычно проще. Спасибо! Мне понравилось -> =появления там немного устойчивого состояния= В электронных триггерах =ось не ржавеет=, и активная зона, вроде массы механического маятника, способна балансировать случайным образом, пока какой-либо фактор не преобладает. ...Помнится, в таком сотоянии возрастает потребление элементов(нет отсечки или насыщения). Это я к тому, что за метастабильные состояния наказывают повышением потребления. Хоть и не значительным. В былые времена дефектные триггеры выгорали от сквозного тока...
Сообщение отредактировал Мур - Apr 12 2011, 10:09
|
|
|
|
Сообщений в этой теме
AlphaMil Синхронизатор Apr 7 2011, 13:19 Мур Цитата(AlphaMil @ Apr 7 2011, 17:19) Гуру... Apr 7 2011, 13:33 Мур Цитата(Мур @ Apr 7 2011, 16:33) CODE
libr... Apr 12 2011, 07:44 Kuzmi4 2 AlphaMil
поищите по форуму - тут SM выкладывал к... Apr 7 2011, 14:25 Мур Цитата(Kuzmi4 @ Apr 7 2011, 18:25) 2 Alph... Apr 7 2011, 16:25 AndrewS6 http://www.fpga4fun.com/CrossClockDomain2.html Apr 7 2011, 14:35 AlphaMil 2 AndrewS6 и всем остальным спасибо очень интересн... Apr 7 2011, 14:41 Kuzmi4 2 Мур
Если взглянуть внимательнее ваш HDL модуль в... Apr 7 2011, 17:02 Мур Цитата(Kuzmi4 @ Apr 7 2011, 21:02) 2 Мур
... Apr 7 2011, 17:36 Kuzmi4 2 Мур
посмотрел статейку и рисунок - слямзено с ED... Apr 9 2011, 10:44 Ethereal Цитата(Kuzmi4 @ Apr 9 2011, 14:44) 2 Мур
... Apr 9 2011, 11:23  Kuzmi4 Цитата(Ethereal @ Apr 9 2011, 14:23) ....... Apr 9 2011, 11:32   Ethereal Цитата(Kuzmi4 @ Apr 9 2011, 15:32) Вот во... Apr 9 2011, 11:39 Kuzmi4 2 Ethereal
я собственно это к чему, случался дизай... Apr 9 2011, 11:50 Ethereal Цитата(Kuzmi4 @ Apr 9 2011, 15:50) 2 Ethe... Apr 9 2011, 12:44 sazh Цитата(Kuzmi4 @ Apr 9 2011, 14:50) В таки... Apr 9 2011, 13:13 Boris_TS Тут как-то совсем не прозвучало в исходном задании... Apr 10 2011, 11:46 Boris_TS Цитата(AlphaMil @ Apr 10 2011, 20:17) Да,... Apr 10 2011, 17:28  Boris_TS Цитата(Boris_TS @ Apr 10 2011, 21:28) Цит... Apr 12 2011, 17:18         sazh Цитата(Oldring @ Apr 10 2011, 22:58) С ри... Apr 10 2011, 20:02          Oldring Цитата(sazh @ Apr 11 2011, 00:02) Да твор... Apr 10 2011, 20:08           sazh Цитата(Oldring @ Apr 10 2011, 23:08) Я уж... Apr 10 2011, 20:16          Oldring Цитата(Ethereal @ Apr 11 2011, 00:17) Не ... Apr 10 2011, 20:21           sazh Цитата(Oldring @ Apr 10 2011, 23:21) Знач... Apr 10 2011, 20:25            Oldring Цитата(sazh @ Apr 11 2011, 00:25) Приведи... Apr 10 2011, 20:49             sazh Цитата(Oldring @ Apr 10 2011, 23:49) Вот ... Apr 11 2011, 08:43              ViKo Цитата(sazh @ Apr 11 2011, 11:43) Чтобы п... Apr 11 2011, 08:47               sazh Цитата(ViKo @ Apr 11 2011, 11:47) Вот и я... Apr 11 2011, 08:47                Oldring Цитата(sazh @ Apr 11 2011, 12:47) Картинк... Apr 11 2011, 09:06                 sazh Цитата(Oldring @ Apr 11 2011, 12:06) Да, ... Apr 11 2011, 09:58           Ethereal Цитата(ViKo @ Apr 11 2011, 11:05) А на та... Apr 11 2011, 07:53            ViKo Цитата(Ethereal @ Apr 11 2011, 10:53) Как... Apr 11 2011, 08:51             sazh Цитата(ViKo @ Apr 11 2011, 11:51) Создал ... Apr 11 2011, 09:54                   Мур Цитата(Oldring @ Apr 11 2011, 14:41) А вы... Apr 11 2011, 10:53                      Oldring Цитата(ViKo @ Apr 11 2011, 16:28) В метас... Apr 11 2011, 12:54                       ViKo Цитата(Oldring @ Apr 11 2011, 15:54) Веро... Apr 11 2011, 13:27                        Oldring Цитата(ViKo @ Apr 11 2011, 17:27) Это рис... Apr 11 2011, 13:38                       Oldring Цитата(Мур @ Apr 11 2011, 20:22) Это из-з... Apr 11 2011, 16:27                        Мур Цитата(Oldring @ Apr 11 2011, 20:27) Из-з... Apr 11 2011, 17:15                         Oldring Цитата(Мур @ Apr 11 2011, 21:15) Я понял... Apr 11 2011, 17:44                    Oldring Цитата(sazh @ Apr 11 2011, 14:55) Если ме... Apr 11 2011, 11:02                  Ethereal Цитата(Мур @ Apr 11 2011, 14:36) Может я ... Apr 11 2011, 10:44      Victor® Цитата(sazh @ Apr 10 2011, 22:41) Да, в в... Apr 10 2011, 19:51       sazh Цитата(Victor® @ Apr 10 2011, 22:51) Все ... Apr 10 2011, 19:57 ViKo Долбежка тактами поможет. Ведь защелкиваться будет... Apr 12 2011, 07:35 Oldring Цитата(ViKo @ Apr 12 2011, 11:35) Долбежк... Apr 12 2011, 08:08 ViKo Хочу вернуться к рис.8 (см. сообщение №58).
Возник... Apr 18 2011, 13:07 Ethereal Цитата(ViKo @ Apr 18 2011, 17:07) Что дел... Apr 18 2011, 14:25  ViKo Цитата(Ethereal @ Apr 18 2011, 17:25) А е... Apr 18 2011, 14:42 ViKo Присмотрелся внимательнее к рисунку. Да, есть в не... Apr 19 2011, 14:18
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|