1、当前内部控制面板上有的请求,只要经过所在楼层均会立即响应.在所有内部外部请求都已完成后,电梯转入等待。 电梯模型:(如下附图)第层每楼层的召唤按钮面板,显示信息有:当前电梯所在位置(楼层)和电梯的运行方向(上下)控制信息:使用电梯的请求(向上或向下)第7层第层第层第层第层第层电梯电梯内部的控制面板,电梯当前的位置和电梯当前的运行方向(上下),以及请求到达的楼层控制信息有:请求要到达的目的楼层 BACK*3)、算法设计; 1、电梯基本组成部分及其实现:(1) FLOOR:记录电梯所处楼层的记数器用模计数器实现,由001111的加减记数来表示电梯所在楼层的变化(2) RB:电梯运行状态寄存器组用一
2、位寄存器来表示电梯当前是运行还是暂停,再用一位寄存器表示当前或刚才的运行方向,这样就可以在电梯停止时也可以判断电梯刚才的状态,从而确定下个时刻电梯的后续方向对于FLOOR,我们通过三个LED显示. (3)RC:电梯目的地信息寄存器,记录电梯还有哪些要去楼层的任务每个楼层对应一个状态触发器,同时控制一个LED显示(4)RD: 各个楼层召唤信息寄存器,它记录了各楼层还有哪些向上向下的请求* 5、系统控制器ASM图:4)、硬件实现;为了更好地实现电梯的功能我们将其划分为数据处理单元和控制单元。控制器通过control模块实现它统一向其它各个模块发出控制信号,并且接收condition和counter
3、模块的反馈信号,使得个子运算按照算法设计中的顺序有序的进行,在S0S14的状态之间进行合理的跳转,从而完成电梯的各项逻辑功能。 下面分别简述使用verilog语言实现的各个模块的功能及其接口。 (1)、destination:该模块是为了描述电梯内的目的请求的记录和撤销。input: set_dest:当按下对应楼层的目的地请求且当前电梯来停在cur_floor时,便可以记录这个请求。 rst:在电梯进入初始状态时,撤销记录中的目的地请求。 ce:在电梯进入暂停在cur_floor状态时ce=1;控制撤销cur_floor的目的地请求,并不记录在当前状态下该楼层的目的地请求。 cur_Floo
4、r:当前楼层作为判断的条件。output: get_dest: 通过输出LED显示当前未完成的目的地请求。源代码如下:module destination(set_dest,rst,ce,cur_Floor,get_dest); input 6:0 set_dest; input 2:0 cur_Floor; input rst,ce; output 6:0 get_dest; reg 6: always (rst or ce or set_dest0 or cur_Floor) begin if(rst=1) get_dest0=0; else begin if(set_dest0=0) i
5、f(ce=0|cur_Floor!=1) get_dest0=1; 电梯不在1楼,目的地为1 else 电梯在1楼 目的地不显示 end if(ce=1&cur_Floor=1) end always (rst or ce or set_dest1 or cur_Floor) if(rst=1)初始化 get_dest1=0; else if(set_dest1=0) 没有请求=2) get_dest1=1;cur_Floor=2) end always (rst or ce or set_dest2 or cur_Floor) get_dest2=0; else if(set_dest2=0
6、)=3) get_dest2=1;cur_Floor=3) always (rst or ce or set_dest3 or cur_Floor) get_dest3=0; else if(set_dest3=0)=4) get_dest3=1;cur_Floor=4) always (rst or ce or set_dest4 or cur_Floor) get_dest4=0; else if(set_dest4=0)=5) get_dest4=1;cur_Floor=5) always (rst or ce or set_dest5 or cur_Floor) get_dest5=0
7、; else if(set_dest5=0)=6) get_dest5=1;cur_Floor=6) always (rst or ce or set_dest6 or cur_Floor) get_dest6=0; else if(set_dest6=0)=7) get_dest6=1;cur_Floor=7)endmodule(2)、call:该模块是为了描述电梯外的召唤的记录和撤销。 set_call:当按下对应楼层的召唤请求且当前电梯未停在cur_floor,便可以记录这个召唤。当电梯进入初始状态时,撤销目的地面板上的请求。在电梯进入暂停在cur_floor的状态时,控制撤销cur_f
8、loor 的所在所在召唤请求,并不记录当前状态下该楼层的召唤。 get_call:module call(set_call,rst,cur_Floor,ce,get_call); input 11:0 set_call; output 11:0 get_call; reg 11: always (rst or ce or set_call0 or cur_Floor) get_call0=0; else if(set_call0=0) get_call0=1; get_call0=0; always (rst or ce or set_call1 or cur_Floor) get_call1=0; else if(set_call1=0) if(ce=0|
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1