john72 0 5 сентября, 2018 Опубликовано 5 сентября, 2018 · Жалоба Подскажите пожалуйста, как более лаконично описать однотипные состояния SM для case (state) и S? always @ (state) begin case (state) S0: data_out = data_in; s1: data_out = data_in; ... S71: data_out = data_in; endcase end always @ (posedge clk or negedge reset) begin if (!reset) state <= S0; else case (state) S0: begin if (ss) state <= S1; else state <= S0; end S1: begin if (ss) state <= S2; else state <= S1; end ... S70: begin if (ss) state <= S71; else state <= S70; end S71: state <= S71; endcase end Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
yaghtn 0 5 сентября, 2018 Опубликовано 5 сентября, 2018 · Жалоба Быть может не обязательно использовать именно case? Три ветвления всего же: Если от 0 до 70, если 71, и default. Если в диапазоне - то инкрементировать, в 71 - стоять на месте Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
john72 0 5 сентября, 2018 Опубликовано 5 сентября, 2018 · Жалоба Быть может не обязательно использовать именно case? Три ветвления всего же: Если от 0 до 70, если 71, и default. Если в диапазоне - то инкрементировать, в 71 - стоять на месте Логично, спасибо. Подумаю. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
dvladim 0 5 сентября, 2018 Опубликовано 5 сентября, 2018 · Жалоба Исходя из того что состояний 72 и нумеруются они от 0 до 71. assign data_out = data_in; always @ (posedge clk or negedge reset) begin if (!reset) state <= S0; else if (ss & (state != S71)) state <= state + 1'b1; end Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться