基于FPGA的电梯控制器系统设计
c. 电梯控制器模块和指示模块:该模块根据各层按钮被按下的情况,控制电梯运行,并设置指示灯。模块定义如下:
module Lift_cONtrol(
keyclk, //处理按键时钟
liftclk, //电梯运行控制时钟
reset, //电梯复位按钮,复位后电梯停在一楼;
stop_r, //电梯内各层按键信息
up_r, //电梯外各层向上按键信息
down_r, //电梯外各层向下按键信息
position, //当前楼层位置,每1位代表1层,当相应的位置1时表示电梯运行至该层;
stoplight, //内部各层按钮指示灯,每1位代表1层,当相应位置1时表示指示该层指示灯亮;
uplight, //除顶层外各层外部按钮指示灯,每1位代表1层,当相应位置1时表示该层up灯亮;
downlight, //除首层外各层外部按钮指示灯,每1位代表1层,当相应的位置1时表示该层的down指示灯亮;
doorlight); //用于开门指示灯,为1表示开门,为0表示关门
d. 显示模块:该模块用于译码显示当前电梯所在楼层,模块定义如下:
module Display(liftclk,position,disp);
2.2 模块设计与实现
对于分频器模块、按键请求模块、电梯控制器模块和指示模块和显示模块这四个模块,电梯控制器模块和指示模块涉及到电梯各种运行情况的处理,其算法是最复杂的,也是最容易出错的。本文采用使用有限状态机来设计该模块,具体的算法描述如下。
将电梯运行定义为7个状态,具体的状态定义如下:
S0:onfloor1,表示在楼层1;
S1:dooropen_up,上升过程中,电梯开门5s;
S2:doorclose_up,上升过程中,电梯关门;
S3:up_lift,表示电梯上升一层;
S4:dooropen_down,下降过程中,电梯开门5s;
S5:doorclose_down,下降过程中,电梯关门;
S6:down_lift,表示电梯下降一层。
评论