【正文】
模式5。 end process。 電梯外人上升請(qǐng)求信號(hào)顯示 led_c_d=cc_d。 電梯運(yùn)動(dòng)狀態(tài)顯示 led_d=dd。 電梯內(nèi)、外人請(qǐng)求信號(hào)進(jìn)行綜合 end if。039。c_d22amp。c_d44amp。 電梯外人上升請(qǐng)求信號(hào)并置 cc_d=c_d66amp。c_u22amp。c_u44amp。amp。 電梯內(nèi)人請(qǐng)求信號(hào)并置 cc_u=39。d22amp。d44amp。 dd=d66amp。 then c_d66=c_d6。 elsif c_d6=39。139。 then c_d44=c_d4。 elsif c_d4=39。139。 then c_d22=c_d2。 if c_d2=39。 then c_u55=c_u5。 elsif c_u5=39。139。 then c_u33=c_u3。 elsif c_u3=39。139。 then c_u11=c_u1。 if c_u1=39。 then d66=d6。 elsif d6=39。139。 then d44=d4。 elsif d4=39。139。 then d22=d2。 對(duì)電梯內(nèi)人請(qǐng)求信號(hào)進(jìn)行檢測(cè)和寄存 elsif d2=39。139。039。 else q=1。 電梯進(jìn)入上升或下降狀態(tài) end if。en_dw=39。 else en_up=39。039。139。139。039。039。139。139。 then led=0100000。 elsif g6=39。039。139。039。139。139。039。039。139。139。 end if。 opendoor=39。 elsif dd_cc010000 then en_dw=39。 opendoor=39。 elsif dd_cc011111 then en_up=39。opendoor=39。 c_u55=39。 then d55=39。 or c_u55=39。 then if d55=39。 電梯到達(dá)5樓,數(shù)碼管顯示5 if updown=39。139。 end if。 opendoor=39。 elsif dd_cc001111 then en_up=39。 opendoor=39。 elsif dd_cc001000 then en_dw=39。 opendoor=39。 c_d44=39。 then d44=39。 or c_d44=39。 elsif d44=39。039。139。039。139。139。039。039。139。139。139。 then led=1001100。 elsif g4=39。039。139。039。139。139。039。039。139。139。 end if。 opendoor=39。 elsif dd_cc000100 then en_dw=39。 opendoor=39。 elsif dd_cc000111 then en_up=39。opendoor=39。 c_u33=39。 then d33=39。 or c_u33=39。 then if d33=39。 電梯到達(dá)3樓,數(shù)碼管顯示3 if updown=39。139。 有上升請(qǐng)求,則電梯進(jìn)入預(yù)備上升狀態(tài) end if。 opendoor=39。 有下降請(qǐng)求,則電梯進(jìn)入預(yù)備下降狀態(tài) elsif dd_cc000011 then en_up=39。 opendoor=39。 有當(dāng)前層的請(qǐng)求,則電梯進(jìn)入開(kāi)門(mén)狀態(tài) elsif dd_cc000010 then en_dw=39。opendoor=39。 c_d22=39。 then d22=39。 or c_d22=39。 電梯前一運(yùn)動(dòng)狀態(tài)為下降 elsif d22=39。039。139。039。139。139。039。039。139。139。139。 then led=0010010。 elsif g2=39。039。039。139。139。039。039。139。139。 then led=1001111。 if g1=39。 end if。 else q1=q1+1。 elsif q1=3 then door=01。down=39。updown=39。 then q1=3。 elsif quick=39。q1=0。139。139。 電梯進(jìn)入等待狀態(tài) end if。 電梯進(jìn)入關(guān)門(mén)狀態(tài) else q1=q1+1。 關(guān)門(mén)完畢,電梯進(jìn)入上升狀態(tài) elsif q1=3 then door=01。up=39。updown=39。 then q1=3。 關(guān)門(mén)中斷 elsif quick=39。q1=0。139。139。039。039。q2=0。 then door=10。 故障報(bào)警 else if opendoor=39。 if q2=3 then wahaha=39。alarm=39。 end if。 超載報(bào)警if q1=3 then door=10。139。139。039。q2=0。139。139。 預(yù)備上升、預(yù)備下降預(yù)操作使能信號(hào)begin:process(clk)beginif clk39。 開(kāi)門(mén)使能信號(hào)signal updown:std_logic。 看門(mén)狗計(jì)數(shù)器signal dd,cc_u,cc_d,dd_cc:std_logic_vector(5 downto 0)。 分頻信號(hào)signal q1:integer range 0 to 6。 電梯外人上升請(qǐng)求信號(hào)寄存信號(hào)signal c_d22,c_d33,c_d44,c_d55,c_d66:std_logic。architecture behav of dianti issignal d11,d22,d33,d44,d55,d66:std_logic。 電梯運(yùn)動(dòng)方向顯示,超載警告信號(hào)up,down : out std_logic )。 電梯內(nèi)請(qǐng)求信號(hào)顯示 wahaha : out std_logic。 電梯外人上升請(qǐng)求信號(hào)顯示 led_c_d:out std_logic_vector(5 downto 0)。 電梯門(mén)控制信號(hào) led : out std_logic_vector(6 downto 0)。 電梯內(nèi)人的請(qǐng)求信號(hào) g1,g2,g3,g4,g5,g6 : in std_logic。 電梯外人的上升請(qǐng)求信號(hào) c_d2,c_d3,c_d4,c_d5,c_d6 : in std_logic。 時(shí)鐘信號(hào)(頻率為2Hz) full,deng,quick,clr : in std_logic。use 。use 。剛開(kāi)始時(shí)雖然對(duì)程序有點(diǎn)怕,因?yàn)槌绦蜻€是比較多的,但認(rèn)真的分析完之后其實(shí)挺簡(jiǎn)單的,在不同的層邏輯是不一樣的,比如在第一層只能上,不能下,而如果是只做個(gè)三層電梯的哈,在第三層情況,只能下不能上,這些都是我們要考慮的問(wèn)題。所以在編寫(xiě)程序時(shí)我們要想清楚它有那些狀態(tài),有哪些情況,也就是邏輯關(guān)系,當(dāng)然在這基礎(chǔ)上我們可以把層數(shù)一直往上加,只是注意在多層情況是不一樣的,但所以關(guān)系和狀態(tài)還是一樣的。所以這里我們要有個(gè)優(yōu)先就是電梯里面優(yōu)先電梯外面的,之后根據(jù)就近原則來(lái)上、下。 硬件測(cè)試結(jié)果這圖是剛開(kāi)始電梯層數(shù)下圖是按鍵圖按鍵圖電梯在2樓 電梯在三樓結(jié)束語(yǔ)通過(guò)編寫(xiě)VHDL 程序,不僅是對(duì)程序的編寫(xiě)有了比較深的了解,還對(duì)一些時(shí)序和電