|
|
  |
осторожно: метастабильность!, ( старое название: Спартан збоит!?... ) |
|
|
|
Oct 24 2005, 16:42
|
Местный
  
Группа: Свой
Сообщений: 342
Регистрация: 21-02-05
Пользователь №: 2 804

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

Местный
  
Группа: Свой
Сообщений: 224
Регистрация: 18-06-04
Пользователь №: 54

|
Заработало. Всем спасибо  . Всему виной преславутая метастабильность Теперь все выстроилось в четкую линию. Делитель с 50 МГц до 1 МГц я делал на счетчике (последний разряд на BUFG). Входной асинхронный сигнал стробированный 50 МГцами поступал на вход КА, поскольку задержка с выхода счетчика делителя до BUFG и задержка сигнала от тригера стробирования входного сигнала зависили от разводки, то в некоторых случаях фронты входного сигнала КА и такта 1МГц совпадали и вышибали мой КА в состояни 0, причем непрогнозируемо. Поставил тригер на вхоной сигнал, тактируемый 1МГц, вместо 50 и все полетело, как миленькое. М-да такую засаду чипскоупом не выловиш, а крышка точно чуть не съехала. Заодно нарыл ссылочку на счет метастабильности http://www.platan.ru/shem/pdf/st13-14.pdfЦитата(v_mirgorodsky @ Oct 24 2005, 19:42) Чудес в электронике не бывает P.S. Мой шеф когда-то говорил также
--------------------
Электроника - наука о контактах.
|
|
|
|
|
Jan 11 2008, 11:38
|

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

|
Цитата(DmitryR @ Jan 11 2008, 13:27)  Как что делать, исправлять схему. Если Х прошел - значит синхронизатор работает неверно. Правильно работающий синхронизатор должен обеспечивать захват в принимающем домене только тогда, когда данные в передающем домене установились и ожидают захвата. А как проверить - как схема будет себя вести при нарушении условий?? Верификация бывает и полная..
--------------------
Насколько проще была бы жизнь, если бы она была в исходниках
|
|
|
|
|
Jan 11 2008, 12:44
|

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

|
Цитата(DmitryR @ Jan 11 2008, 15:00)  А симулятор бывает и Spice, как справедливо уже тут замечали. Но не требуется на самом деле ни то, ни другое: когда система работает неправильно - обычно всем все равно, как именно неправильно она работает. Хе. Проверяется именно, что в НЕПРАВИЛНЫх условиях схема работает ПРАВИЛЬНО. Это разговор уже дальше уйдет в тестовое покрытие функционала...
--------------------
Насколько проще была бы жизнь, если бы она была в исходниках
|
|
|
|
|
Jan 12 2008, 21:02
|
Знающий
   
Группа: Свой
Сообщений: 654
Регистрация: 24-01-07
Из: Воронеж
Пользователь №: 24 737

|
Цитата(makc @ Jan 11 2008, 19:50)  Нужно, чтобы для первого триггера в цепочке синхронизатора в симуляторе была отключена проверка нарушения времён setup/hold. Либо, нужно отключить для синхронизатора трансляцию состояния X через триггеры синхронизатора, чтобы обеспечить подобие его правильной работы в реальных условиях. А для эмуляции метастабильности можно описать триггер так: при нарушении setup/hold выход переходит в X, а затем в D. Где D - 0 или 1 произвольно. При любых значениях должно работать нормально. Длительность X - длительности метастабильного состояния. (можно взять 1/2 или 3/4 периода)
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|