【正文】
。 then in3_r:=39。039。 o_u3_r:=39。039。o_d3_r:=39。039。en_up=39。039。en_dw=39。039。opendoor=39。139。 g=g3。 elsif o_i_all=0000 then en_up=39。039。en_dw=39。039。opendoor=39。039。 g=g3。 elsif o_i_all0111 then en_up=39。139。en_dw=39。039。opendoor=39。039。 g=g4。 elsif o_i_all0100 then en_up=39。039。en_dw=39。139。opendoor=39。039。 g=g2。 end if。 else if in3_r=39。139。 or o_d3_r=39。139。 or o_u3_r=39。139。then in3_r:=39。039。 o_d3_r:=39。039。o_u3_r:=39。039。en_up=39。039。en_dw=39。039。opendoor=39。139。g=g3。 elsif o_i_all=0000 then en_up=39。039。en_dw=39。039。opendoor=39。039。 g=g3。 elsif o_i_all0100 then en_up=39。039。en_dw=39。139。opendoor=39。039。g=g2。 8 elsif o_i_all0111 then en_up=39。139。en_dw=39。039。opendoor=39。039。 g=g4。 end if。 end if。 when g4 = led=0100。 電梯到達(dá) 四 樓,數(shù)碼管顯示 4 if in4_r=39。139。 or o_d4_r=39。139。 then in4_r:=39。039。 o_d4_r:=39。039。en_up=39。039。en_dw=39。039。opendoor=39。139。g=g4。 elsif o_i_all=0000 then en_up=39。039。en_dw=39。039。opendoor=39。039。 g=g4。 elsif o_i_all1000 then en_up=39。039。en_dw=39。139。opendoor=39。039。 g=g3。 end if。 when others = null。en_up=39。039。en_dw=39。039。 電梯進(jìn)入上升或下降狀態(tài) end case。 end if。 end process。 process(clk,en_up,en_dw,opendoor,stop,overload) variable v_en : std_logic。 variable t1 : integer range 0 to 3。 開關(guān)門延時(shí)計(jì)數(shù)器 variable t2 : integer range 0 to 5。 開關(guān)門延時(shí)計(jì)數(shù)器 variable flag :std_logic。 begin if(rising_edge(clk)and stop=39。039。 and overload=39。039。)then if((en_up or en_dw or opendoor)=39。039。)then v_en:=39。139。 else v_en:=39。039。 if opendoor=39。139。 then if (t1=0 and flag=39。039。)then flag:=39。139。 t1:=3。 elsif(t1=0 and flag=39。139。)then v_en:=39。139。flag:=39。039。 else t1:=t11。 開門操作 end if。 elsif (en_up=39。139。)then 上升預(yù)操作 t1:=0。flag:=39。039。 updown=39。139。 if (t2=5)then v_en:=39。139。t2:=0。 else t2:=t2+1。 開門操作 end if。 elsif en_dw=39。139。 then 下降預(yù)操作 t1:=0。flag:=39。039。 updown=39。039。 if (t2=5)then v_en:=39。139。t2:=0。 9 else t2:=t2+1。 開門操作 end if。 end if。 end if。 end if。 en=v_en。 led_c=t1。 end process。 end behav。