搜索
bottom↓
回复: 6

[求助]状态机的状态被综合掉的问题。

[复制链接]

出0入0汤圆

发表于 2011-9-5 16:08:07 | 显示全部楼层 |阅读模式
module xulie(
                                clk,
                                rst_n,
                                in,
                                out
                        );
                       
input clk,rst_n,in;
output reg out;
//01101
reg [2:0] state,next_state;
parameter idle=3'd0;//
parameter s1=3'd1;//0
parameter s2=3'd2;//01
parameter s3=3'd3;//011
parameter s4=3'd4;//0110
parameter s5=3'd5;//01101

always @ (posedge clk or negedge rst_n)
        if(!rst_n)
        state<=idle;
        else
        state<=next_state;
       
always @ (state or in)
begin
next_state=3'bxxx;
case(state)
        idle:if(in==0)
                next_state=s1;
                else
                next_state=idle;
               
        s1:if(in==1)                        //0
                next_state=s2;
                else
                next_state=s1;
        s2:if(in==1)                        //01
                next_state=s3;
                else
                next_state=s1;
        s3:if(in==1)                        //011
                next_state=idle;
                else
                next_state=s4;
        s4:if(in==1)                        //0110
                next_state=s5;
                else
                next_state=s1;
        s5:if(in==1)                        //01101
                next_state=s3;
                else
                next_state=s1;
               
        default:next_state=idle;
endcase
end

always @ (state)
        case(state)
                idle,s1,s2,s3,s4:out<=1'b0;
                s5:out<=1'b1;
                default:out<=1'b0;
        endcase

endmodule


这是一个简单的检测01101序列的程序,进行后仿真的时候,发现idle之后的状态全部是undefined,但是程序依然能正确输出。
这是怎么一回事?
有一个警告:Warning: Can't display state machine states -- register holding state machine bit "|xulie|state.idle" was synthesized away
我F1了一下,大概意思就是状态被综合掉 。

请大家看看是怎么回事,
如果用功能仿真的话就没这种问题


(原文件名:FM(VWSLHF{5E4N0ICMB%J]X.jpg)

阿莫论坛20周年了!感谢大家的支持与爱护!!

知道什么是神吗?其实神本来也是人,只不过神做了人做不到的事情 所以才成了神。 (头文字D, 杜汶泽)

出0入0汤圆

 楼主| 发表于 2011-9-5 16:08:40 | 显示全部楼层
这个状态怎么会被综合掉呢?

出0入0汤圆

发表于 2011-9-6 09:45:41 | 显示全部楼层
最后一个always,信号敏感应该用posedge clk
三段状态机标准写法。

出0入0汤圆

发表于 2011-9-6 17:56:11 | 显示全部楼层
楼上讲的是正确的,但我不是这个WARNING的原因,楼主可以在仿真时加上next_state,看看情况怎么样,我觉得应该和综合的设置参数有关系,问一下楼主用的是什么那个版本的软件!

出0入0汤圆

 楼主| 发表于 2011-9-6 19:40:40 | 显示全部楼层
回复【1楼】yvhksovo
-----------------------------------------------------------------------

嗯,标准三段式写法的确该是赢时序输出,但是时序输出会延迟一个周期,我这里没有选择时序输出,问题不大。那个warning也不是这个引起的,我改成时序逻辑也会出现那个错误。

出0入0汤圆

 楼主| 发表于 2011-9-6 19:42:13 | 显示全部楼层
回复【2楼】oceanx
-----------------------------------------------------------------------

用的是quartusii9.0在功能仿真的时候没有出问题,而且后仿真逻辑上也没出问题,就是这个状态机的显示这一块有问题,还是不爽。综合设置的参数我用的默认的。

出0入0汤圆

发表于 2011-9-7 15:31:17 | 显示全部楼层
QUARTUS9.0去年用了一年没有发现这个问题,可能是软件的BUG吧,你试试看QUARTUS10.1.
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片。注意:要连续压缩2次才能满足要求!!】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-7-24 13:35

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表