Цитата(Sprite @ Jun 11 2018, 09:25)

Добрый день всем!
Пишу ПИ-регулятор, требуется профессиональная критика) Камень - cyclone III, использовано 4 аппаратных умножителя.
На профессионала не потяну, НО
Код
assign w_I = Ki*w_err + I_prev_reg; // 32 бита = (16 бит * 16 бит) + 32 бита -- возможно переполнение
Всегда дико заморочно следить за разрядностями, но иногда из-за этого все ломается.
А вместо машины на два состояния, которая щелкает каждый такт (если я правильно понял) можно сделать простой однобитный счетчик, который будет по какому-то событию перекидываться 0-1-0-1... мне кажется и лаконичнее и писанины меньше (хотя, наверное, дело религии).
И вместо кейсов на 2-3 состояния красивше писать if-else. Опять же лаконичнее и писанины меньше (но, наверное, это тоже дела религиозные))).
Т.е. получаем вместо:
Код
case (F_limits_reg)
2'b01: out <= out_min;
2'b10: out <= out_max;
default: out <= F_reg;
endcase
Что-то вроде:
Код
if (F_limits_reg == 2'b01) out <= out_min;
else if (F_limits_reg == 2'b10) out <= out_max;
else out <= F_reg;