Перейти к содержанию
    

Событие по спаду импульса(по заднему фронту)

Подскажите пожалуйста, как организовать событие по спаду импульса(по заднему фронту).

Если по переднему фронту, например if clk'event and clk='1' ,то как организовать подобное по спаду фронта?

Изменено пользователем darkniisiis

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Подскажите пожалуйста, как организовать событие по спаду импульса(по заднему фронту).

Если по переднему фронту, например if clk'event and clk='1' ,то как организовать подобное по спаду фронта?

if clk'event and clk='0'

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Подскажите пожалуйста, как организовать событие по спаду импульса(по заднему фронту).

Если по переднему фронту, например if clk'event and clk='1' ,то как организовать подобное по спаду фронта?

Пользуйтесь стандартными функциями. Их названия говорят сами за себя:

rising_edge - восходящий (передний) фронт, falling_edge - спадающий (задний) фронт.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Пользуйтесь стандартными функциями. Их названия говорят сами за себя:

rising_edge - восходящий (передний) фронт, falling_edge - спадающий (задний) фронт.

А чем плох первый способ? Спрашиваю исключительно в целях самообразования.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Vadim

Тем, что букоф больше.

Привет земляку :)

Не поленился, посмотрел PACKAGE std_logic_1164, и сделал вывод - стандартная функция возвращает TRUE при переходе из '0' в '1' или наоборот, а в первом случае возвращается TRUE при переходе любого значения в '0' или в '1', что не есть гуд.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Привет земляку :)

Не поленился, посмотрел PACKAGE std_logic_1164, и сделал вывод - стандартная функция возвращает TRUE при переходе из '0' в '1' или наоборот, а в первом случае возвращается TRUE при переходе любого значения в '0' или в '1', что не есть гуд.

Ага! Но там еще and clk='0' :)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Ага! Но там еще and clk='0' :)

И что? :07: Сигнал, например, переходит из 'U' в '0' - чем не событие? Мы это дело отлавливаем. А оно нам надо? :)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

И что? :07: Сигнал, например, переходит из 'U' в '0' - чем не событие? Мы это дело отлавливаем. А оно нам надо? :)

Может в разных симуляторах и есть отличия поведения при таких не "стандартных" переход условиях (хотя сомневаюсь). Но вот для синтезатора это полностью эквивалентные конструкции.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Попробую еще предложить альтернативный способ.

Задаем

clk_not<=NOT CLK

А спад уже фиксируем следующим способом

if (rising_edge(clk_not))

На мой взгляд это облегчает чтения кода, когда все события становятся по фронту. Хотя IMHO

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Попробую еще предложить альтернативный способ.

Задаем

clk_not<=NOT CLK

А спад уже фиксируем следующим способом

if (rising_edge(clk_not))

На мой взгляд это облегчает чтения кода, когда все события становятся по фронту. Хотя IMHO

Так синтезатор может неявно сделать новый сигнал (not CLK) и подать его на тактовый вход. А это называется еще один тактовый домен...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

И что? :07: Сигнал, например, переходит из 'U' в '0' - чем не событие? Мы это дело отлавливаем. А оно нам надо? :)

Незнаю, надо ли Вам. :)

Но Xilinx и Altera в своих пакетах ISE и Quartus соответственно в своих примерах примитивов и т.д. приводят именно эту конструкцию. :biggrin:

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

если проект полностью синхронный Лучше не пользоваться разными фронтами!

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

если проект полностью синхронный Лучше не пользоваться разными фронтами!

Вы имеете в виду их не выделять?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

если проект полностью синхронный Лучше не пользоваться разными фронтами!

Хе. И как же тогда работает полностью синхронный контроллер памяти DDR? :smile3009:

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...