VHDL电梯控制器程序设计与仿真Word文件下载.docx
《VHDL电梯控制器程序设计与仿真Word文件下载.docx》由会员分享,可在线阅读,更多相关《VHDL电梯控制器程序设计与仿真Word文件下载.docx(11页珍藏版)》请在冰豆网上搜索。
--电梯内人的请求信号
g1,g2,g3,g4,g5,g6:
--到达楼层信号
door:
outstd_logic_vector(1downto0);
--电梯门控制信号
led:
outstd_logic_vector(6downto0);
--电梯所在楼层显示
led_c_u:
outstd_logic_vector(5downto0);
--电梯外人上升请求信号显示
led_c_d:
--电梯外人下降请求信号显示
led_d:
outstd_logic_vector(5downto0);
--电梯内请求信号显示
wahaha:
outstd_logic;
--看门狗报警信号
ud,alarm:
--电梯运动方向显示,超载警告信号
up,down:
outstd_logic);
--电机控制信号和电梯运动
enddianti;
architecturebehavofdiantiis
signald11,d22,d33,d44,d55,d66:
std_logic;
--电梯内人请求信号寄存信号
signalc_u11,c_u22,c_u33,c_u44,c_u55:
--电梯外人上升请求信号寄存信号
signalc_d22,c_d33,c_d44,c_d55,c_d66:
--电梯外人下降请求信号寄存信号
signalq:
integerrange0to1;
--分频信号
signalq1:
integerrange0to6;
--关门延时计数器
signalq2:
integerrange0to9;
--看门狗计数器
signaldd,cc_u,cc_d,dd_cc:
std_logic_vector(5downto0);
--电梯内外请求信号寄存器
signalopendoor:
--开门使能信号
signalupdown:
--电梯运动方向信号寄存器
signalen_up,en_dw:
--预备上升、预备下降预操作使能信号
begin
com:
process(clk)
ifclk'
eventandclk='
1'
then
ifclr='
thenq1<
=0;
q2<
wahaha<
='
0'
;
--清除故障报警
elsiffull='
thenalarm<
q1<
--超载报警
ifq1>
=3thendoor<
="
10"
elsedoor<
00"
endif;
elsifq=1thenq<
alarm<
ifq2=3thenwahaha<
--故障报警
else
ifopendoor='
thendoor<
q1<
up<
down<
--开门操作
elsifen_up='
then--上升预操作
ifdeng='
=q2+1;
--关门中断
elsifquick='
=3;
--提前关门
elsifq1=6thendoor<
updown<
--关门完毕,电梯进入上升状态
elsifq1>
01"
=q1+1;
--电梯进入关门状态
elseq1<
door<
--电梯进入等待状态
elsifen_dw='
then--下降预操作
ifg1='
thenled<
1001111"
--电梯到达1楼,数码管显示1
ifd11='
orc_u11='
thend11<
c_u11<
opendoor<
--有当前层的请求,则电梯进入开门状态
elsifdd_cc>
"
000001"
thenen_up<
opendoor<
--有上升请求,则电梯进入预备上升状态
elsifdd_cc="
000000"
thenopendoor<
--无请求时,电梯停在1楼待机
elsifg2='
0010010"
--电梯到达2楼,数码管显示2
ifupdown='
then--电梯前一运动状态位上升
ifd22='
orc_u22='
thend22<
c_u22<
--有当前层的请求,则电梯进入开门状态
000011"
--有上升请求,则电梯进入预备上升状态
elsifdd_cc<
000010"
thenen_dw<
--有下降请求,则电梯进入预备下降状态
--电梯前一运动状态为下降
elsifd22='
orc_d22='
c_d22<
--有当前层的请求,则电梯进入开门状态
--有上升请求,则电梯进入预备上升状态
elsifg3='
0000110"
--电梯到达3楼,数码管显示3
ifd33='
orc_u33='
thend33<
c_u33<
000111"
000100"
elsifd33='
orc_d33='
c_d33<
elsifg4='
1001100"
--电梯到达4楼,数码管显示4
ifd44='
orc_u44='
thend44<
c_u44<
001111"
001000"
elsifd44='
orc_d44='
c_d44<
elsifg5='
0100100"
--电梯到达5楼,数码管显示5
ifd55='
orc_u55='
thend55<
c_u55<
011111"
010000"
elsifd55='
orc_d55='
c_d55<
elsifg6='
0100000"
--电梯到达6楼,数码管显示6
ifd66='
orc_d66='
thend66<
c_d66<
100000"
elseen_up<
en_dw<
--电梯进入上升或下降状态
elseq<
=1;