Разработка, производство и продажа радиоэлектронной аппаратуры
|
Требуется программист в Зеленограде - обработка данных с датчиков; ColdFire; 40 тыс.
e-mail: jobsmp@pochta.ru
|
Автомат состояний из StateCad отлично проверяется в StateBench но практически не работает в реальности.
Отправлено
titanic 09 июля 2007 г. 17:47
Привет. Подскажите плиз, что может быть за глюк:
есть простенькая диаграмма, нарисованная в StateCad на картинке. Смысл в том, чтобы проверять длину входящего импульса ERR_IN и если она больше 18 циклов, то устанавливать флаг ERROR_OUT. Для подсчета используется счетчик COUNT_ERR. Скорость всего этого 3 МГц на Спартане 3 с 75Мгц кристалом. Сигнал ERR_IN - асинхронный
STATE_CAD сгенерировал очень понятный VHDL код с CASE и IFами, который я на основании знаний основных язаков программирования, но не VHDL, оцениванию как правильный.
Прикол в том, что при проверке CHIPSCOPEом в реальности часто происходят такие сбои, хотя в большинстве случаев работает правильно:
1. При подаче импульса счетчик считает до 2-4, а потом устанавливается флаг ERROR_OUT
2. При подаче импульса ERR_IN счетчик считает до 1-2 а потом устанавливается в 0. Когда через несколько циклов ERR_IN исчезает , то в этот момент устанавливется ERROR_OUT.
3. Если ERR_IN устанавливается в 0 во время счета то иногда в COUNT_ERR все равно хранится предыдущее состояние, а не 0.Если чесно, то это абсолютно ново для меня - но выглядет, как будто синтезатор что - то левое генерирует.
Подскажите, может, надо регистр ставить на ERR_IN, или я в FPGA что-то не понимаю?
Спасибо.
Составить ответ | Вернуться на конференцию
Ответы