реклама на сайте
подробности

 
 
 
Reply to this topicStart new topic
> описание машины состояний
Evgeny72
сообщение Sep 5 2018, 08:20
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 66
Регистрация: 4-01-14
Пользователь №: 79 899



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


Go to the top of the page
 
+Quote Post
yaghtn
сообщение Sep 5 2018, 09:09
Сообщение #2


Участник
*

Группа: Свой
Сообщений: 52
Регистрация: 7-11-05
Из: Чебоксары
Пользователь №: 10 546



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

Три ветвления всего же: Если от 0 до 70, если 71, и default. Если в диапазоне - то инкрементировать, в 71 - стоять на месте
Go to the top of the page
 
+Quote Post
Evgeny72
сообщение Sep 5 2018, 09:17
Сообщение #3


Участник
*

Группа: Участник
Сообщений: 66
Регистрация: 4-01-14
Пользователь №: 79 899



Цитата(yaghtn @ Sep 5 2018, 12:09) *
Быть может не обязательно использовать именно case?

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

Логично, спасибо. Подумаю.
Go to the top of the page
 
+Quote Post
dvladim
сообщение Sep 5 2018, 19:08
Сообщение #4


Знающий
****

Группа: Свой
Сообщений: 654
Регистрация: 24-01-07
Из: Воронеж
Пользователь №: 24 737



Исходя из того что состояний 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
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 16th April 2024 - 06:30
Рейтинг@Mail.ru


Страница сгенерированна за 0.01384 секунд с 7
ELECTRONIX ©2004-2016