关于状态机被综合掉的问题
时间:10-02
整理:3721RD
点击:
这两天写了一个程序,里面的状态机本来是正常跳转的, 后来我对状态机内部的某一个寄存器 (假设为a好了) 的赋值做了修改 (仅仅是从 a=参数1 改到了 a=参数2),再用QuartusII自带的仿真软件看时,发现状态机只跳到第二个状态(本来有IDLE,DATA0,1,2,3,4六个状态的)DATA0之后,就一直显示Undefined了, 一直找不到原因,后来把状态机赋给一个输出变量,并对该输出变量进行输出,结果发现该变量的值是有做跳转的,可是状态机还是跳到第二个就不跳了,就显示Undefined, 不清楚是什么原因.
现在看来,其实逻辑是正常的,不然,状态机赋值的那个输出变量的值也不会跳转了,可是为什么状态机就是显示不正常呢.
如果说被综合到了,为什么我只是更改了一个寄存器,为什么就会被突然综合掉呢?
而且我后来又把被更改的地方恢复回去了,还是无法跳转
不解!
小编目前的心得是,以后每改两句程序就要备份一下,否则都不知道
现在看来,其实逻辑是正常的,不然,状态机赋值的那个输出变量的值也不会跳转了,可是为什么状态机就是显示不正常呢.
如果说被综合到了,为什么我只是更改了一个寄存器,为什么就会被突然综合掉呢?
而且我后来又把被更改的地方恢复回去了,还是无法跳转
不解!
小编目前的心得是,以后每改两句程序就要备份一下,否则都不知道
有状态被干掉一般都是因为你的从你的跳转条件经过分析是不可能跳到被干掉的状态,需要仔细检查跳转的条件。
另外,“小编目前的心得是,以后每改两句程序就要备份一下,否则都不知道”不能说是一个好办法,应该是心里非常清楚你的电路结构,或者不清楚就将电路先画出来,然后再去写代码。
verilog/VHDL只是一个描述电路的工具而已,电路什么样子要心里有数,而不应该是把它当成像C语言一样的程序。
