В обоих примерах 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-вход управляется небольшим количеством комбинационной логики.Единственное отличие состоит в том, что комбинационная логика может быть меньше во втором примере, чем в первом, потому что для реализации ==
обычно требуется меньше места, чем для реализации <
или >
.