Перейти к содержанию

    

Actel проблема с цифровым автоматом

Доброго времени суток.

Возникла необходимость переехать с одной ПЛИС на другую, a3p600, опыта работы с libero soc нет, собрал проект, прописал ножки, запускаю, вижу что цифровой автомат перестает работать, по контрольным точкам вижу, что обработка данных остановилась, причем каждый раз, на разном байте данных, пришел к выводу что цифровой автомат уходит в неизвестное состояние.

Ни кто не сталкивался с похожими аномалиями?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Доброго времени суток.

Возникла необходимость переехать с одной ПЛИС на другую, a3p600, опыта работы с libero soc нет, собрал проект, прописал ножки, запускаю, вижу что цифровой автомат перестает работать, по контрольным точкам вижу, что обработка данных остановилась, причем каждый раз, на разном байте данных, пришел к выводу что цифровой автомат уходит в неизвестное состояние.

Ни кто не сталкивался с похожими аномалиями?

Сложно что-то сказать надо видеть хотя бы автомат и объяснения к нему подробнее по работе.

Что показывает симуляция и/или внутри схемный логический анализатор(signaltap как у altera)?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Доброго времени суток.

Возникла необходимость переехать с одной ПЛИС на другую, a3p600, опыта работы с libero soc нет, собрал проект, прописал ножки, запускаю, вижу что цифровой автомат перестает работать, по контрольным точкам вижу, что обработка данных остановилась, причем каждый раз, на разном байте данных, пришел к выводу что цифровой автомат уходит в неизвестное состояние.

Ни кто не сталкивался с похожими аномалиями?

Обычно 2 причины.

входной сигнал для автомата - асинхронный

в автомате нет состояния "по умолчанию"...

 

Если есть возможность, то сделайте в каждом состоянии автомата запись в регистр. и потом этот регистр пересылайте на хост... Или даже регистр автомата можно проверить на изменения за скажем 1 сек, и в случае отсутствия - пересылать на хост или хотя бы по SPI на какой-нибудь разъем. Ну или сделать "сторожевой таймер для автомата". Тогда увидите, в каком состоянии завис автомат..

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Ну или сделать "сторожевой таймер для автомата". Тогда увидите, в каком состоянии завис автомат..

Я конечно дико извиняюсь... Но по моему лечить кривой автомат с помощью вотчдога - очень плохая идея. Нужно искать источник проблемы, а не маскировать ошибку. Тем более что как правило все ошибки банальны - управление автоматом сигналами из другого клокового домена или даже вообще асинхронными по сути.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Я конечно дико извиняюсь... Но по моему лечить кривой автомат с помощью вотчдога - очень плохая идея. Нужно искать источник проблемы, а не маскировать ошибку. Тем более что как правило все ошибки банальны - управление автоматом сигналами из другого клокового домена или даже вообще асинхронными по сути.

Я же написал, что вызывает "зависание". А все что написано дальше - это не "лечить", а только для отладки, чтобы понять в каком именно месте автомат перестает работать... Я же не знаю, сколько состояний у автомата. Может их 10 или 20... А взять таймер и вставить в проект - минута дело... Ну и потом смотреть что и как. А может вообще автомат клинит вообще не пойми где... Такое тоже может быть. А если сохранять "заклиненное" и предыдущее состояния, то хоть как-то можно отследить... А может быть там число одновременно переключаемых выходов больше нормы? Или сбои по питанию? Причин может быть много...

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Обычно 2 причины.

входной сигнал для автомата - асинхронный

в автомате нет состояния "по умолчанию"...

 

Если есть возможность, то сделайте в каждом состоянии автомата запись в регистр. и потом этот регистр пересылайте на хост... Или даже регистр автомата можно проверить на изменения за скажем 1 сек, и в случае отсутствия - пересылать на хост или хотя бы по SPI на какой-нибудь разъем. Ну или сделать "сторожевой таймер для автомата". Тогда увидите, в каком состоянии завис автомат..

 

Где и как зависает автомат я увидел, спасибо, это проблема с гонками, сейчас пытаюсь написать временные ограничения, но не могу найти русского описания как это сделать в libero soc, нашел для alter'ы, Либеро не все пропускает, говорит что некоторые команды составлены не правильно, при чем насколько я понял, они не нравится компилятору, а синтез нормально подходит, ни кто случайно не находил мануал как это сделать в Либеро, с пошаговой инструкцией для несведущих?

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Где и как зависает автомат я увидел, спасибо, это проблема с гонками,...

Не должно быть "гонок" при синхронном проектировании. Все должно делаться только по клокам...

Либо Вы перемудрили с комбинационной логикой и ее надо убрать...

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Не должно быть "гонок" при синхронном проектировании. Все должно делаться только по клокам...

Либо Вы перемудрили с комбинационной логикой и ее надо убрать...

 

Возможно, но сейчас меня больше интересует, как правильно написать временные ограничения для Либеро

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Ни кто не сталкивался с похожими аномалиями?

 

а какие констрейны? что говорит designer про тайминг после разводки?

 

просто актеловские проазики гораздо тормознутее альтер/ксайлинсов и логика у них имеет более длинные пути из-за конструкции - поэтому, возможно, что то, что проходило нахаляву с ПЛИС другого типа, на проазиках заставит понапрягаться

 

Возможно, но сейчас меня больше интересует, как правильно написать временные ограничения для Либеро

Либеро это оболочка (никогда ее не пользовал), основной инструмент это designer - должен вызываться из libero - в нем есть кнопка с констрейнами - так проще всего использовать

 

рекомендую путь симплифай->дизайнер, зачем нужно либеро - вообще непонятно

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
рекомендую путь симплифай->дизайнер, зачем нужно либеро - вообще непонятно

 

Мне этот путь тоже нравится, но как разделить ограничения для симплифай и дизайнер, после симплифай имена цепей меняются, как с этим работать?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Мне этот путь тоже нравится, но как разделить ограничения для симплифай и дизайнер, после симплифай имена цепей меняются, как с этим работать?

симплифай генерит ограничения для дизайнера из sdc, с учетом переименований

но если дизайн просто синхронный, то проще самому поддерживать два файла

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
симплифай генерит ограничения для дизайнера из sdc, с учетом переименований

но если дизайн просто синхронный, то проще самому поддерживать два файла

 

Это я понял, но на практике в сгенерированный файл попала только частота, всех остальных ограничений нет, при этом не нашел ошибок и варнингов, что что-то не так, вот и хочу найти пример как с этим работать

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти
Авторизация