Перейти к содержанию

    

описание машины состояний

Подскажите пожалуйста, как более лаконично описать однотипные состояния 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

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Быть может не обязательно использовать именно case?

 

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Быть может не обязательно использовать именно case?

 

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

Логично, спасибо. Подумаю.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Исходя из того что состояний 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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти
Авторизация