《电梯控制器 VHDL》由会员分享,可在线阅读,更多相关《电梯控制器 VHDL(23页珍藏版)》请在金锄头文库上搜索。
1、1、 每层电梯的入口处设有上下请求开关,电梯内设有乘客到达层次的停站请求开关。2、 设有电梯所处位置指示装置及电梯运行模式(上升或下降)指示装置。3、 电梯每秒升降一层。4、 电梯到达有停站请求的楼层后,经过 1s 电梯打开,开门只是灯亮,开门 4s 后,电梯门关闭(关门指示灯灭),电梯继续运行,直至执行完请求信号后停在当前楼层。5、 能记忆电梯内外的所以请求信号,并按照电梯运行规则依次响应,每个请求信号保留至执行后消除。6、 电梯运行规则:当电梯处于上升模式时,只响应比电梯所在位置高的上楼信号,由下至上依次执行,直到最后一个上楼请求执行完毕,如更高层有下楼请求时,则直接升到有下降请求的最高楼
2、接客,然后进入下降模式,但电梯处于下降模式时,则与上升模式相反。7、 电梯初始状态为一层门开。library ieee; use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity led1 isport(ledin:in std_logic_vector(3 downto 0);ledout:out std_logic_vector(6 downto 0);end led1;architecture a_led of led1 isbeginprocess(ledin)begin case ledin is -The
3、sequence is “g f e d c b a“when “0000“ = ledout ledout ledout ledout ledout ledout ledout ledout ledout ledout ledout ledout ledout ledout ledout ledout ledoutnum) and (st_ch=1) or (upin=1) thencase t iswhen 1 = ur(1) ur(2) ur(3) ur(4) ur(5) ur(6)Null;end case;elsif (hand=1) then case num iswhen 1 =
4、 ur(1) ur(2) ur(3) ur(4) ur(5) ur(6)Null;end case;end if;if (t dr(1) dr(2) dr(3) dr(4) dr(5) dr(6)Null;end case;elsif (hand=1) thencase num iswhen 1 = dr(1) dr(2) dr(3) dr(4) dr(5) dr(6)Null;end case;end if;elseurif (ur(1) or dr(1)0) thenladd(1)if (ur(2) or dr(2)0) thenladd(1)“0000“) or(ur(1) or dr(
5、1)=0) thenladdif (ur(3) or dr(3)0) thenladd(1)“000“) or(ur(2 downto 1) or dr(2 downto 1)=“00“) thenladdif (ur(4) or dr(4)0) thenladd(1)“00“) or(ur(3 downto 1) or dr(3 downto 1)=“000“) thenladdif (ur(5) or dr(5)0) thenladd(1)0) or(ur(4 downto 1) or dr(4 downto 1)=“0000“) thenladdif (ur(6) or dr(6)0)
6、thenladd(1)null;end case;end if;end if;elseladdnum) and (st_ch=0) or (upin=0) thencase t iswhen 1 = ur(1) ur(2) ur(3) ur(4) ur(5) ur(6)Null;end case;elsif (hand=1) then case num iswhen 1 = ur(1) ur(2) ur(3) ur(4) ur(5) ur(6)Null;end case;end if;if (t dr(1) dr(2) dr(3) dr(4) dr(5) dr(6)Null;end case;
7、elsif (hand=1) thencase num iswhen 1 = dr(1) dr(2) dr(3) dr(4) dr(5) dr(6)Null;end case;end if;elseurif (ur(1) or dr(1)0) thenladd(1)if (ur(2) or dr(2)0) thenladd(1)“0000“) or(ur(1) or dr(1)=0) thenladdif (ur(3) or dr(3)0) thenladd(1)“000“) or(ur(2 downto 1) or dr(2 downto 1)=“00“) thenladdif (ur(4)
8、 or dr(4)0) thenladd(1)“00“) or(ur(3 downto 1) or dr(3 downto 1)=“000“) thenladdif (ur(5) or dr(5)0) thenladd(1)0) or(ur(4 downto 1) or dr(4 downto 1)=“0000“) thenladdif (ur(6) or dr(6)0) thenladd(1)null;end case;end if;end if;elseladd=“00“;end if;end process p3;p4:process(div,wai_t,ladd,closex,delayx)beginif (divevent and div=1) thenif (wai_t=“000“ or closex=1) thenwai_t=“110“;elseif (delayx=0) thenwai_t=wai_t-1;elsewai_t=“010“;end if;if (wai_t=“001“) thenif (ladd=“11“) then liftor=liftor+1;elsif (ladd=“10“) thenliftor=liftor-1;end if;end if;end if;end if;end process p4;end lift1_arch;