找回密码
 注册
搜索
查看: 821|回复: 2

[讨论] 请教关于状态机的问题

[复制链接]
发表于 2008-1-29 10:38:59 | 显示全部楼层 |阅读模式
写了一个状态机,如下格式
always @(posedge clk)
if(!reset)
state<=sta_st;
else
state<=next_state;

always @ (posedge clk)
if(!reset)
n<=0;
else if(n==31) n<=0;
else n<=n+1;

always @ (state or n)
case(state)
    sta_st:begin: xo<=xi;yo<=yi;zo<=zi;
                     ctl<=5'b00001;
                       n<=n+1; end........
default:
endcase

xi为输入,xo为输出。本意是在每个时钟上升沿读取一次xi的取值,并由xo输出。但是综合了之后才发现和我想的原来不一样
[em03]综合了之后xi与xo直接连上了,xi的每次变化都被xo输出了,导致整个结构无比混乱。。。哪位大哥写过这种类型的状态机或者遇到过这种情况。麻烦支个招,告诉我应该写成哪种格式的,小弟不胜感激~
发表于 2008-3-8 22:32:47 | 显示全部楼层
always @ (posedge clk)[52RD.com]
if(!reset)[52RD.com]
n<=0;[52RD.com]
else if(n==31) n<=0;[52RD.com]
else n<=n+1//????

always @ (state or n///??????)
case(state)[52RD.com]
    sta_st:begin: xo<=xi;yo<=yi;zo<=zi;[52RD.com]
                     ctl<=5'b00001;[52RD.com]

                       n<=n+1; ///??????
end
明白了吗?
点评回复

使用道具 举报

发表于 2008-3-9 15:31:18 | 显示全部楼层
同一变量不可以在两个Always块中赋值,这是不可综合的.容易出错
点评回复

使用道具 举报

高级模式
B Color Image Link Quote Code Smilies

本版积分规则

Archiver|手机版|小黑屋|52RD我爱研发网 ( 沪ICP备2022007804号-2 )

GMT+8, 2024-11-24 09:41 , Processed in 0.045072 second(s), 17 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

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