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

 
 
> fsm timing loop, вопрос новичка в sv
Lutovid
сообщение Jun 13 2018, 18:05
Сообщение #1


Частый гость
**

Группа: Свой
Сообщений: 101
Регистрация: 24-02-14
Из: Москва
Пользователь №: 80 661



Всем привет!

Всегда писал автоматы преимущественно одним блоком процесса, сейчас решил попробовать разделение на синхронный и асинхронный блоки так как в текущей задаче это было бы удобно(небольшая экономия строк кода и повышение читаемости). Да и язык для меня новый.

Вот написал конечный автомат:
Код
    (*keep = "true"*)enum logic[5:0] {IDLE, READ_HEADER, READ_CALIB_DATA, STOP} sm_state, sm_state_next;

    always_ff @(posedge clk) begin
        sm_state <= sm_state_next;
    end

    always @(*)begin// специально поставил именно * так как входных сигналов управления fsm предполагается много
          if(rst==1'b1)begin
            sm_state_next <= IDLE;
        end
        else begin
            case (sm_state)
                IDLE : begin
                    sm_state_next <= READ_HEADER;
                end
                READ_HEADER : begin
                        sm_state_next <= READ_CALIB_DATA;
                end
                READ_CALIB_DATA : begin
                            sm_state_next <= STOP;
                end
                STOP : begin
                    
                end
                default: begin
                    sm_state_next <= IDLE;
                end
            endcase
        end
    end

Как я понял - так же предлагают многие учебники(может я не внимателен?).
Проблема в том, что вивадо(17.1) ругается, что там появляется timing loop. Это нормальное поведение? не усложняет ли этот факт ошибки оценку тайминга(при желании можно проигнорировать эту ошибку и насильно развести)
В симуляции работает все корректно.

Заранее спасибо!
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Flip-fl0p
сообщение Jun 13 2018, 18:56
Сообщение #2


В поисках себя...
****

Группа: Свой
Сообщений: 729
Регистрация: 11-06-13
Из: Санкт-Петербург
Пользователь №: 77 140



У вас автомат попадает в состояние STOP. А дальше куда ?
Поскольку САПР не знает, что дальше делать, он делает так, что автомат будет "крутиться" в этом состоянии. А поскольку логика перехода не определена, получается фиг пойми что. Ну вот вам САПР и выкатил предупреждение wink.gif
Цитата
Код
                STOP : begin
                    sm_state_next <= STOP;
                end

не помогло

А вот это уже странно. В VHDL обычно такое описание прокатывает. И у Quartus не вызывает ругани.
Вот только я синхронный сброс описываю в состоянии в блоке
Код
    always_ff @(posedge clk) begin
        sm_state <= sm_state_next;
    end

Примерно так:
Код
    always_ff @(posedge clk) begin
        sm_state <= sm_state_next;
       if(rst==1'b1)begin
            sm_state_next <= IDLE;
        end
    end

Хотя тут я даже не знаю. Может есть какой нюанс в Verilog.
Go to the top of the page
 
+Quote Post
Lutovid
сообщение Jun 13 2018, 19:00
Сообщение #3


Частый гость
**

Группа: Свой
Сообщений: 101
Регистрация: 24-02-14
Из: Москва
Пользователь №: 80 661



Цитата(Flip-fl0p @ Jun 13 2018, 21:56) *
У вас автомат попадает в состояние STOP. А дальше куда ?
Поскольку САПР не знает, что дальше делать, он делает так, что автомат будет "крутиться" в этом состоянии. А поскольку логика перехода не определена, получается фиг пойми что. Ну вот вам САПР и выкатил предупреждение wink.gif


Код
                STOP : begin
                    sm_state_next <= IDLE;
                end


все то же самое =/
Go to the top of the page
 
+Quote Post
Flip-fl0p
сообщение Jun 13 2018, 19:07
Сообщение #4


В поисках себя...
****

Группа: Свой
Сообщений: 729
Регистрация: 11-06-13
Из: Санкт-Петербург
Пользователь №: 77 140



Цитата(Lutovid @ Jun 13 2018, 22:00) *
Код
                STOP : begin
                    sm_state_next <= IDLE;
                end


все то же самое =/

Гляньте вот этот документ:
http://www.sunburst-design.com/papers/Cumm...undamentals.pdf
Да и вообще советую почаще заглядывать на этот сайт. Много интересного там: www.sunburst-design.com
Go to the top of the page
 
+Quote Post



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

 


RSS Текстовая версия Сейчас: 29th July 2025 - 07:52
Рейтинг@Mail.ru


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