Здравствуйте.
С FPGA и CPLD дело имею уже достаточно времени, но выполняя казалось бы легкую задачу, столкнулся с проблемой. Обо всем по порядку.
Небольшое описание схемы. CoolRunner CPLD, XC2C64A. 8 выходов, которые подают на другую платку выходной код. 3 управляющих входа, от которых зависит выходной код. На выходе стоят светодиоды для проверки правильности кода. На еще один вход заведена кнопка, чтобы проверять этот код (предполагалось , как альтернативная тактовая). На платку заводится синус, который подается на преобразователь синус-прямоугольник, а оттуда на вход основной тактовой. Сброса нет! Думаю, это самое важное.
Задача. Выдавать на выход необходимый код, 16 состояний(после последнего состояния возврат к первому), в зависимости от управляющих входов.
Написал быстренько код на верилоге, промоделировал - все вроде как работает.
Прошил платку. Проверил работу с кнопкой - все правильно идет. Стал подавать синус. И тут появилась проблема: некоторое время светодиоды зажигаются в зависимости от кода. Но со временем, они полностью все зажигаются и так и горят все.
Не понимаю в чем дело. На выходе преобразователя, который формирует тактовую, по умолчанию идет 2,4В . Игрался с IOSTANDART - ничего не помогает. Ощущение, что проблема в отсутствии сброса, как такового. Пробовал сброс от кнопки, подавая синус, но проблема все равно присутствует.
Может кто подскажет в чем дело?
P.S. По утверждениям человека, который дал мне такое задание, такая схема тактирования у них уже использовалась с этой же микросхемой, проблем не было. К сожалению, у него есть только прошивочный файл, да и он отностится к совсем другой задаче.