有限状态机模型

第4种风格的Verilog HDL模型来表示同一个有限状态。在这个模型中,我们分别用沿触发的always语句和电平敏感的always语句把状态机的触发器部分和组合逻辑部分分成两部分来描述。

注意:沿触发的always语句中采用并发(非阻塞)赋值的方式;电平敏感的always语句中采用阻塞赋值的方式;
例4.4:有限状态机模型4。

module  fsm (Clock, Reset, A,  F, G);           //模块声明
      input Clock, Reset, A;
      output F,G;
      reg [1:0] state, Nextstate;

      parameter                                      //状态声明
           Idle  = 2’b00,  Start = 2’b01, 
           Stop = 2’b10, Clear = 2’b11;

      always @(posedge Clock)
           if (!Reset) begin
                 state <= Idle;                   //默认状态
           end
           else
                 state <= Nextstate;             //状态转换

      always @( state or A ) begin
           F=0;
           G=0;
           if (state == Idle) begin             //处于Idel状态时,对A判断
                 if (A)
                      Nextstate  =  Start;        //Start状态
                 else
                      Nextstate  =  Idle;         //保持Idel状态
                 G=1;
           end
           else if (state == Start)             //处于Start状态时,对!A判断
                 if (!A)
                      Nextstate  =  Stop;         //Stop状态
                 else
                      Nextstate  =  Start;        //保持Start状态
           else if (state == Stop)               //处于Stop状态时,对A判断
                 if (A)
                      Nextstate  =  Clear;        //Clear状态
                 else
                      Nextstate  =  Stop;         //保持Stop状态
           else if (state == Clear) begin      //处于Clear状态时,对!A判断
                 if (!A)
                      Nextstate  =  Idle;         //Idel状态
                 else
                      Nextstate  =  Clear;        //保持Clear状态
                 F=1;
                 end
           else
                 Nextstate= Idle;                 //默认状态
      End
endmodule

posted @ 2015-04-24 08:40  agllero  阅读(1125)  评论(0编辑  收藏  举报