Claw 0 16 октября, 2011 Опубликовано 16 октября, 2011 · Жалоба ..... process (mod) begin if mod'event mod ='1' then ..... Не совсем понятно выделенное жирным шрифтом, это значит: если событие произошло? т.е. mod стал раным 1? Не встречала раньше такого нигде. И ещё вопрос, что такое лист чувствительности? к примеру bool: process(clk_in, clk_out) .... значит, что процесс будет изменяться по изменению этих двух сигналов? для чего это нужно? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
andrew_b 14 17 октября, 2011 Опубликовано 17 октября, 2011 · Жалоба ..... process (mod) begin if mod'event mod ='1' then Не совсем понятно выделенное жирным шрифтом, это значит: если событие произошло? т.е. mod стал раным 1? атрибут 'event возвращает значение типа boolean, которое говорит о том, изменился ли сигнал или нет. Не важно, как изменился, важен сам факт изменения. В процитированном коде скорее всего ошибка. Должно быть так: if mod'event and mod ='1' then Это детектор восходящего фронта. Да, во многих книгах пишут так, но лучше использовать стандартную функцию rising_edge. Соответственно, falling_edge для фронта спадающего (среза). Не встречала раньше такого нигде. И ещё вопрос, что такое лист чувствительности? Много раз на форуме объяснялось. Не ленитесь пользоваться поиском. к примеру bool: process(clk_in, clk_out) .... значит, что процесс будет изменяться по изменению этих двух сигналов? для чего это нужно? Это нужно, например, для описания триггера с асинхронным сбросом: process (Reset, Clk) begin if (Reset = '1') then q <= '0'; -- асинхронный сброс elsif (rising_edge (Clk)) then q <= d; -- по восходящему фронту Clk сигнал с входа передаётся на выход end if; end process; Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Claw 0 17 октября, 2011 Опубликовано 17 октября, 2011 (изменено) · Жалоба Спасибо! if mod'event mod ='1' then, ошибка, точно) Изменено 17 октября, 2011 пользователем Claw Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
whiteTigr 0 19 октября, 2011 Опубликовано 19 октября, 2011 · Жалоба Не совсем понятно выделенное жирным шрифтом, это значит: если событие произошло? т.е. mod стал раным 1? Не встречала раньше такого нигде. И ещё вопрос, что такое лист чувствительности? к примеру bool: process(clk_in, clk_out) .... значит, что процесс будет изменяться по изменению этих двух сигналов? для чего это нужно? Лист чувствительности нужен исключительно для моделирования. Он говорит модели (testbench) в какие процессы нужно заглядывать по изменению сигналов и моделировать код оттуда. Для синтеза и зашива проекта в плату можно писать process begin -- ... end process; P.S.: if mod'event and mod ='1' then А мне больше нравится немного другой вариант, который преобразуется в тоже самое if rising_edge(mod) then Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Claw 0 19 октября, 2011 Опубликовано 19 октября, 2011 · Жалоба Спасибо и Вам! :a14: Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться