Мне нужно разделить тактовую частоту 50 МГц на 1,5 МГц с 50% -ным рабочим циклом, используя VHDL. Для этого я хотел использовать счетчик, чтобы подсчитать количество импульсов в тактовой импульсе 50 МГц до половины периода синхронизации 1,5 Мгц, т.е. 16,6666, который находится в десятичной форме, который я не знаю, как реализовать в коде. Может ли кто-нибудь помочь мне с этим?Разделитель часов VHDL в десятичной системе
спасибо.
PLL - это путь. Если вы сами реализуете делитель часов, лучшее, что вы можете получить, - это приближение. Если вы используете программное обеспечение Altera для проектирования, воспользуйтесь функцией ALTPLL megafunction. –
Я использую Xilinx ISE. DCM может делить только до 16. Итак, я не могу разделить на 33.3333, чтобы получить 1,5 МГц от 50 МГц входных часов. Вы знаете, как реализовать это с помощью DCM? – user24883
Используйте примитив DCM_clkgen: установите M = 3, d = 10 (я прочитал лист данных, это действительно). Это займет ваше 50-миллиметровое задание, увеличьте его частоту до 150 МГц и разделите на 10, давая 15 МГц. Затем либо сделайте счетчик 5 тактов, чтобы дать вам 1.5MHz, который, вероятно, будет в порядке на этих скоростях, или поместите второй dcm и далее разделите вниз. – OllieB