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

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

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 5479|回复: 0

[讨论] 状态机问题

[复制链接]
发表于 2013-8-18 16:07:36 | 显示全部楼层 |阅读模式

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

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

x
1.源代码如下不能生成状态转移图module fsm(

clk,

reset,

A,

K1,

K2,

state
            );

input clk,reset,A;
output K1,K2;
//output[1:0] state;
reg K1,K2;
reg [1:0] state;

parameter  Idle = 2'b00,

   Start= 2'b01,

   Stop = 2'b10,

   Clear= 2'b11;

   
always @(posedge clk)
begin
   if(!reset)
   begin
      state<=Idle;
      K2<=0;
      K1<=0;
   end
   else
   begin
      case(state)
      Idle:
      begin
         if(A)
         begin
            state<=Start;
            K1<=0;
         end
         else
         begin
            state<=Idle;
            K2<=0;
            K1<=0;
         end
      end
      Start:
      begin
        if(!A)
        begin
           state<=Stop;
        end
        else
        begin
           state<=Start;
        end
      end
      Stop:
      begin
         if(A)
         begin
            state<=Clear;
            K2<=1;
         end
         else
         begin
            state<=Stop;
            K2<=0;
            K1<=0;
         end
       end
       Clear:
       begin
          if(!A)
          begin
             state<=Idle;
             K2<=0;
             K1<=1;
          end
          else
          begin
             state<=Clear;
             K2<=0;
             K1<=0;  
          end
       end
       default:
       begin
          state<=Idle;
          K2<=0;
          K1<=0;
       end
   endcase  
   end
end
endmodule

2.源代码如下能生成状态转移图
module fsm(

clk,

reset,

A,

K1,

K2
            );


input clk,reset,A;
output K1,K2;

reg K1,K2;
reg [1:0] state;


parameter  Idle = 2'b00,

   Start= 2'b01,

   Stop = 2'b10,

   Clear= 2'b11;

   
always @(posedge clk)
begin
   if(!reset)
   begin
      state<=Idle;
      K2<=0;
      K1<=0;
   end
   else
   begin
      case(state)
      Idle:
      begin
         if(A)
         begin
            state<=Start;
            K1<=0;
         end
         else
         begin
            state<=Idle;
            K2<=0;
            K1<=0;
         end
      end
      Start:
      begin
        if(!A)
        begin
           state<=Stop;
        end
        else
        begin
           state<=Start;
        end
      end
      Stop:
      begin
         if(A)
         begin
            state<=Clear;
            K2<=1;
         end
         else
         begin
            state<=Stop;
            K2<=0;
            K1<=0;
         end
       end
       Clear:
       begin
          if(!A)
          begin
             state<=Idle;
             K2<=0;
             K1<=1;
          end
          else
          begin
             state<=Clear;
             K2<=0;
             K1<=0;  
          end
       end
       default:
       begin
          state<=Idle;
          K2<=0;
          K1<=0;
       end
   endcase  
   end
end
endmodule

请问各位大神这是什么原因
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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


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

GMT+8, 2024-12-22 23:33 , Processed in 0.016230 second(s), 8 queries , Gzip On, Redis On.

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