您当前的位置:五五电子网电子知识电子学习基础知识电脑-单片机-自动控制Verilog HDL设计之有限状态机的设计原理及其代码风格 正文
Verilog HDL设计之有限状态机的设计原理及其代码风格

Verilog HDL设计之有限状态机的设计原理及其代码风格

点击数:7180 次   录入时间:03-04 11:47:04   整理:http://www.55dianzi.com   电脑-单片机-自动控制
 

下面是第4种风格的Verilog HDL模型来表示同一个有限状态。在这个模型中,我们分别用沿触发的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

 

上面4个例子是同一个状态机的4种不同的Verilog HDL模型,它们都是可综合的,在设计复杂程度不同的状态机时有它们各自的优势。如用不同的综合器对这4个例子进行综合,综合出的逻辑电路可能会有些不同,但逻辑功能是相同的。


下面讲解有限状态机设计的一般步骤。


(1)逻辑抽象,得出状态转换图。
就是把给出的一个实际逻辑关系表示为时序逻辑函数,可以用状态转换表来描述,也可以用状态转换图来描述,这就需要完成以下任务。


① 分析给定的逻辑问题,确定输入变量、输出变量以及电路的状态数。通常是取原因(或条件)作为输入变量,取结果作为输出变量。
② 定义输入、输出逻辑状态的含意,并将电路状态顺序编号。
③ 按照要求列出电路的状态转换表或画出状态转换图。
这样,就把给定的逻辑问题抽象到一个时序逻辑函数了。


(2)状态化简。
如果在状态转换图中出现这样两个状态,它们在相同的输入下转换到同一状态去,并得到一样的输出,则称它们为等价状态。显然等价状态是重复的,可以合并为一个。电路的状态数越少,存储电路也就越简单。状态化简的目的就在于将等价状态尽可能地合并,以得到最简的状态转换图。


(3)状态分配。
状态分配又称状态编码。通常有很多编码方法,编码方案选择得当,设计的电路可以很简单。反之,若编码方案选得不好,则设计的电路就会复杂许多。


实际设计时,需综合考虑电路复杂度与电路性能之间的折衷。在触发器资源丰富的FPGA或ASIC设计中,采用独热编码(one-hot-coding)既可以使电路性能得到保证,又可充分利用其触发器数量多的优势。


(4)选定触发器的类型并求出状态方程、驱动方程和输出方程。

上一页  [1] [2] [3] [4] [5]  下一页


本文关键字:风格  电脑-单片机-自动控制电子学习 - 基础知识 - 电脑-单片机-自动控制