zoukankan      html  css  js  c++  java
  • 三、状态机的设计指导原则

    一、状态机设计的关键是什么?

      如何才能把一个电路系统抽象为一个或者多个相互配合嵌套的状态机和组合系统模块?是关键。

    二、状态机设计指导原则

      1、使用独热码

      2、采用case语句,加default,变量值位‘bx,因为这样编译的电路删除了多余的东东

      3、应该加上异步复位端

      4、如果设计必须有不同的时钟触发,利用甲模块的时钟是乙模块时钟同步计数器的输出。

      5、把异步触发的电路转换成同步时钟触发的电路并不困难,详见15章。异步状态即使没有确定时钟的状态机。

      6、千万不要使用综合工具设计异步状态机。如果非要设计就用电路图输入的方法。因为他会简化你的意图。

      7、必须明确赋值,使用parameter,define,你懂的,不多说

    三、典型状态机实例

      module statemachine(launch_shuttle,land_shuttle,start_countdown,start_trip_meter,clk,all_systems_go,

                  just_lauchched,is_landed,cnt,abort_mission);

      ::::::::::

      parameter  HOLD=5'b00001,SEQUENCE=5'B00010,LAUNCH=5'B00100;

      parameter  ON_MISSION=5'b01000,LAND=5'b10000;//这里表明了航天器的多种状态

      reg[4:0] state;

        always@(negedge clk or posedge abort_miossion)

          begin

            //检查异步rst的值,即abort_mission

          if(abort_mission)

            begin

            {launch_shuttle,lan_shuttle,start_trip_meter,start_countdown}<=4'b0000;

            state<=LAND;

            end

          else

            begin

              //主机状态

              case(state)

                HOLD:

                  if(all_system_go) begin state<=SEQUENCE;  start_countdown<=1;end

                  else state<=HOLD;

                SEQUENCE:

                  if(cnt==0) state<= LAUNCH;

                  else state<=SEQUENCE;

                LAUNCH:

                  begin state<= ON_MISSION;launch_shuttle<=1;end

                ON_MISSION:

                  if(just_launched) start_trip_meter<=1;

                  else  state<=ON_MISSON;

                LAND:

                  if(is_landed) state<=HOLD;

                  else begin land_shuttle<=1;state<=LAND;end

                default: state<=5'bxxxxx;

              endcase

            end

          end

      endmodule

    摘自:verilog数字系统设计教程(夏宇闻)

     

  • 相关阅读:
    centos安装python3
    MongoDB 索引
    dockerfile
    docker端口映射与容器互联
    操作docker容器
    docker数据管理
    ubuntu安装docker
    MVC框架
    图像标签
    HTML的标签
  • 原文地址:https://www.cnblogs.com/qidaiymm/p/4902686.html
Copyright © 2011-2022 走看看