集成电路技术分享

 找回密码
 我要注册

QQ登录

只需一步,快速开始

搜索
查看: 3610|回复: 8

状态机为什么要next_state这个东西?

[复制链接]
interi 发表于 2010-6-26 01:21:17 | 显示全部楼层 |阅读模式
本帖最后由 fpgaw 于 2010-11-18 16:22 编辑

状态机为什么要next_state这个东西?
比如一般是这样写的:
always @(state)
   case(state)
      S0 : next_state <= S1;
      S1 : next_state <= S0;
   endcase

always @(posedge clk)
   begin
      ...
      ...
      state <= next_state;
   end

然而,这样写为什么不行呢?
always @(posedge clk)
   case(state)
      S0 : state <= S1;
      S1 : state <= S0;
   endcase


always @(posedge clk)
   begin
      ...
      ...
   end

中间的next_state有什么用?
HANG 发表于 2010-6-26 02:26:38 | 显示全部楼层
作为一个传递参数的信号而已,表示下一个状态
ngtim 发表于 2010-6-26 02:45:03 | 显示全部楼层
应该是为了把寄存器输入和输出分开表示.
HDL 发表于 2010-6-26 03:39:39 | 显示全部楼层
因为这是硬件, 不是软件.
ngtim 发表于 2010-6-26 05:05:32 | 显示全部楼层
第一种是两段示状态机,可以实现组合逻辑和时序逻辑的分离。第二种是一段式。这是不同的代码风格,在硬件实现的时候会有不同,一般推荐两段式。
FFT 发表于 2010-6-26 06:12:08 | 显示全部楼层
也不是很明白,可能是在判断输入的同时输出吧,帮你顶了,高手讲讲!
inter 发表于 2010-6-26 07:50:57 | 显示全部楼层
其实这些都是 代码规范的问题, 好的状态转移写法会有好的综合效果<br>
<br>
FSM 的 current state 和 next state 都是对应的状态的转移, 在书写上会让人易懂. 而且,这些写可以做到 硬件已熟记于心, 所以, 很多资料都是推荐这么做的!<br>
<br>
另外,至于说N段式写法, 都是个规范. 你不想遵守那就自己慢慢写吧
longt 发表于 2010-6-26 09:20:40 | 显示全部楼层
状态机嘛,就是循环着来的<br>
这次执行完了后,同时也就决定了下一次的状态,如果没有那个next_state,下一次要执行什么,怎么才能传出去呢
Sunlife 发表于 2015-4-7 11:07:38 | 显示全部楼层
这次执行完了后,同时也就决定了下一次的状态,如果没有那个next_state,下一次要执行什么,怎么才能传出去呢
您需要登录后才可以回帖 登录 | 我要注册

本版积分规则

关闭

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

QQ|小黑屋|手机版|Archiver|fpga论坛|fpga设计论坛 ( 京ICP备20003123号-1 )

GMT+8, 2025-5-7 05:32 , Processed in 0.076583 second(s), 23 queries .

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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