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

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

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 2192|回复: 4

[求助] VHDL状态机描述

[复制链接]
发表于 2011-11-17 14:39:49 | 显示全部楼层 |阅读模式

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

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

x
大家好,小弟刚在学习状态机的VHDL建模,看到一例子,其VHDL的描述如下:
type state is (step1, step2, step3);
signal current_state, next_state : state;

STATE_REG : process(clk) is
begin
  if rising_edge(clk) then
   if reset = '1' then
    current_state <= step1;
   else
    current_state <= next_state;
   end if;
  end if;
end process STATE_REG;

NEXT_STATE_REG : process (start) is
begin
  case current_state is
   when step1 =>
    if start = '0' then
     next_state <= step1;
    else
     next_state <= step2;
    end if;
   when step2 =>
    next_state <= step3;
   when step3 =>
    next_State <= step1;
  end case;
end process NEXT_STATE_REG;

对这个例子有一个疑问,为什么进程NEXT_STATE_REG 需要加入start敏感信号量,我记得进程是只有敏感信号量变化才会启动执行的,但事实上,在状态2到状态3的转化,并不需要敏感信号量start变化,这是为什么呢?
发表于 2011-11-21 11:45:17 | 显示全部楼层
start是什么信号?
发表于 2011-11-22 01:31:30 | 显示全部楼层
next_state_rge进程应该为一个组合进程,但敏感表中信号不全。
发表于 2011-11-22 09:26:13 | 显示全部楼层
states step 1 to step 2 need start
发表于 2011-11-22 09:51:28 | 显示全部楼层
NEXT_STATE_REG : process (start) is
begin
  case current_state is
   when step1 =>
    if start = '0' then
     next_state <= step1;
    else
     next_state <= step2;
    end if;
   when step2 =>
    next_state <= step3;
   when step3 =>
    next_State <= step1;
  end case;
end process NEXT_STATE_REG;

      状态机切换这个process,你可以理解为一个组合逻辑。因为从step1变化到step2的时候,就是你的第一个when语句,需要根据start的变化来变化。所以,start必须是这个process的敏感信号,不加start的话,在start由0变1的时候,step1不会跳转到step2。
    另外,这个敏感信号列表好像少加了一个信号,current_state也必须要加进去。
    在你研究的这个程序里面,这种驱动方式是由状态机变量当前的状态,结合其他的状态信号,如start,去驱动状态变量转换到下一状态next_state的。process需要监控所有需要的信号的状态以判断状态机的下一状态,所以,所有驱动状态机转换的信号都必须要加到敏感列表里面。
    还有一种写法,用时钟去驱动的,就只需要把时钟和复位加到敏感列表里面,这时候只需要定义一个状态机变量就可以了。你可以多看看别的例子。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

X

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

GMT+8, 2025-6-16 03:58 , Processed in 0.018590 second(s), 9 queries , Gzip On, MemCached On.

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