LeonidPr 0 20 апреля, 2017 Опубликовано 20 апреля, 2017 (изменено) · Жалоба Доброго времени суток. Читая вот эту статью Non blocking assignments не смог понять следующее утверждение про self triggering always block. что если используем неблокирующее присваивание always @(clk) clk <= ~clk; что перед присваиванием очеред событий активируется и процесс становится чувствительным к изменениям clk и таким образом получаем self triggering always block. Понимаю что все это справедливо чисто для симуляции, просто никак не могу найти этого в стандарте verilog. Из описания stratified event queue получается что процесс должен быть чувствителен к изменениям clk в любом случае, вне зависимости от типа присваивания. Подскажите пожалуйста, где моя ошибка? Изменено 20 апреля, 2017 пользователем LeonidPr Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Golikov 0 20 апреля, 2017 Опубликовано 20 апреля, 2017 · Жалоба ту такая история always @(clk) begin #10; clk = ~clk; end сначала процесс ждет фронта клока, дождавшись проваливается во внутрь, там выжидает паузу 10, потом в клок запихивает обратное значение сохраняет его там, и идет на второй круг. Но так как клок уже в новом значении изменения мы никакого не дождемся и повиснем. always @(clk) begin #10; clk <= ~clk; end в этом варианте ждем фронта, проваливаемся во внутрь, ждем 10, и "планируем" изменение клока, выходим и ждем изменения, которое параллельно происходит, и соответственно мы его ловим и повторяем процедуру. То есть как бы игра на том в какой момент реально сохраняется значение clk, и видно ли на следующем цикле изменение. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
LeonidPr 0 20 апреля, 2017 Опубликовано 20 апреля, 2017 · Жалоба Спасибо, с блокирующим вроде понял. Во втором варианте мы ждем 10 и потом "планируем", или мы планируем, что через 10 мы должны изменить значение и выходим? Т.е. always триггерится только если clk поменялся в момент, когда мы не находимся внутри "always"? Тогда правильно я понимаю, что мой вариант в первом посте не будет работать? always @(clk) begin clk <= ~clk; end Т.е. без задержки на 10. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Golikov 0 20 апреля, 2017 Опубликовано 20 апреля, 2017 · Жалоба будет, просто бесконечно быстро, кажется :) Ну то есть на самом деле симмуляция не будет идти. Она повиснет на первом алвайсе и не перейдет в следующий цикл. А вот если поставить задержку после always @(clk) begin clk <= ~clk; #10; end то да, ничего уже не сработает. сразу после события клок упадет обратно, он даже не поднимется, а потом отработается задержка, и мы опять придем в ожидание изменений с постоянным не меняемым сигналом Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
iosifk 3 20 апреля, 2017 Опубликовано 20 апреля, 2017 · Жалоба не смог понять следующее утверждение про ... Могу помочь в изучении. Пишите в личку... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
LeonidPr 0 20 апреля, 2017 Опубликовано 20 апреля, 2017 · Жалоба будет, просто бесконечно быстро, кажется :) м-м-м, похоже доходит. Т.е. событие присваивания clk дернет опять always и он опять отработает и так бесконечно. Т.е. мы никогда не перейдем на следующий тайм квант, т.к. всегда будем иметь активные события в этом? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Golikov 0 20 апреля, 2017 Опубликовано 20 апреля, 2017 · Жалоба Да и это не сложно проверить always @(clk) begin clk <= ~clk; $stop(); end И запускаем постоянно, сигнал будет беситься, а время идти не будет. Если есть отображение дельтациклов они будут бешено расти. И не упустите предложение выше:) Могу помочь в изучении. Пишите в личку... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
LeonidPr 0 20 апреля, 2017 Опубликовано 20 апреля, 2017 · Жалоба И не упустите предложение выше:) Спасибо! да, уже отписался в личку)) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться