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

Проблема с конечным автоматом.

Такой вот автомат

process (REG_CLK)
begin
    if(rising_edge(REG_CLK)) then

        if (REG_RST = '0') then
            State <= ST_IDLE;
        else
            
            case State is
			
                when ST_IDLE =>

                    if (rtc_trig = '1') then
                        tx_message(0) <= X"0001";
                        State <= ST_RTC_UPDATE_1;
                    end if;

               when ST_RTC_UPDATE_1 =>
                   tx_message(0) <= X"0010";
                   State <= ST_COM_STACK_1;
                   NextState <= ST_RTC_UPDATE_2;

               when ST_RTC_UPDATE_2 =>
                   tx_message(0) <= X"0020";
                   State <= ST_DAT_STACK_1;
                   NextState <= ST_RTC_UPDATE_3; 
                    
               when ST_RTC_UPDATE_3 => 					 
                  tx_message(0) <= X"0040";
                  State <= ST_RTC_UPDATE_4;

               when ST_COM_STACK_1 =>
                   State <= ST_COM_STACK_2;

               when ST_COM_STACK_2 =>
                 State <= ST_COM_STACK_3;

               when ST_COM_STACK_3 =>
                   State <= NextState;	
            end case;    

    end if;

По идее переходы должны быть следующие

rtc_trig = '1' -> when ST_RTC_UPDATE_1 =>  ->  when ST_COM_STACK_1 => -> when ST_COM_STACK_2 => -> when ST_COM_STACK_3 => when ST_RTC_UPDATE_2 => -> when ST_RTC_UPDATE_3 => 

на деле я вижу он сразу прыгает на when ST_RTC_UPDATE_3 =>

sig.thumb.png.c70724cfccf9477b3789daaef1398078.png

 

как такое может быть?

Изменено пользователем jenya7

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


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

On 6/7/2022 at 11:42 AM, StewartLittle said:

А где у Вас выход из состояния ST_SITAL_IDLE?

извиняюсь. описка. в состояние ST_IDLE я попаду из  ST_RTC_UPDATE_6. я не привел все состояния чтоб не раздувать код. 

rtc_trig = '1' каждые 100 милисек. по таймеру выставляется на 4 такта.

после rtc_trig = '1' я должен как бы увидеть tx_message(0) <= X"0010"; по любому. Signal Tap чудит?

Изменено пользователем jenya7

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


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

Может быть еще дребезг, если клок плохой, или сигнал rtc_trig идет с внешнего триггера и вызывает метастабильность.

Тестбенч нормально работает?

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


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

On 6/7/2022 at 12:16 PM, slkhome said:

Может быть еще дребезг, если клок плохой, или сигнал rtc_trig идет с внешнего триггера и вызывает метастабильность.

Тестбенч нормально работает?

Тестбенч показывает вообще какую то дичь.

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


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

On 6/7/2022 at 1:19 PM, jenya7 said:

Тестбенч показывает вообще какую то дичь.

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

 

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


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

On 6/7/2022 at 5:19 PM, jenya7 said:

Тестбенч показывает вообще какую то дичь.

вот сначала с этим разберитесь. а потом уже будете сигнал тапом тыкать в плису 

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


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

Практика показывает что гораздо лечге и быстрее искать ошибки в тестбенче чем в во всяких тапах, особенно если компиляция проекта занимает часы )

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


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

On 6/7/2022 at 12:22 PM, slkhome said:

Практика показывает что гораздо лечге и быстрее искать ошибки в тестбенче чем в во всяких тапах, особенно если компиляция проекта занимает часы )

я с ModelSim никак не могу подружится. у меня в тестбенчах полный рассинхрон. работают только самые тривиальные. чуть посложнее и  :dash2:.

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


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

В 07.06.2022 в 13:29, jenya7 сказал:

я с ModelSim никак не могу подружится. у меня в тестбенчах полный рассинхрон. работают только самые тривиальные. чуть посложнее и  :dash2:.

Пока не заработает на симуляции - нет смысла работать с железом. Учите модельсим. 

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


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

почитайте

я использую:

VHDL for the “Mealy” machine example with two VHDL processes  стр 12

FSM_design.pdf

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


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

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

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

Гость
К сожалению, ваш контент содержит запрещённые слова. Пожалуйста, отредактируйте контент, чтобы удалить выделенные ниже слова.
Ответить в этой теме...

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

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

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

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

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

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