ubobrov 0 18 июля, 2009 Опубликовано 18 июля, 2009 · Жалоба Как описать конструкцию always @(*) на verilog 95? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Artem_Petrik 0 18 июля, 2009 Опубликовано 18 июля, 2009 · Жалоба По хорошему, вместо звездочки нужно перечислить все сигналы, используемые в данном always в качестве источников. Например, если в теле a = b | c ^ d & e; то нужно указывать b,c,d,e ('a' не надо). Впрочем, если это для синтеза, то синтезатору, в принципе пофиг, что там в списке чувствительности понаписано. Но полагаться на это все же не стоит, вдруг помоделировать придется. А вообще, переходить с verilog2000 на verilog95 - это регресс :), надо наоборот, к SV двигаться Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
dvladim 0 19 июля, 2009 Опубликовано 19 июля, 2009 · Жалоба Впрочем, если это для синтеза, то синтезатору, в принципе пофиг, что там в списке чувствительности понаписано. Но полагаться на это все же не стоит, вдруг помоделировать придется. Ну почему же пофигу? Латчи образуются. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Artem_Petrik 0 19 июля, 2009 Опубликовано 19 июля, 2009 · Жалоба Ну почему же пофигу? Латчи образуются. Не уловил мысль... Допустим я напишу reg a; always @( b ) a = b & c; как видно, в списке чувствительности пропущен 'c'. Что по вашему синезируется? Не представляю, откуда здесь возмется латч. Или пример неудачный? Приведите свой. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ubobrov 0 19 июля, 2009 Опубликовано 19 июля, 2009 · Жалоба А вообще, переходить с verilog2000 на verilog95 - это регресс :), надо наоборот, к SV двигаться FPGA Advantage 7.2 не желает с Verilog2000 дружить, а другие версии FPGA Advantage у меня на компе не запускаются, почему-то, вот и приходится. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
CaPpuCcino 0 19 июля, 2009 Опубликовано 19 июля, 2009 · Жалоба FPGA Advantage 7.2 не желает с Verilog2000 дружить, а другие версии FPGA Advantage у меня на компе не запускаются, почему-то, вот и приходится. думаю не стоит из-за средства ввода проекта отказывать себе в удовольсятвии пользоваться более продвинутым языком (другое дело если бы у вас синтезатор или моделятор язык не поддерживал) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Postoroniy_V 0 20 июля, 2009 Опубликовано 20 июля, 2009 · Жалоба Не уловил мысль... Допустим я напишу reg a; always @( b ) a = b & c; как видно, в списке чувствительности пропущен 'c'. Что по вашему синезируется? Не представляю, откуда здесь возмется латч. Или пример неудачный? Приведите свой. ну вот так будет латч always @( b or c ) if(b) a <= d; else if(c) a<=~d; Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
dvladim 0 20 июля, 2009 Опубликовано 20 июля, 2009 · Жалоба Или пример неудачный? Приведите свой. Ну вот вам типичный латч: always @(d or g) if (g) q <= d; Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
sazh 3 20 июля, 2009 Опубликовано 20 июля, 2009 · Жалоба ну вот так будет латч always @( b or c ) if(b) a <= d; else if(c) a<=~d; а так его не будет always @( b or c ) if(b) a <= d; else if(c) a <= ~d; else a <= 1'b0; Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Artem_Petrik 0 20 июля, 2009 Опубликовано 20 июля, 2009 · Жалоба ну вот так будет латч always @( b or c ) if(b) a <= d; else if(c) a<=~d; Ну вот вам типичный латч: always @(d or g) if (g) q <= d; Огромное спасибо за то что рассказали как описать латч :a14: . Буду знать . Собственно вопрос был в чем: я утверждал, что синтезатору пофиг, все ли сигналы перечислены в списке чувствительности блока always. Ув. dvladim возразил, что не пофиг, и (я так понял) если перечислить не все, то образуются латчи. Я попросил пример. Но не любой пример латча, а такой, где синтез латча обусловлен тем, что что-то пропущено в списке чувствительности! В обоих приведенных примерах наличие латчей обусловлено не списком чувствительности, а просто отсутствием последнего else после if-ов. В примере dvladim так вообще в списке чувствительности ничего не пропущено. Так что пока я остаюсь при мнении, что результат работы синтезатора не зависит от того, все ли сигналы перечислены в списке чувствительности. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
yes 5 21 июля, 2009 Опубликовано 21 июля, 2009 · Жалоба Собственно вопрос был в чем: я утверждал, что синтезатору пофиг, все ли сигналы перечислены в списке чувствительности блока always. вот пример always @(c) a=c?b:0; скорее всего умный синтезатор ругнется и исправит, но тогда модель (результат симулятора) будет отличаться предполагаю, что хотелось описать мультиплексор always @(c or b) a=c?b:0; Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
dvladim 0 21 июля, 2009 Опубликовано 21 июля, 2009 · Жалоба а так его не будет always @( b or c ) if(b) a <= d; else if(c) a <= ~d; else a <= 1'b0; Ну, комбинационной схемы тоже не будет. Надо же как-то d хранить. Я хочу сказать, что при b и с равным 1 возможны все 4 сочетания a и d. Т.е. a не будет функцией трех входов. Я попросил пример. Но не любой пример латча, а такой, где синтез латча обусловлен тем, что что-то пропущено в списке чувствительности! В обоих приведенных примерах наличие латчей обусловлено не списком чувствительности, а просто отсутствием последнего else после if-ов. В примере dvladim так вообще в списке чувствительности ничего не пропущено. Да принципиальной разницы нет. Вот yes привел пример. Присоединяюсь. В списке чувствительности должно быть все, что в правой части присваивания. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Artem_Petrik 0 22 июля, 2009 Опубликовано 22 июля, 2009 · Жалоба вот пример always @(c) a=c?b:0; скорее всего умный синтезатор ругнется и исправит, но тогда модель (результат симулятора) будет отличаться Умный, или не умный, ругнется или не ругнется, а ничего кроме упомянутого мультиплексора (точнее and гейта с одним инвертеным входом) синтезатор сделать не сможет. Уж латч тут точно не получится. Другое дело, что обнаружив такое безобразие синтезатор может вообще оказаться синтезировать. Ведь, строго говоря, always с неполным списком чувствительности является несинтезируемой конструкцией. Те синтезаторы, с которыми я сталкивался, дают warning, но синтезируют. Впрочем предлагаю дискуссию свернуть, в силу ее абсолютной бесполезности. Благо уже давно можно не заморачиваться, а писать @(*). Я собственно тоже с самого начала не рекомендовал что-то пропускать. Разве что если хочется чудес при симуляции. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться