【正文】
附錄一 三層電梯控制的源程序library ieee;use ;use ;use ;entity dianti is port ( clk : in std_logic; full,deng,quick,clr : in std_logic; c_u1,c_u2: in std_logic; c_d2,c_d3: in std_logic; d1,d2,d3: in std_logic; g1,g2,g3: in std_logic; door : out std_logic_vector(1 downto 0); led : out std_logic_vector(6 downto 0); led_c_u:out std_logic_vector(2 downto 0); led_c_d:out std_logic_vector(2 downto 0); led_d : out std_logic_vector(2 downto 0); wahaha : out std_logic; ud,alarm : out std_logic; up,down : out std_logic ); end dianti;architecture behav of dianti issignal d11,d22,d33:std_logic; signal c_u11,c_u22:std_logic; signal c_d22,c_d33:std_logic; signal q:integer range 0 to 1; signal q1:integer range 0 to 6; signal q2:integer range 0 to 9; signal dd,cc_u,cc_d,dd_cc:std_logic_vector(2 downto 0); signal opendoor:std_logic; signal updown:std_logic; signal en_up,en_dw:std_logic; begin:process(clk)beginif clk39。139。139。039。139。039。139。139。139。139。139。139。039。139。039。139。139。039。139。039。039。139。039。139。139。139。139。039。139。039。039。139。139。139。d22amp。c_u22amp。039。c_d22amp。039。139。139。139。139。039。039。139。039。139。039。039。139。039。139。139。139。039。139。139。039。139。039。139。139。039。139。139。139。139。039。139。139。039。139。通過(guò)這次畢業(yè)設(shè)計(jì),無(wú)論從選題到定稿,從理論到實(shí)踐都使我學(xué)到了很多東西,它不僅可以鞏固以前所學(xué)過(guò)的知識(shí),而且學(xué)到了很多在書(shū)本上所沒(méi)有學(xué)到過(guò)的知識(shí)。q1信號(hào)從1 跳到3,進(jìn)入關(guān)門狀態(tài)。這表示當(dāng)電梯首次關(guān)門失敗后(即deng首次賦值為1時(shí)),電梯便一直處于故障報(bào)警狀態(tài)下,直到技術(shù)員處理完故障后,用clr才可以清除其報(bào)警。電梯接受到deng、c_d3和d3電梯重新進(jìn)入預(yù)備下降狀態(tài),并且c_d3和d3信號(hào)都可以對(duì)q2(q23時(shí))進(jìn)行清零處理。139。(6)led_d:在電梯接收到d3后,賦值為100,表示梯內(nèi)請(qǐng)求到達(dá)樓層編碼為100(三樓),電梯運(yùn)行到達(dá)請(qǐng)求目的樓層(三樓)后,電梯賦值變?yōu)?00,表示請(qǐng)求樓層得到滿足或在待機(jī)。(2)ud:從電梯接收請(qǐng)求信號(hào)后到電梯運(yùn)行到三樓為止,賦值為1,表示電梯此時(shí)向上運(yùn)行,其余時(shí)段都為0,表示電梯此時(shí)向下運(yùn)行或者待機(jī)。由于二樓并沒(méi)有請(qǐng)求,所以電梯不作停頓地下降到一樓。(4)led:電梯每運(yùn)行到達(dá)一層時(shí),都會(huì)有不同的信號(hào)輸出: 100111001000000110。觀察以下信號(hào):up、ud、down、led、led_c_d、led_d。 截止時(shí)間設(shè)置圖 單位時(shí)間設(shè)置(二)電梯運(yùn)行情況仿真本設(shè)計(jì)的運(yùn)行情況比較復(fù)雜,本文主要介紹以下兩種情況。 添加節(jié)點(diǎn)信號(hào)4. 對(duì)輸入信號(hào)賦值通過(guò)編輯器左側(cè)的一些快捷按鈕對(duì)所加節(jié)點(diǎn)中的輸入信號(hào)進(jìn)行相關(guān)的賦值后,就可對(duì)程序進(jìn)行仿真,觀察輸出信號(hào),得出結(jié)論。通過(guò)“新建”按鈕,選擇“Waveform Editor file”。 設(shè)置頂層文件6. 程序編譯在“MAX+plusII”下拉按鈕里選擇”Compiler”,對(duì)程序進(jìn)行編譯。因?yàn)槭鞘褂肰HDL語(yǔ)言,所以文件后綴名須改成VHD。在選擇輸入路徑時(shí),選擇“Text Editor File”以進(jìn)行文本輸入。39。amp。 then c_d33=c_d3; end if; dd=d33amp。 then c_u22=c_u2; end if; if c_d2=39。 then d33=d3; end if;if c_u1=39。 then d11=d1; 對(duì)電梯內(nèi)人請(qǐng)求信號(hào)進(jìn)行檢測(cè)和寄存 elsif d2=39。else q=1;alarm=39。139。139。139。139。139。039。139。039。139。139。 七段數(shù)字顯示器(3)請(qǐng)求信號(hào)處理在進(jìn)程執(zhí)行單元里,對(duì)電梯在樓層時(shí)的操作情況作出了描述,例如:開(kāi)門、關(guān)門延時(shí)、超載報(bào)警、故障報(bào)警以及電梯內(nèi)的請(qǐng)求信號(hào)處理,具體說(shuō)明如下::process(clk)beginif clk39。; 有上升請(qǐng)求,則電梯進(jìn)入預(yù)備上升狀態(tài) end if;在上述語(yǔ)句中的“elsif g2=39。; 有下降請(qǐng)求,則電梯進(jìn)入預(yù)備下降狀態(tài) elsif dd_cc011 then en_up=39。;有當(dāng)前層的請(qǐng)求,則電梯進(jìn)入開(kāi)門狀態(tài)elsif dd_cc010 then en_dw=39。; c_d22=39。 or c_d22=39。; opendoor=39。; opendoor=39。; opendoor=39。 then d22=39。 then 電梯前一運(yùn)動(dòng)狀態(tài)位上升 if d22=39。(2)電梯信號(hào)定義在實(shí)體模塊中,對(duì)電梯的主要信號(hào)都一一作出了定義,具體說(shuō)明如下:port ( clk : in std_logic; 時(shí)鐘信號(hào)full,deng,quick,clr : in std_logic; 超載、關(guān)門中斷、提前關(guān)門清除報(bào)警信號(hào) c_u1,c_u2: in std_logic; 電梯外人的上升請(qǐng)求信號(hào) c_d2,c_d3: in std_logic; 電梯外人的下降請(qǐng)求信號(hào) d1,d2,d3 : in std_logic; 電梯內(nèi)人的請(qǐng)求信號(hào) g1,g2,g3 : in std_logic; 到達(dá)樓層信號(hào) door : out std_logic_vector(1 downto 0); 電梯門控制信號(hào) led : out std_logic_vector(6 downto 0); 電梯所在樓層顯示 led_c_u:out std_logic_vector(2 downto 0); 電梯外人上升請(qǐng)求信號(hào)顯示 led_c_d:out std_logic_vector(2 downto 0); 電梯外人下降請(qǐng)求信號(hào)顯示 led_d : out std_logic_vector(2 downto 0); 電梯內(nèi)請(qǐng)求信號(hào)顯示 wahaha : out std_logic; 看門狗報(bào)警信號(hào) ud,alarm : out std_logic; 電梯運(yùn)動(dòng)方向顯示,超載警告信號(hào)up,down : out std_logic ); 電機(jī)控制信號(hào)和電梯運(yùn)動(dòng)在結(jié)構(gòu)體中對(duì)電梯的運(yùn)行行為作出描述,其中以電梯處于二樓的情況相對(duì)復(fù)雜,對(duì)此作如下說(shuō)明:elsif g2=39。139。039。139。3. 具體語(yǔ)句設(shè)計(jì)說(shuō)明(1)賦值符號(hào)上文已說(shuō)明了構(gòu)成VHDL程序的兩大部分――實(shí)體和結(jié)構(gòu)體的相關(guān)語(yǔ)句。; dd_cc=dd or cc_u or cc_d; end if; ud=updown; led_d=dd; led_c_u=cc_u; led_c_d=cc_d;