Счетчик HDL и стиль кодирования флага - PullRequest
0 голосов
/ 17 мая 2018

В Verilog / VHDL, скажем, у меня есть 4-битный счетчик и флаг, который должен быть установлен, когда счетчик равен от 4 до 8. Есть два способа реализовать это

    if((cntr>=4)&&(cntr<8))
        flag <=1;
     else
       flag <= 0;

ИлиЯ мог бы сделать это

   if(cntr==4)
       flag<=1;
    else if (cntr==8)
       flag<=0;

Мне кажется, что функционально они делают то же самое.

Есть ли причина, по которой один из них лучше другого?стиль мудрый?Как насчет синтеза / реализации?

1 Ответ

0 голосов
/ 17 мая 2018

В обоих примерах flag будет синтезирован как триггер.Это потому, что (я полагаю) вы управляете им из синхронизированного блока всегда, т.е. ваши два примера:

always @(posedge clk)
  if ((cntr>=4)&&(cntr<8))
    flag <= 1;
  else
    flag <= 0;

и

always @(posedge clk)
  if (cntr==4)
    flag <= 1;
  else if (cntr==8)
    flag <= 0;

Оба примера просты (2-гос) автоматы.Существует мало выбора между ними.Оба будут реализованы с помощью триггера (flag), чей D-вход управляется небольшим количеством комбинационной логики.Единственное отличие состоит в том, что комбинационная логика может быть меньше во втором примере, чем в первом, потому что для реализации == обычно требуется меньше места, чем для реализации < или >.

...