v_mirgorodsky 0 24 октября, 2005 Опубликовано 24 октября, 2005 · Жалоба Такой пример. СИНХРОННЫЙ автомат имеет 6 состояний:а,б,в,г,д,е,ж. Каждому синтезатор присваивает код 000001,000010,000100,001000,010000,100000. Входной управляющий сигнал привязан к 50МГц из которого формируется 1МГц (пробовал автомат и на 50 МГц - ничего не дало) После запуска автомат бегает по определенным состояниям согласно алгоритму, но в какой-то момент (типа кто-то голове грохнул) автомат переходит в состояние 000000! (никаких конфликтов внутри нет). И все... стоим-с. Асинхронными сбросами, управлением я уже давно не пользуюсь - на рассыпухе их наелся. Бред какой-то. В какой-то момент становиться просто смешно, но потом становится очень грустно - не первый день сижу, <{POST_SNAPBACK}> Чудес в электронике не бывает :( Один из триггеров успевает сброситься, а второй просто не успевает установиться. Можно попробовать упростить логику автомата и проверять его по частям. Кстати, если входной ассинхронный сигнал идет на два или более синхронизирующих триггера параллельно, то можно получить аналогичный еффект. У нас похожее поведение было с ассинхронными сигналами на машину. Полечилось установкой триггеров на все источники и отладкой логики КА. Больше без конкретной схемы и описания сказать будет сложно :cranky: Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
irum4 0 25 октября, 2005 Опубликовано 25 октября, 2005 · Жалоба :w00t: :w00t: :w00t: :w00t: :w00t: Заработало. Всем спасибо :cheers: . Всему виной преславутая метастабильность Теперь все выстроилось в четкую линию. Делитель с 50 МГц до 1 МГц я делал на счетчике (последний разряд на BUFG). Входной асинхронный сигнал стробированный 50 МГцами поступал на вход КА, поскольку задержка с выхода счетчика делителя до BUFG и задержка сигнала от тригера стробирования входного сигнала зависили от разводки, то в некоторых случаях фронты входного сигнала КА и такта 1МГц совпадали и вышибали мой КА в состояни 0, причем непрогнозируемо. Поставил тригер на вхоной сигнал, тактируемый 1МГц, вместо 50 и все полетело, как миленькое. :tongue: М-да такую засаду чипскоупом не выловиш, а крышка точно чуть не съехала. Заодно нарыл ссылочку на счет метастабильности http://www.platan.ru/shem/pdf/st13-14.pdf Чудес в электронике не бывает P.S. Мой шеф когда-то говорил также Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
des00 25 26 октября, 2005 Опубликовано 26 октября, 2005 · Жалоба Заработало. Всем спасибо :cheers: . Всему виной преславутая метастабильность Поздравляю, :cheers: я же вам сразу про это грил ;) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Doka 4 10 января, 2008 Опубликовано 10 января, 2008 · Жалоба А Ваш тестбенч имитирует метастабильность? детский вопрос: а разве симулятором (кроме spice-симулятора) вообще можно проверить метастабильность??? (вернее то, верно ли она отрабатывается вашей схемой синхронизатора клоковых доменов) я так понимаю все эти схемы рекомендованных синхронизаторов предполагают, что априори работают "как надо" и тем самым исключают необходимость моделирования корректной отработки метастабильности. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
DmitryR 0 10 января, 2008 Опубликовано 10 января, 2008 · Жалоба детский вопрос: а разве симулятором (кроме spice-симулятора) вообще можно проверить метастабильность??? Запросто: нормальные модели триггеров выдают на выходе X, когда нарушается setup/hold. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Doka 4 10 января, 2008 Опубликовано 10 января, 2008 · Жалоба Запросто: нормальные модели триггеров выдают на выходе X, когда нарушается setup/hold. у меня практический интерес в этом вопросе: что мне делать с этим Х, если я хочу промоделировать правильность работы собственной схемы синхронизатора клоковых доменов (а точнее передачи данных) при возникновении нарушения времён setup/hold? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
DmitryR 0 11 января, 2008 Опубликовано 11 января, 2008 · Жалоба у меня практический интерес в этом вопросе: что мне делать с этим Х, если я хочу промоделировать правильность работы собственной схемы синхронизатора клоковых доменов (а точнее передачи данных) при возникновении нарушения времён setup/hold? Как что делать, исправлять схему. Если Х прошел - значит синхронизатор работает неверно. Правильно работающий синхронизатор должен обеспечивать захват в принимающем домене только тогда, когда данные в передающем домене установились и ожидают захвата. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Kopart 0 11 января, 2008 Опубликовано 11 января, 2008 · Жалоба Как что делать, исправлять схему. Если Х прошел - значит синхронизатор работает неверно. Правильно работающий синхронизатор должен обеспечивать захват в принимающем домене только тогда, когда данные в передающем домене установились и ожидают захвата. А как проверить - как схема будет себя вести при нарушении условий?? Верификация бывает и полная.. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
DmitryR 0 11 января, 2008 Опубликовано 11 января, 2008 · Жалоба А как проверить - как схема будет себя вести при нарушении условий?? Верификация бывает и полная.. А симулятор бывает и Spice, как справедливо уже тут замечали. Но не требуется на самом деле ни то, ни другое: когда система работает неправильно - обычно всем все равно, как именно неправильно она работает. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Kopart 0 11 января, 2008 Опубликовано 11 января, 2008 · Жалоба А симулятор бывает и Spice, как справедливо уже тут замечали. Но не требуется на самом деле ни то, ни другое: когда система работает неправильно - обычно всем все равно, как именно неправильно она работает. Хе. Проверяется именно, что в НЕПРАВИЛНЫх условиях схема работает ПРАВИЛЬНО. Это разговор уже дальше уйдет в тестовое покрытие функционала... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
makc 232 11 января, 2008 Опубликовано 11 января, 2008 · Жалоба у меня практический интерес в этом вопросе: что мне делать с этим Х, если я хочу промоделировать правильность работы собственной схемы синхронизатора клоковых доменов (а точнее передачи данных) при возникновении нарушения времён setup/hold? Нужно, чтобы для первого триггера в цепочке синхронизатора в симуляторе была отключена проверка нарушения времён setup/hold. Либо, нужно отключить для синхронизатора трансляцию состояния X через триггеры синхронизатора, чтобы обеспечить подобие его правильной работы в реальных условиях. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
dvladim 0 12 января, 2008 Опубликовано 12 января, 2008 · Жалоба Нужно, чтобы для первого триггера в цепочке синхронизатора в симуляторе была отключена проверка нарушения времён setup/hold. Либо, нужно отключить для синхронизатора трансляцию состояния X через триггеры синхронизатора, чтобы обеспечить подобие его правильной работы в реальных условиях. А для эмуляции метастабильности можно описать триггер так: при нарушении setup/hold выход переходит в X, а затем в D. Где D - 0 или 1 произвольно. При любых значениях должно работать нормально. Длительность X - длительности метастабильного состояния. (можно взять 1/2 или 3/4 периода) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Doka 4 13 января, 2008 Опубликовано 13 января, 2008 · Жалоба А для эмуляции метастабильности можно описать триггер так: при нарушении setup/hold выход переходит в X, а затем в D. Где D - 0 или 1 произвольно. При любых значениях должно работать нормально. Длительность X - длительности метастабильного состояния. (можно взять 1/2 или 3/4 периода) да это уже более-менее похоже. спасибо. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Tiro 0 13 января, 2008 Опубликовано 13 января, 2008 · Жалоба Спасибо, познавательно. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
DmitryR 0 14 января, 2008 Опубликовано 14 января, 2008 · Жалоба А для эмуляции метастабильности можно описать триггер так: при нарушении setup/hold выход переходит в X, а затем в D. Где D - 0 или 1 произвольно. При любых значениях должно работать нормально. Длительность X - длительности метастабильного состояния. (можно взять 1/2 или 3/4 периода) Это самоуспокоение какое-то. Триггер НЕ ДОЛЖЕН попадать в метастабильное состояние. Поэтому и ставится там X на весь период. Потом, если вы сделаете случайное выпадение в валидное состояние через пол-периода - то будете ошибку искать вечность. Так делаете в симуляторе ChaseX на любом развалившемся выходе - и он вас приводит в то место и время, когда у элемента входы валидны, а выход - X. А так будете ручками все, ручками, а postPAR модели ох как велики. Я уж не говорю про случаи, когда случайные ошибки будут друг друга компенсировать. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться