大家状态机的写法

[复制链接]
2930|2
 楼主| wxfxwk1986 发表于 2011-10-2 16:25 | 显示全部楼层 |阅读模式
大家写状态及时是分两端写还是三段写啊。我说的三端是指控制部分和数据部分,控制部分分成两个always来写,两段的话控制部分用一个always,三段的话如下;
always@(posedge clk)
begin
   if(rst)   state<=s_idle;
  else   state<=next_state;
end

always(state)//此always用来产生下个状态的组合逻辑
begin
.......
end
我一直在用这种方式写状态机,但最近我忽然想到一个问题,这种方式写的话,产生的输出控制信号是异步的。
大家的看法呢?另外控制部分在一个always应该怎么写?
可木 发表于 2011-10-8 22:10 | 显示全部楼层
个人认为控制部分在一个always里写大多都用case语句吧,我一般是这么用的!
leoph 发表于 2011-10-12 21:11 | 显示全部楼层
你的这种写法应该算是两段式写法,用两个always描述状态机。前一个是时序电路,有一个是逻辑电路。建议:
1)两段都用时序电路;2)用三段式,a)状态翻转用逻辑电路,b)状态输出用时钟打一拍进行同步,c)时序电路描述输出和控制信号。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

0

主题

250

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部