verilog状态机格式

来源:互联网 发布:淘宝纠纷退款率会清零 编辑:程序博客网 时间:2024/05/20 15:12

有限状态机就一般而言,有一组输入、一组输出、管理状态间转移的转移函数

    转移函数根据当前状态以及输入值来确定下一个状态,状态机的输出根据当前状态以及输入(摩尔状态机不需要根据输入值,米利机需要)进行输出。

    一般的状态机结构图如下所示:

   

    对于摩尔状态机,图中的虚线是不存在的,因为它与输入无关。

    D触发器用来存储当前状态,下一个状态则根据输入与当前状态来产生,输入根据当前状态(以及输入,对于米利机而言)来产生。

  

    状态机设计过程:

    1。对状态编码:BCD码,GRAY码,one-hot码等;

    2。状态存储器的设计:

           always@(posedge clk)

                begin

                     if(! reset)

                           current_state<=init_state;

                     else

                           current_state<=next_state;

                  end

    3。状态转移的设计

          always@*

                 case(current_state)

                       .....

                       .....

                 endcase

    4。输出逻辑的设计:

          always@*

             begin

                  output_init;//首先对每个输出进行初始化(为了避免不必要的锁存器),只有在需要时才对输出进行改变

                  case(current_state)

                      .....

                      .....

                   endcase

            end

    将状态机分成3个always块是通常的做法。

原创粉丝点击