Цитата(iosifk @ May 15 2006, 12:24)

Цитата(Gate @ May 15 2006, 12:47)

Если нужно в fpga запихнуть что-то еще, то можно заниматься оптимизацией, по типу предложенной iosifk: увеличить частоту в N раз, константы для компараторов запихать в память, за 1 такт делать М сравнений (M*N>=30) - это потребует М компараторов.
. Повторяю, проблема по ресурсам упирается в первую очередь в память для хранения констант для компараторов.
Еще раз - нужен ОДИН счетчик для таймера и ОДИН компаратор,
Еще нужен ОДИН счетчик и ОДИН сумматор, как указатели на память.
И двухпортовка 24х30х2 - одна часть для значений таймеров, другая для значений, с которыми надо сравнивать. Возможно при 30х1,5 Мег потребуется конвейер для цепи сравнения.
поднимаем частоту в 30 раз относительно частоты сэмплирования
А вот результат сравнения недо разнести по 30 битам через мультиплексор.
Вот только можно здесь добавить - а зачем нужно сравнивать с каким-то значением? Почему нельзя загружать код и декрементировать до нуля? При этом еще чуть-чуть будет экономии...
Я не задаю вопрос: "А для чего нужно 24 бита, нельзя ли сделать предделитель так, чтобы было несколько диапазонов"? Это дело того, кто отправил пост.
Удачи!
Обороты должны плавно менятса от 0.5 до 20000 в минуту.
Переключение диапазонов сделать можно, и тогда хватило бы и 16 битного
счетчика, но алгоритм работы микроконтроллера усложнится.
Как писали выше CPLD для этой задачи маловат. Значит буду использовать
FPGA младшей модели, ведь ее ресурсов достаточно для выполнения
моей задачи с 24 битным разрешением. Ну а раз ресурсов хватает, то думаю
лучше упростиь алгоритм.