集成电路技术分享

 找回密码
 我要注册

QQ登录

只需一步,快速开始

搜索
查看: 2169|回复: 3

三段式状态机问题

[复制链接]
夜带水果刀 发表于 2010-6-26 00:33:57 | 显示全部楼层 |阅读模式
本帖最后由 fpgaw 于 2010-11-19 06:38 编辑

sync_proc

ROCESS(RST,CLK)BEGIN
   IF RST = '0' THEN
  current_state<=idle_state;
  ELSIF CLK'EVENT and CLK='1' THEN
   current_state<=next_state;
  END IF;
  END PROCESS sync_proc;
  comb_proc
       
ROCESS(current_state,counter0)
BEGIN
next_state<=current_state;
CASE current_state IS
  WHEN idle_state =>     --idle stage
     next_state <= start_state;
  WHEN start_state =>    --start stage
     IF counter0 = 2400 THEN --M2 run after M1 forwarding 2400 steps
      next_state <= work_state;
     ELSE
     next_state <= start_state;
     END IF;
  WHEN work_state =>     --work stage     
     next_state <= work_state;
  WHEN others =>
     next_state <= idle_state;
END CASE;   
END PROCESS comb_proc;

COUNTER:process(CLK1,next_state)begin
  if(CLK1'event and CLK1='1') then
  if next_state = start_state then
   if counter0 < 2400 then
    counter0 <= counter0+1;
   else
    counter0 <= 2400;
   end if;
  end if;
end if;
end process COUNTER;

SPEED_CTRL:process(CLK,next_state)
  begin
  if CLK'event and CLK='1' then
  case next_state is
  when idle_state =>
    ...
  when start_state =>
    ...
  when others =>
    ...
  end case;
  end if;
  end process SPEED_CTRL;

三段式状态机,在start_state延时2400个脉冲进入work_state,但是在第三段的输出信号时,在work_state中无输出信号,是因为状态机不能进入work_state的原因吗?我这样用counter0控制状态机进行状态转移可行吗?请高手指教,非常感谢
粉妮 发表于 2010-6-26 01:57:22 | 显示全部楼层
rst信号查查看
 楼主| 夜带水果刀 发表于 2010-6-26 03:33:36 | 显示全部楼层
BEGIN<br>
&nbsp; &nbsp;&nbsp;&nbsp;next_state&lt;=current_state;这句去掉看看
Sunlife 发表于 2015-4-7 11:05:32 | 显示全部楼层
三段式状态机,在start_state延时2400个脉冲进入work_state,但是在第三段的输出信号时,在work_state中无输出信号,是因为状态机不能进入work_state的原因吗?我这样用counter0控制状态机进行状态转移可行吗?请高手指教,非常感谢
您需要登录后才可以回帖 登录 | 我要注册

本版积分规则

关闭

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

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

GMT+8, 2025-5-7 04:11 , Processed in 0.061926 second(s), 23 queries .

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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