在线咨询
eetop公众号 创芯大讲堂 创芯人才网
切换到宽版

EETOP 创芯网论坛 (原名:电子顶级开发网)

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 2486|回复: 2

当状态和计数相关时,状态机应该怎么写?

[复制链接]
发表于 2006-10-18 10:08:47 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

x
目标计数为24位的位宽。
假设初始状态为0,
在状态0时,收到请求,则从0x300开始,每次请求计数减1,
当计到0x200时进入状态2;
计到0x100是进入状态3;
计到0x0是进入状态4。

用VHDL这样描述可否:
process(rst,clk,req)
begin
if(rst = '1') then
     cs <= "000";
elsif(posedge(clk)) then
case cs is
when "000" =>
if(req = '1') then                       -- startup
     cntr <= 0x300;
                                            ---- and output
     cs <= "001";
else
     cntr <= 0x000;
     cs <= "000";
end if;
when "001" =>
if(req = '1')
     cntr <= cntr - 1;
     if(cntr = 0x200) then
           cs <= "010";
                                            ---- and output
     else
           cs <= "001";
     end if;
end if;
when "010" =>
     ........

[ 本帖最后由 wusite 于 2006-10-18 10:15 编辑 ]
发表于 2006-10-24 12:02:27 | 显示全部楼层
状态机的组合逻辑和时序逻辑要分开,最好不要搅和在一块。
发表于 2006-12-16 21:34:33 | 显示全部楼层
同意wangsikao
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐 上一条 /2 下一条


小黑屋| 手机版| 关于我们| 联系我们| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2024-12-27 08:12 , Processed in 0.022179 second(s), 9 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
快速回复 返回顶部 返回列表