VHDL项目设计三层电梯控制系统Word下载.docx
- 文档编号:21305308
- 上传时间:2023-01-29
- 格式:DOCX
- 页数:15
- 大小:571.60KB
VHDL项目设计三层电梯控制系统Word下载.docx
《VHDL项目设计三层电梯控制系统Word下载.docx》由会员分享,可在线阅读,更多相关《VHDL项目设计三层电梯控制系统Word下载.docx(15页珍藏版)》请在冰豆网上搜索。
S0表示一层上状态、S1U和S1D分别表示二层上和下状态、S2表示三层下状态。
图3.1状态原理图
本状态图主要说明系统运行当前状态与下一个状态的关系,考虑了从当前状态到下一状态的所有触发因素,较为复杂。
四、源程序以及注释
LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164.all;
USEIEEE.STD_LOGIC_UNSIGNED.all;
ENTITYelevator15IS
PORT(CLK:
INSTD_LOGIC;
reset:
Button:
INSTD_LOGIC_VECTOR(3DOWNTO0);
--button(0)为一层外上升请求,button
(1)为二层外上升请求,--button
(2)为二楼外下降请求,Button(3)为三层外下降请求;
floor:
INSTD_LOGIC_VECTOR(2DOWNTO0);
--floor(0)为电梯内一层请求按钮,floor
(1)为电梯内二层请求按钮,
--floor
(2)为电梯内三层请求按钮;
position:
OUTSTD_LOGIC_VECTOR(3DOWNTO0);
--position表示电梯当前位置信息;
door:
OUTSTD_LOGIC;
--'
1'
为开门,'
0'
为关门;
up_down:
OUTSTD_LOGIC--'
为上楼,'
为下楼;
);
ENDelevator15;
ARCHITECTUREBehavOFelevator15IS
TYPEStateIS(S0,S1U,S1D,S2);
--S1U为二楼上状态,S1D为二楼下状态;
SIGNALcurrent_state:
State;
--中间变量:
当前状态
SIGNALnext_state:
下一状态
SIGNALup:
STD_LOGIC;
上升下降状态
SIGNALdor:
开门关门状态
BEGIN
P1:
PROCESS(CLK)--状态转换进程;
BEGIN
IFCLK'
EVENTANDCLK='
THEN--检测时钟上升沿
current_state<
=next_state;
ENDIF;
ENDPROCESS;
P2:
PROCESS(reset,clk,current_state,up,button,floor)VARIABLEbutton_var:
STD_LOGIC_VECTOR(3DOWNTO0);
VARIABLEfloor_var:
STD_LOGIC_VECTOR(2DOWNTO0);
VARIABLEcat:
VARIABLEca_time:
STD_LOGIC_VECTOR(3DOWNTO0);
BEGIN
IFreset='
THEN--复位处理,初始状态为一层
next_state<
=S0;
position<
="
0001"
;
cat:
='
ca_time:
="
0000"
up<
Z'
dor<
button_var(3DOWNTO0):
floor_var(2DOWNTO0):
000"
ELSIFclk'
eventandclk='
THEN
--若无复位信号,则将外部按钮信号存储到7个变量之中;
IFbutton(0)='
THENbutton_var(0):
ELSENULL;
ENDIF;
IFbutton
(1)='
THENbutton_var
(1):
IFbutton
(2)='
THENbutton_var
(2):
IFbutton(3)='
THENbutton_var(3):
IFfloor(0)='
THENfloor_var(0):
IFfloor
(1)='
THENfloor_var
(1):
IFfloor
(2)='
THENfloor_var
(2):
IFcat='
THENca_time:
=ca_time+1;
--开门,关门计时;
CASEcurrent_stateIS
WHENS0=>
--一楼状态处理;
position<
cat:
IF(button_var(0)orfloor_var(0))='
THEN
CASEca_timeIS
WHEN"
0011"
=>
1101"
button_var(0):
floor_var(0):
IF(floor_var
(1)orfloor_var
(2))='
next_state<
=S1U;
ca_time:
up<
ELSEnext_state<
=S0;
WHENothers=>
NULL;
ENDCASE;
ELSIF(button_var
(1)ORbutton_var
(2)orbutton_var(3)orfloor_var
(2)orfloor_var
(1))='
=S1U;
up<
='
ELSE
next_state<
WHENS1U=>
--二楼上状态处理;
position<
0010"
IFfloor_var
(1)='
THEN--二楼内上升请求;
CASEca_timeIS
WHEN"
WHEN"
=>
floor_var
(1):
IF(button_var
(1)orbutton_var(3)orfloor_var
(2))='
THENnext_state<
=S2;
button_var
(1):
ELSIF(button_var(0)orbutton_var
(2)orfloor_var(0))='
THENnext_state<
=s0;
button_var
(2):
ELSE
next_state<
WHENothers=>
ELSE
IFbutton_var
(1)='
THEN--二楼外上升请求;
WHEN"
button_var
(1):
IF(floor_var
(2)orbutton_var(3))='
THENnext_state<
ELSIF(button_var(0)orfloor_var(0)orbutton_var
(2))='
up<
ELSEnext_state<
ENDIF;
ENDCASE;
ELSE
IF(button_var(3)orfloor_var
(2))='
--二楼无上楼,开门请求,但三层有下楼或开门请求;
next_state<
ELSIFbutton_var
(2)='
--二楼无上楼,开门请求,三层也无下楼或开门请求,此
--时二楼有下楼请求;
CASEca_timeIS
button_var
(2):
IF(floor_var(0)orbutton_var(0))='
THENnext_state<
ELSEnext_state<
ENDIF;
WHENothers=>
ELSIF(button_var(0)orfloor_var(0))='
--电梯处于二楼上状态,仅有一楼信号要处理
ca_time:
--无任何信号,保持当前状态不变;
WHENS1D=>
--up='
时的情况;
position<
IFfloor_var
(1)='
IF(button_var
(2)orbutton_var(0)orfloor_var(0))='
ELSIF(button_var
(1)orbutton_var(3)orfloor_var
(2))='
button_var
(1):
ELSEnext_state<
=S1D;
IFbutton_var
(2)='
IF(floor_var(0)orbutton_var(0))='
ELSIF(button_var
(1)orfloor_var
(2)orbutton_var(3))='
IF(button_var(0)orfloor_var(0))='
ca_time:
ELSIFbutton_var
(1)='
IF(floor_var
(2)orbutton_var(3))='
next_state<
WHENothers=>
ELSIF(button_var(3)orfloor_var
(2))='
WHENS2=>
--电梯三楼状态处理;
IF(button_var(3)orfloor_var
(2))='
button_var(3):
floor_var
(2):
IF(floor_var(0)orfloor_var
(1))='
ELSIF(button_var(0)ORbutton_var
(1)ORbutton_var
(2)orfloor_var(0)orfloor_var
(1))='
next_state<
up<
ELSE
ENDCASE;
P3:
PROCESS(up,dor)--电梯上下,开关门显示;
up_down<
=up;
door<
=dor;
ENDBehav;
五、仿真结果与说明
图5.1
图5.1是基本基本功能仿真,使用者在一层电梯外按下上升(Button(0)=1)按钮,随后开门(door=1)。
使用者进入后按下到达三楼请求(floor
(2)=1),电梯关门(door=0)并上升(up_down=1)最后到达三层(position=3)并开门(door=1)。
图5.2
图5.3
图5.2是基本记忆功能仿真,电梯处于初始一层关门状态。
三层外使用者按下三层下按钮(floor(3)=1)电梯上升到三楼开门。
然而在上升到二楼时一层外有人按下上楼按钮。
此时电梯先完成上升到三层,然后再下降回到一层响应一层外请求。
图5.3表明在电梯上升过程中可以接收较高楼层的要求。
开始时有人按下一层外上升(Button(0)=1)按钮,电梯开门使用者进入并按下到达三层(floor
(2)=1)请求,此时电梯关门并上升。
在电梯上升但未到达二层时,二层外有人按下上楼(Button
(1)=1)请求,因此当电梯到达二层(position=2)后停止并开门,待二层使用者进入后再完成第一个使用者的请求到达三层。
图5.4
图5.4仿真了系统对同一楼层两个不同到达楼层的响应。
有两人先后按下二层上按钮(Button
(1)=1),此时电梯从一层上升至二层并开门。
待两人进入后按照先后顺序按下到达三层(floor
(2)=1)和到达一层(floor(0)=1)按钮,此时电梯也按照俩人按键先后顺序先到达三层(position=3),然后再到达一层(position=1)。
需要注意的是,本次实验第二个使用者在二层外的按键是错误的,因为他要到达一层应该按下二层下按钮(Button
(2)=1),然而他却错误的按下了二层上按钮(Button
(1)=1)。
因此同一使用者在电梯内和电梯外提出不同要求时,主要响应电梯内请求。
图5.5和图5.6都是综合仿真实验。
图5.5
图5.6
图5.5是一个在电梯中常见的复杂情况仿真,本实验中共有四个人提出请求。
首先一外层有人提出上升(Button(0)=1)请求并按下上升到三层(floor
(2)=1)按键,电梯上升过程中二层外分别有人按下上升(Button
(1)=1)和下降(Button
(2)=1)的按钮,同时三层外有人按下下降(Button(3)=1)按钮。
随后电梯到达二层停止,待俩人进入后都没有按下任何到达楼层请求。
电梯随即到达三层,三层使用者进入后也没有按下任何到达楼层按钮,此时电梯响应此前按下二层下降按钮的使用者的请求再次下降到二层。
图5.6是一个多人次时间交错综合仿真,首先是三层外有人提出下降请求(Button(3)=1),此时电梯开始上升;
在电梯上升到二层和三层之间时二层外有人按下下降按钮(Button
(2)=1),此时电梯继续上升到达三层,待三层使用者进入后按下到达一层(floor(0)=1)按钮后电梯下降到二层,使第二个使用者进入;
第二个人打算去一层,看到第一个人已经按下到达一层按钮,就没有再次按下。
当电梯回到一层的瞬间三层外又有人按下下降按钮(Button(3)=1),此时电梯在一层做短暂停留后再次回到三层,三层使用者进入后按下到达一层按钮(floor(0)=1),电梯再次回到一层。
通过六次仿真可以看出系统基本完成了设计要求。
六、实验难点和创新
1.本实验状态较为复杂,状态中嵌套状态,状态图的绘制比较困难。
本实验使用的状态图考虑了不同状态转移过程中的所有情况。
2.外部请求按键较多,电梯在上升过程中只能响应高于其当前所在楼层的请求,反之在下降过程中只能响应低于其当前所在楼层的请求。
而且系统要求记忆目前没有被响应的请求。
图5.2和图5.3对此功能进行了仿真。
本系统的设计考虑了实际应用中的记忆存贮问题。
3.使用者在电梯内外提出的请求不一致,例如图5.4中进行仿真的情况。
使用者本来是要下楼,但在电梯外却按下上楼按钮。
对于这种情况,系统认定使用者进入电梯后提出的请求为最终请求。
仅供个人用于学习、研究;
不得用于商业用途。
Forpersonaluseonlyinstudyandresearch;
notforcommercialuse.
Nurfü
rdenpersö
nlichenfü
rStudien,Forschung,zukommerziellenZweckenverwendetwerden.
Pourl'
é
tudeetlarechercheuniquementà
desfinspersonnelles;
pasà
desfinscommerciales.
толькодля
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- VHDL 项目 设计 三层 电梯 控制系统