Приветствую всех.
Глобально задача выглядит следующим образом:
Cyclone V E. Есть 4 входящих тактовых сигнала одной частоты (30mhz), но различной фазы (что на самом деле не суть важно). Требуется реализовать возможность динамически выбирать нужный тактовый сигнал для всей схемы на ПЛИС. Все 4 клока заведены на специальные клоковые ноги ПЛИСины.
Что пробовал:
1. Пробовал использовать ядро ALTCLKCTRL, оно как раз на 4 клока рассчитано, но к сожалению только 2 входа могут быть с внешних портов, остальные 2 должны быть с PLL.
Каскадировать это ядро нельзя.
2. Два клока выбираются с помощью PLL через 2 входа reclk и refclk1 с ручным выбором Switchover, т.е. по сути PLL работает как мультиплексор. Остальные 2 идут на ALTCLKCTRL вместе с результирующим клоком с PLL. Итого из трех выбирается один. Вроде как всё разводится, но тут другая засада. Заключается она в том, что по сути ничего не переключается. Ни на PLL, ни на этом чертовом ALTCLKCTRL. Проблем с пайкой и прочих детсадовских ошибок точно нет.
Вот так совершенно, казалось бы, простая задача на этой "крутой" ПЛИС пока не решается по уму. Борюсь с искушением сделать мультиплексор на логике, а потом завести это каким-нибудь образом на вход PLL в режиме 1:1. Частота небольшая, но это как-то криво, хочется оставить на крайний случай.