【文章內(nèi)容簡(jiǎn)介】
信號(hào)處理,具體說(shuō)明給出如下:process(clk)beginif clk39。event and clk=39。139。 then if clr=39。139。 then q1=0。q2=0。wahaha=39。039。清除故障報(bào)警 elsif full=39。139。 then alarm=39。139。 q1=0。超載報(bào)警if q1=3 then door=10。 else door=00。 end if。 elsif q=1 then q=0。alarm=39。039。 if q2=3 then wahaha=39。139。 故障報(bào)警 else if opendoor=39。139。 then door=10。q1=0。q2=0。up=39。039。down=39。039。開(kāi)門(mén)操作 elsif en_up=39。139。 then 上升預(yù)操作 if deng=39。139。 then door=10。q1=0。q2=q2+1。關(guān)門(mén)中斷 elsif quick=39。139。 then q1=3。提前關(guān)門(mén) elsif q1=6 then door=00。updown=39。139。up=39。139。 關(guān)門(mén)完畢,電梯進(jìn)入上升狀態(tài) elsif q1=3 then door=01。q1=q1+1。 電梯進(jìn)入關(guān)門(mén)狀態(tài) else q1=q1+1。door=00。 電梯進(jìn)入等待狀態(tài) end if。 elsif en_dw=39。139。 then 下降預(yù)操作 if deng=39。139。 then door=10。q1=0。q2=q2+1。 elsif quick=39。139。 then q1=3。 elsif q1=6 then door=00。updown=39。039。down=39。139。 elsif q1=3 then door=01。q1=q1+1。 else q1=q1+1。door=00。 end if。 end if。else q=1。alarm=39。039。 清除超載報(bào)警 if d1=39。139。 then d11=d1。 對(duì)電梯內(nèi)人請(qǐng)求信號(hào)進(jìn)行檢測(cè)和寄存 elsif d2=39。139。 then d22=d2。 elsif d3=39。139。 then d33=d3。 elsif d4=39。139。 then d44=d4。 elsif d5=39。139。 then d55=d5。 elsif d6=39。139。 then d66=d6。 end if。 if c_u1=39。139。 then c_u11=c_u1。 對(duì)電梯外人上升請(qǐng)求信號(hào)進(jìn)行檢測(cè)和寄存 elsif c_u2=39。139。 then c_u22=c_u2。 elsif c_u3=39。139。 then c_u33=c_u3。 elsif c_u4=39。139。 then c_u44=c_u4。 elsif c_u5=39。139。 then c_u55=c_u5。 end if。 if c_d2=39。139。 then c_d22=c_d2。 對(duì)電梯外人下降請(qǐng)求信號(hào)進(jìn)行檢測(cè)和寄存 elsif c_d3=39。139。 then c_d33=c_d3。 elsif c_d4=39。139。 then c_d44=c_d4。 elsif c_d5=39。139。 then c_d55=c_d5。 elsif c_d6=39。139。 then c_d66=c_d6。end if。 dd=d66amp。d55amp。d44amp。d33amp。d22amp。d11。 電梯內(nèi)人請(qǐng)求信號(hào)并置 cc_u=39。039。amp。c_u55amp。c_u44amp。c_u33amp。c_u22amp。c_u11。 電梯外人上升請(qǐng)求信號(hào)并置 cc_d=c_d66amp。c_d55amp。c_d44amp。c_d33amp。c_d22amp。39。039。 電梯外人下降請(qǐng)求信號(hào)并置 dd_cc=dd or cc_u or cc_d。 電梯內(nèi)、外人請(qǐng)求信號(hào)進(jìn)行綜合 end if。 ud=updown。 電梯運(yùn)動(dòng)狀態(tài)顯示 led_d=dd。 電梯內(nèi)人請(qǐng)求信號(hào)顯示 led_c_u=cc_u。 電梯外人上升請(qǐng)求信號(hào)顯示 led_c_d=cc_d。 電梯外人下降請(qǐng)求信號(hào)顯示end if。 程序調(diào)試(1)建立好工作目錄,以便設(shè)計(jì)工程項(xiàng)目的存儲(chǔ),打開(kāi)QuartusII軟件,其初始界面如圖8所示。(2)在工具欄中選擇“新建”按鈕。選擇“VHDL File”,如圖9所示。(3) 在文本輸入界面內(nèi)進(jìn)行程序輸入,如圖10所示。(4) 輸入完畢后,需要對(duì)程序進(jìn)行保存。注意文件名和實(shí)體定義名必須保持一致,即dianti,文件后綴名為vhd。(5) 保存以后,對(duì)程序進(jìn)行編譯。在編譯前,需要把文件設(shè)置為頂層文件或工程文件Project。選擇菜單“Project”中的“Set as TopLevel Entity”。(6) 在“QuartusII”里選擇“Processing”下拉菜單中的“Start Compilation”,此時(shí),QuartusII軟件會(huì)對(duì)程序進(jìn)行糾錯(cuò)等處理。當(dāng)程序被確認(rèn)無(wú)誤后會(huì)出現(xiàn)如下界面,如圖11所示。編譯完成,程序調(diào)試結(jié)束。四 程序仿真(1)編譯完成后,新建波形編輯器進(jìn)行設(shè)計(jì)仿真。選擇菜單“File” 中的“New”項(xiàng),在New窗口中選擇“Vector Waveform File”,單擊OK按鈕,即出現(xiàn)空白的波形編譯器(圖12)。(2)設(shè)置仿真時(shí)間區(qū)域,在“Edit”菜單中選擇“End Time”項(xiàng),在彈出窗口中設(shè)置,設(shè)置完后對(duì)文件進(jìn)行保存。同樣使用文件名dianti,后綴名則改為vwf。(3)將工程dianti的端口信號(hào)名選入波形編輯器中。方法是在編輯器左邊Name下的空白處右擊選擇“Insert Node Or Bus”項(xiàng),彈出對(duì)話框如圖13所示,在Node Filter框中選“Pins:all”,單擊List按鈕,下方的Nodes Found 窗口中出現(xiàn)設(shè)計(jì)工程的所有端口引腳名。(5)創(chuàng)立輸入波形。從圖13左邊框中往右邊框加入需要的信號(hào)節(jié)點(diǎn),就可對(duì)輸入信號(hào)逐一賦值,便可對(duì)程序進(jìn)行仿真,觀察輸出信號(hào),得出結(jié)論。如對(duì)時(shí)鐘信賦于周期如下圖14所示。設(shè)置好的輸入波形如圖15所示。 仿真步驟(1)仿真器參數(shù)設(shè)置。選擇菜單“Assignment”中的“Settings”,在“Settings”窗口下選擇“Category”下的“Simulator”,右側(cè)設(shè)置如下圖16所示。(2)啟動(dòng)仿真器。現(xiàn)在所有設(shè)置進(jìn)行完畢,在菜單Processing項(xiàng)下選擇Start Simulation,直到出現(xiàn)Simulation was successful,仿真結(jié)束。仿真結(jié)果如下圖17和圖18。 電梯功能實(shí)現(xiàn)與仿真結(jié)果分析以下將以“電梯停在一樓時(shí),接受到請(qǐng)求信號(hào)c_dc_dc_u4和d6”為例,分析操作這些請(qǐng)求信號(hào)完成的過(guò)程,并在電梯運(yùn)行到四樓時(shí)對(duì)超載報(bào)警、提前關(guān)門(mén)、延時(shí)關(guān)門(mén)、故障報(bào)警進(jìn)行仿真分析。圖17 電梯控制程序仿真圖圖18電梯控制程序仿真局部放大圖1從上面兩個(gè)仿真圖可以看出:1. 電梯停在一樓時(shí),接受到請(qǐng)求信號(hào)c_dc_dc_u4和d6,并把請(qǐng)求信號(hào)寫(xiě)入相應(yīng)的寄存器。led顯示電梯所在樓層;led_d、ledc_u和led_c_d顯示用戶的請(qǐng)求。2. 電梯經(jīng)過(guò)準(zhǔn)備上升狀態(tài)后,進(jìn)入上升狀態(tài),到達(dá)2樓,3樓時(shí),不停繼續(xù)前進(jìn)。3. 電梯上升到4樓時(shí),響應(yīng)請(qǐng)求(c_u4),開(kāi)門(mén)載客;進(jìn)入預(yù)備上升狀態(tài)。圖19 電梯控制程序仿真局部放大圖2從上圖可以看出:1. 電梯上升到6樓時(shí),響應(yīng)請(qǐng)求(d_6),開(kāi)門(mén)卸客;進(jìn)入預(yù)備下降狀態(tài)。2. 電梯下降經(jīng)過(guò)5樓,4樓都不停,到達(dá)3樓開(kāi)門(mén)卸客,電梯進(jìn)入預(yù)備下降狀態(tài)。圖20 電梯控制程序仿真局部放大圖3從上圖可以看出:1. 電梯到達(dá)3樓時(shí),響應(yīng)請(qǐng)求(c_d3),開(kāi)門(mén)載客;進(jìn)入預(yù)備下降狀態(tài)。2. 電梯在預(yù)備下降狀態(tài)下,電梯應(yīng)超載(full=39。139。),發(fā)出超載警報(bào)alarm;超載信號(hào)消失(full=39。039。),電梯重新進(jìn)入預(yù)備下降狀態(tài)。4. 電梯接受到提前關(guān)門(mén)信號(hào)quick,電梯跳過(guò)關(guān)門(mén)等待時(shí)間。仿真圖中q1從1跳到3;進(jìn)入關(guān)門(mén)狀態(tài)。5. 電梯接受到deng、c_d3和d3電梯重新進(jìn)入預(yù)備下降狀態(tài),并且c_d3和d3信號(hào)都可以對(duì)q2(q23時(shí))進(jìn)行清零處理。6. 當(dāng)連續(xù)的關(guān)門(mén)中斷的次數(shù)超過(guò)3次時(shí),不認(rèn)為是出自乘客的需要,而認(rèn)為是故障,并報(bào)警,等技術(shù)員處理完故障時(shí),用clr信號(hào)才可以清除報(bào)警。圖21 電梯控制程序仿真局部放大圖4從上圖可以看出:1. 電梯排除故障后繼續(xù)運(yùn)行。2. 電梯執(zhí)行完所有請(qǐng)求時(shí)電梯將停在1樓待機(jī)。五 設(shè)計(jì)總結(jié)電梯控制器系統(tǒng)設(shè)計(jì)已經(jīng)全部完成,基本實(shí)現(xiàn)了預(yù)期效果,實(shí)現(xiàn)了電梯按預(yù)定運(yùn)行規(guī)則上升、下降、載客等功能,并設(shè)計(jì)了提前關(guān)門(mén)功能,使電梯運(yùn)行更便捷,設(shè)計(jì)了關(guān)門(mén)延時(shí)功能、超載報(bào)警功能、故障報(bào)警功能,使電梯運(yùn)行更加安全更加可靠。在本設(shè)計(jì)中,因?yàn)榭紤]了擴(kuò)展性,所以在信號(hào)定義的時(shí)候就使用了二進(jìn)制的向量,而不是整數(shù)。在設(shè)計(jì)方法上也做了特殊的設(shè)計(jì),所以使得擴(kuò)展性較好。如果要實(shí)現(xiàn)n層電梯的控制,首先在端口的地方就要加入所有的按鍵,而指示燈只要把向量中的6改成n就可以了。在本設(shè)計(jì)過(guò)程中還需要改進(jìn)的地方有,電梯運(yùn)行規(guī)則的優(yōu)化(如設(shè)計(jì)閑時(shí)忙時(shí)控制規(guī)則)、電梯運(yùn)行速度的控制、設(shè)計(jì)更多的報(bào)警功能等。電梯控制系統(tǒng)的設(shè)計(jì)中體現(xiàn)了VHDL覆蓋面是如此的廣,描述能力強(qiáng),是一個(gè)多層次的硬件描述語(yǔ)言及運(yùn)行速度快,使用方便,便于修改,設(shè)計(jì)簡(jiǎn)單等特點(diǎn)。本設(shè)計(jì)在實(shí)用方面和參考方面具有一定的價(jià)值。