VHDL FSM状态的可合成延迟

时间:2017-08-03 10:10:43

标签: vhdl delay xilinx synthesis vivado

我目前正在使用Vivado Suite作为我的环境编写控制Sitronix ST7066U和LCD模块1602A-1(用于Xilinx Virtex-7)的设备的VHDL描述。

消息处理单元采用2状态(下一状态和输出/条件)FSM建模,但我有一个很大的问题。

由于显示器有自己的"操作时间",如数据表中所示,当我的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;

但它并没有接近工作。

我很确定这是一个简单的实现问题,但仍然......

(可能与我的流程&#39;敏感度列表有关?)

0 个答案:

没有答案