实习日记02 #coding style #状态机

状态机

昨天飞哥要求在画完电梯状态转移图之后,写一个.v文件。奈何笔者知识浅薄,看过的状态机写法早已忘记,今天一大早带了本书,在工位上看。
首先状态机主要要处理的是,下一个状态以及输出信号,他们都是输入信号和当前状态的表达式。
状态机主要分为__Mealy__和__Moore__两种,区别在于,Mealy状态机的输出由输入以及当前状态决定,而Moore状态机的输出只由当前状态决定。
写状态机一本遵循的经典的三段式,就拿我今天写的为例:

module lift_status(
   input   clk,
   input   reset,
   input   emergency,
   input   up,
   input   down,
   input   open,
   input   close,
   input   arrive,
   output  elevator_up,
   output  elevator_down,
   output  elevator_stop,
   output  door_open,
   output  door_close,
   output  alarm
   );

   parameter [2:0]  POWEROFF  = 3'b000;
                    STATIC    = 3'b001;
                    UP        = 3'b010;
                    DOWN      = 3'b011;
                    ARRIVE    = 3'b100;
                    OPEN      = 3'b101;
                    CLOSE     = 3'b110;
                    EMERGENCY = 3'b111;

   reg [2:0] curr_state;
   reg [2:0] next_state;

   // first segment: state transfer
   always@(posedge clk or negedge reset)
   begin
      if(!reset)
          curr_state <= POWEROFF;
      else
          curr_state <= next_state;
   end
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值