FSM中组合进程CASE语句问题

[复制链接]
 楼主| thymon 发表于 2009-12-17 20:29 | 显示全部楼层 |阅读模式
FSM代码:
PROCESS(clk_153K)        --时序逻辑
BEGIN
    IF (clk_153K'EVENT AND clk_153K = '1')THEN
       IF(reset = '0')THEN
         CUR_STATE <= R_start;
       ELSE
         CUR_STATE <= NEXT_STATE;
      ...
END PROCESS;

PROCESS(CUR_STATE)    --组合逻辑
BEGIN
  CASE CUR_STATE IS
  WHEN  R_start =>
         NEXT_STATE <= R_centre;
         dalay_count <= "0000";
         rxd_data <= "0000"&dalay_count;
  WHEN  R_centre =>
        NEXT_STATE <= R_wait;
        dalay_count <= dalay_count + 1;   --问题所在,值不更新,望指点
        rxd_data <= "0000"&dalay_count;
  WHEN  R_wait =>
       dalay_count <= "0010";
       rxd_data <= "0000"&dalay_count;
       NEXT_STATE <= R_sample;
  WHEN  R_sample =>
       dalay_count <= "0011";
       rxd_data <= "0000"&dalay_count;
       NEXT_STATE <= R_stop;
  WHEN  R_stop =>
       dalay_count <= "0100";
       rxd_data <= "0000"&dalay_count;
       NEXT_STATE <= R_start;
  WHEN  OTHERS =>
       NEXT_STATE <= R_start;
  END CASE;
END PROCESS;
 楼主| thymon 发表于 2009-12-17 20:46 | 显示全部楼层
等了半天也不见人来揭帖子!难道是我的问题?那我简单化:我怀疑组合逻辑的CASE(亦可能是所有CASE语句)中,不能执行算术运算?还是怎么地!本来是一个比较大的逻辑程序,上面这个是我又写的测试程序!发现对信号dalay_count 是只能赋值,而不能进行加法运算!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

主题

2

帖子

1

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

1

主题

2

帖子

1

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