[an error occurred while processing this directive]
[an error occurred while processing this directive]
|
Проблема получается при синтезе VHDL файла содержащего в себе описание FSM. Синтез делается для FLEX10KE. Когда я выбираю Encoding Style для состояний "auto", он делает следующую вещь:
Encodings for TDeviceState values
value TDeviceState[4-0]
==================================
dsWAIT_PROBE ----1
dsWAIT_STROBE_RISE ---1-
dsWAIT_STROBE_FALL --1--
dsSTART_TRANSFER -1---
dsEND_TRANSFER 1----
И при этом устройство глючит/не работает.
Но если выбрать Encoding Style "binary" то получается вот что:
dsWAIT_PROBE 000
dsWAIT_STROBE_RISE -01
dsWAIT_STROBE_FALL -10
dsSTART_TRANSFER -11
dsEND_TRANSFER 100
И устройство работает замечательно.
Исходники одинаковые. Всё одинаковые. Разница только в способе кодировки состояний автоматов.
Причём в симуляторе MAX+plusII оба варианта ведут себя совершенно одинаково (работают как надо). И это меня очень сильно как раз и смущает. Я всегда считал что MAX-овскому симулятору можно доверять, а он тут так лажается :-(
Единственное что мне приходит в голову, так это то что FLEX-овские LUT-ы ведут себя непредсказуемо, когда ему на вход подаются сигналы вроде "----" :-)
Никто с таким не сталкивался/не знает в чём дело?
Или хотя бы какие-нибудь идеи по этому поводу.
E-mail: info@telesys.ru