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

 
 
3 страниц V  < 1 2 3  
Reply to this topicStart new topic
> осторожно: метастабильность!, ( старое название: Спартан збоит!?... )
Vadim
сообщение Jan 14 2008, 08:37
Сообщение #31


Неиодный дизайнер
*****

Группа: Свой
Сообщений: 1 240
Регистрация: 1-12-04
Из: Минск
Пользователь №: 1 273



Цитата(DmitryR @ Jan 14 2008, 10:45) *
Это самоуспокоение какое-то. Триггер НЕ ДОЛЖЕН попадать в метастабильное состояние.

Я извиняюсь, а куда ДОЛЖЕН попадать триггер, если время клокового перехода и время изменения данных совпадут? 07.gif


--------------------
SPECCTRA forever! IO/Designer forever!
Go to the top of the page
 
+Quote Post
Kopart
сообщение Jan 14 2008, 08:40
Сообщение #32


Знающий
****

Группа: Свой
Сообщений: 601
Регистрация: 1-03-05
Из: Spb
Пользователь №: 2 972



Цитата(DmitryR @ Jan 14 2008, 10:45) *
Это самоуспокоение какое-то. Триггер НЕ ДОЛЖЕН попадать в метастабильное состояние.

В "физическом" мире может набежать задержка, что изменение на входе D тригерра произойдет одновременно с фронтом тактовой. И что - делаем растарт? smile.gif

Первопричина статистически возможна - соответственно требуется устранять последствия. А как - только с помощью адекватной модели метастабильности!


--------------------
Насколько проще была бы жизнь, если бы она была в исходниках
Go to the top of the page
 
+Quote Post
sazh
сообщение Jan 14 2008, 08:51
Сообщение #33


Гуру
******

Группа: Свой
Сообщений: 2 435
Регистрация: 6-10-04
Из: Петербург
Пользователь №: 804



Цитата(NiOS @ Jan 14 2008, 11:40) *
В "физическом" мире может набежать задержка, что изменение на входе D тригерра произойдет одновременно с фронтом тактовой. И что - делаем растарт? smile.gif


Или кристалл на более быстрый меняем, или конвейер внедряем.
Go to the top of the page
 
+Quote Post
DmitryR
сообщение Jan 15 2008, 04:55
Сообщение #34


Профессионал
*****

Группа: Свой
Сообщений: 1 535
Регистрация: 20-02-05
Из: Siegen
Пользователь №: 2 770



Цитата(Vadim @ Jan 14 2008, 11:37) *
Я извиняюсь, а куда ДОЛЖЕН попадать триггер, если время клокового перехода и время изменения данных совпадут? 07.gif

Этого можно вообще в большинстве случаев полностью избежать, грамотно сделав схему clock enable принимающего триггера так, что он при нестабильных данных на входе не будет щелкать. В остальных случаях этому триггеру запрещается переходить в X - в Xilinx например в таких случаях при нарушении setup/hold он не изменяет состояния. Но повторяю, наличие таких триггеров (или если он сваливается в случайное состояние) очень затрудняет поиск ошибки. Даже если он сделал X на пол-периода и следующий уровень это ошибочно щелкнул - вы можете не увидеть этой ошибки на выходах устройства (сделается этот X and 0 где-то и пропадет). А просматривать весь нетлист на предмет проскакивания там X - мало удовольствия.
Go to the top of the page
 
+Quote Post
Kopart
сообщение Jan 15 2008, 08:54
Сообщение #35


Знающий
****

Группа: Свой
Сообщений: 601
Регистрация: 1-03-05
Из: Spb
Пользователь №: 2 972



Цитата(DmitryR @ Jan 15 2008, 07:55) *
А просматривать весь нетлист на предмет проскакивания там X - мало удовольствия.

А автоматический тестбенч?!
А просто напечатать строчку в файл или рабочую область со временем, когда он равнялся "X"?!

Это намного проще и НАДЕЖНЕЕ, чем предугадать ВСЕ возможные ситуации. И опыт тут ТОЛЬКО статистически уменьшит вероятность такой ситуации (сделать схему, которая не попадает в такие ситуации).


--------------------
Насколько проще была бы жизнь, если бы она была в исходниках
Go to the top of the page
 
+Quote Post
arexol
сообщение Jan 15 2008, 11:04
Сообщение #36


Местный
***

Группа: Свой
Сообщений: 317
Регистрация: 25-09-06
Пользователь №: 20 651



Цитата(irum4 @ Oct 24 2005, 18:41) *
Такой пример. СИНХРОННЫЙ автомат имеет 6 состояний:а,б,в,г,д,е,ж. Каждому синтезатор присваивает код 000001,000010,000100,001000,010000,100000.
Входной управляющий сигнал привязан к 50МГц из которого формируется 1МГц (пробовал автомат и на 50 МГц - ничего не дало)
После запуска автомат бегает по определенным состояниям согласно алгоритму, но в какой-то момент (типа кто-то голове грохнул) автомат переходит в состояние 000000! (никаких конфликтов внутри нет). И все... стоим-с.
Асинхронными сбросами, управлением я уже давно не пользуюсь - на рассыпухе их наелся.
Бред какой-то. В какой-то момент становиться просто смешно, но потом становится очень грустно - не первый день сижу,

Симуляция показывает все ок.

Конечно


Может не в тему так как я на Альтере делаю
но была та же проблема - (я так и не разобрался в причинах её возникновения )
у меня автомат зависал на состоянии с безусловным переходом!!!

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

Сам понимаю как это выглядит ......
Но тем не менее блин заработало.
Причём такая лажа именно на одном проекте - до этого проекта я даже не предпологал что такое может быть.
Go to the top of the page
 
+Quote Post
Vadim
сообщение Jan 15 2008, 13:49
Сообщение #37


Неиодный дизайнер
*****

Группа: Свой
Сообщений: 1 240
Регистрация: 1-12-04
Из: Минск
Пользователь №: 1 273



Цитата(DmitryR @ Jan 15 2008, 07:55) *
Этого можно вообще в большинстве случаев полностью избежать, грамотно сделав схему clock enable принимающего триггера так, что он при нестабильных данных на входе не будет щелкать.

Чего избежать? Одновременного прихода клока и данных, когда заранее известно, что данные расположены в другом клоковом домене? 07.gif Наладив телепатическую связь между FPGA и источником входных данных?


--------------------
SPECCTRA forever! IO/Designer forever!
Go to the top of the page
 
+Quote Post
dvladim
сообщение Jan 16 2008, 20:20
Сообщение #38


Знающий
****

Группа: Свой
Сообщений: 654
Регистрация: 24-01-07
Из: Воронеж
Пользователь №: 24 737



Цитата
Vadim
Чего избежать? Одновременного прихода клока и данных, когда заранее известно, что данные расположены в другом клоковом домене? Наладив телепатическую связь между FPGA и источником входных данных?

Такое можно пропробовать сделать на элементах с разной задержкой и xor, но это бессмысленно. Избавимся от метастабильности по данным, но получим по clken.
Поясню, пример: вход триггера = 0, выход = 1, передний фронт клока возникает одновременно с переходом clken в активное состояние (или неактивное). Вот тут-то и появится метастабильность.

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

В прошлом посте я показал пример описания триггера. Надо добавить, что этим описанием нужно заменить в нетлисте только те триггеры, на которых метастабильность допускается.
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 23rd June 2025 - 07:26
Рейтинг@Mail.ru


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