【正文】
d11; cc_u=39。; if d1=39。 then d33=39。;opendoor=39。; elsif dd_cc000011 then en_up=39。; elsif dd_cc=000000 then opendoor=39。; elsif q1=3 then door=01;q1=q1+1; else q1=q1+1;door=00; end if; end if; if g1=39。 then door=10;q1=0;q2=q2+1; elsif quick=39。 then alarm=39。(3)quick:電梯接受到提前關(guān)門信號quick,電梯跳過關(guān)門等待時間。(5)led_c_d:在電梯接收到c_d3后,賦值樓層編碼為100,表示梯外有人請求下降,電梯運(yùn)行到達(dá)請求發(fā)出的樓層(三樓)后,電梯賦值變?yōu)?00,表示下降請求得到滿足或在待機(jī)。(3)down:在電梯接收到d1后,賦值為1,表示電梯受控制處于下降過程,當(dāng)電梯運(yùn)行到一樓以后,賦值變?yōu)?。五、程序仿真(一)波形輸入建立1. 新建波形編輯器編譯完全通過后,新建波形編輯器進(jìn)行設(shè)計(jì)仿真。c_d22amp。139。 then door=10;q1=0;q2=q2+1; elsif quick=39。;down=39。 then if clr=39。139。139。本程序只使用到上述的語言結(jié)構(gòu),相對簡易。進(jìn)程語句部分在begin和end process之間,進(jìn)程內(nèi)的所有語句都是按順序一個接一個執(zhí)行的。139。本設(shè)計(jì)的寄存器包括:電梯內(nèi)人請求到達(dá)一樓信號寄存(d11)、電梯內(nèi)人請求到達(dá)二樓信號寄存(d22)、 電梯內(nèi)人請求到達(dá)三樓信號寄存(d33)一樓電梯外人上升請求信號寄存(c_u11)、二樓電梯外人上升請求信號寄存(c_u22)二樓電梯外人下降請求信號寄存(c_d22)、三樓電梯外人下降請求信號寄存(c_d33)分頻信號(q)關(guān)門延時計(jì)數(shù)器(q1)、看門狗計(jì)數(shù)器(q2)電梯內(nèi)請求信號寄存器(dd)電梯外上升請求信號寄存器(cc_u)、電梯外下降請求信號寄存器(cc_d)電梯請求信號寄存器(dd_cc)開門使能信號(opendoor)電梯運(yùn)動方向信號寄存器(updown)預(yù)備上升操作使能(en_up)、預(yù)備下降預(yù)操作使能(en_dw)。如果電梯沒有接收到請求信號,電梯則返回一樓待機(jī)。其行為描述能力和程序結(jié)構(gòu)決定了他具有支持大規(guī)模設(shè)計(jì)的分解和已有設(shè)計(jì)的再利用功能。在MAX+plusII平臺上進(jìn)行數(shù)字系統(tǒng)的設(shè)計(jì)過程一般要經(jīng)過四個階段:設(shè)計(jì)輸入、項(xiàng)目編譯、項(xiàng)目校驗(yàn)和器件編程。(一)EDA技術(shù)介紹EDA技術(shù)是20世紀(jì)90年代初從計(jì)算機(jī)輔助設(shè)計(jì)(CAD)、計(jì)算機(jī)輔助制造(CAM)、計(jì)算機(jī)輔助測試(CAT)和計(jì)算機(jī)輔助工程(CAE)的概念發(fā)展而來的。本設(shè)計(jì)是基于可編程邏輯器件(PLD)技術(shù)中的甚高速集成電路硬件描述語言(VHDL)語言所開發(fā)的三層電梯控制程序。在客運(yùn)上,三層電梯雖然涉及樓層不高,應(yīng)用范圍不大,但就特殊而言,可以為一些上下樓層不方便的人們提供相當(dāng)?shù)膸椭HDL語言能夠成為標(biāo)準(zhǔn)化的硬件描述語言并獲得廣泛應(yīng)用,就在于它有以下優(yōu)點(diǎn):,設(shè)計(jì)方式多樣。隨著微電子技術(shù)和計(jì)算機(jī)技術(shù)的迅猛發(fā)展,可編程控制器更多地具有了計(jì)算機(jī)的功能,不僅能實(shí)現(xiàn)邏輯控制,還具有了數(shù)據(jù)處理、通信、網(wǎng)絡(luò)等功能。(2)電梯處于各樓層時的運(yùn)行說明處于一樓時,不管是梯內(nèi)梯外,電梯只接收上升的請求信號。在電梯進(jìn)行完關(guān)門倒數(shù)計(jì)時、超重排除以及故障排除后,關(guān)門使能信號將促使電梯關(guān)門進(jìn)入預(yù)操作狀態(tài)。event and clk=39。c_u11; cc_d=c_d33amp。039。 then d22=39。 or c_d22=39。; 有上升請求,則電梯進(jìn)入預(yù)備上升狀態(tài) end if;在上述語句中的“elsif g2=39。039。139。else q=1;alarm=39。 then c_d33=c_d3; end if; dd=d33amp。因?yàn)槭鞘褂肰HDL語言,所以文件后綴名須改成VHD。 截止時間設(shè)置圖 單位時間設(shè)置(二)電梯運(yùn)行情況仿真本設(shè)計(jì)的運(yùn)行情況比較復(fù)雜,本文主要介紹以下兩種情況。由于二樓并沒有請求,所以電梯不作停頓地下降到一樓。電梯接受到deng、c_d3和d3電梯重新進(jìn)入預(yù)備下降狀態(tài),并且c_d3和d3信號都可以對q2(q23時)進(jìn)行清零處理。139。039。139。039。139。139。039。039。139。039。139。139。139。039。139。039。139。139。附錄一 三層電梯控制的源程序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。039。電梯到達(dá)二樓,載客繼續(xù)上升。 對clk信號賦值圖在進(jìn)行仿真前,還需對仿真截止時間和最小單位時間進(jìn)行一下調(diào)整。 程序輸入界面輸入完畢后,對程序進(jìn)行保存。 then c_d22=c_d2; 對電梯外人下降請求信號進(jìn)行檢測和寄存elsif c_d3=39。139。139。; opendoor=39。; 有下降請求,則電梯進(jìn)入預(yù)備下降狀態(tài) end if; 電梯前一運(yùn)動狀態(tài)為下降 elsif d22=39。 or c_u22=39。139。amp。Architectecture和begin之間是結(jié)構(gòu)體說明區(qū),詳細(xì)定義了各種信號端的模式和取值范圍begin和end之間是結(jié)構(gòu)體語句區(qū),在此將嵌入process進(jìn)程語句去對實(shí)體行為作出說明。當(dāng)電梯接收到請求信號后,將以隨機(jī)邏輯控制的方式到達(dá)發(fā)出請求的樓層。當(dāng)電梯所在樓層低于發(fā)出梯外請求的樓層或者低于梯內(nèi)請求所要到達(dá)的目的樓層時,電梯必須在下一操作中作出上升運(yùn)行,這時的請求信號就是上升請求信號。它采用一種可編程的存儲器,在其內(nèi)部存儲執(zhí)行邏輯運(yùn)算、順序控制、定時、計(jì)數(shù)和算術(shù)運(yùn)算等操作的指令,通過數(shù)字式或模擬式的輸入輸出來控制各種類型的機(jī)械設(shè)備或生產(chǎn)過程。(二)VHDL語言介紹VHDL主要用于描述數(shù)字系統(tǒng)的結(jié)構(gòu),行為,功能和接口。因此,能使人們快速、便捷地到達(dá)目的樓層的電梯便應(yīng)運(yùn)而生了。通過程序調(diào)試及運(yùn)行仿真,結(jié)果表明,本程序可以完成:電梯運(yùn)行所在樓層指示、電梯運(yùn)行方向指示、關(guān)門延時設(shè)置、看門狗報(bào)警、超載報(bào)警、故障報(bào)警等。就FPGA/CPLD開發(fā)來說,比較常用和流行的HDL主要有ABELHDL和VHDL等。對各子模塊分別進(jìn)行邏輯設(shè)計(jì)、編譯、仿真與驗(yàn)證。 VHDL設(shè)計(jì)流程圖