版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、<p><b> 摘要I</b></p><p><b> 1概述1</b></p><p> 1.1課題背景及意義1</p><p> 1.2 EDA技術(shù)及實現(xiàn)方法概述1</p><p> 1.2.1 EDA技術(shù)簡介2</p><p> 1.
2、2.2 FPGA簡介3</p><p> 1.2.3 VHDL語言介紹4</p><p> 1.3 狀態(tài)機簡介5</p><p> 2 系統(tǒng)方案設(shè)計6</p><p><b> 2.1設(shè)計要求6</b></p><p> 2.2 總體設(shè)計方案6</p><
3、p> 2.2.1 控制器模塊化概述6</p><p> 2.2.2 電梯上下層運行流程圖7</p><p> 2.2.3電梯運行控制流程圖8</p><p> 2.2.4 電梯控制器設(shè)計思路9</p><p> 2.3 設(shè)計的VHDL實現(xiàn)10</p><p> 2.3.1 控制器實體設(shè)計1
4、0</p><p> 2.3.2 控制器結(jié)構(gòu)體設(shè)計11</p><p><b> 3 器件選型11</b></p><p> 3.1 FPGA芯片選型11</p><p> 3.2 功能模塊12</p><p> 3.2.1 主控器模塊12</p><p&g
5、t; 3.2.2 分頻器模塊13</p><p> 3.2.3 譯碼器模塊13</p><p> 3.2.4 數(shù)據(jù)選擇器模塊14</p><p><b> 4 程序仿真15</b></p><p> 4.1 電梯控制器仿真分析15</p><p> 4.2 其它模塊仿真19
6、</p><p><b> 5 結(jié)論19</b></p><p><b> 參考文獻21</b></p><p><b> 致謝22</b></p><p><b> 附錄23</b></p><p> 基于FPG
7、A 的六層電梯控制系統(tǒng)</p><p><b> 摘 要</b></p><p> 本設(shè)計是基于電子設(shè)計自動化(EDA)技術(shù)中的甚高速集成電路硬件描述語言(VHDL)語言,運用FPGA所開發(fā)的四層電梯控制程序,采用Quartus II軟件仿真。運用有限狀態(tài)機的設(shè)計方法,設(shè)計了兩個進程相互配合,狀態(tài)機進程作為主要進程,信號燈控制進程作為輔助進程。在主進程中定義了7
8、個狀態(tài),在電梯時鐘的觸發(fā)下,通過當(dāng)前狀態(tài)和信號燈信號判定下一狀態(tài)。信號燈控制進程中,信號燈存儲按鍵請求情況,它的熄滅是由狀態(tài)機進程中傳出的信號來控制。</p><p> 通過程序調(diào)試及運行仿真,結(jié)果表明,本程序可以完成電梯運行所在樓層顯示、電梯運行方向指示、關(guān)門延時設(shè)置等。</p><p> 關(guān)鍵詞:電梯控制器 VHDL 狀態(tài)機 FPGA</p><p>
9、<b> 1概述</b></p><p> 1.1課題背景及意義</p><p> 隨高層樓宇的增加,電梯越來越多的走進了人們的生活,對人們的生活的影響越來越大。為了讓電梯更好的服務(wù)人們,各種電梯新技術(shù)不斷地發(fā)展起來。隨著人們生活水平的不斷提高,經(jīng)濟的快速發(fā)展和生產(chǎn)生活的需要,城市高層建筑如雨后春筍拔地而起。與此相應(yīng),作為一種可以垂直升降運輸?shù)墓ぞ咭浑娞菀驳玫窖?/p>
10、猛的發(fā)展?,F(xiàn)在,電梯已完全融入我們的生活、工作及學(xué)習(xí)中,人們越來越離不開它。因此,它的安全可靠性、迅速準(zhǔn)確性、舒適性,對人們來說都是非常重要的。為了確保電梯正常運行、安全使用,一般電梯都有專業(yè)的維修管理人員。他們必須對電梯原理、性能、特點、控制、運行要全面認識和掌握,才能做到對電梯的正確使用、管理及維護。根據(jù)我國有關(guān)部門的規(guī)定,電梯作業(yè)屬于特種作業(yè),其作業(yè)人員必須經(jīng)過專門培訓(xùn),并經(jīng)理論考試和實踐考核合格后,發(fā)給《特種作業(yè)操作證》方可上崗
11、操作。同時,對電梯操作人員定期考核,讓他們定期參加安全技術(shù)學(xué)習(xí),扎扎實實地做好電梯維護和保養(yǎng)工作,才能使人們平安長久的使用電梯。</p><p> 電梯控制系統(tǒng)是一個相當(dāng)復(fù)雜的邏輯控制系統(tǒng).系統(tǒng)要同時對幾百個信號進行接收、處理。由于用戶對電梯功能的要求不斷提高.其相應(yīng)控制方式也在不斷發(fā)生變化。隨著EDA技術(shù)的快速發(fā)展.基于FPGA的微機化控制已廣泛應(yīng)用于電梯電路設(shè)計與控制的各個方面。</p>&l
12、t;p> 在經(jīng)濟不斷發(fā)展,科學(xué)技術(shù)日新月異的今天,樓的高度已和經(jīng)濟發(fā)展同樣的速度成長起來。作為建筑的中樞神經(jīng),電梯起著不可或缺的作用,電梯作為建筑物內(nèi)的主要運輸工具,像其他的交通工具一樣,已經(jīng)成為我們?nèi)粘I畹囊粋€不可缺少的組成部分。一個國家的電梯需求總量,主要受其經(jīng)濟增長速度、城市化水平、人口密度及數(shù)量、國家產(chǎn)業(yè)結(jié)構(gòu)等綜合因素的影響。在全球經(jīng)濟持續(xù)低迷的情況下,我國國民經(jīng)濟仍然以較高的速度持續(xù)增長,城市化水平不斷提高。這從客觀
13、上導(dǎo)致了我國電梯行業(yè)的空前繁榮景象,我國已經(jīng)成為全球最大的電梯市場。上世紀(jì)80年代以來,隨著經(jīng)濟建設(shè)的持續(xù)高速發(fā)展,我國電梯需求量越來越大。總趨勢是上升的,電梯行業(yè)進入了“第三次浪潮”。如此龐大的市場需求為我國電梯行業(yè)的發(fā)展創(chuàng)造了廣闊的舞臺!</p><p> 1.2 EDA技術(shù)及實現(xiàn)方法概述</p><p> 1.2.1 EDA技術(shù)簡介</p><p> E
14、DA代表了當(dāng)今電子設(shè)計技術(shù)的最新發(fā)展方向,它的基本特征是:設(shè)計人員按照“自頂向下”的設(shè)計方法,對整個系統(tǒng)進行方案設(shè)計和功能劃分,系統(tǒng)的關(guān)鍵電路用一片或幾片專用集成電路(ASIC)實現(xiàn),然后采用硬件描述語言(HDL)完成系統(tǒng)行為級設(shè)計,最后通過綜合器和適配器生成最終的目標(biāo)器件,這樣的設(shè)計方法被稱為高層次的電子設(shè)計方法。下面介紹與EDA基本特征有關(guān)的幾個概念?! ?.“自頂向下”的設(shè)計方法,10年前,電子設(shè)計的基本思路還是選用標(biāo)準(zhǔn)集成電路
15、“自底向上”地構(gòu)造出一個新的系統(tǒng),這樣的設(shè)計方法就如同一磚一瓦建造金字塔,不僅效率低、成本高而且容易出錯?! 「邔哟卧O(shè)計是一種“自頂向下”的全新設(shè)計方法,這種設(shè)計方法首先從系統(tǒng)設(shè)計入手,在頂層進行功能方框圖的劃分和結(jié)構(gòu)設(shè)計。在方框圖一級進行仿真、糾錯,并用硬件描述語言對高層次的系統(tǒng)行為進行描述,在系統(tǒng)一級進行驗證。然后,用綜合優(yōu)化工具生成具體門電路的網(wǎng)絡(luò)表,其對應(yīng)的物理實現(xiàn)級可以是印刷電路板或?qū)S眉呻娐?。由于設(shè)計的主要仿真和調(diào)試過程
16、是在高層次上完成的,這既有利于早期發(fā)現(xiàn)結(jié)構(gòu)設(shè)計上的錯誤,避免設(shè)計工作的浪費,又減少了邏輯功能仿真的工作量,提高了設(shè)計的</p><p> 1.2.2 FPGA簡介</p><p> 目前以硬件描述語言(Verilog或 VHDL)所完成的電路設(shè)計,可以經(jīng)過簡單的綜合與布局,快速的燒錄至 FPGA 上進行測試,是現(xiàn)代 IC 設(shè)計驗證的技術(shù)主流。這些可編輯元件可以被用來實現(xiàn)一些基本的邏輯門
17、電路(比如AND、OR、XOR、NOT)或者更復(fù)雜一些的組合功能比如解碼器或數(shù)學(xué)方程式。在大多數(shù)的FPGA里面,這些可編輯的元件里也包含記憶元件例如觸發(fā)器(Flip-flop)或者其他更加完整的記憶塊。 系統(tǒng)設(shè)計師可以根據(jù)需要通過可編輯的連接把FPGA內(nèi)部的邏輯塊連接起來,就好像一個電路試驗板被放在了一個芯片里。一個出廠后的成品FPGA的邏輯塊和連接可以按照設(shè)計者而改變,所以FPGA可以完成所需要的邏輯功能
18、。</p><p> FPGA一般來說比ASIC(專用集成芯片)的速度要慢,無法完成復(fù)雜的設(shè)計,而且消耗更多的電能。但是他們也有很多的優(yōu)點比如可以快速成品,可以被修改來改正程序中的錯誤和更便宜的造價。廠商也可能會提供便宜的但是編輯能力差的FPGA。因為這些芯片有比較差的可編輯能力,所以這些設(shè)計的開發(fā)是在普通的FPGA上完成的,然后將設(shè)計轉(zhuǎn)移到一個類似于ASIC的芯片上。另外一種方法是用CPLD(復(fù)雜可編程邏輯器
19、件備)。</p><p> FPGA是由存放在片內(nèi)RAM中的程序來設(shè)置其工作狀態(tài)的,因此,工作時需要對片內(nèi)的RAM進行編程。用戶可以根據(jù)不同的配置模式,采用不同的編程方式。 </p><p> 加電時,F(xiàn)PGA芯片將EPROM中數(shù)據(jù)讀入片內(nèi)編程RAM中,配置完成后,F(xiàn)PGA進入工作狀態(tài)。掉電后,F(xiàn)PGA恢復(fù)成白片,內(nèi)部邏輯關(guān)系消失,因此,F(xiàn)PGA能夠反復(fù)使用。FPGA的編程無須專用的F
20、PGA編程器,只須用通用的EPROM、PROM編程器即可。當(dāng)需要修改FPGA功能時,只需換一片EPROM即可。這樣,同一片F(xiàn)PGA,不同的編程數(shù)據(jù),可以產(chǎn)生不同的電路功能。因此,F(xiàn)PGA的使用非常靈活。</p><p> 1.2.3 VHDL語言介紹</p><p> VHDL 的英文全名是 Very-High-Speed Integrated Circuit Hardware Des
21、cription Language,誕生于 1982 年。1987 年底,VHDL被 IEEE 和美國國防部確認為標(biāo)準(zhǔn)硬件描述語言。 </p><p> VHDL主要用于描述數(shù)字系統(tǒng)的結(jié)構(gòu),行為,功能和接口。除了含有許多具有硬件特征的語句外,VHDL的語言形式、描述風(fēng)格以及語法是十分類似于一般的計算機高級語言。VHDL的程序結(jié)構(gòu)特點是將一項工程設(shè)計,或稱設(shè)計實體(可以是一個元件,一個電路模塊或一個系統(tǒng))分成外部
22、(或稱可視部分,及端口)和內(nèi)部(或稱不可視部分),既涉及實體的內(nèi)部功能和算法完成部分。在對一個設(shè)計實體定義了外部界面后,一旦其內(nèi)部開發(fā)完成后,其他的設(shè)計就可以直接調(diào)用這個實體。這種將設(shè)計實體分成內(nèi)外部分的概念是VHDL系統(tǒng)設(shè)計的基本點。</p><p> VHDL具有功能強大的語言結(jié)構(gòu),可以用簡潔明確的源代碼來描述復(fù)雜的邏輯控制。它具有多層次的設(shè)計描述功能,層層細化,最后可直接生成電路級描述。VHDL支持同步電
23、路、異步電路和隨機電路的設(shè)計,這是其他硬件描述語言所不能比擬的。VHDL還支持各種設(shè)計方法,既支持自底向上的設(shè)計,又支持自頂向下的設(shè)計;既支持模塊化設(shè)計,又支持層次化設(shè)計。</p><p> VHDL 語言具有多層次的電路設(shè)計描述功能,既可描述系統(tǒng)級電路 , 也可以描述門級電路;描述方式既可以采用行為描述、寄存器傳輸描述或者結(jié)構(gòu)描述,也可以采用三者的混合描述方式。同時,VHDL 語言也支持慣性延遲和傳輸延遲,這
24、樣可以準(zhǔn)確地建立硬件電路的模型。VHDL 語言的強大描述能力還體現(xiàn)在它具有豐富的數(shù)據(jù)類型。VHDL 語言既支持標(biāo)準(zhǔn)定義的數(shù)據(jù)類型,也支持用戶定義的數(shù)據(jù)類型,這樣便會給硬件描述帶來較大的自由度。 </p><p> VHDL 語言很強的移植能力主要體現(xiàn)在: 對于同一個硬件電路的 VHDL 語言描述 , 它可以從一個模擬器移植到另一個模擬器上、從一個綜合器移植到另一個綜合器上或者從一個工作平臺移植到另一個工作平臺上
25、去執(zhí)行。</p><p> 采用 VHDL 語言描述硬件電路時, 設(shè)計人員并不需要首先考慮選擇進行設(shè)計的器件。這樣做的好處是可以使設(shè)計人員集中精力進行電路設(shè)計的優(yōu)化, 而不需要考慮其他的問題。當(dāng)硬件電路的設(shè)計描述完成以后 ,VHDL 語言允許采用多種不同的器件結(jié)構(gòu)來實現(xiàn)。</p><p> VHDL 語言采用基于庫 ( library) 的設(shè)計方法。在設(shè)計過程中 , 設(shè)計人員可以建立各
26、種可再次利用的模塊 , 一個大規(guī)模的硬件電路的設(shè)計不可能從門級電路開始一步步地進行設(shè)計 , 而是一些模塊的累加。這些模塊可以預(yù)先設(shè)計或者使用以前設(shè)計中的存檔模塊, 將這些模塊存放在庫中 , 就可以在以后的設(shè)計中進行復(fù)用。 </p><p> 由于 VHDL 語言是一種描述、模擬、綜合、優(yōu)化和布線的標(biāo)準(zhǔn)硬件描述語言 , 因此它可以使設(shè)計成果在設(shè)計人員之間方便地進行交流和共享, 從而減</p><
27、;p> 小硬件電路設(shè)計的工作量, 縮短開發(fā)周期</p><p><b> 1.3 狀態(tài)機簡介</b></p><p> 關(guān)于狀態(tài)機的一個極度確切的描述是它是一個有向圖形,由一組節(jié)點和一組相應(yīng)的轉(zhuǎn)移函數(shù)組成。狀態(tài)機通過響應(yīng)一系列事件而“運行”。每個事件都在屬于“當(dāng)前” 節(jié)點的轉(zhuǎn)移函數(shù)的控制范圍內(nèi),其中函數(shù)的范圍是節(jié)點的一個子集。函數(shù)返回“下一個”(也許是同一
28、個)節(jié)點。這些節(jié)點中至少有一個必須是終態(tài)。當(dāng)?shù)竭_終態(tài), 狀態(tài)機停止。 </p><p> 包含一組狀態(tài)集(states)、一個起始狀態(tài)(start state)、一組輸入符號集(alphabet)、一個映射輸入符號和當(dāng)前狀態(tài)到下一狀態(tài)的轉(zhuǎn)換函(transition function)的計算模型。當(dāng)輸入符號串,模型隨即進入起始狀態(tài)。它要改變到新的狀態(tài),依賴于轉(zhuǎn)換函數(shù)。在有限狀態(tài)機中,會有有許多變量,例如,狀態(tài) 機
29、有很多與動作(actions)轉(zhuǎn)換(Mealy機)或狀態(tài)(摩爾機)關(guān)聯(lián)的動作,多重起始狀態(tài),基于沒有輸入符號的轉(zhuǎn)換,或者指定符號和狀態(tài)(非定有 限狀態(tài)機)的多個轉(zhuǎn)換,指派給接收狀態(tài)(識別者)的一個或多個狀態(tài),等等。 </p><p> 傳統(tǒng)應(yīng)用程序的控制流程基本是順序的:遵循事先設(shè)定的邏輯,從頭到尾地執(zhí)行。很少有事件能改變標(biāo)準(zhǔn)執(zhí)行流程;而且這些事件主要涉及異常情況?!懊钚袑嵱贸绦颉笔沁@種傳統(tǒng)應(yīng)用程序的典型例子
30、。 </p><p> 有限狀態(tài)機是一種概念性機器,它能采取某種操作來響應(yīng)一個外部事件。具體采取的操作不僅能取決于接收到的事件,還能取決于各個事件的相對發(fā)生順序。之所以能 做到這一點,是因為機器能跟蹤一個內(nèi)部狀態(tài),它會在收到事件后進行更新。為一個事件而響應(yīng)的行動不僅取決于事件本身,還取決于機器的內(nèi)部狀態(tài)。另外,采取 的行動還會決定并更新機器的狀態(tài)。這樣一來,任何邏輯都可建模成一系列事件/狀態(tài)組合。 </p
31、><p> 狀態(tài)機可歸納為4個要素,即現(xiàn)態(tài)、條件、動作、次態(tài)。這樣的歸納,主要是出于對狀態(tài)機的內(nèi)在因果關(guān)系的考慮?!艾F(xiàn)態(tài)”和“條件”是因,“動作”和“次態(tài)”是果。詳解如下: </p><p> ?、佻F(xiàn)態(tài):是指當(dāng)前所處的狀態(tài)。 </p><p> ?、跅l件:又稱為“事件”。當(dāng)一個條件被滿足,將會觸發(fā)一個動作,或者執(zhí)行一次狀態(tài)的遷移。 </p><p&
32、gt; ③動作:條件滿足后執(zhí)行的動作。動作執(zhí)行完畢后,可以遷移到新的狀態(tài),也可以仍舊保持原狀態(tài)。動作不是必需的,當(dāng)條件滿足后,也可以不執(zhí)行任何動作,直接遷移到新狀態(tài)。 </p><p> ?、艽螒B(tài):條件滿足后要遷往的新狀態(tài)。“次態(tài)”是相對于“現(xiàn)態(tài)”而言的,“次態(tài)”一旦被激活,就轉(zhuǎn)變成新的“現(xiàn)態(tài)”了。</p><p><b> 2 系統(tǒng)方案設(shè)計</b></p&
33、gt;<p><b> 2.1設(shè)計要求</b></p><p> (1) 每層電梯入口處設(shè)有上下請求開關(guān),電梯內(nèi)設(shè)有顧客到達層次的停站請求開關(guān)。</p><p> (2) 設(shè)有電梯入口處位置指示裝置及電梯運行模式(上升或下降)指示裝置。</p><p> (3) 電梯到達有停站請求的樓層,開門指示燈亮,開門后,經(jīng)一段時延后
34、,電梯門關(guān)閉電梯繼續(xù)進行,直至執(zhí)行完最后一個請求信號后停留在當(dāng)前層。</p><p> (4) 電梯運行規(guī)則:當(dāng)處于上升模式時,只響應(yīng)比所在位置高的請求信號,由下而上逐個執(zhí)行,直到最后一個上樓請求執(zhí)行完畢;高層有下樓請求,則直接升到請求層,進入下降模式。當(dāng)電梯處于下降模式時則與上升模式相反。</p><p> 2.2 總體設(shè)計方案</p><p> 2.2.1
35、 控制器模塊化概述</p><p> 控制器的功能模塊如圖2.1所示,包括主控制器、樓層選擇器、狀態(tài)顯示器、譯碼器和樓層顯示器。乘客在電梯中選擇所要到達的樓層,通過主控制器的處理,電梯開始運行,狀態(tài)顯示器顯示電梯的運行狀態(tài),電梯所在樓層數(shù)通過譯碼器譯碼從而在樓層顯示器中顯示。由于其他模塊相對簡單很多,所以主控制器是核心部分。 </p><p> 圖2-1 總體設(shè)計方案</p>
36、;<p> 2.2.2 電梯上下層運行流程圖</p><p> 電梯上升流程圖,如圖2-2:</p><p> 圖2-2 電梯上升流程圖</p><p> 電梯下降流程圖,如圖2.3:</p><p> 圖2-3 電梯下降流程圖</p><p> 2.2.3電梯運行控制流程圖</p>
37、;<p><b> 如圖2.4:</b></p><p> 圖2-4 電梯運行控制流程圖</p><p> 2.2.4 電梯控制器設(shè)計思路</p><p> 電梯控制器運用狀態(tài)機的設(shè)計方法,思路比較清晰??梢詫㈦娞莸却拿棵腌娨约伴_門、關(guān)門都看成一個獨立的狀態(tài)。由于電梯又是每秒上升或下降一層,所以就可以通過一個統(tǒng)一的1秒為
38、周期的時鐘來觸發(fā)狀態(tài)機。根據(jù)電梯的實際工作情況,可以把狀態(tài)機設(shè)置7個狀態(tài),分別是“電梯停留在第1層”、“開門”、“關(guān)門”、 “開門等待4秒”、“上升”、“下降”和“停止?fàn)顟B(tài)”。各個狀態(tài)之間的轉(zhuǎn)換條件可由上面的設(shè)計要求所決定。初始化狀態(tài)為1樓等待門是關(guān)閉的。各狀態(tài)機之間轉(zhuǎn)換圖如圖2.5:</p><p> 圖2-5 狀態(tài)機轉(zhuǎn)換圖</p><p> 2.3 設(shè)計的VHDL實現(xiàn)</p&
39、gt;<p> 2.3.1 控制器實體設(shè)計</p><p> 首先考慮輸入端口,一個異步復(fù)位端口reset,用于在系統(tǒng)不正常時回到初始狀態(tài);在電梯外部,必須有升降請求端口,一層是最低層,不需要有下降請求,六層是最高層,不需要有上升請求[3],二三四五層則上升、下降請求端口都有;在電梯的內(nèi)部,應(yīng)該設(shè)有各層停留的請求端口:一個電梯時鐘輸入端口,該輸入時鐘以1秒為周期,用于驅(qū)動電梯的升降及開門關(guān)門等動
40、作;另有一個按鍵時鐘輸入端口,時鐘頻率比電梯時鐘高。</p><p> 其次是輸出端口,有升降請求信號以后,就得有一個輸出端口來指示請求是否被響應(yīng),有請求信號以后,該輸出端口輸出邏輯‘l’。被響應(yīng)以后則恢復(fù)邏輯‘0’;同樣,在電梯內(nèi)部也應(yīng)該有這樣的輸出端口來顯示各層停留是否被響應(yīng);在電梯外部,需要一個端口來指示電梯現(xiàn)在所處的位置;電梯開門關(guān)門的狀態(tài)也能用一個輸出端口來指示;為了觀察電梯的運行是否正確,可以設(shè)置一
41、個輸出端口來指示電梯的升降狀態(tài)。</p><p> 2.3.2 控制器結(jié)構(gòu)體設(shè)計</p><p> 首先說明一下狀態(tài)。狀態(tài)機設(shè)置了7個狀態(tài),分別是電梯停留在l層(stoponl)、開門(dooropen)、關(guān)門(doorclose)、開門等待4秒(doorwait4)、上升(up)、下降(down)和停止(stop)。在實體說明定義完端口之后,在結(jié)構(gòu)體architecture和begi
42、n之間需要有如下的定義語句,來定義狀態(tài)機。 type lift_state is (stoponl,dooropen,doorclose, doorwait4,up,down,stop): signal mylift:lift_state: 在結(jié)構(gòu)體中,設(shè)計了兩個進程互相配合,一個是狀態(tài)機進程作為主要進程,另外一個是信號燈控制進程作為輔助進程。狀態(tài)機進程中的很多判斷條件是以信號燈進程產(chǎn)生的信號燈信號為依據(jù)的,而信號燈進程
43、中信號燈的熄滅又是由狀態(tài)機進程中傳出的clearup和cleardn信號來控制。 在狀態(tài)機進程中,在電梯的上升狀態(tài)中,通過對信號燈的判斷,決定下一個狀態(tài)是繼續(xù)上升還是停止;在電梯下降狀態(tài)中,也是通過對信號燈的判斷,決定下一個狀態(tài)是繼續(xù)下降還是停止;在電梯停止?fàn)顟B(tài)中</p><p><b> 3 器件選型</b></p><p> 3.1 FPGA芯片選型&
44、lt;/p><p> 主控芯片選用Altera公司ACEX系列FPGA芯片EP1K30TC144-3, Altera公司是20世紀(jì)90年代以來發(fā)展較快的可編程邏輯器件生產(chǎn)廠家,在激烈的市場競爭中, 憑借其雄厚的技術(shù)實力,獨特的設(shè)計構(gòu)思和功能齊全的芯片系列,躋身于世界最大的器件供應(yīng)商之列。EP1K30TC144-3芯片屬于Altera公司的ACEX 1K系列,集成典型邏輯門數(shù)達30000個, 工作頻率最高可達178.
45、6MHz,最小傳輸延時為5.0ns,它將查找表(LUT)與嵌入式陣列塊(EAB)結(jié)合起來,提供了一種具有高效管芯的低成本結(jié)構(gòu)。該芯片支持1.8到2.5V供電電壓,其I/O接口支持多電壓的連接:1.8V,2.5V,3.3V,5V僅在外接電阻時可承受,還提供可編程的節(jié)能工作模式。在編程工藝上,采用SRAM(靜態(tài)隨機存儲器)工藝,可插寫上萬次。這些特點使該芯片適用于復(fù)雜的邏輯功能和存儲功能的應(yīng)用場合。</p><p>
46、<b> 3.2 功能模塊</b></p><p> 3.2.1 主控器模塊</p><p><b> 如圖3-1:</b></p><p> 圖3-1 電梯主控制模塊</p><p> 電梯主控制模塊端口說明:</p><p> buttonclk 按鈕時鐘信號
47、 liftclk 電梯時鐘信號 </p><p> reset 復(fù)位鍵 f1upbutton 一樓上樓按鈕 </p><p> f2upbutton 二樓上樓按鈕 f3upbutton 三樓上樓按鈕</p><p> f4upbutton 四樓上樓
48、按鈕 f5upbutton 五樓上樓按鈕</p><p> f2dnbutton 二樓下樓按鈕 f3dnbutton 三樓下樓按鈕</p><p> f4dnbutton 四樓下樓按鈕 f5dnbutton 五樓下樓按鈕 </p><p> f6dnbutton 六樓下樓按鈕
49、 stop1button 電梯內(nèi)部一樓按鈕</p><p> stop2button 電梯內(nèi)部二樓按鈕 stop3button 電梯內(nèi)部三樓按鈕</p><p> stop4button 電梯內(nèi)部四樓按鈕 stop5button 電梯內(nèi)部五樓按鈕</p><p> stop6button 電梯內(nèi)部六樓按鈕
50、 fuplight[6..1] 每樓層上升指示燈</p><p> fdnlight[6..1] 每樓層下降指示燈 stoplight[6..1] 電梯內(nèi)部樓層指示燈 </p><p> position[2..0] 樓層位置顯示 doorlight 電梯門狀態(tài)顯示 </p><p> udsig 電梯上升下降顯示
51、</p><p> 3.2.2 分頻器模塊</p><p><b> 如圖3-2:</b></p><p> 圖3-2 分頻器模塊</p><p><b> 模塊端口說明:</b></p><p> clk_in 電源輸入端 div
52、_out 分頻后時鐘輸出端</p><p> 3.2.3 譯碼器模塊</p><p><b> 如圖3-3:</b></p><p><b> 圖3-3譯碼器模塊</b></p><p> aaa[2..0] 樓層位置輸出端 bbb[3..0] 譯碼輸出端</p&
53、gt;<p> 譯碼器邏輯功能表如表3-1</p><p> 表3-1 譯碼器邏輯功能表</p><p> 3.2.4 數(shù)據(jù)選擇器模塊</p><p><b> 如圖3-4:</b></p><p> 圖 3-4 數(shù)據(jù)選擇器模塊</p><p> 數(shù)據(jù)選擇器模塊端口說明:
54、</p><p> input[3..0] 譯碼器輸入端 output[6..0] 數(shù)據(jù)選擇器輸出端</p><p> 譯碼器邏輯功能表如表3-2</p><p> 表3-2 譯碼器邏輯功能表</p><p><b> 4 程序仿真</b></p><p> 4.1
55、電梯控制器仿真分析</p><p><b> 仿真示例1: </b></p><p> 圖4-1所示仿真的是在第五層電梯外部有上升請求,也就是f5upbuttton信號的一個脈沖[9],可以看到電梯從一層上升到五層,position信號由1變到5,doorlight信號‘1’表示開門,‘0’表示關(guān)門。當(dāng)乘客進入電梯以后,在電梯內(nèi)部要求上升到第六層,也就是stop6
56、button產(chǎn)生一個脈沖,電梯上升到第6層,開門4秒以后關(guān)門,停留在第六層,position最后的值為6。在仿真圖中看不到buttonclk,只顯示為一條黑色的線,是因為采用了頻率較大的時鐘。 再看fuplight信號燈,當(dāng)五層有上升請求的時候,它的值由0變到16。(注意fuplight和fdnlight是6位的二進制向量,這里的“010000”,表示五層有請求;“000100”也就是4,表示三層有請求)。當(dāng)電梯停留到第五層以后,
57、表明該請求被響應(yīng),所以它的值變?yōu)?,由于沒有下降請求信號,所以fdnlight信號燈的值一盲都為0。當(dāng)電梯處于第五層時,udsig=0,即此時若沒有其他請求,電梯處于上升模式;當(dāng)stop6button=1,即電梯內(nèi)部按了六層請求時,電梯門燈滅電梯開始上升udsig=0,即處于上升模</p><p> 圖4-1 仿真示例1</p><p><b> 仿真示例2:</b&g
58、t;</p><p> 圖4-2是有下降請求的情況,它是圖4.1的繼續(xù),當(dāng)電梯停留在第六層的時候,在電梯外第四層有下降請求,這時候fdnlight信號燈由0變?yōu)?,說明第四層有下降請求。電梯下降到第四層,響應(yīng)了下降請求,所以fdnlight信號燈清0。電梯開始下降,即udsig=1,抵達四樓后電梯門開,doorlight=1, 這時候,在電梯內(nèi)部有一樓向上請求,接著電梯內(nèi)部有三樓的請求,所以電梯繼續(xù)下降,到達三
59、層后,電梯門開[11],四秒后電梯門關(guān),又因為一樓有請求所以最終到達一樓停止響應(yīng),position信號的值保持在1,電梯處于上升模式。四秒后電梯門關(guān)。</p><p> 圖4-2 仿真示例2</p><p><b> 仿真示例3:</b></p><p> 圖4-3仿真的情況是,原先電梯停留在第一層,這時候電梯外第六層有下降請求,電梯上升
60、到第六層,乘客進入電梯以后要求下降到一層,與此同時,在電梯外第三層有上升請求,電梯首先要響應(yīng)下降請求然后再響應(yīng)這個上升請求,所以電梯得先下降到第一層,然后再上升到第三層來,接著電梯內(nèi)部五樓,三樓都有請求信號,于是電梯升到五樓然后下降到三樓,這是符合常理的。從仿真的波形看,電梯的位置變化和想象是一致的。電梯的運行情況完全正確。最后乘客在電梯內(nèi)部要求上升到三層,所以電梯最后的停留位置為三層。</p><p> 圖4
61、-3 仿真示例3</p><p><b> 仿真示例4:</b></p><p> 圖4-4所示的仿真,原先電梯停留在第一層,電梯外第六層有下降請求,電梯上升到六層,乘客進入電梯以后要求下降到一層,此時,二層有下降請求,接著又有上升請求,電梯首先在二層停留。然后下降到一層。隨后要響應(yīng)二層上升請求,上升到二層,乘客進入電梯以后要求上升到三層,所以電梯最后的停留位置在
62、三層。</p><p> 圖4-4 仿真示例4</p><p> 4.2 其它模塊仿真</p><p> 鑒于以上主控器模塊仿真完全符合預(yù)期要求,可以推知其它模塊設(shè)計正確,故不再做數(shù)據(jù)選擇器模塊和譯碼器模塊的仿真分析。</p><p><b> 5 結(jié)論</b></p><p> 本電梯
63、系統(tǒng)實現(xiàn)了如下功能:</p><p> 1.各層電梯內(nèi)部信號:各樓層請求按鍵。外部信號:上升下降請求按鍵,所在樓層顯示,電梯運行狀態(tài)顯示。 2.能夠存儲請求信號,電梯上升(下降)過程中,根據(jù)電梯的運行狀態(tài),首先按方向優(yōu)先、循環(huán)次序響應(yīng)各請求。 3.電梯每秒升(降)一層樓。電梯到達有停站請求的樓層,經(jīng)過1秒電梯門打開,開門指示燈亮,開門4秒后,電梯門關(guān)閉(開門指示燈滅),電梯繼續(xù)進行,直至執(zhí)行完最
64、后一個請求信號后停留在當(dāng)前層。電梯初始狀態(tài)為一層關(guān)門狀態(tài)。</p><p> 綜上所述,完成了課題的所有要求,該設(shè)計采用模塊化編程,升級可實現(xiàn)任意多層電梯系統(tǒng),具有很強的適應(yīng)性和實用性。 在本設(shè)計中,因為考慮了擴展性,所以在信號定義的時候就使用了二進制的向量,而不是整數(shù)。在設(shè)計方法上也做了特殊的設(shè)計,所以使得擴展性較好。如果要實現(xiàn)n層電梯的控制,首先在端口的地方就要加入所有的按鍵,而指示燈只要把向量中的
65、6改成n就可以了。同時需要在按鍵控制進程里加入其他按鍵觸發(fā)指示燈的語句。在電梯的升降狀態(tài)將6改成n,在電梯的開門狀態(tài)中將2改成n一1,在關(guān)門狀態(tài),將position=6改成position=n,關(guān)鍵是修改position=6的部分,如果按照每層羅列,將十分煩瑣,所以得尋求各層判斷條件的共性,解決方法之一就是,新建一個全局向量abc為std_logic_vector(n downto 1),abc的賦值為abc<=(pos=>
66、’1’,other=>'</p><p> 0’)。在電梯的上升模式時,如果有本層請求信號,則電梯開門;如果沒有任何請求信號,則電梯停在當(dāng)前層;否則用abc和stoplight與fuplight向量比較,如果stoplight或fupligh比abc大,則說明更高層還有上升或者停戰(zhàn)請求,電梯需繼續(xù)上升;如果abc更大,則用abc與fdnlight作比較,如果fdnlight更大,則說明更高層有下降
67、請求,電梯繼續(xù)上升,否則電梯下降。電梯處在下降模式時同原理分析判定下一狀態(tài)。這樣可以大大簡化程序,但要注意的是abc向量作為判斷依據(jù),需實時更新,可以單獨寫一個進程,觸發(fā)時鐘周期要設(shè)置得很小。在電梯的上升狀態(tài)和開門狀態(tài)中,把6改為n,在信號燈控制進程中加入其它按鍵觸發(fā)指示燈的語句。</p><p><b> 參考文獻</b></p><p> [1]潘松,黃繼業(yè).
68、EDA技術(shù)實用教程.科學(xué)出版社,2006</p><p> [2]付家才.EDA原理與應(yīng)用[M].北京:化學(xué)工業(yè)出版社,2001:15-23 </p><p> [3]王振紅.VHDL數(shù)字電路設(shè)計應(yīng)用實踐教程[M].北京:機械工業(yè)出版社,2003:2-14 </p><p> [4]黃智偉.FPGA系統(tǒng)設(shè)計與實踐[M].北京:電子工業(yè)出版社,2005:12-2
69、4</p><p> [5] 梁延?xùn)|.電梯控制技術(shù)[M].北京:中國建筑工業(yè)出版社,1997:23-47</p><p><b> 致謝</b></p><p> 在這里對老師在平時授課中的耐心教導(dǎo)表示衷心感謝。</p><p> 通過此次課程設(shè)計,學(xué)到了很多之前不了解的知識,也意識到了大學(xué)課程對我們今后的學(xué)習(xí)有
70、很大的幫助。在課程設(shè)計中,我雖然碰到了很多困難和問題,到最后還是靠自己的努力與堅持獨立的完成了任務(wù)。這次設(shè)計給我最深的印象就是擴大自己的知識面,學(xué)習(xí)了很多以前不了解的知識,了解更多與本專業(yè)有關(guān)的科技信息,與時代共同進步,才能在將來成為有用的科技人才,覺得平時所學(xué)的知識有了實用的價值,達到了理論與實際相結(jié)合的目的,不僅學(xué)到了不少知識,而且鍛煉了自己的能力,使自己對以后的路有了更加清楚的認識,同時,對未來有了更多的信心。再次感謝老師的諄諄教
71、誨!</p><p><b> 附錄</b></p><p><b> 源程序:</b></p><p><b> 電梯控制程序:</b></p><p> library ieee;</p><p> use ieee.std_logic_1
72、164.all;</p><p> use ieee.std_logic_unsigned.all;</p><p> use ieee.std_logic_arith.all;</p><p> entity sixlift is</p><p><b> port(</b></p><p
73、> buttonclk:in std_logic; --按鈕時鐘信號 </p><p> liftclk: in std_logic; --電梯時鐘信號 </p><p>
74、reset:in std_logic; --復(fù)位鍵 </p><p> f1upbutton:in std_logic; --一樓上升按鈕 </p><p> f2upbutto
75、n:in std_logic; --二樓上升按鈕</p><p> f3upbutton:in std_logic; --三樓上升按鈕 </p><p> f4upbutton:in std_logic; --四樓上升按鈕</p><p> f5upbu
76、tton:in std_logic; </p><p> f2dnbutton:in std_logic; --二樓下降按鈕 </p><p> f3dnbutton:in std_logic; --三樓下降按鈕</p><p> f4dnbutto
77、n:in std_logic; --四樓下降按鈕</p><p> f5dnbutton:in std_logic; --五樓下降按鈕</p><p> f6dnbutton:in std_logic; --六樓下降按鈕 </p><p> fupl
78、ight:buffer std_logic_vector(6 downto 1); --上升指示燈 </p><p> fdnlight:buffer std_logic_vector(6 downto 1); --下降指示燈 </p><p> stop1butto
79、n,stop2button,stop3button, stop4button, stop5button, stop6button:in std_logic; --電梯內(nèi)部按鈕 </p><p> stoplight:buffer std_logic_vector(6 downto 1); --內(nèi)部停止指示燈
80、</p><p> position:buffer integer range 1 to 6; --樓層位置顯示 </p><p> doorlight:out std_logic; --電梯門指示燈 ‘1’ 開 ‘0’關(guān)
81、</p><p> udsig:buffer std_logic ); --‘0’處于上升模式,‘1’處于下降模式 </p><p> end sixlift;</p><p> architecture art of sixlift is </p><p>
82、 type lift_state is (stopon1,dooropen,doorclose,doorwait4,up,down,stop); --電梯所處的7個狀態(tài)</p><p> signal mylift:lift_state; --內(nèi)部電梯狀態(tài)信號</p><p> signal clearup:std_logic; --上升清除信號
83、 </p><p> signal cleardn:std_logic; --下降清除信號 </p><p> signal waitcnt:integer range 0 to 2; --waitcnt為完成四秒延時而設(shè)置
84、 </p><p><b> begin</b></p><p> controllift:process(reset,liftclk) </p><p> variable pos:integer range 1 to 6; --樓層位置變量
85、 </p><p><b> begin</b></p><p> if reset='1' then </p><p> mylift<=
86、stopon1; --起始狀態(tài)</p><p> clearup<='0'; --上樓信號清除</p><p> cleardn<='0'; --下樓信號清除</p><p> pos:=1; --處于一樓</p><p> pos
87、ition<=1; --處于一樓</p><p><b> else</b></p><p> if liftclk'event and liftclk='1' then --四秒后門關(guān) </p><p> case
88、mylift is</p><p> when stopon1 => doorlight<='1'; --電梯門開</p><p> position<=1; --電梯處于一樓</p><p><b> pos:=1;</b></p><p&g
89、t; mylift<=doorwait4; </p><p> when doorwait4 => waitcnt<=waitcnt+1; --waitcnt計數(shù)夠兩個電梯時鐘脈沖后狀態(tài)跳轉(zhuǎn)到doorclose,加上中間過程完成延時四秒</p><p&g
90、t; if waitcnt=’2’</p><p> then waitcnt<=0</p><p> mylift<=doorclose;</p><p> else mylift<=doorwait4;</p><p><b> end if;</b></p><p&g
91、t; ; </p><p> when doorclose =></p><p> doorlight<='0'; --電梯門關(guān)
92、 </p><p> if udsig='0' then --電梯處于上升模式 </p><p> if position=6 then
93、 </p><p> if stoplight="000000" and fuplight="000000" and fdnlight="000000" then </p><p> udsig<='1';mylift<=doorclose;
94、 </p><p> else udsig<='1';mylift<=down; </p><p> end if;
95、 </p><p> elsif position=5 then </p><p> if stoplight="000000" and fuplight="000000" and fdnlight="000000" then
96、 </p><p> udsig<='0';mylift<=doorclose; </p><p> elsif stoplight(6)='1' or fdnlight(6)='1' then </p>
97、<p> udsig<='0';mylift<=up;</p><p> else udsig<='1';mylift<=down; </p><p><b> end if;</b></p>&
98、lt;p> elsif position=4 then </p><p> if stoplight="000000" and fuplight="000000" and fdnlight="000000" then </p>&
99、lt;p> udsig<='0';mylift<=doorclose; </p><p> elsif stoplight(5)='1' or stoplight(6)= '1' or fdnlight(6)='1' or
100、fdnlight(5)='1' then </p><p> udsig<='0';mylift<=up;</p><p> else udsig<='1';mylift<=down; </p><p>
101、;<b> end if;</b></p><p> elsif position=3 then </p><p> if stoplight="000000" and fuplight="000000" and fdnlig
102、ht="000000" then </p><p> udsig<='0';mylift<=doorclose; </p><p> elsif stoplight(4)='1' or stoplight(5)=&
103、#39;1' or stoplight(6)= '1' or fdnlight(6)='1' or fdnlight(5)='1' or fdnlight(4)='1' then </p><p> udsig<='0';mylift<=up;</p><p> else udsig
104、<='1';mylift<=down; </p><p><b> end if;</b></p><p> elsif position=2 then
105、</p><p> if stoplight="000000" and fuplight="000000" and fdnlight="000000" then </p><p> udsig<='0';mylift<=doorclose;
106、 </p><p> elsif stoplight(3)='1' or stoplight(4)='1' or stoplight(5)='1' or stoplight(6)= '1' or fdnlight(6)='1' or fdnlight(5)='1' o
107、r fdnlight(4)='1' or fdnlight(3)='1' then </p><p> udsig<='0';mylift<=up;</p><p> else udsig<='1';mylift<=down;
108、 </p><p><b> end if;</b></p><p> elsif position=1 then </p><p> if stoplight="000000" and fu
109、plight="000000" and fdnlight="000000" then </p><p> udsig<='0';mylift<=doorclose; </p><p> else uds
110、ig<='0';mylift<=up;</p><p><b> end if;</b></p><p><b> end if;</b></p><p> elsif udsig='1' then
111、 </p><p> if position=1 then </p><p> if stoplight="000000" and fuplight="000000" and fdnlight=&qu
112、ot;000000" then </p><p> udsig<='0';mylift<=doorclose; </p><p> else udsig<='0'; mylift<=up;
113、 </p><p><b> end if; </b></p><p> elsif position=2 then </p><p> if sto
114、plight="000000" and fuplight="000000" and fdnlight="000000" then </p><p> udsig<='1';mylift<=doorclose; &
115、lt;/p><p> elsif stoplight(1)='1' or fuplight(1)='1' then </p><p> udsig<='1';mylift<=down; </p>
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 基于fpga的六層電梯控制系統(tǒng)課程設(shè)計
- 基于fpga六層電梯控制系統(tǒng)
- 基于FPGA六層電梯控制系統(tǒng).doc
- 基于FPGA六層電梯控制系統(tǒng)初稿.doc
- eda課程設(shè)計--基于fpga的4層電梯控制
- 基于FPGA六層電梯控制系統(tǒng)二稿.doc
- 四層電梯控制系統(tǒng)plc課程設(shè)計
- plc課程設(shè)計--- 四層電梯控制系統(tǒng)
- 電梯課程設(shè)計-- 基于plc的電梯控制系統(tǒng)設(shè)計
- 電梯課程設(shè)計---三層電梯模型控制系統(tǒng)設(shè)計
- 基于plc六層電梯控制系統(tǒng)的設(shè)計
- 基于plc六層電梯控制系統(tǒng)設(shè)計
- plc三層電梯課程設(shè)計--- 三層電梯控制系統(tǒng)的設(shè)計
- 課程設(shè)計---四層電梯plc控制系統(tǒng)的模擬
- 課程設(shè)計---基于plc的三層電梯運行控制系統(tǒng)設(shè)計
- plc課程設(shè)計---四層電梯plc控制系統(tǒng)設(shè)計
- plc課程設(shè)計--三層電梯控制系統(tǒng)設(shè)計
- plc課程設(shè)計--四層電梯plc控制系統(tǒng)設(shè)計
- plc課程設(shè)計---四層電梯plc控制系統(tǒng)設(shè)計
- plc電梯課程設(shè)計---基于plc控制的五層電梯系統(tǒng)
評論
0/150
提交評論