Доброго времени суток!
Поставили быструю задачу: сделать энергонезависимую плату с ПЛИС на борту, как расширитель для последовательного интерфейса (читай регистр сдвига). На вход приходит "псевдо SPI" (протокол похож, но работает по-своему плюс дополнительная минимальная логика). На плату решили поставить MAX 10 из-за его энергонезависимой памяти прошивки и наличия ADC (который в результате не пригодился). Проблема в том, что никто не хочет ставить генератор опорной частоты. Есть конечно вариант задействовать внутренный генератор, но там очень неточная частота от серии к серии, плюс входной интерфейс имеет частоту порядка 20MHz, а внутренний генератор даёт от 60 до 110 MHz.
Сначала была идея сделать умножитель частоты (или работать по обоим фронтам) и дальше как обычно разложить логику.
Но всё же здравый смысл подсказывает, что не нужно изобретать велосипед и затактировать всю синхронную логику от входного клока SPI, а остальная комбинаторика будет себе подвешена наобум.
Проблема что я никогда не имел дел с синхронным интерфейсом с такими "дырками" (частота может быть от 1kHz до 20MHz, при этом установка выходных значений должна быть синхронной - разбег до десятых микросекунд) и честно говоря понятия не имею как констрейнить.
Буду благодарен за любой гайд или ссылку.
Для понимания задачи, нужно реализовать такую синхронную логику + комбинаторику: