Golikov 0 June 2, 2014 Posted June 2, 2014 · Report post Т.е. даже если есть строчки для дефолта и выше описан синхронный переход в текущее состояние? Да не важно есть они или нет. Автомат честно меняет состояние s1 на s21 (ну или откуда он в 21 приходит), только на эту смену у него очень мало времени, и не успевает получить состояние 21, а получает что-то среднее, а та часть что по колку состояние сохраняет, честно это что-то средние запоминает как конечный результат и полетели... на след такте все образует, но такт у вас будет левое состояние. Более того если вы не поставите галочку создавать безопасный автомат, то ваше default состояние будет упразднено оптимизатором, во всяком случае в ISE об этом честно написано. Сделай вы не классическое описание автомата в 2 частях из регистровой и комбинаторной. А лошпетское описание в одну часть, где у вас все переходы происходят и рассчитываются по клоку, проблем было бы на порядок меньше. Асинхронный сигнал портил бы вам жизнь только метастабильностью, вероятность которой сильно меньше. Quote Share this post Link to post Share on other sites More sharing options...
slkhome 0 June 2, 2014 Posted June 2, 2014 · Report post В общем все получилось!!! Поставил по 2 триггера по входу внешних сигналов (miso и miosio), по котрым есть некоторые переходы, и подравил немного автомат, чтобы учесть эти триггеры, и все заработало стабильно! Спасибо всем большое! Более того если вы не поставите галочку создавать безопасный автомат, то ваше default состояние будет упразднено оптимизатором, во всяком случае в ISE об этом честно написано. Как называется этот пункт с этой галочкой? Quote Share this post Link to post Share on other sites More sharing options...
Golikov 0 June 2, 2014 Posted June 2, 2014 · Report post Как называется этот пункт с этой галочкой? настройки синтезатора -> HDL Options -> safe_implementation там же в хелпе про нее ссылка на доку где сказано что для оптимизации без этой галки все несуществующие состояния будут выкинуты. Quote Share this post Link to post Share on other sites More sharing options...
olegras 0 June 2, 2014 Posted June 2, 2014 · Report post Сделай вы не классическое описание автомата в 2 частях из регистровой и комбинаторной. А лошпетское описание в одну часть, где у вас все переходы происходят и рассчитываются по клоку, проблем было бы на порядок меньше. Асинхронный сигнал портил бы вам жизнь только метастабильностью, вероятность которой сильно меньше. Когда-то делал эксперименты с автоматами. Хотел узнать разницу между асинхронно-синхронным и чисто синхронным автоматом. Описывал одни и те же автоматы двумя способами. Состояний на 10-15. После синтеза результаты были одинаковые. Это было хорошо видно в RTL вьюере. Выводы были такими, что в варианте с одним процессом мы описываем логику (ту, что на входах триггеров) и сами триггеры в одном процессе. В варианте с двумя - ту же логику описываем в асинхронном процессе, триггеры - в синхронном. И все. То есть разница только в способе представления/описания автомата. Сейчас работаю в 14-м ISE, у которого RTL вьюер паршивее, чем можно представить в страшном сне... Quote Share this post Link to post Share on other sites More sharing options...
Dimidrol 0 June 2, 2014 Posted June 2, 2014 · Report post Про применение Safe Implementation (SAFE_IMPLEMENTATION) и Safe Recovery State (SAFE_RECOVERY_STATE) можно почитать в UG627. Quote Share this post Link to post Share on other sites More sharing options...
Golikov 0 June 2, 2014 Posted June 2, 2014 · Report post После синтеза результаты были одинаковые. Это было хорошо видно в RTL вьювере Другого и не должно было быть. Это вопрос отладки. Когда у вас запись разнесена на 2 описания, надо следить за 2 объектами. Когда у вас в одном месте, легче фиксировать состояние, куда пришли, и куда ушли. Может это субъективное... Quote Share this post Link to post Share on other sites More sharing options...