Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Внутренний генератор тактовой частоты на MAX-10.
Форум разработчиков электроники ELECTRONIX.ru > Программируемая логика ПЛИС (FPGA,CPLD, PLD) > Работаем с ПЛИС, области применения, выбор
flammmable
Осваиваю Verilog и MAX-10.
Захотел запустить внутренний тактовый генератор.
Посмотрел в Tools->IP-catalog (Quartus prime 17.1.0) - в разделе Library->Clock;PLLs and Resets.
Там - ALTCLKCTRL, ALTPLL и ALTPLL_RECONFIG.
Интуитивно понятно, что всё не то.
Полистал документ UG-M10CLKPLL (Intel® MAX® 10 Clocking and PLL User Guide).
Там были в т.ч. четыре раздела:
1) ALTCLKCTRL IP Core References
2) ALTPLL IP Core References
3) ALTPLL_RECONFIG IP Core References
4) Internal Oscillator IP Core References
"Номер четыре - это то, что нужно!" - подумал я. Заодно прочитал, что:
Clock Frequency 10M02, 10M04, 10M08, 10M16, and 10M25: 55 MHz, 116 MHz.
Отлично! Значит я смогу назначить своей 10M02 или 55МГц или 116МГц.
Но где его взять, это IP Core?
Начал гуглить по словам - на сочетание "Internal Oscillator IP Core References" попадался лишь этот самый раздел даташита.
Начал рыться в папках Квартуса. Нашел altera_int_osc. Даже без глубокого знания Verilog было видно, что это обертка над функцией (мегафункцией? модулем?) "fiftyfivenm_oscillator". О!! fiftyfive - это же "пятьдесят пять" по английски. Как одна из двух возможных частот для 10M02.
Загуглил "fiftyfivenm_oscillator" и получил от гугла... ровно две ссылки. Одну - на текст "altera_int_osc", вторую - на альтеровский форум где она вскользь упоминается в контексте невозможности на MAX-10 присоединить внутренний генератор к внутреннему PLL-у.
Скопировал текст загадочной функции из altera_int_osc в свой модуль прописав свой проводок-выход clk_test в .clkout и лог.1 в .oscena
Код
            fiftyfivenm_oscillator # (
                .device_id("08"),
                .clock_frequency("dummy")
            ) oscillator_dut (
                .clkout(clk_test),
                .clkout1(),
                .oscena(1'b1));
            end

На выходе появился меандр на частоте 80МГц. Это и не 55МГц и не 116МГц. Попробовал наугад поменять параметр .clock_frequency - без изменений, меандр 80МГц. Попробовал поменять параметры .clock_frequency и .device_id на откровенную белиберду. Без изменений, меандр на 80МГц.
В общем. Что это за "fiftyfivenm_oscillator", где про нее прочитать, есть ли более правильный способ включения внутреннего тактового генератора, где мои 55МГц?
Stewart Little
Цитата(flammmable @ Jun 4 2018, 10:47) *
Осваиваю Verilog и MAX-10.
Захотел запустить внутренний тактовый генератор.
Посмотрел в Tools->IP-catalog (Quartus prime 17.1.0) - в разделе Library->Clock;PLLs and Resets.

Смотрите в IP Catalog раздел Basic Function - Configuratiion and Programming.
В нем - Internal Oscillator.

Описание: Intel MAX 10 Clocking and PLL Overview , раздел 8 "Internal Oscillator IP Core References", стр.65 (хотя там и читать-то особо нечего..).
flammmable
Большое спасибо!

P.S. Теперь у Гугла будет 3 ссылки на загадочное "fiftyfivenm_oscillator" sm.gif
Stewart Little
Цитата(flammmable @ Jun 4 2018, 15:55) *
Теперь у Гугла будет 3 ссылки на загадочное "fiftyfivenm_oscillator" sm.gif

Что ж тут загадочного-то?
fiftyfivenm = 55 нм, т.е. проектная норма, по которой MAX 10 выпускаются. sm.gif
dvladim
Цитата(flammmable @ Jun 4 2018, 10:47) *
Отлично! Значит я смогу назначить своей 10M02 или 55МГц или 116МГц.

Вы вставляете мегафункцию и получаете выход клока.
55 и 116 - это крайние значения генератора. Реально вы получите нечто среднее в зависимости от температуры и напряжения питания.
flammmable
Цитата
fiftyfivenm = 55 нм

Точно!
Цитата
55 и 116 - это крайние значения генератора.

Там прямо в IP Core можно выбрать или 55 или 116 мегагерц. Надо еще проверить, но сдается мне - это точные значения, а не крайние.
flammmable
Проверил. По прежнему - 80МГц. Вы - правы.
justontime
Кстати, а нафига вообще нужен внутренний генератор с такими параметрами (вернее, с отсутствием таковых), какое у него может быть реальное применение ?
Flip-fl0p
Цитата(justontime @ Jun 5 2018, 13:51) *
Кстати, а нафига вообще нужен внутренний генератор с такими параметрами (вернее, с отсутствием таковых), какое у него может быть реальное применение ?

Ну например когда система не критична к времени работы. Например меряем температуру на улице. По меркам машинного времени температура изменяется бесконечно долго.
Stewart Little
Цитата(justontime @ Jun 5 2018, 13:51) *
Кстати, а нафига вообще нужен внутренний генератор с такими параметрами (вернее, с отсутствием таковых), какое у него может быть реальное применение ?

Для работы с внутренним флэшом.
Jenya7
вот pll для МАХ10. генерируйте до 4 выходов и подсоединяйте куда хотите.
Код
component pll is
    port
    (
        inclk0 : in STD_LOGIC  := '0';
        c0         : out STD_LOGIC
        --c1         : out STD_LOGIC
    );
end component;
U_SYS_PLL : pll
    port map
    (
        inclk0  =>  CLK,
         c0        => s_pll_clk
        --c1      => open
    );


Timmy
Цитата(justontime @ Jun 5 2018, 13:51) *
Кстати, а нафига вообще нужен внутренний генератор с такими параметрами (вернее, с отсутствием таковых), какое у него может быть реальное применение ?

Например, тактировать конфигурирование по SPI внешнего генератора частоты, который потом выдаст на FPGA основной тактовый сигнал.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.