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

Фрагмент моделируемого vhdl-кода в синтезируемый

Есть фрагмент VHDL-кода, к сожалению в ISE не синтезируемый

 

process (start_pulse, end_pulse)

begin

if falling_edge(start_pulse) then

something_works <= '1';

elsif falling_edge(end_pulse) then

something_works <= '0';

end if;

end process;

 

Переписал, но получилось не эстетично :)

Прошу помощи в поиске красивого решения (язык v или vhdl не принципиален). Можно добавить clk, он там за кадром присутствует.

 

Заранее спасибо!

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


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

что-то должно менять по одному фронту, и по другому, еще и по клоку?

надо детектить фронты...,

reg start_old = 0;
reg end_old = 0;

always @(posedge clk)
begin
  strat_old <= start_pulse; //сохраняем состояние каждый клок для сравнения с прошлым значением
  end_old <= end_pulse; //сохраняем состояние каждый клок для сравнения с прошлым значением

  if((start_old == 1)&&(start_pulse == 0)) //фронт
     something_works <= 1;

  if((end_old == 1)&&(end_pulse == 0)) //фронт
     something_works <= 0;

end

 

как то так

сейчас если выполнятся оба условия будет 0, можно добавить else между ифами и тогда будет 1

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


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

все правильно и так и нужно писать для синхронного дизайна - логика отдельно от управляющих сигналов,

но можно и асинхронный триггер описать

 

на v букв меньше

 

always @(negedge start or negedge stop)

if(~stop)

some<=0;

else

some<=1;

 

это асинхронный триггер у которого стоп заведен на сброс, а старт на тактовый вход (то есть стоп имеет приоритет и пока он в 0 старт будет игнорироваться), на данные 1

 

 

 

 

 

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


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

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

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

Гость
К сожалению, ваш контент содержит запрещённые слова. Пожалуйста, отредактируйте контент, чтобы удалить выделенные ниже слова.
Ответить в этой теме...

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

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

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

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

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

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