Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: описание машины состояний
Форум разработчиков электроники ELECTRONIX.ru > Программируемая логика ПЛИС (FPGA,CPLD, PLD) > Языки проектирования на ПЛИС (FPGA)
Evgeny72
Подскажите пожалуйста, как более лаконично описать однотипные состояния 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
Быть может не обязательно использовать именно case?

Три ветвления всего же: Если от 0 до 70, если 71, и default. Если в диапазоне - то инкрементировать, в 71 - стоять на месте
Evgeny72
Цитата(yaghtn @ Sep 5 2018, 12:09) *
Быть может не обязательно использовать именно case?

Три ветвления всего же: Если от 0 до 70, если 71, и default. Если в диапазоне - то инкрементировать, в 71 - стоять на месте

Логично, спасибо. Подумаю.
dvladim
Исходя из того что состояний 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
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2024 Invision Power Services, Inc.