这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 嵌入式开发 » FPGA » 状态机中的状态编码需要小心

共4条 1/1 1 跳转至

状态机中的状态编码需要小心

专家
2009-03-18 17:04:51     打赏
状态机中的状态编码需要小心

 

我写了一段代码,主要实现的是状态机各个状态之间的相互转化

这段代码在quartusII5.0下编译成功且下载到板子了后用signaTapII调试的结果完全正确

可是用QuartusII6.0编译后出现Warning:case item is ignored......blala......

网上给出来的信息说:

CAUSE: In a Case Statement at the specified location in a Verilog Design File (.v), you specified a case item expression that has more significant bits than the number of bits in the case expression that it is being compared against. As a result, the case item expression can never apply, and is ignored by the Quartus II software

仔细思考后觉得应该是我的状态机中的状态编码有问题:

我原来用的是自然数编码,

也IDLE=0,STATE1=1,STATE2=2,STATE3=3,STATE4=4....

然后把状态编码改写成:

IDLE=0,STATE1=1,STATE2=2,STATE3=4,STATE4=8.....

编译的结果显示这个Warning消失了。

以后对状态机的编码要小心了




关键词: 状态机     中的     状态     编码     需要     小心    

助工
2009-03-19 09:21:31     打赏
2楼

学习了,这种错误经常以不小心就范了


助工
2009-03-19 09:33:49     打赏
3楼

还真没注意过这种事情


高工
2009-03-19 12:26:40     打赏
4楼

“you specified a case item expression that has more significant bits than the number of bits in the case expression that it is being compared against”好像不是这个意思吧。应该是状态编码位数超过了信号的位数,所以超出的部分将被忽略。增加信号位宽就可以了。
状态的自然数编码是完全OK的,我就总是这样做,省资源。


共4条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]