Anton1990 0 Posted November 21, 2020 · Report post Всем добрый день. Есть проект на vhdl по vivado 2016.4 работающий на частоте clk = 150 Мгц. Clk берется с clk-визарда соответственно констрейн прописан.. В проекте генерируется сигнал "ce" на котором работает большая часть проекта. CE "прореживает" частоту в 2000 раз. Вопрос: как грамотно описать для такой схемы констрейн? Насколько я понимаю виваде незачем пыжится развести всю схему на частоту clk=150 МГц. И можно ли такой констрейн прописать прямо в тексте vhdl модуля? Заранее большое спасибо за ответы. Quote Ответить с цитированием Share this post Link to post Share on other sites
Nick_K 0 Posted November 21, 2020 · Report post Вопрос в том, что Вы пытаетесь этим добится? Если задача побаловаться, тогда можно обьявить set_multicycle_path -from * -to * [clk*2000]. Ну или зафолспасить всё - сомневаюсь, что в наличии огромный кристалл, на котором нужно развести CPU ядро + периферию. Но смысл этих действий, как я говорил ранее, нулевой. Если же задача уменьшить энергопотребление или подстроить схему под тактирование на внешних частотах, тогда подходы абсолютно другие. Например, что мешает уменьшить частоту со 150МГц, раз "большая часть проекта работает на се", до 1МГц (конкретно для Вас - 75КГц) и не выдумывать велосипед. Соответственно энергопотребление уменьшится. Ну или на худой конец сделать делитель и создать новую частоту тактирования через generate_clock. З.Ы. Ах да, в тексте VHDL подобного рода констрейны применить невозможно (кроме falce_path, кажется). Придётся или ucf писать, что относительно сложно, или воспользоваться удобным встроенным констрейн эдитором (к которому нужно немного приловчится, но имхо намного удобнее чем у "других"). Quote Ответить с цитированием Share this post Link to post Share on other sites
Aleх 0 Posted November 21, 2020 · Report post 1 hour ago, Anton1990 said: Вопрос: как грамотно описать для такой схемы констрейн? Насколько я понимаю виваде незачем пыжится развести всю схему на частоту clk=150 МГц. Если говорить о грамотности, то грамотно будет - переписать код, где будет формироваться клок с пониженной в 2000 раз частотой, а СЕ убрать. Констрейнт будет - create_generated_clock соответственно. А как у вас сделано сейчас - это 1999 раз впустую дернуть дерево клока (с перезарядом паразитов и сливом энергии в нагрев), и только на 2000й получить полезное переключение. Не грамотно со всех точек зрения. Quote Ответить с цитированием Share this post Link to post Share on other sites
_4afc_ 0 Posted November 22, 2020 · Report post On 11/21/2020 at 2:53 PM, Aleх said: А как у вас сделано сейчас - это 1999 раз впустую дернуть дерево клока (с перезарядом паразитов и сливом энергии в нагрев), и только на 2000й получить полезное переключение. Не грамотно со всех точек зрения. Может там BUFGCE стоит... Quote Ответить с цитированием Share this post Link to post Share on other sites
lexx 0 Posted November 23, 2020 · Report post Напрямую прописать - нет. Если у вас идет целитель частоты, то до делителя у вас частота обычная, начиная с выхода делителя, generated_clock и далее новый тактовый сигнал проходит по всей логике. Констрейны описывают время прохождения сигналов и не являются целевой функцией. Quote Ответить с цитированием Share this post Link to post Share on other sites
des00 0 Posted November 23, 2020 · Report post On 11/21/2020 at 5:34 PM, Anton1990 said: Вопрос: как грамотно описать для такой схемы констрейн? Насколько я понимаю виваде незачем пыжится развести всю схему на частоту clk=150 МГц. немного по вашей теме https://embedders.org/content/timequest-dlya-chainikov-prilozhenie-3-dobryi-i-zlobnyi-multicycle On 11/21/2020 at 5:34 PM, Anton1990 said: И можно ли такой констрейн прописать прямо в тексте vhdl модуля? нет. И всем, ну все, втоптали парня в грязь, сразу все в мусор, на выброс и т.д. Эта техника довольно широко использовалась еще лет 5 назад, более того, если поднимете архивы форума, то куча советов была от всех использовать именно эту технику, а любое использование тактовых порожденных на счетчиках и т.д. придавалось анафеме). А про переписку кода полную, если там мегабайт исходников, да еще и чужих, то посмотрю я на вас как вы будете вот это все переписывать и сколько времени у вас займет переписка и новая отладка. PS. Ну и есть куча систем, работащих по CE, где у CE плавающая скважность и это нужно для работы. А еще есть куча систем, в которых блоки быстрой математики, запускаются между этими CE. ТСу рекомендую советы слушать, но все же думать своей головой ;) Quote Ответить с цитированием Share this post Link to post Share on other sites
Nemos760 0 Posted November 26, 2020 (edited) · Report post On 11/23/2020 at 9:12 AM, des00 said: немного по вашей теме https://embedders.org/content/timequest-dlya-chainikov-prilozhenie-3-dobryi-i-zlobnyi-multicycle нет. И всем, ну все, втоптали парня в грязь, сразу все в мусор, на выброс и т.д. Эта техника довольно широко использовалась еще лет 5 назад, более того, если поднимете архивы форума, то куча советов была от всех использовать именно эту технику, а любое использование тактовых порожденных на счетчиках и т.д. придавалось анафеме). А про переписку кода полную, если там мегабайт исходников, да еще и чужих, то посмотрю я на вас как вы будете вот это все переписывать и сколько времени у вас займет переписка и новая отладка. PS. Ну и есть куча систем, работащих по CE, где у CE плавающая скважность и это нужно для работы. А еще есть куча систем, в которых блоки быстрой математики, запускаются между этими CE. ТСу рекомендую советы слушать, но все же думать своей головой ;) Пробежался для интереса по статье. Ногами не бейте, видимо туплю, но к чему комментарий: Quote "Сплошная ляпота, но надо помнить что на ival нужно подавать меандр, в противном случае схема работать не будет!!!" Имеется ввиду меандр с тактовой частотой, деленной на 2? А то если подавать любой другой меандр, то вроде set_multicycle_path и уж тем более -setup -end 2 неактуальны Edited November 26, 2020 by Nemos760 Quote Ответить с цитированием Share this post Link to post Share on other sites
des00 0 Posted November 26, 2020 · Report post 10 minutes ago, Nemos760 said: Пробежался для интереса по статье. Ногами не бейте, видимо туплю, но к чему комментарий: Имеется ввиду меандр с тактовой частотой, деленной на 2? А то если подавать любой другой меандр, то вроде set_multicycle_path и уж тем более -setup -end 2 неактуальны минимальная скважность должна быть не менее двух. если у вас плавающий сигнал валидности, в котором есть два подряд сигнала, то в этом месте возможна ошибка. Ну а там дальше ваши значения, по аналогии. Quote Ответить с цитированием Share this post Link to post Share on other sites
Nemos760 0 Posted November 26, 2020 · Report post 1 hour ago, des00 said: минимальная скважность должна быть не менее двух. если у вас плавающий сигнал валидности, в котором есть два подряд сигнала, то в этом месте возможна ошибка. Ну а там дальше ваши значения, по аналогии. Самое понятие меандра подразумевает скважность равную 2, я поэтому про частоту сигнала разрешения относительно тактовой и спрашивал, если это будет меандр, но с меньшим значением частоты, то в него могут попасть 2 такта. В общем всё нормально, мы об одном и том же, но видимо у меня плохо получилось сформулировать вопрос. Quote Ответить с цитированием Share this post Link to post Share on other sites