Sagittarius 0 2 февраля, 2017 Опубликовано 2 февраля, 2017 · Жалоба Здравствуйте. Изучаю Verilog, возник вопрос, который не понимаю. пример счетчик 0-10: === module test1(clk, count); input clk; output reg[7:0]count; always @(posedge clk) begin count <= count + 8'b1; if (count == 8'b00001010)count <= 0; end endmodule что на него сгенерил Quartus: меняю строки в always блоке местами: always @(posedge clk) begin if (count == 8'b00001010)count <= 0; count <= count + 8'b1; end исчезает условие проверки на 8'hA: Вот никак не пойму - почему так? вроде в данном случае результат не должен зависеть от последовательности строк? Спасибо. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
RobFPGA 27 2 февраля, 2017 Опубликовано 2 февраля, 2017 · Жалоба Приветствую! Если есть несколько неблокирующих присваиваний в одну переменную то переменная получит значение ПОСЛЕДНЕГО активного присваивания. В Вашем случае во втором варианте ВСЕГДА выполняется инкремент переменной поэтому проверка и выбрасывается при синтезе. Успехов! Rob. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Swup 0 2 февраля, 2017 Опубликовано 2 февраля, 2017 · Жалоба Все верно. Если у вас в блоке есть несколько выражений изменяющих один регистр одновременно, то синтезатор использует последнее. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Sagittarius 0 2 февраля, 2017 Опубликовано 2 февраля, 2017 · Жалоба Если есть несколько неблокирующих присваиваний в одну переменную то переменная получит значение ПОСЛЕДНЕГО активного присваивания. Спасибо. Другими словами, мой пример просто некорректен с самого начала, а такие конструкции надо реализовывать через if-else, case и пр. ? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
RobFPGA 27 2 февраля, 2017 Опубликовано 2 февраля, 2017 · Жалоба Приветствую! Спасибо. Другими словами, мой пример просто некорректен с самого начала, а такие конструкции надо реализовывать через if-else, case и пр. ? Да - лучше писать так чтобы минимизировать неоднозначность в восприятии кода как синтезатором так и разработчиком. Хотя первый вариант вполне корректен для синтеза и применяется в коде довольно часто. Например чтобы при сложных условиях не плодить запутанные if-else Удачи! Rob. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
xvr 12 3 февраля, 2017 Опубликовано 3 февраля, 2017 · Жалоба Да - лучше писать так чтобы минимизировать неоднозначность в восприятии кода как синтезатором так и разработчиком. Хотя первый вариант вполне корректен для синтеза и применяется в коде довольно часто. Народная мудрость для ТС - если у вас какой то кусок кода работает правильно, но вызывает вопросы как и почему, то так лучше не писать. Не только у вас могут возникнуть такие вопросы, но и у кого то, кто будет с вашей схемой разбираться. Только у него добавится третий вопрос - это так было задумано, или это ошибка? :smile3046: Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Golikov 0 3 февраля, 2017 Опубликовано 3 февраля, 2017 · Жалоба Для этих случаев жизни существуют комментарии. И не надо стеснятся писать рассказы сверху и по ходу таких мест. В данном случае такое поведение описано в стандарте, и неоднозначного толкования быть не должно Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
xvr 12 3 февраля, 2017 Опубликовано 3 февраля, 2017 · Жалоба Для этих случаев жизни существуют комментарии. И не надо стеснятся писать рассказы сверху и по ходу таких мест.Применение таких конструкций оправданно только если от этого есть какой то ощутимый выигрыш. Либо в размере исходника либо в схеме, которая получится после синтеза. В данном случае таких выигрышей нет - схемы идентичные, исходник увеличивается на 1 строку. Так зачем писать код хотя и совершенно правильный, но для осмысления которого придется смотреть в стандарт? Очевидно, что 'прозрачность' и понятность конструкции определяется в первую очередь уровнем знаний того, кто на них смотрит. Если у ТС возникли вопросы, то ему лучше не использовать. У вас, например, скорее всего не только вопросов не возникнет, но даже и намека на них - уровень не тот :) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться