У меня есть проект в Verilog, где я отслеживаю дату. У меня есть следующий код для обработки разной продолжительности месяцев, если я не ошибаюсь, я могу объединить их все, указав каждое условие и просто имея один оператор if. Однако это приведет к использованию еще 1 LE. Почему?
if( ( months == 4 || months == 6 || months == 9 || months == 11 ) && days == 31 && set_state == 0 ) begin
months = months + 1;
days = 1;
end
else if( months == 2 && years[1:0] == 0 && days == 30 && set_state == 0 ) begin
months = months + 1;
days = 1;
end
else if( months == 2 && years[1:0] != 0 && days == 29 && set_state == 0 ) begin
months = months + 1;
days = 1;
end
else if( days == 32 ) begin
months = months + 1;
days = 1;
end
РЕДАКТИРОВАТЬ: это то, что использует дополнительный LE
if( ( ( months == 4 || months == 6 || months == 9 || months == 11 ) && days == 31 && set_state == 0 ) ||
( months == 2 && years[1:0] == 0 && days == 30 && set_state == 0 ) ||
( months == 2 && years[1:0] != 0 && days == 29 && set_state == 0 ) ||
( days == 32 ) ) begin
months = months + 1;
days = 1;
end
months > 2 && days > 32 - ((months - 3) % 5 % 2)
- person OdraEncoded   schedule 23.08.2014length_of_this_month
. - person Ben Voigt   schedule 23.08.2014