Синтезируемая задержка в состоянии VHDL FSM

В настоящее время я нахожусь в процессе написания VHDL-описания устройств, управляющих Sitronix ST7066U и ЖК-модулем 1602A-1 для Xilinx Virtex-7, используя Vivado Suite в качестве моей среды.

Блок обработки сообщений моделируется с помощью FSM с двумя состояниями (следующее состояние и выходы / условия), но у меня есть огромная проблема.

Так как дисплей имеет свое собственное "время работы", как в таблице, мне нужно реализовать синтезируемые задержки внутри моего FSM, когда он достигает состояний, в которых сам дисплей выполняет свои функции, и мы не можем продолжить отправку большего количества символов.

Такая часть изначально была написана так:

          when count_i => --waits for I_MAX cycles for the internal setup of the display




if (I = I_MAX_tb) then                                                                    
                       I <= 0;
                       TRIGGER <= '1';
                       op_flag <= '1';                       
                else
                       I <= I + 1;
                end if;

                if op_flag = '1' then
                   op_flag <= '0';     
                   next_state <= init_state;
                else                    
                next_state <= count_i;
                end if;

но при моделировании конечные автоматы остаются в состоянии count_i и не осознают, что произошло новое назначение состояния.

Я попробовал следующую конструкцию

 if (state'event) then 
                    I<=I+1;
                    if (I = I_MAX_tb) then                                                                    
                        I <= 0;
                        TRIGGER <= '1';
                        op_flag <= '1';  
                    end if;
                end if;

но это не близко к работе.

Я почти уверен, что это простой вопрос реализации, но все же...

(может быть что-то связано со списком чувствительности моего процесса?)

0 ответов

Другие вопросы по тегам