Перейти к содержанию
    

Внутренний генератор тактовой частоты на MAX-10.

Осваиваю 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МГц?

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Осваиваю 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 (хотя там и читать-то особо нечего..).

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Большое спасибо!

 

P.S. Теперь у Гугла будет 3 ссылки на загадочное "fiftyfivenm_oscillator" :)

Изменено пользователем flammmable

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Теперь у Гугла будет 3 ссылки на загадочное "fiftyfivenm_oscillator" :)

Что ж тут загадочного-то?

fiftyfivenm = 55 нм, т.е. проектная норма, по которой MAX 10 выпускаются. :)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Отлично! Значит я смогу назначить своей 10M02 или 55МГц или 116МГц.

Вы вставляете мегафункцию и получаете выход клока.

55 и 116 - это крайние значения генератора. Реально вы получите нечто среднее в зависимости от температуры и напряжения питания.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

fiftyfivenm = 55 нм

Точно!

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

Там прямо в IP Core можно выбрать или 55 или 116 мегагерц. Надо еще проверить, но сдается мне - это точные значения, а не крайние.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Кстати, а нафига вообще нужен внутренний генератор с такими параметрами (вернее, с отсутствием таковых), какое у него может быть реальное применение ?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Кстати, а нафига вообще нужен внутренний генератор с такими параметрами (вернее, с отсутствием таковых), какое у него может быть реальное применение ?

Ну например когда система не критична к времени работы. Например меряем температуру на улице. По меркам машинного времени температура изменяется бесконечно долго.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Кстати, а нафига вообще нужен внутренний генератор с такими параметрами (вернее, с отсутствием таковых), какое у него может быть реальное применение ?

Для работы с внутренним флэшом.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

вот 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
    );

 

pll.rar

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Кстати, а нафига вообще нужен внутренний генератор с такими параметрами (вернее, с отсутствием таковых), какое у него может быть реальное применение ?

Например, тактировать конфигурирование по SPI внешнего генератора частоты, который потом выдаст на FPGA основной тактовый сигнал.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...