

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、<p><b> 1 緒論</b></p><p> 當(dāng)今世界,部分地區(qū)人口高度密集,人和土地資源短缺的矛盾日益激化。這就注定了必須合理的利用土地去解決人與土地的矛盾。而興建高層建筑是其中有效措施之一。因此能使人們快速便捷地到達(dá)目的樓層的電梯就應(yīng)運(yùn)而生了。</p><p> 電梯作為高層建筑的重要交通工具與人們的工作日益緊密FPGA/CPLD作為新一代
2、工業(yè)控制器,以其高可靠性和技術(shù)先進(jìn)性,在電梯控制中得到廣泛應(yīng)用,從而使電梯由傳統(tǒng)的繼電器控制方式發(fā)展為計(jì)算機(jī)控制的一個(gè)重要方向,成為當(dāng)前電梯控制和技術(shù)改造的熱點(diǎn)之一。</p><p> EDA是電子設(shè)計(jì)自動(dòng)化(Electronic Design Automation)的縮寫,在20世紀(jì)90年代初從計(jì)算機(jī)輔助設(shè)計(jì)(CAD)、計(jì)算機(jī)輔助制造(CAM)、計(jì)算機(jī)輔助測(cè)試(CAT)和計(jì)算機(jī)輔助工程(CAE)的概念發(fā)展而來
3、的。EDA技術(shù)就是以計(jì)算機(jī)為工具,設(shè)計(jì)者在EDA軟件平臺(tái)上,用硬件描述語言VHDL完成設(shè)計(jì)文件,然后由計(jì)算機(jī)自動(dòng)地完成邏輯編譯、化簡、分割、綜合、優(yōu)化、布局、布線和仿真,直至對(duì)于特定目標(biāo)芯片的適配編譯、邏輯映射和編程下載等工作。EDA技術(shù)的出現(xiàn),極大地提高了電路設(shè)計(jì)的效率和可行性,減輕了設(shè)計(jì)者的勞動(dòng)強(qiáng)度。 隨著EDA技術(shù)的快速發(fā)展,電子設(shè)計(jì)自動(dòng)化(EDA)逐漸成為重要的設(shè)計(jì)手段,已經(jīng)廣泛應(yīng)用于模擬與數(shù)字電路系統(tǒng)等許多領(lǐng)域。它是一
4、種實(shí)現(xiàn)電子系統(tǒng)或電子產(chǎn)品自動(dòng)化設(shè)計(jì)的技術(shù),與電子技術(shù)、微電子技術(shù)的發(fā)展密切相關(guān),并吸收了計(jì)算機(jī)科學(xué)領(lǐng)域的大多數(shù)最新研究成果,以高性能的計(jì)算機(jī)作為工作平臺(tái),促進(jìn)了工程發(fā)展。傳統(tǒng)單片機(jī)設(shè)計(jì)的電梯控制外圍電路復(fù)雜,性能不穩(wěn)定,而采用EDA設(shè)計(jì),卻擁有電子系統(tǒng)小型化、低功耗、高可靠性、開發(fā)過程投資小、周期短等優(yōu)點(diǎn),而且還可以通過軟件編程對(duì)</p><p> 電梯控制器是控制電梯按顧客要求自動(dòng)上下的裝置。本文采用VHDL
5、語言來設(shè)計(jì)實(shí)用三層電梯控制器,其代碼具有良好的可讀性和易理解性。</p><p> 2 電梯控制器的設(shè)計(jì)</p><p><b> 2.1 設(shè)計(jì)要求</b></p><p> (1)設(shè)計(jì)一個(gè)三層樓房自動(dòng)電梯控制器,用八個(gè) LED顯示電梯行進(jìn)過程,并有數(shù)碼管顯示電梯當(dāng)前所在樓層位置;</p><p> ?。?)每層電
6、梯入口處設(shè)有請(qǐng)求按鈕開關(guān),請(qǐng)求按鈕按下則相應(yīng)樓層的LED 亮;</p><p><b> 2.2 電梯功能</b></p><p> 2.2.1 電梯運(yùn)行規(guī)則</p><p> 當(dāng)電梯處在上升模式時(shí),只響應(yīng)比電梯所在位置高的上樓請(qǐng)求,由下向上逐個(gè)執(zhí)行,直到最后一個(gè)上樓請(qǐng)求執(zhí)行完畢。如果高層有下樓請(qǐng)求,直接升到有下樓請(qǐng)求的最高樓層,然后進(jìn)入
7、下降模式。</p><p> ?。?)請(qǐng)求信號(hào)分析:電梯的請(qǐng)求信號(hào)可分為梯內(nèi)請(qǐng)求和梯外請(qǐng)求。</p><p> ?。?)電梯處于各樓層時(shí)的運(yùn)行情況。</p><p> ?、偬幱谝粚訒r(shí),不管是梯內(nèi)梯外,電梯都只能接收上升的請(qǐng)求信號(hào)。此后,電梯就進(jìn)入預(yù)上升狀態(tài),準(zhǔn)備作上升運(yùn)行。如果電梯沒有接收到請(qǐng)求信號(hào),則電梯在一層待機(jī),其分析圖如圖2所示。</p>&l
8、t;p> 圖2-1 電梯處于一層時(shí)運(yùn)行情況分析</p><p> ②處于二層時(shí),電梯則可能出現(xiàn)以下三種情況:① 電梯沒有接收到梯內(nèi)梯外的任何請(qǐng)求信號(hào)時(shí),則電梯在二層待機(jī);② 電梯接收到上升請(qǐng)求信號(hào),進(jìn)入預(yù)上升狀態(tài);③ 電梯接收到下降請(qǐng)求信號(hào),進(jìn)入預(yù)下降狀態(tài),其分析圖如圖3所示。</p><p> 圖2-2 電梯處于二層時(shí)的運(yùn)行情況分析</p><p&g
9、t; ?、厶幱谌龑訒r(shí),不管是梯內(nèi)梯外,電梯都只能接收到下降的請(qǐng)求信號(hào)。此時(shí),電梯就進(jìn)入預(yù)下降狀態(tài),準(zhǔn)備作下降運(yùn)行。如果電梯沒有接收到請(qǐng)求信號(hào),則電梯在三層待機(jī),其分析圖如圖4所示。</p><p> 圖2-3 電梯處于三層時(shí)的運(yùn)行可能分析</p><p> (3)對(duì)電梯開門、關(guān)門等內(nèi)部信號(hào)處理的分析,其流程如圖6所示。</p><p> 圖2-4 電梯內(nèi)外
10、信號(hào)處理</p><p> 當(dāng)電梯接收到請(qǐng)求信號(hào)后,運(yùn)行到發(fā)出請(qǐng)求的樓層。運(yùn)達(dá)后,開門使能信號(hào)促使電梯開門載客,同時(shí)驅(qū)動(dòng)關(guān)門延時(shí)信號(hào)。在電梯進(jìn)行完關(guān)門倒數(shù)計(jì)后,關(guān)門使能信號(hào)將促使電梯關(guān)門狀態(tài),然后上升或下降運(yùn)行。</p><p> 2.2.2 電梯整體設(shè)計(jì)</p><p> 電梯控制器采用狀態(tài)機(jī)來實(shí)現(xiàn),思路比較清晰。可以將電梯等待的每秒鐘以及開門、關(guān)門都看成一
11、個(gè)獨(dú)立的狀態(tài)。由于電梯又是每秒上升或下降一層,所以就可以通過一個(gè)統(tǒng)一的1秒為周期的時(shí)鐘來觸發(fā)狀態(tài)機(jī)。根據(jù)電梯的實(shí)際工作情況,可以把狀態(tài)機(jī)設(shè)置10個(gè)狀態(tài),分別是“電梯停留在第1層”、“開門”、“關(guān)門”、“開門等待第1秒”、“開門等待第2秒”、“開門等待第3秒”、“開門等待第4秒”、“上升”、“下降”和“停止?fàn)顟B(tài)”。各個(gè)狀態(tài)之間的轉(zhuǎn)換條件可由上面的設(shè)計(jì)要求所決定。</p><p> 電梯初始狀態(tài)為一層,處在開門狀態(tài)
12、,開門指示燈亮。</p><p> 一層電梯入口處設(shè)有上樓請(qǐng)求開關(guān),二層電梯入口設(shè)有上、下樓請(qǐng)求開關(guān),三層電梯入口處設(shè)有下樓請(qǐng)求開關(guān),電梯內(nèi)部設(shè)有乘客到達(dá)樓層的停站請(qǐng)求開關(guān)及其顯示。</p><p> 設(shè)置電梯所處位置指示(用數(shù)碼管表示)及電梯上升或下降指示。</p><p> 電梯到達(dá)有停站請(qǐng)求的樓層后,電梯門打開,開門指示燈亮。開門4秒后,電梯門關(guān)閉,開門
13、指示燈滅,電梯繼續(xù)運(yùn)行,直至執(zhí)行完最后一個(gè)請(qǐng)求信號(hào)后停在當(dāng)前層。</p><p> 電梯控制系統(tǒng)能記憶電梯內(nèi)外的請(qǐng)求信號(hào),并按照電梯運(yùn)行規(guī)則工作,每個(gè)請(qǐng)求信號(hào)執(zhí)行完畢后隨即清除。</p><p> 2.3 端口設(shè)計(jì)說明</p><p> (1)由功能要求得到本程序設(shè)計(jì)的端口必須包括:</p><p> 時(shí)鐘信號(hào)(fclk);</
14、p><p> 一樓電梯外的上升請(qǐng)求信號(hào)(up1);</p><p> 二樓電梯外的上升請(qǐng)求信號(hào)(up2);</p><p> 二樓電梯外的下降請(qǐng)求信號(hào)(down2);</p><p> 三樓電梯外的下降請(qǐng)求信號(hào)(down3);</p><p> 電梯內(nèi)部到達(dá)樓層的請(qǐng)求信號(hào)(stop1、stop2、stop3);&
15、lt;/p><p> 電梯內(nèi)部關(guān)門請(qǐng)求信號(hào)(close);</p><p> 所有輸入信號(hào)等于1,表示有請(qǐng)求,等于0,表示無請(qǐng)求;</p><p> 電梯外部上升指示燈(uplight)和下降請(qǐng)求指示燈(downlight),它們與up1、up2、down2、down3信號(hào)相對(duì)應(yīng);</p><p> 電梯內(nèi)部乘客到達(dá)樓層的停站請(qǐng)求燈(st
16、oplight),該信號(hào)與stop1、stop2和stop3信號(hào)相對(duì)應(yīng);</p><p> 電梯運(yùn)行模式指示(udsig),1代表下降模式,0代表上升模式;</p><p> 電梯所在樓層指示(position),表示電梯在對(duì)應(yīng)樓層;</p><p> 電梯所在樓層數(shù)碼管表示(dout),該信號(hào)與position信號(hào)相對(duì)應(yīng);</p><p&
17、gt; 電梯門狀態(tài)燈 (doorlight),1表示開門,0表示關(guān)門。</p><p> ?。?)該設(shè)計(jì)中有8個(gè)LED等:電梯外部上升指示燈(uplight),一樓二樓各一個(gè);下降請(qǐng)求指示燈(downlight)二樓三樓各一個(gè);電梯內(nèi)部乘客到達(dá)樓層的停站請(qǐng)求燈(stoplight)分別指示一樓二樓三樓;電梯門狀態(tài)燈 (doorlight)指示電梯門的開關(guān)。</p><p><b&g
18、t; 2.4 程序設(shè)計(jì)</b></p><p> 代碼由三大部分組成:庫聲明,實(shí)體,結(jié)構(gòu)體。</p><p> 2.4.1 庫聲明部分</p><p> 調(diào)用VHDL庫,通過library語句本程序應(yīng)用了VHDL庫中的”通用ieee庫”和”標(biāo)準(zhǔn)std庫”。</p><p> library ieee;</p>
19、<p> use ieee.std_logic_1164.all;</p><p> use ieee.std_logic_arith.all;</p><p> use ieee.std_logic_unsigned.all;</p><p> 2.4.2 實(shí)體部分</p><p> 實(shí)體部分列出了代碼所用到的所用輸
20、入輸出端口。主控制器系統(tǒng)由VHDL語言實(shí)現(xiàn),其輸入輸出端口定義如下:</p><p> entity flift is</p><p> port(fclk,up1,up2,down2,down3,stop1,stop2,stop3,close:in std_logic;</p><p> uplight:buffer std_logic_vector(2 d
21、ownto 1); ---電梯外部1.2樓上請(qǐng)求</p><p> downlight:buffer std_logic_vector(3 downto 2); ---電梯外部2.3樓下請(qǐng)求</p><p> stoplight:buffer std_logic_vector(3 downto 1); ---電梯內(nèi)部請(qǐng)求</p><p>
22、udsig:buffer std_logic; ---電梯的狀態(tài),0代表(預(yù))上升,1代表(預(yù))下降</p><p> position:buffer integer range 1 to 3; ---電梯所在樓層</p><p> doorlight:out std_logic; ---門燈,開門燈亮,關(guān)門等滅
23、</p><p> dout:out std_logic_vector(3 downto 0)); ---用以實(shí)現(xiàn)樓層數(shù)字顯示</p><p> end flift;</p><p> 2.4.3 結(jié)構(gòu)體部分</p><p> 結(jié)構(gòu)體部分共使用了分頻進(jìn)程,電梯狀態(tài)進(jìn)程,讀按鍵、控制指示燈進(jìn)程和樓層顯示進(jìn)程4個(gè)進(jìn)程。<
24、/p><p> 使用狀態(tài)機(jī)來實(shí)現(xiàn)電梯功能。</p><p> 在電梯狀態(tài)進(jìn)程中,在電梯的上升狀態(tài)中,通過對(duì)信號(hào)燈的判斷,決定下一個(gè)狀態(tài)是繼續(xù)上升還是停止;在電梯下降狀態(tài)中,也是通過對(duì)信號(hào)燈的判斷,決定下一個(gè)狀態(tài)是繼續(xù)下降還是停止;在電梯停止?fàn)顟B(tài)中,通過對(duì)信號(hào)燈的判斷,決定電梯是上升、下降還是停止。</p><p> 狀態(tài)機(jī)進(jìn)程的運(yùn)行基于電梯時(shí)鐘fliclk,此時(shí)鐘
25、周期是外部時(shí)鐘周期的十六倍;按鍵設(shè)定進(jìn)程基于按鍵時(shí)鐘buttonclk,此時(shí)鐘的周期為外部時(shí)鐘周期的兩倍。按鍵時(shí)鐘周期比電梯時(shí)鐘周期短,這就意味著按鍵設(shè)定進(jìn)程比狀態(tài)機(jī)進(jìn)程快,這就保證了每一次按鍵都能掃描并保留而不會(huì)被狀態(tài)機(jī)進(jìn)程中的清零程序消除。</p><p> 按鍵后產(chǎn)生的點(diǎn)亮的信號(hào)燈(邏輯值為‘1’)用于作為狀態(tài)機(jī)進(jìn)程中的判斷條件,而clearup和cleardn信號(hào)為邏輯‘l’使得相應(yīng)的信號(hào)燈熄滅。<
26、;/p><p> 分頻進(jìn)程:該進(jìn)程的目的是產(chǎn)生不同頻率的兩個(gè)時(shí)鐘,電梯控制時(shí)鐘fliclk和按鍵控制時(shí)鐘buttonclk。</p><p> process(fclk) ---產(chǎn)生電梯控制時(shí)鐘fliclk和按鍵控制時(shí)鐘buttclk</p><p><b> begin </b></p><p> if (f
27、clk'event and fclk='1') then q<=q+1;</p><p><b> end if;</b></p><p> buttonclk<=q(0);</p><p> fliclk<=q(3);</p><p> end process;<
28、/p><p> 狀態(tài)機(jī)進(jìn)程:該部分是整個(gè)設(shè)計(jì)的核心,根據(jù)電梯的工作模式,將電梯的工作分為10個(gè)狀態(tài),分別為停一層stopno1、開門狀態(tài)dooropen、關(guān)門狀態(tài)doorclose、開門等待1秒wait1、開門等待2秒wait2、開門等待3秒wait3、開門等待4秒wait4、上升up、下降down和停止stop。在每個(gè)狀態(tài)下,判斷輸入信號(hào)的請(qǐng)求,轉(zhuǎn)入下一狀態(tài)且產(chǎn)生對(duì)應(yīng)得輸出信號(hào)。</p><p
29、><b> 結(jié)構(gòu)體部分分析</b></p><p><b> (1)停一層狀態(tài)</b></p><p> 當(dāng)處于停一層狀態(tài)時(shí),電梯開門同時(shí)轉(zhuǎn)入下一狀態(tài)wait1。</p><p> when stoponl=>doorlight<='1'; position<=1; pos:
30、=1;state<=wait1;</p><p> 開門等待1秒:該狀態(tài)時(shí)重新計(jì)入上升下降請(qǐng)求。如果此時(shí)有關(guān)門請(qǐng)求,則轉(zhuǎn)入下一狀態(tài)doorclose;如果沒有請(qǐng)求,則下一狀態(tài)為wait2。</p><p> when wait1=>clearup<='0'; cleardn<='0'; </p><p>
31、 if(close='1') then state<=doorclose;</p><p> else state<=wait2;</p><p><b> end if;</b></p><p> 開門等待2秒:如果此時(shí)有關(guān)門請(qǐng)求,則轉(zhuǎn)入下一狀態(tài)doorclose;如果沒有請(qǐng)求,則下一狀態(tài)為wait3。<
32、;/p><p> 開門等待3秒:如果此時(shí)有關(guān)門請(qǐng)求,則轉(zhuǎn)入下一狀態(tài)doorclose;如果沒有請(qǐng)求,則下一狀態(tài)為wait4。</p><p> 開門等待4秒:該狀態(tài)的下一狀態(tài)為doorclose。</p><p><b> ?。?)上升模式</b></p><p> 當(dāng)處于上升模式,同時(shí)電梯位于三層,如果此時(shí)電梯的內(nèi)部
33、與外部都沒有請(qǐng)求,電梯轉(zhuǎn)為下降模式,并進(jìn)入下一狀態(tài)doorclose;如果此時(shí)電梯內(nèi)部有在三層下的請(qǐng)求或三層外部有下樓請(qǐng)求,電梯進(jìn)入下一狀態(tài)dooropen;否則電梯轉(zhuǎn)為下降模式,并進(jìn)入下一狀態(tài)down。</p><p> if (position=3) then </p><p> if (stoplight="000&qu
34、ot; and uplight="00" and downlight="00" ) </p><p> then udsig<='1'; state<=doorclose;</p><p> elsif(stoplight(3)='1' or downlight(3)='1') <
35、/p><p> then state<=dooropen;</p><p> else udsig<='1'; state<=down;</p><p><b> end if;</b></p><p> 當(dāng)處于上升模式,同時(shí)電梯位于二層,如果此時(shí)電梯的內(nèi)部與外部都沒有請(qǐng)求,電梯仍為
36、上升模式,并進(jìn)入下一狀態(tài)doorclose;如果此時(shí)電梯內(nèi)部有在二層下的請(qǐng)求或二層外部有下樓請(qǐng)求或上樓請(qǐng)求,電梯進(jìn)入下一狀態(tài)dooropen;如果此時(shí)電梯內(nèi)部有在三層下的請(qǐng)求或三層外部有下樓請(qǐng)求,電梯仍為上升模式,并進(jìn)入下一狀態(tài)up;否則電梯轉(zhuǎn)為下降模式,并進(jìn)入下一狀態(tài)down。</p><p> elsif (position=2) then </p>
37、<p> if(stoplight="000" and uplight="00" and downlight="00") </p><p> then udsig<='0'; state<=doorclose;</p><p> elsif (stoplight(3)='1&
38、#39; or downlight(3)='1') </p><p> then udsig<='0'; state<=up;</p><p> else udsig<='1'; state<=down;</p><p><b> end if;</b></p&
39、gt;<p> 當(dāng)處于上升模式,同時(shí)電梯位于一層,如果此時(shí)電梯的內(nèi)部與外部都沒有請(qǐng)求,電梯仍為上升模式,并進(jìn)入下一狀態(tài)doorclose;如果此時(shí)電梯內(nèi)部有在一層下的請(qǐng)求或一層外部有上樓請(qǐng)求,電梯進(jìn)入下一狀態(tài)dooropen;否則電梯仍為上升模式,并進(jìn)入下一狀態(tài)up。</p><p><b> (3)下降模式</b></p><p> 當(dāng)處于下降模
40、式,同時(shí)電梯位于一層,如果此時(shí)電梯的內(nèi)部與外部都沒有請(qǐng)求,電梯轉(zhuǎn)為上升模式,并進(jìn)入下一狀態(tài)doorclose;如果此時(shí)電梯內(nèi)部有在一層下的請(qǐng)求或一層外部有上樓請(qǐng)求,電梯進(jìn)入下一狀態(tài)dooropen;否則電梯轉(zhuǎn)為上升模式,并進(jìn)入下一狀態(tài)up。</p><p> 當(dāng)處于下降模式,同時(shí)電梯位于二層,如果此時(shí)電梯的內(nèi)部與外部都沒有請(qǐng)求,電梯仍為下降模式,并進(jìn)入下一狀態(tài)doorclose;如果此時(shí)電梯內(nèi)部有在二層下的請(qǐng)求
41、或二層外部有下樓請(qǐng)求或上樓請(qǐng)求,電梯進(jìn)入下一狀態(tài)dooropen;如果此時(shí)電梯內(nèi)部有在一層下的請(qǐng)求或一層外部有上樓請(qǐng)求,電梯仍為下降模式,并進(jìn)入下一狀態(tài)down;否則電梯轉(zhuǎn)為上升模式,并進(jìn)入下一狀態(tài)up。</p><p> 當(dāng)處于下降模式,同時(shí)電梯位于三層,如果此時(shí)電梯的內(nèi)部與外部都沒有請(qǐng)求,電梯仍為下降模式,并進(jìn)入下一狀態(tài)doorclose;如果此時(shí)電梯內(nèi)部有在三層下的請(qǐng)求或三層外部有下樓請(qǐng)求,電梯進(jìn)入下一狀
42、態(tài)dooropen;否則電梯仍為下降模式,并進(jìn)入下一狀態(tài)down。</p><p> ?。?)電梯上升下降處理</p><p> 上升:電梯所在樓層數(shù)加一。如果此時(shí)電梯在二層同時(shí)二層外部有上升或下降的請(qǐng)求或電梯內(nèi)部有在二層下的請(qǐng)求,則進(jìn)入下一狀態(tài)stop。如果此時(shí)電梯在二層同時(shí)三層外部有下降的請(qǐng)求或電梯內(nèi)部有在三層下的請(qǐng)求,則進(jìn)入下一狀態(tài)up;否則進(jìn)入下一狀態(tài)stop。</p>
43、;<p> when up=>position<=position+1; pos:=pos+1; </p><p> if (pos=2 and (uplight(2)='1' or downlight(2)='1'or stoplight(2)='1' ))</p><p> then st
44、ate<=stop;</p><p> elsif(pos=2 and (stoplight(3)='1' or downlight(3)='1')) </p><p> then state<=up;</p><p> else state<=stop;</p><p><b&g
45、t; end if;</b></p><p> 下降:電梯所在樓層數(shù)減一。如果此時(shí)電梯在二層同時(shí)二層外部有上升或下降的請(qǐng)求或電梯內(nèi)部有在二層下的請(qǐng)求,則進(jìn)入下一狀態(tài)stop。如果此時(shí)電梯在二層同時(shí)一層外部有上升的請(qǐng)求或電梯內(nèi)部有在一層下的請(qǐng)求,則進(jìn)入下一狀態(tài)down;否則進(jìn)入下一狀態(tài)stop。</p><p> 停止:該狀態(tài)的下一狀態(tài)為dooropen。</p>
46、;<p> 開門狀態(tài):電梯開門同時(shí)清除上升下降的請(qǐng)求,并轉(zhuǎn)入下一狀態(tài)wait1,其它的狀態(tài)都轉(zhuǎn)入下一狀態(tài)stop。</p><p> 如果清除上升的信號(hào)有效,則電梯內(nèi)部相應(yīng)樓層停止信號(hào)清除,同時(shí)電梯外部相應(yīng)樓層上升信號(hào)清除;否則當(dāng)有上升請(qǐng)求時(shí)相應(yīng)的電梯外部上升指示燈亮。</p><p> if(clearup='1') </p><p
47、> then stoplight(position)<='0'; uplight(position)<='0';</p><p><b> else</b></p><p> if(up1='1')then uplight(1)<='1';</p><p&
48、gt; elsif(up2='1')then uplight(2)<='1';</p><p><b> end if;</b></p><p><b> end if;</b></p><p> 如果清除下降的信號(hào)有效,則電梯內(nèi)部相應(yīng)樓層停止信號(hào)清除,同時(shí)電梯外部相應(yīng)樓層下降
49、信號(hào)清除;否則當(dāng)有下降請(qǐng)求時(shí)相應(yīng)的電梯外部下降指示燈亮。</p><p> 如果停止信號(hào)有效,則相應(yīng)的電梯內(nèi)部停站請(qǐng)求燈亮。</p><p> if (stop1='1') then stoplight(1)<='1';</p><p> elsif (stop2='1') then stoplight(2
50、)<='1';</p><p> elsif (stop3='1') then stoplight(3)<='1'; </p><p><b> end if;</b></p><p><b> 3 系統(tǒng)仿真</b></p&g
51、t;<p><b> 分幾種情況分析:</b></p><p> ?。?)在三樓乘坐電梯到一樓</p><p> 圖3-1 系統(tǒng)仿真圖(1)</p><p> 初始時(shí)電梯停在一層position=1,上升模式udsig=0并保持開門狀態(tài),doorlight=1。外部沒有請(qǐng)求時(shí),電梯等待四秒后關(guān)門,doorlight變?yōu)?。
52、三層有下樓請(qǐng)求并要求停在一層則先down3置1,downlight(3)=1。由于三層是下樓請(qǐng)求,而電梯此時(shí)是上升模式udsig=0,則電梯到二層時(shí)不停position=2,直接運(yùn)行到三層position=3,開門doorlight變?yōu)?,down3清零,downlight(3)=0。進(jìn)入電梯后把stop1置1,stoplight(1)=1,等待4秒后自動(dòng)關(guān)門doorlight變?yōu)?,轉(zhuǎn)為下降模式udsig=1,下降到二樓positio
53、n=2,繼續(xù)下降到一樓position=1,stoplight(1)=0,開門doorlight=1,等待4秒后自動(dòng)關(guān)門doorlight變?yōu)?。 如圖3-1所示</p><p> ?。?)在二樓乘坐電梯到三樓</p><p> 圖3-2 系統(tǒng)仿真圖(2)</p><p> 初始時(shí)電梯停在一層position=1,上升模式udsig=0并保持開門狀態(tài),door
54、light=1。外部沒有請(qǐng)求時(shí),電梯等待四秒后關(guān)門,doorlight變?yōu)?。二層有上樓請(qǐng)求并要求停在三樓則先把up2置1,uplight(2)=1。由于二層是上樓請(qǐng)求,而電梯此時(shí)是上升模式udsig=0,則電梯到二層時(shí)停position=2,開門doorlight變?yōu)?,up2清零,uplight(2)=0,進(jìn)入電梯后把stop3置1,stoplight(3)=1,等待4秒后自動(dòng)關(guān)門doorlight變?yōu)?,繼續(xù)上升到3樓positi
55、on=3,stoplight(1)=0,開門doorlight=1,等待4秒后自動(dòng)關(guān)門doorlight變?yōu)?。 如圖3-2所示</p><p> ?。?)在三樓乘坐電梯到二樓</p><p> 圖3-3 系統(tǒng)仿真圖(3)</p><p> 初始時(shí)電梯停在一層position=1,上升模式udsig=0并保持開門狀態(tài),doorlight=1。外部沒有請(qǐng)求時(shí),電
56、梯等待四秒后關(guān)門,doorlight變?yōu)?。三層有下樓請(qǐng)求并要求停在二層則先down3置1,downlight(3)=1。由于三層是下樓請(qǐng)求,而電梯此時(shí)是上升模式udsig=0,則電梯到二層時(shí)不停position=2,直接運(yùn)行到三層position=3,開門doorlight變?yōu)?,down3清零,downlight(3)=0,進(jìn)入電梯后stop2置1,stoplight(2)=1,等待4秒后自動(dòng)關(guān)門doorlight變?yōu)?,轉(zhuǎn)為下降模
57、式udsig=1,下降到二樓position=2,stoplight(2)=0,開門doorlight=1,等待4秒后自動(dòng)關(guān)門doorlight變?yōu)?。 如圖3-3所示</p><p> (4)在一樓乘坐電梯到二樓</p><p> 圖3-4 系統(tǒng)仿真圖(4)</p><p> 初始時(shí)電梯停在一層position=1,上升模式udsig=0并保持開門狀態(tài),do
58、orlight=1。外部沒有請(qǐng)求時(shí),電梯等待四秒后關(guān)門,doorlight變?yōu)?。一層有上樓請(qǐng)求并要求停在三樓則先up1置1,uplight(1)=1。由于一層是上樓請(qǐng)求,而電梯此時(shí)是上升模式udsig=0,則電梯開門doorlight變?yōu)?,up1清零,uplight(1)=0。進(jìn)入電梯后把stop2置1,stoplight(2)=1,等待4秒后自動(dòng)關(guān)門doorlight變?yōu)?,上升到2樓position=2,開門doorlight=
59、1,stoplight(2)=0,等待4秒后自動(dòng)關(guān)門doorlight變?yōu)?。 如圖3-4所示</p><p> ?。?)在二樓乘坐電梯到一樓</p><p> 圖4-5 系統(tǒng)仿真圖(5)</p><p> 初始時(shí)電梯停在一層position=1,上升模式udsig=0并保持開門狀態(tài),doorlight=1。外部沒有請(qǐng)求時(shí),電梯等待四秒后關(guān)門,doorligh
60、t變?yōu)?。二層有下樓請(qǐng)求并要求停在一層則先down2置1,downlight(2)=1。由于二層是下樓請(qǐng)求,而電梯此時(shí)是上升模式udsig=0,則電梯到二層時(shí)停position=2,開門doorlight變?yōu)?, down2清零,downlight(2)=0,進(jìn)入電梯后stop1置1,stoplight(1)=1,等待4秒后自動(dòng)關(guān)門doorlight變?yōu)?,轉(zhuǎn)為下降模式udsig=1,下降到一樓position=2,stoplight(
61、1)=0,開門doorlight=1,等待4秒后自動(dòng)關(guān)門doorlight變?yōu)?。 如圖3-5所示</p><p><b> 4小結(jié)</b></p><p> 我這篇課設(shè)基于VHDL語言設(shè)計(jì)的三層電梯控制器,并進(jìn)行了仿真。在參考了許多相關(guān)資料后,充分理解了三層電梯的設(shè)計(jì)要求,基本上完成了任務(wù)要求:</p><p> ?。?)設(shè)計(jì)一個(gè)三層樓房
62、自動(dòng)電梯控制器,用八個(gè) LED顯示電梯行進(jìn)過程,并有數(shù)碼管顯示電梯當(dāng)前所在樓層位置;</p><p> ?。?)每層電梯入口處設(shè)有請(qǐng)求按鈕開關(guān),請(qǐng)求按鈕按下則相應(yīng)樓層的LED 亮;</p><p> 但本代碼中可能仍存在一些不能解決的實(shí)際問題,許多工程實(shí)際問題不能完全用理論知識(shí)去解決,需要不斷吸取實(shí)踐經(jīng)驗(yàn),尋找解決問題方法。</p><p> 用VHDL硬件描述
63、語言的形式來進(jìn)行三層電梯控制器的設(shè)計(jì)方便靈活,利用EDA軟件進(jìn)行編譯優(yōu)化仿真極大的減少了電路設(shè)計(jì)時(shí)間和可能發(fā)生的錯(cuò)誤,降低了開發(fā)成本,相信這種設(shè)計(jì)方法將在未來的數(shù)字系統(tǒng)設(shè)計(jì)中發(fā)揮越來越重要的作用。</p><p> 這一周的設(shè)計(jì)過程中,除找資料外,大多時(shí)間都是在電腦上進(jìn)行的,通過反復(fù)的編譯,仿真,不斷試驗(yàn)來實(shí)現(xiàn)所得結(jié)果。在設(shè)計(jì)上,運(yùn)用了EDA自上而下的設(shè)計(jì)思想,逐步完善所設(shè)計(jì)功能,同時(shí),用到VHDL語言中的狀態(tài)
64、機(jī),多進(jìn)程,CASE、IF….ELSE 等語句,才達(dá)到以上結(jié)果。設(shè)計(jì)過程中也遇到了許多問題,如波形仿真上信號(hào)的設(shè)置等。</p><p> 這個(gè)課程設(shè)計(jì)還有很多不足之處:</p><p> 1、電梯各個(gè)進(jìn)程依賴于2個(gè)不同的時(shí)鐘,這樣做雖然比較精確但是顯得有些多余。</p><p> 2、電梯控制程序只實(shí)現(xiàn)了三層樓電梯的控制,這種電梯在現(xiàn)實(shí)生活中應(yīng)用很少,而且此程
65、序不方便向更多層電梯控制器程序擴(kuò)展。</p><p> 通過此次的課程設(shè)計(jì),我學(xué)到了很多知識(shí),包括QuartusII和ModelSim的使用和仿真,已經(jīng)如何真正的運(yùn)用學(xué)過的EDA知識(shí),完成具有意義性的系統(tǒng)設(shè)計(jì)。培養(yǎng)了自學(xué)能力和動(dòng)手能力。并且由原先的被動(dòng)的接受知識(shí)轉(zhuǎn)換為主動(dòng)的尋求知識(shí),這可以說是學(xué)習(xí)方法上的一個(gè)很大的突破。通過課程設(shè)計(jì),我學(xué)會(huì)了如何將學(xué)到的知識(shí)轉(zhuǎn)化為自己的東西,學(xué)會(huì)了怎么更好的處理知識(shí)和實(shí)踐相結(jié)合
66、的問題。</p><p><b> 參考文獻(xiàn)</b></p><p> [1] 潘松 黃繼業(yè) EDA技術(shù)實(shí)用教程 科學(xué)出版社 2005</p><p> [2] 朱正偉 EDA技術(shù)及應(yīng)用 清華大學(xué)出版社 2005.10</p><p> [3] 王振紅VHDL數(shù)字電路設(shè)計(jì)與應(yīng)用實(shí)踐教程 機(jī)械工業(yè)出版社 2003.
67、6</p><p> [4] 梁勇 王留奎 EDA技術(shù)教程 人民郵電出版社 2010</p><p> [5] 柳春鋒 電子設(shè)計(jì)自動(dòng)化(EDA) 北京理工大學(xué)出版社 2005.</p><p><b> 附錄</b></p><p><b> 代碼:</b></p><p
68、> library ieee;</p><p> use ieee.std_logic_1164.all;</p><p> use ieee.std_logic_arith.all;</p><p> use ieee.std_logic_unsigned.all;</p><p> entity flift is</
69、p><p> port(fclk,up1,up2,down2,down3,stop1,stop2,stop3,close:in std_logic;</p><p> uplight:buffer std_logic_vector(2 downto 1); ---電梯外部1.2樓上請(qǐng)求</p><p> downlight:buffer std_logic_v
70、ector(3 downto 2); ---電梯外部2.3樓下請(qǐng)求</p><p> stoplight:buffer std_logic_vector(3 downto 1); ---電梯內(nèi)部請(qǐng)求</p><p> udsig:buffer std_logic; ---電梯的狀態(tài),0代表(預(yù))上升,1代表(預(yù))下降</p><p> p
71、osition:buffer integer range 1 to 3; ---電梯所在樓層</p><p> doorlight:out std_logic; ---門燈,開門燈亮,關(guān)門燈滅</p><p> dout:out std_logic_vector(3 downto 0)); ---用以實(shí)現(xiàn)樓層
72、數(shù)字顯示</p><p> end flift;</p><p> architecture behav of flift is</p><p> type state_type is(stoponl,dooropen,doorclose,wait1,wait2,wait3,wait4,up,down,</p><p> stop);
73、 ---十個(gè)狀態(tài),初始,開門,關(guān)門,延時(shí)1~4,上升,下降,停</p><p> signal state:state_type:=stoponl;</p><p> signal clearup,cleardn,buttonclk,fliclk:std_logic;</p><p> ---上升清零,下降清零,按鍵時(shí)鐘,電梯時(shí)
74、鐘</p><p> signal q:std_logic_vector(3 downto 0);</p><p><b> begin</b></p><p> process(fclk) ---分頻進(jìn)程,產(chǎn)生電梯控制時(shí)鐘fliclk和按鍵控制時(shí)鐘buttonclk</p><p><b> begi
75、n </b></p><p> if (fclk'event and fclk='1') then q<=q+1;</p><p><b> end if;</b></p><p> buttonclk<=q(0);
76、 ---二分頻</p><p> fliclk<=q(3); ---十六分頻</p><p> end process;</p><p> cont:process(fliclk) ---狀態(tài)機(jī)進(jìn)程&l
77、t;/p><p> variable pos:integer range 3 downto 1;</p><p><b> begin</b></p><p> if (fliclk'event and fliclk='1') then</p><p> case state is</p
78、><p> when stoponl=>doorlight<='1'; position<=1; pos:=1;state<=wait1;</p><p> when wait1=>clearup<='0'; cleardn<='0'; ---開門等待1秒</p><p&
79、gt; if(close='1') then state<=doorclose;</p><p> else state<=wait2;</p><p><b> end if;</b></p><p> when wait2=> ---開門等待2秒&
80、lt;/p><p> if(close='1') then state<=doorclose;</p><p> else state<=wait3;</p><p><b> end if;</b></p><p> when wait3=>
81、 ---開門等待3秒</p><p> if(close='1') then state<=doorclose;</p><p> else state<=wait4;</p><p><b> end if;</b></p><p> when wait4=>sta
82、te<=doorclose; ---開門等待4秒</p><p> when doorclose=>doorlight<='0'; ---關(guān)門狀態(tài)</p><p> if (udsig='0') then ---上升情況</p&g
83、t;<p> if (position=3) then ---電梯在3層</p><p> if (stoplight="000" and uplight="00" and downlight="00" ) </p><p> then udsig<='1&
84、#39;; state<=doorclose;</p><p> elsif(stoplight(3)='1' or downlight(3)='1') </p><p> then state<=dooropen;</p><p> else udsig<='1'; state<=dow
85、n;</p><p><b> end if;</b></p><p> elsif (position=2) then ---電梯在2層</p><p> if(stoplight="000" and uplight="00" and downlight=&qu
86、ot;00") </p><p> then udsig<='0'; state<=doorclose;</p><p> elsif(stoplight(2)='1' or downlight(2)='1' or uplight(2)='1') </p><p> then
87、 state<=dooropen; </p><p> elsif (stoplight(3)='1' or downlight(3)='1') </p><p> then udsig<='0'; state<=up;</p><p&
88、gt; else udsig<='1'; state<=down;</p><p><b> end if;</b></p><p> elsif (position=1) then ---電梯在1層</p><p> if(stoplight="000"
89、; and uplight="00" and downlight="00")</p><p> then udsig<='0'; state<=doorclose;</p><p> elsif(stoplight(1)='1' or uplight(1)='1') </p>
90、<p> then state<=dooropen; </p><p> else udsig<='0'; state<=up;</p><p><b> end if;</b></p><p><b>
91、end if;</b></p><p> elsif (udsig='1') then ---下降情況</p><p> if (position=1) then ---電梯在1層</p><p> if (stoplight="000&
92、quot;and uplight="00" and downlight="00") </p><p> then udsig<='0'; state<=doorclose;</p><p> elsif(stoplight(1)='1' or uplight(1)='1') </p
93、><p> then state<=dooropen; </p><p> else udsig<='0'; state<=up;</p><p><b> end if;</b></p><p> elsif
94、(position=2) then ---電梯在2層</p><p> if(stoplight="000" and uplight="00" and downlight="00") </p><p> then udsig<='1'; state <=doorc
95、lose;</p><p> elsif(stoplight(2)='1' or downlight(2)='1' or uplight(2)='1') </p><p> then state<=dooropen; </p><p> elsif(stoplight(1)=
96、39;1' or uplight(1)='1') </p><p> then udsig<='1'; state<=down;</p><p> else udsig<='0'; state<=up;</p><p><b> end if;</b><
97、/p><p> elsif(position=3) then ---電梯在3層</p><p> if(stoplight ="000" and uplight="00" and downlight="00")</p><p> then udsig<='
98、1'; state<=doorclose;</p><p> elsif(stoplight(3)='1' or downlight(3)='1') </p><p> then state<=dooropen; </p><p> else udsig<='1'; state<
99、;=down;</p><p><b> end if;</b></p><p><b> end if;</b></p><p><b> end if;</b></p><p> when up=>position<=position+1; pos:=p
100、os+1; ---電梯上一層</p><p> if (pos=2 and (uplight(2)='1' or downlight(2)='1'or stoplight(2)='1' ))</p><p> then state<=stop;</p><p> elsif(pos=2 and (sto
101、plight(3)='1' or downlight(3)='1')) </p><p> then state<=up;</p><p> else state<=stop;</p><p><b> end if;</b></p><p> when down=&g
102、t;position<=position-1; pos:=pos-1; ---電梯下一層</p><p> if (pos=2 and (uplight(2)='1' or downlight(2)='1'or stoplight(2)='1' ))</p><p> then state<=stop; </p>
103、;<p> elsif(pos=2 and (stoplight(1)='1' or uplight(1)='1') )</p><p> then state<=down;</p><p> else state<=stop;</p><p><b> end if;</b>&
104、lt;/p><p> when stop=>state<=dooropen; ---電梯停止</p><p> when dooropen=>doorlight<='1';clearup<='1';cleardn<='1';state<=wait1; </p&
105、gt;<p> when others=>state<=stoponl;</p><p><b> end case;</b></p><p><b> end if;</b></p><p> end process cont;</p><p> butt: p
106、rocess( buttonclk) ---讀按鍵、控制指示燈進(jìn)程</p><p> begin </p><p> if(buttonclk'event and buttonclk='1')then </p><p> if(clearup='1') </p&g
107、t;<p> then stoplight(position)<='0'; uplight(position)<='0';</p><p><b> else</b></p><p> if(up1='1')then uplight(1)<='1';</p>
108、;<p> elsif(up2='1')then uplight(2)<='1';</p><p><b> end if;</b></p><p><b> end if;</b></p><p> if(cleardn='1')</p&g
109、t;<p> then stoplight(position)<='0'; downlight(position)<='0';</p><p><b> else </b></p><p> if(down2='1')then downlight(2)<='1';&l
110、t;/p><p> elsif(down3='1') then downlight(3)<='1';</p><p><b> end if;</b></p><p><b> end if;</b></p><p> if (stop1='1
111、9;) then stoplight(1)<='1';</p><p> elsif (stop2='1') then stoplight(2)<='1';</p><p> elsif (stop3='1') then stoplight(3)<='1'; &l
112、t;/p><p><b> end if;</b></p><p><b> end if;</b></p><p> end process butt;</p><p> process(position)</p><p><b> begin</b&
113、gt;</p><p> if(position=1) then dout<="0001";</p><p><b> end if;</b></p><p> if(position=2) then dout<="0010";</p><p><b>
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- eda課程設(shè)計(jì)--電梯控制器設(shè)計(jì)
- eda課程設(shè)計(jì)--電梯控制器設(shè)計(jì)
- 數(shù)字邏輯課程設(shè)計(jì)電梯控制器
- eda電梯控制器課程設(shè)計(jì)報(bào)告
- eda_電梯控制器課程設(shè)計(jì)
- 九層電梯控制器課程設(shè)計(jì)報(bào)告
- 課程設(shè)計(jì)--電梯樓層顯示控制器的設(shè)計(jì)
- 電梯的控制課程設(shè)計(jì)--設(shè)計(jì)一個(gè)6層電梯控制器電路
- 電子技術(shù)課程設(shè)計(jì)-智能電梯控制器設(shè)計(jì)
- eda技術(shù)課程設(shè)計(jì)--電梯控制器電路設(shè)計(jì)
- 溫度控制器課程設(shè)計(jì)
- 路燈控制器課程設(shè)計(jì)
- 彩燈控制器課程設(shè)計(jì)
- 彩燈控制器課程設(shè)計(jì)
- 課程設(shè)計(jì)-- 彩燈控制器
- 路燈控制器課程設(shè)計(jì)
- 路燈控制器課程設(shè)計(jì)
- 彩燈控制器課程設(shè)計(jì)
- 彩燈控制器課程設(shè)計(jì)
- 彩燈控制器課程設(shè)計(jì)
評(píng)論
0/150
提交評(píng)論