Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: VHDL event, лист чувствительности
Форум разработчиков электроники ELECTRONIX.ru > Сайт и форум > В помощь начинающему > Программирование
Claw
.....
process (mod)

begin

if mod'event mod ='1' then
.....

Не совсем понятно выделенное жирным шрифтом, это значит: если событие произошло? т.е. mod стал раным 1? Не встречала раньше такого нигде. И ещё вопрос, что такое лист чувствительности?

к примеру bool: process(clk_in, clk_out)
....

значит, что процесс будет изменяться по изменению этих двух сигналов? для чего это нужно?
andrew_b
Цитата(Claw @ Oct 16 2011, 19:51) *
.....
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
Спасибо! if mod'event mod ='1' then, ошибка, точно)
whiteTigr
Цитата(Claw @ Oct 16 2011, 19:51) *
Не совсем понятно выделенное жирным шрифтом, это значит: если событие произошло? т.е. 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
Спасибо и Вам! a14.gif
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.