Цитата
Далее - строка Led2 := not(Led2);, стоящая под if подразумевает синтез защелки (как минимум), а для этого нужен реальный клок.
почему оно такое подразумевает если нет clk'event? именно это вроде подразумевает клок...
Схема просто не определена полностью, что будет если Btn_Down != '1'?
Код
if (Btn_Down = '1') then
Led2 := not(Led2);
else
Led2 := 0;
и будет обычный элемент "И" на один вход которого подается Btn_Down, и not Led2 на второй его вход. Да схема будет работать как не пойми что, пока нажата кнопка она будет как генератор менять свои значения, и как кнопку отпустят становиться 0. Но если очень надо именно такое, то почему нет?
или же схема вида
Код
if (Btn_Down = '1') then
Led2 := not(Led2);
else
Led2 := Led2;
это у нас "исключающее ИЛИ" с одним входом Btn_Down, а на другой подан выход Led2. Да эта схема тоже дрянь, по причине того что пока нажата кнопка оно бешено меняется, а как кнопку отпускает замирает в прошлом состоянии. Но если снова надо, то почему нет?
А вот без else поведение схемы полностью не определено, и поскольку от того что на выходе могут быть разные варианты в зависимости от того что должно быть на выходе если кнопка не 1, то синтезатор и обиделся...
Понятно что вы скорее всего этого не хотели, и хотели чтобы эта схема 1 раз сменила свое состояние когда нажали кнопку, но для этого надо описать это по другому, как раз чтобы кнопка стала клоком для триггера. И нет никакой проблемы если этот сигнал заведен не на клоковую ногу ПЛИС. Надо просто поклясться синтезатору что вы знаете что делаете, и все будет хорошо.... это как раз
< NET "Btn_Down" CLOCK_DEDICATED_ROUTE = FALSE; >.
Ну естественно сигналы что виляют на результат надо внести в список чувствительности (это если по верилоговски выражаться, я так понимаю это типа под процесс в скобки их запихать)
Вот так мне кажется...
П.С. Удивительно что синтезатор тоже понял что вы хотели одной смены состояния леда, и начал городить схему где кнопка - клок, хотя из описания этого явно не следует... может у вас в схеме еще где то есть кнопка'event и это относится к этим местам? Перечитал, более того синтезатор не обижается на схему. Он пишет что вы входной сигнал клока никак не нагрузили, и он просто не знает куда его завести, и что вы клоком кнопку используете, и требует подписки что вы в курсе что она с не клокового контакта и все, ничего более... Но почему он так считает для меня реально загадка...
П.С.С. завод клока с не клоковой ноги грозит тем что сначала сигнал потянуть в ПЛИС до клокового дерева, а потом уже будут использовать как клок. А это выльется в то что будет большая задержка между фронтом на ноге и фронтом внутри плис. И это серьезно просадит тайминг, но более это ничем не грозит.