Синтезируемая задержка в состоянии 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;
но это не близко к работе.
Я почти уверен, что это простой вопрос реализации, но все же...
(может быть что-то связано со списком чувствительности моего процесса?)