状态机进阶

前面的文章里状态机采用的是一段式写法,不仅冗杂还容易出错,遗漏没有考虑到的点比如上一篇文章里没有对计数器清零的问题

第一段:同步时序always模块,秒啊书次态迁移到现态:

 //1:次态迁移到现态
  always@(posedge clk or negedge rst_n)begin
      if(!rst_n)begin
         state_c<=IDLE;
         end
      else begin
         state_c<=state_n;
         end
      end

第二段:组合逻辑的always块,描述状态转移条件

//2:组合逻辑的always块,描述状态转移条件
always@(*)begin
case(state_c)//当前状态
IDLE:begin
    if(idle2s1)begin
    state=S1;//跳转状态
    end
    else begin
    state_n=state_c;//次态等于现态
    end
end
S1:begin
    if(s12s2)begin
    state_n=S2;//跳转状态
    end
    else begin
    state_n=state_c;//次态等于现态
    end
end
S2:begin
    if(s12s2)begin
    state_n=IDLE;//跳转状态
    end
    else begin
    state_n=state_c;//次态等于现态
    end
   end
endcase
end

第三段:考虑状态转移条件!

//设计输出
  always@(posedge clk or negedge rst_n)begin
      if(!rst_n)begin
         out<=1'b0;
         end
      else begin
         out<=xx;
         end
      end

第四段:输出

//设计输出
  always@(posedge clk or negedge rst_n)begin
      if(!rst_n)begin
         out<=1'b0;
         end
      else begin
         out<=xx;
         end
      end

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值