Freibier 0 November 10, 2021 Posted November 10, 2021 · Report post Есть проект на плис MAX10. На PLL формируются несколько частот от 40 до 200 MHz. Все выходы PLL подключены только на тактовые входа триггеров. Проект полностью синхронный. Работает замечательно. И вдруг возникла необходимость разрешать/запрещать один из выходов PLL. Использовать ALTCLKCTRL почему-то не получилось, то ли библиотек не хватает то ли еще чего. Решил вопрос по другому. Нужную частоту сделал вдвое больше и подал на такую схему. module CLK( input clkin200, clkenb, output reg clkout100); reg eclk; always @(posedge clkin200) eclk <= clkenb; always @(posedge clkin200) clkout100 <= !clkout100 & eclk; endmodule В RTL : Проверил в реальном изделии - вроде всё работает как надо. В чём минусы такого подхода к формированию клока с разрешением? Как на verilog указать квартусу чтобы он выход триггера clkout100 назначил на global clock? Если автоматически назначил, то как это проверить? Quote Share this post Link to post Share on other sites More sharing options...
Leka 0 November 10, 2021 Posted November 10, 2021 · Report post 10 minutes ago, Freibier said: Проект полностью синхронный. Вместо управления клоком "clk", можно управлять сигналом разрешения клока "en": [email protected](posedge clk) if(en) begin … end Quote Share this post Link to post Share on other sites More sharing options...
Freibier 0 November 10, 2021 Posted November 10, 2021 · Report post Не пойдёт. У меня clkout100 не только в плис используется, но и выходит на пин и тактирует внешнюю мс. Именно из-за неё и нужно этот клок иногда останавливать. Т.е. нужно запретить работу всего что в плис от этой частоты работает и мс извне. Quote Share this post Link to post Share on other sites More sharing options...
Yuri124 0 November 10, 2021 Posted November 10, 2021 · Report post Добавить перед выходным пином коммутатор, управляемый сигналом enable. Например, clk_out = enable ? clk : 0'b0; Quote Share this post Link to post Share on other sites More sharing options...
Flip-fl0p 2 November 10, 2021 Posted November 10, 2021 · Report post Ставите DDR регистр и управляете его входом ena Quote Share this post Link to post Share on other sites More sharing options...
Freibier 0 November 10, 2021 Posted November 10, 2021 · Report post 1 час назад, Yuri124 сказал: Добавить перед выходным пином коммутатор, управляемый сигналом enable. Например, Мне надо чтобы при запрете частоты вообще всё что от нее тактируется остановилось (включая все внутр. счётчики и регистры в самой плис), а не только чтобы частота на выходном пине пропала. 1 час назад, Yuri124 сказал: clk_out = enable ? clk : 0'b0; Мне кажется что в этом случае на clk_out возможны иголки. Или я ошибаюсь? 32 минуты назад, Flip-fl0p сказал: Ставите DDR регистр и управляете его входом ena Никогда DDR не использовал сложно понять как их использовать, да и нет их в моей плис 3 часа назад, Freibier сказал: Как на verilog указать квартусу чтобы он выход триггера clkout100 назначил на global clock? Если автоматически назначил, то как это проверить? На этот мой вопрос может кто чего подсказать? Quote Share this post Link to post Share on other sites More sharing options...
Yuri124 0 November 10, 2021 Posted November 10, 2021 · Report post 12 minutes ago, Freibier said: чтобы при запрете частоты вообще всё что от нее тактируется остановилось (включая все внутр. счётчики и регистры в самой плис) я подразумевал - на выход клокового пина поставить коммутатор, а внутри ПЛИС управлять так, как Вам выше подсказали - совместить 2 возможности. 14 minutes ago, Freibier said: в этом случае на clk_out возможны иголки. Или я ошибаюсь? Чтобы не было иголок - это должен постараться разработчик правильно сгенерировать этот сигнал enable (не забыть составить соотв. файл sdc). 22 minutes ago, Freibier said: указать квартусу https://www.intel.com/content/www/us/en/support/programmable/articles/000078402.html - это поможет? Quote Share this post Link to post Share on other sites More sharing options...
RobFPGA 8 November 10, 2021 Posted November 10, 2021 · Report post Приветствую! 3 hours ago, Freibier said: Использовать ALTCLKCTRL почему-то не получилось, то ли библиотек не хватает то ли еще чего. Решил вопрос по другому. ... А может все же проще разобраться почему не получилось использовать готовый хардварный блок управления клоком в MAX10? А не придумывать костыли да еще и по не совсем ясным и понятным требованиям к такому клоку? Удачи! Rob. Quote Share this post Link to post Share on other sites More sharing options...
Freibier 0 November 10, 2021 Posted November 10, 2021 · Report post 57 минут назад, RobFPGA сказал: А может все же проще разобраться почему не получилось Вот такую ошибку выдает: Error (12006): Node instance "inst_ECLK" instantiates undefined entity "ECLK". Ensure that required library paths are specified correctly, define the specified entity, or change the instantiation. If this entity represents Intel FPGA or third-party IP, generate the synthesis files for the IP. Quote Share this post Link to post Share on other sites More sharing options...
Flip-fl0p 2 November 10, 2021 Posted November 10, 2021 · Report post Только что, Freibier сказал: Вот такую ошибку выдает: Error (12006): Node instance "inst_ECLK" instantiates undefined entity "ECLK". Ensure that required library paths are specified correctly, define the specified entity, or change the instantiation. If this entity represents Intel FPGA or third-party IP, generate the synthesis files for the IP. Так надо IP правильно подключить. Quote Share this post Link to post Share on other sites More sharing options...
Freibier 0 November 10, 2021 Posted November 10, 2021 · Report post Только что, Flip-fl0p сказал: Так надо IP правильно подключить. Как надо IP правильно подключать? Почему PLL автоматически подключился и я ничего дополнительно не делал. Quote Share this post Link to post Share on other sites More sharing options...
Jackov 1 November 10, 2021 Posted November 10, 2021 · Report post 2 часа назад, Freibier сказал: Мне надо чтобы при запрете частоты вообще всё что от нее тактируется остановилось (включая все внутр. счётчики и регистры в самой плис), а не только чтобы частота на выходном пине пропала. а если такая схема? Quote Share this post Link to post Share on other sites More sharing options...
Freibier 0 November 10, 2021 Posted November 10, 2021 (edited) · Report post 38 минут назад, Jackov сказал: а если такая схема? Вроде именно так и реализовано в ALTCLKCTRL. Но уже не актуально. Отыскал и добавил к проекту файл ECLK.qip и всё заработало с хардварным блоком ALTCLKCTRL. 2 часа назад, Yuri124 сказал: https://www.intel.com/content/www/us/en/support/programmable/articles/000078402.html - это поможет? Да, то что нужно. Всем спасибо! Edited November 10, 2021 by Freibier Quote Share this post Link to post Share on other sites More sharing options...
Freibier 0 November 13, 2021 Posted November 13, 2021 · Report post Интересуюсь чисто в образовательных целях. Подскажите: нужно сделать коммутатор двух частот с общим сигналом разрешения выхода управляемый извне. ClkA и CLKB - выходы PLL плис. clkout - тактирует всю схему плис. Сигналы clksel, clken формируются внешней мс и поступают на обычные I/O плис. Любое изменение сигнала clksel возможно только когда сигнал clken в нуле. Длительность нуля на clken всегда больше 2-3 тактов минимальной из частот (clkA,clkB). На верилоге изобразил так: module CLK( input clkA, clkB, clksel, clken, output clkout); wire tclk = clksel ? clkA : clkB; reg tenb; always @(negedge tclk) tenb <= clken; assign clkout = tclk & tenb; endmodule RTL: Можно ли так делать? Quote Share this post Link to post Share on other sites More sharing options...
Jackov 1 November 14, 2021 Posted November 14, 2021 · Report post 2 часа назад, Freibier сказал: Можно ли так делать? Посмотрите вот здесь, начиная с 27:49 https://youtu.be/kju8fPDxi3Y?t=1669 Quote Share this post Link to post Share on other sites More sharing options...