Jump to content
    

Конечный автомат, интерпритации средой

Т.е. даже если есть строчки для дефолта и выше описан синхронный переход в текущее состояние?

 

Да не важно есть они или нет. Автомат честно меняет состояние s1 на s21 (ну или откуда он в 21 приходит), только на эту смену у него очень мало времени, и не успевает получить состояние 21, а получает что-то среднее, а та часть что по колку состояние сохраняет, честно это что-то средние запоминает как конечный результат и полетели... на след такте все образует, но такт у вас будет левое состояние.

 

 

Более того если вы не поставите галочку создавать безопасный автомат, то ваше default состояние будет упразднено оптимизатором, во всяком случае в ISE об этом честно написано.

 

Сделай вы не классическое описание автомата в 2 частях из регистровой и комбинаторной. А лошпетское описание в одну часть, где у вас все переходы происходят и рассчитываются по клоку, проблем было бы на порядок меньше. Асинхронный сигнал портил бы вам жизнь только метастабильностью, вероятность которой сильно меньше.

Share this post


Link to post
Share on other sites

В общем все получилось!!! Поставил по 2 триггера по входу внешних сигналов (miso и miosio), по котрым есть некоторые переходы, и подравил немного автомат, чтобы учесть эти триггеры, и все заработало стабильно! Спасибо всем большое!

 

Более того если вы не поставите галочку создавать безопасный автомат, то ваше default состояние будет упразднено оптимизатором, во всяком случае в ISE об этом честно написано.

Как называется этот пункт с этой галочкой?

Share this post


Link to post
Share on other sites

Как называется этот пункт с этой галочкой?

 

настройки синтезатора -> HDL Options -> safe_implementation

там же в хелпе про нее ссылка на доку где сказано что для оптимизации без этой галки все несуществующие состояния будут выкинуты.

Share this post


Link to post
Share on other sites

Сделай вы не классическое описание автомата в 2 частях из регистровой и комбинаторной. А лошпетское описание в одну часть, где у вас все переходы происходят и рассчитываются по клоку, проблем было бы на порядок меньше. Асинхронный сигнал портил бы вам жизнь только метастабильностью, вероятность которой сильно меньше.

Когда-то делал эксперименты с автоматами. Хотел узнать разницу между асинхронно-синхронным и чисто синхронным автоматом. Описывал одни и те же автоматы двумя способами. Состояний на 10-15. После синтеза результаты были одинаковые. Это было хорошо видно в RTL вьюере. Выводы были такими, что в варианте с одним процессом мы описываем логику (ту, что на входах триггеров) и сами триггеры в одном процессе. В варианте с двумя - ту же логику описываем в асинхронном процессе, триггеры - в синхронном. И все. То есть разница только в способе представления/описания автомата. Сейчас работаю в 14-м ISE, у которого RTL вьюер паршивее, чем можно представить в страшном сне...

Share this post


Link to post
Share on other sites

Про применение

 

Safe Implementation (SAFE_IMPLEMENTATION)

и

Safe Recovery State (SAFE_RECOVERY_STATE)

 

можно почитать в UG627.

Share this post


Link to post
Share on other sites

После синтеза результаты были одинаковые. Это было хорошо видно в RTL вьювере

 

Другого и не должно было быть. Это вопрос отладки. Когда у вас запись разнесена на 2 описания, надо следить за 2 объектами. Когда у вас в одном месте, легче фиксировать состояние, куда пришли, и куда ушли. Может это субъективное...

 

 

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...