微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > FPGA,CPLD和ASIC > 三段式状态机进入错误状态

三段式状态机进入错误状态

时间:10-02 整理:3721RD 点击:
有人在FPGA验证的时候,出现三段式状态机进入错误状态的吗?

找遍所有代码,没有出错的地方,而且进入的那个状态,应该无条件进入下一个状态,但就是停在那不走了

如果EDA仿真没有问题,而FPGA出现的话,可能是时钟的问题.

尝试将状态机编码变化一下试试
没有看你的具体代码,不好判断引起问题的原因,不过以前我的一个设计中也出现了类似的问题,从代码中找不到原因,最后将状态机编码变化了一下,问题就解决了,也可能是电路确实有问题,但我们发现而已。

parameter [`ONE_HOT_CODE_LEN-1:0]//one-hot code
Idle= `ONE_HOT_CODE_LEN'h000001,

ToClick= `ONE_HOT_CODE_LEN'h000002,
ClickWait= `ONE_HOT_CODE_LEN'h000004,
ClickDelay = `ONE_HOT_CODE_LEN'h000008,
ClickTest= `ONE_HOT_CODE_LEN'h000010,
ClickSure= `ONE_HOT_CODE_LEN'h000020,

EnableADC = `ONE_HOT_CODE_LEN'h000040,

SampleX= `ONE_HOT_CODE_LEN'h000080,
WaitXADC = `ONE_HOT_CODE_LEN'h000100,
XADC_CSRD = `ONE_HOT_CODE_LEN'h000200,
SaveX= `ONE_HOT_CODE_LEN'h000400,

SampleY= `ONE_HOT_CODE_LEN'h000800,
WaitYADC = `ONE_HOT_CODE_LEN'h001000,
YADC_CSRD = `ONE_HOT_CODE_LEN'h002000,
SaveY= `ONE_HOT_CODE_LEN'h004000,

ToClickUp = `ONE_HOT_CODE_LEN'h008000,
ClickUpDelay = `ONE_HOT_CODE_LEN'h010000,
ClickUpWait = `ONE_HOT_CODE_LEN'h020000,
ClickUpSure = `ONE_HOT_CODE_LEN'h040000,
Sample1_6 = `ONE_HOT_CODE_LEN'h080000,
WaitADC1_6 = `ONE_HOT_CODE_LEN'h100000,
Save1_6= `ONE_HOT_CODE_LEN'h200000,

SetInt= `ONE_HOT_CODE_LEN'h400000,
Debugtest = `ONE_HOT_CODE_LEN'h800000,
Debugwait = `ONE_HOT_CODE_LEN'h1000000,
Debug_CSRD = `ONE_HOT_CODE_LEN'h2000000,
Debugdata = `ONE_HOT_CODE_LEN'h4000000;

我用的是独热码,自我感觉应该没问题,我换一下顺序试试

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top