Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: влияние приоритетов на синтез схемы
Форум разработчиков электроники ELECTRONIX.ru > Программируемая логика ПЛИС (FPGA,CPLD, PLD) > Работаем с ПЛИС, области применения, выбор
penauch
есть ли разница в следующих конструкциях:

Код
if rising_edge(we) then
  if a='0' then
...
  end if;
end if;


и

Код
if (rising_edge(we) and a='0') then
...
end if;


и

Код
if (a='0' and rising_edge(we)) then
...
end if;


и

Код
if a='0' then
if rising_edge(we) then
...
  end if;
end if;


а то все никак не делаю - результат тотже... smile3046.gif 1111493779.gif
alexadmin
Цитата(penauch @ Nov 4 2009, 17:20) *
есть ли разница в следующих конструкциях:

а то все никак не делаю - результат тотже... smile3046.gif 1111493779.gif


А какую разницу вы хотите увидеть?
SM
Цитата(penauch @ Nov 4 2009, 17:20) *
а то все никак не делаю - результат тотже... smile3046.gif 1111493779.gif

А что Вы хотите от эквивалентных выражений? Разного результата их оптимизации по заданному критерию оптимальности? Это было бы по меньшей мере странно для таких простых случаев, и свидетельствовало бы о глючности или неудачной реализации синтезатора.
penauch
Цитата(SM @ Nov 4 2009, 20:18) *
А что Вы хотите от эквивалентных выражений? Разного результата их оптимизации по заданному критерию оптимальности? Это было бы по меньшей мере странно для таких простых случаев, и свидетельствовало бы о глючности или неудачной реализации синтезатора.


Штирлиц в соседней теме про асинхронный обмен что-то говорил о перестановки условий во внутрь условия с фронтом\спадом - что влияет на синтез.

а RTL-вьювер делает все случаи одинаково laughing.gif
Shtirlits
Вероятнее всего я ошибался.
Сожалею, что смутил и довел до экспериментов.

Есть шаблоны синтезаторов, они описаны в документации.
Для уверенного получения регистра с разрешением тактирования, нужно следовать шаблонам.
Это не значит, что к такому же результату не приводят другие способы.
Привычный для меня шаблон для получения регистра с асинхронным сбросом и разрешением клока выглядит
как сначала проверка сброса, затем фронт клока и лишь потом разрешение тактирования.
Такой порядок позволяет пропустить часть веток и не получить асинхронные петли.
Код
process(async_reset, clock)
  begin
    if async_reset='1' then
      reg <= reg_constant;
    elsif rising_edge(clock) then
      if clock_enable='1' then
        reg <= some_expression;
      end if;
    end if;
  end process;


Вот тут будет разница, но это очевидно и записано не одно и тоже.
Код
if a='0' then
  if rising_edge(clock) then
    reg <= some_data;
  end if;
else
  reg <= some_noise; -- latch
end if;
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.