以上的字符发送到液晶显示模块之后,可以显示“ door is opening.. ” 随后会显示:
图6-2-5显示it is closing..
以上的字符发送到液晶显示模块之后,可以显示“ it is closing.. ” 最后会显示下列字符,电梯重新回到初始等待状态:
图6-2-6显示it is static..
以上可以显示“ it is static.. ”
说明:由于LCD显示波形会占用比较多的空间,所以以上仅以在高层有向下的请求为例来说明,电梯的状态完全可以通过LCD来正确地显示出来。鉴于此,下面的波形将不展示LCD显示部分的波形图。
3.当电梯停在6楼处于等待状态时,在1楼和2楼同时有向上的请求时:
图6-3等待状态
4.当电梯停在1楼处于等待状态时,在6楼和5楼同时有向下的请求时:
图6-4等待状态
5.当电梯停在6楼时,有在5楼的向下的请求时,电梯应该先到五楼,电梯内部请求到1楼,如果电梯在下降的过程中,有在2楼的向上的请求时,电梯应该先响应内部请求,然后响应外部请求:
图6-5状态响应
七、总结与展望
电梯控制器系统设计已经全部完成,基本实现了预期效果,实现了电梯按预定运行规则上升、下降、载客等功能,并设计了提前关门功能,使电梯运行更便捷,设计了关门延时功能、超载报警功能、故障报警功能,使电梯运行更加安全更加可靠。在本设计中,因为考虑了扩展性,所以在信号定义的时候就使用了二进制的向量,而不是整数。在设计方法上也做了特殊的设计,所以使得扩展性较好。如果要实现n层电梯的控制,首先在端口的地方就要加入所有的按键,而指示灯只要把向量中的6改成n就可以了。在本设计过程中还需要改进的地方有,电梯运行规则的优化(如设计闲时忙时控制规则)、电梯运行速度的控制、设计更多的报警功能等。电梯控制系统的设计中体现了VHDL覆盖面是如此的广,描述能力强,是一个多层次的硬件描述语言及运行速度快,使用方便,便于修改,设计简单等特点。本设计在实用方面和参考方面具有一定的价值。
参考文献
[1] 王伟.Verilog HDL 程序设计与应用.人民邮电出版社 [2] 夏宇闻数字系统设计:Verilog实现.高等教育出版社 [3] 王金明.数字系统设计与Verilog HDL.电子工业出版社 [4] 李彦宏.百度
附件程序
电梯主控制器模块
module elevator_controller( //input ports: cp_50M,clk,reset,forbid,
call_up_1,call_up_2, call_up_3, call_up_4, call_up_5,
call_down_2, call_down_3, call_down_4, call_down_5,call_down_6, request_1, request_2, request_3, request_4, request_5, request_6, //output ports:
out,LiftState,over_alarm,count_out,count); //output ports:
output [6:0]out;//输出楼层
output [6:0] LiftState;//输出电梯状态 output over_alarm;//出错
output [6:0]count_out;//计数器输出,便于我控制开关门的状态显示 output [2:0]count;//计数器 //input ports: input cp_50M;
input clk,reset,call_up_1,call_up_2,call_up_3,call_up_4,call_up_5,
call_down_2,call_down_3,call_down_4,call_down_5,call_down_6, request_1,request_2,request_3,request_4,request_5,request_6;
input forbid;
wire over_alarm; wire [6:0]out; wire [6:0]count_out;
reg [5:0]pos,PosOut;
reg [2:0] count; reg DoorFlag; reg [1:0] UpDnFlag;
reg [6:0] LiftState,NextState; wire real_clk;
reg [5:0] up_all,down_all,request_all;
parameter
WAIT=7'b0000001,
UP=7'b0000010,
DOWN=7'b0000100,
UPSTOP=7'b0001000, CLOSEDOOR=7'b1000000;
DOWNSTOP=7'b0010000, OPENDOOR=7'b0100000,
parameter FLOOR1=6'b000001, FLOOR2=6'b000010, FLOOR3=6'b000100, FLOOR4=6'b001000, FLOOR5=6'b010000, FLOOR6=6'b100000; parameter TRUE=1'b1, FALSE=1'b0; parameter OPEN=1'b1, CLOSED=1'b0;
parameter UPFLAG=2'b01,DNFLAG=2'b10,STATIC=2'b00;

