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

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

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

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


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

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...