Freibier 6 10 ноября, 2021 Опубликовано 10 ноября, 2021 · Жалоба Есть проект на плис 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? Если автоматически назначил, то как это проверить? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Leka 1 10 ноября, 2021 Опубликовано 10 ноября, 2021 · Жалоба 10 minutes ago, Freibier said: Проект полностью синхронный. Вместо управления клоком "clk", можно управлять сигналом разрешения клока "en": always@(posedge clk) if(en) begin … end Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Freibier 6 10 ноября, 2021 Опубликовано 10 ноября, 2021 · Жалоба Не пойдёт. У меня clkout100 не только в плис используется, но и выходит на пин и тактирует внешнюю мс. Именно из-за неё и нужно этот клок иногда останавливать. Т.е. нужно запретить работу всего что в плис от этой частоты работает и мс извне. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Yuri124 4 10 ноября, 2021 Опубликовано 10 ноября, 2021 · Жалоба Добавить перед выходным пином коммутатор, управляемый сигналом enable. Например, clk_out = enable ? clk : 0'b0; Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Flip-fl0p 4 10 ноября, 2021 Опубликовано 10 ноября, 2021 · Жалоба Ставите DDR регистр и управляете его входом ena Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Freibier 6 10 ноября, 2021 Опубликовано 10 ноября, 2021 · Жалоба 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? Если автоматически назначил, то как это проверить? На этот мой вопрос может кто чего подсказать? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Yuri124 4 10 ноября, 2021 Опубликовано 10 ноября, 2021 · Жалоба 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 - это поможет? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
RobFPGA 35 10 ноября, 2021 Опубликовано 10 ноября, 2021 · Жалоба Приветствую! 3 hours ago, Freibier said: Использовать ALTCLKCTRL почему-то не получилось, то ли библиотек не хватает то ли еще чего. Решил вопрос по другому. ... А может все же проще разобраться почему не получилось использовать готовый хардварный блок управления клоком в MAX10? А не придумывать костыли да еще и по не совсем ясным и понятным требованиям к такому клоку? Удачи! Rob. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Freibier 6 10 ноября, 2021 Опубликовано 10 ноября, 2021 · Жалоба 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. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Flip-fl0p 4 10 ноября, 2021 Опубликовано 10 ноября, 2021 · Жалоба Только что, 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 правильно подключить. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Freibier 6 10 ноября, 2021 Опубликовано 10 ноября, 2021 · Жалоба Только что, Flip-fl0p сказал: Так надо IP правильно подключить. Как надо IP правильно подключать? Почему PLL автоматически подключился и я ничего дополнительно не делал. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Jackov 1 10 ноября, 2021 Опубликовано 10 ноября, 2021 · Жалоба 2 часа назад, Freibier сказал: Мне надо чтобы при запрете частоты вообще всё что от нее тактируется остановилось (включая все внутр. счётчики и регистры в самой плис), а не только чтобы частота на выходном пине пропала. а если такая схема? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Freibier 6 10 ноября, 2021 Опубликовано 10 ноября, 2021 (изменено) · Жалоба 38 минут назад, Jackov сказал: а если такая схема? Вроде именно так и реализовано в ALTCLKCTRL. Но уже не актуально. Отыскал и добавил к проекту файл ECLK.qip и всё заработало с хардварным блоком ALTCLKCTRL. 2 часа назад, Yuri124 сказал: https://www.intel.com/content/www/us/en/support/programmable/articles/000078402.html - это поможет? Да, то что нужно. Всем спасибо! Изменено 10 ноября, 2021 пользователем Freibier Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Freibier 6 13 ноября, 2021 Опубликовано 13 ноября, 2021 · Жалоба Интересуюсь чисто в образовательных целях. Подскажите: нужно сделать коммутатор двух частот с общим сигналом разрешения выхода управляемый извне. 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: Можно ли так делать? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Jackov 1 14 ноября, 2021 Опубликовано 14 ноября, 2021 · Жалоба 2 часа назад, Freibier сказал: Можно ли так делать? Посмотрите вот здесь, начиная с 27:49 https://youtu.be/kju8fPDxi3Y?t=1669 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться