版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、<p> 課程設(shè)計(綜合實驗)報告</p><p> ( 2010 -- 2011 年度第 1 學(xué)期)</p><p> 名 稱: EDA課程設(shè)計 </p><p> 題 目: 電梯控制的實現(xiàn) </p><p> 院 系: </p><p
2、> 班 級: </p><p> 學(xué) 號: </p><p> 學(xué)生姓名: </p><p> 指導(dǎo)教師: </p><p> 設(shè)計周數(shù): 1周 &l
3、t;/p><p> 成 績: </p><p> 日期: 年 月 日</p><p> 一、課程設(shè)計的目的與要求</p><p> 用Mealy有限狀態(tài)機設(shè)計二個樓層電梯控制程序。用VHDL語言寫出Mealy有限狀態(tài)機控制模塊。Mealy有限狀態(tài)機的輸出受控于當(dāng)前的狀態(tài)和信號輸入的變
4、化,一旦這敏感信號被測,輸出的信號就依賴于它們得到確定。</p><p> 電梯控制器的工作原理:</p><p> 當(dāng)電梯空閑時,其狀態(tài)等待著其他樓層的請求,一旦有請求輸入信號,電梯移動到該請求信號的樓層,這時引起電梯門被關(guān)閉。引起電梯門關(guān)閉的條件有如下二個:①必須在地面樓層狀態(tài)StateGround;②首層有請求輸入信號ReqFirst。</p><p>
5、 電梯開始移動到請求層,在移動過程中State從Ground轉(zhuǎn)變?yōu)镚oingFirst。</p><p> 當(dāng)?shù)竭_(dá)請求層后,電梯門被打開并且請求燈熄滅,此狀態(tài)轉(zhuǎn)換為First狀態(tài)。</p><p> 這時如有其他樓層請求信號輸入將引起電梯門的關(guān)閉(如地面層有樓層請求信號ReqGround)。當(dāng)電梯門正在做關(guān)閉動作時,同時又要做重新打開電梯門的動作,其條件必須有當(dāng)前樓層請求信號ReqFi
6、rst輸入(其他請求信號均被忽略)。</p><p> 電梯門關(guān)閉以后,電梯可再次響應(yīng)其他樓層請求,即這時電梯State狀態(tài)為First狀態(tài),并且又從地面層來一個請求信號ReqGround,將會引起電梯State狀態(tài)從First狀態(tài)改變?yōu)镚oingGround狀態(tài),電梯開始往下運行。</p><p> 在未到達(dá)目的地之前,其他請求信號均被忽略。</p><p>
7、<b> 二、設(shè)計正文</b></p><p> 本設(shè)計是基于VHDL語言開發(fā)的兩層電梯控制器。以Quartus Ⅱ為開發(fā)環(huán)境,最終在EDA實驗箱上實現(xiàn)其演示的基本功能。其功能包括:顯示電梯當(dāng)前所在樓層,顯示有請求發(fā)生的樓層,響應(yīng)樓層請求,關(guān)門延時設(shè)置,電梯開關(guān)門顯示。具體描述為:</p><p> 電梯外部有請求開關(guān),一樓一個,二樓一個;電梯內(nèi)部有乘客到達(dá)層次
8、的請求開關(guān)。</p><p> 設(shè)有電梯所處位置指示裝置和電梯運行模式(上升或下降)指示裝置。</p><p> 電梯到達(dá)請求樓層后,電梯門開啟(電梯門指示燈亮),開門四秒后,電梯門關(guān)閉(電梯門指示燈滅),電梯繼續(xù)響應(yīng)請求或回到初始狀態(tài)。</p><p> 電梯初始狀態(tài)為停在1樓,關(guān)門。</p><p> 電梯上升或下降時,終止其他操
9、作。</p><p> 當(dāng)電梯關(guān)門時,同層有請求,先響應(yīng)同層請求(開門),再響應(yīng)其他請求(上升或下降)。</p><p><b> 具體程序如下:</b></p><p> LIBRARY IEEE; </p><p> USE IEEE.STD_LOGIC_1164.ALL;</p><p
10、> USE IEEE.STD_LOGIC_ARITH.ALL; </p><p> USE IEEE.STD_LOGIC_UNSIGNED.ALL;</p><p> ENTITY dianti IS </p><p> PORT(clk,reset,up1,down2,stop1,stop2:IN STD_LOGIC;</p><
11、;p> --按鍵共有4個,其中電梯內(nèi)部2個:stop1,stop2,電梯外部一樓一個up1,二樓一個down2</p><p> stoplight:buffer STD_LOGIC_VECTOR(2 DOWNTO 1);</p><p> --stoplight對應(yīng)stop按鍵</p><p> uplight,downlight:buffer ST
12、D_LOGIC;</p><p> --uplight,downlight分別對應(yīng)up1,down2按鍵</p><p> udsig:BUFFER STD_LOGIC; </p><p> --電梯的狀態(tài),0代表(預(yù))上升,1代表(預(yù))下 </p><p> POSITION:BUFFER INTEGER RANGE 1
13、 TO 2;</p><p><b> --電梯的位置</b></p><p> doorlight:buffer STD_LOGIC);</p><p> --門燈,開門燈亮,關(guān)門燈滅</p><p> END dianti;</p><p> ARCHITECTURE behav O
14、F dianti IS</p><p> TYPE state_type is(stopon1,dooropen,doorclose,wait1,wait2,wait3,wait4,up,down,</p><p><b> stop);</b></p><p> --十個狀態(tài),初始,開門,關(guān)門,延時1~4,上升,下降,停</p&g
15、t;<p> SIGNAL state:state_type:=stopon1;</p><p> SIGNAL clearup,cleardn,anjianclk,dianticlk:STD_LOGIC;</p><p> --上升清零,下降清零,按鍵時鐘,電梯時鐘</p><p> SIGNAL q:STD_LOGIC_VECTOR(3 D
16、OWNTO 0);</p><p><b> BEGIN</b></p><p> PROCESS(clk) --設(shè)定按鍵時鐘和電梯時鐘,外部時鐘周期設(shè)為50ms</p><p><b> BEGIN</b></p><p> IF(reset='1') THEN</p
17、><p> q<="0000";</p><p> ELSIF RISING_EDGE(clk) then</p><p><b> q<=q+1;</b></p><p><b> END IF;</b></p><p> anjian
18、clk<=q(0); --二分頻 </p><p> dianticlk<=q(3); --十六分頻</p><p> END PROCESS;</p><p> cont:PROCESS(reset,dianticlk)</p><p> VARIABLE POS:INTEGER RANGE 3 DOWNTO 1;&
19、lt;/p><p><b> BEGIN</b></p><p> IF reset='1' then</p><p> state<=stopon1;</p><p> clearup<='0';</p><p> cleardn<=
20、9;0'; --復(fù)位</p><p> elsif rising_edge(dianticlk) THEN</p><p> CASE state IS --設(shè)定狀態(tài)機的各個狀態(tài) </p><p> WHEN stopon1=>doorlight<='1'; position<=1;pos:=1; state<
21、=wait1;</p><p> WHEN wait1=>state<=wait2; --延時</p><p> WHEN wait2=>clearup<='0'; cleardn<='0'; state<=wait3;</p><p> WHEN wait3=>state<=wa
22、it4;</p><p> WHEN wait4=>state<=doorclose;</p><p> WHEN doorclose =>doorlight<='0'; --從開門到關(guān)門經(jīng)歷5個電梯時鐘周期</p><p> IF udsig='0' THEN --(預(yù))上升狀態(tài)時</p>
23、<p> IF position=2 THEN--電梯在二樓時</p><p> IF stoplight="00" and uplight='0' and downlight='0' THEN</p><p> udsig<='1'; state<=doorclose;</p>
24、<p> ELSIF stoplight="10" THEN state<=dooropen;</p><p> ELSIF downlight='1' THEN state<=dooropen;</p><p><b> ELSE</b></p><p> udsig&
25、lt;='1'; state<=down;</p><p><b> END IF;</b></p><p> ELSIF position=1 THEN --電梯在一樓時</p><p> IF stoplight="00" and uplight='0' and downlig
26、ht='0' THEN</p><p> udsig<='0'; state<=doorclose;</p><p> ELSIF stoplight="01" THEN state<=dooropen;</p><p> ELSIF uplight='1' THEN
27、state<=dooropen;</p><p><b> ELSE</b></p><p> udsig<='0'; state<=up;</p><p><b> END IF;</b></p><p><b> END IF;</b&
28、gt;</p><p> ELSIF udsig='1' THEN --(預(yù))下降狀態(tài)時</p><p> IF position=1 THEN --電梯在一樓</p><p> IF stoplight="00" and uplight='0' and downlight='0' THEN&
29、lt;/p><p> udsig<='0'; state<=doorclose;</p><p> ELSIF stoplight="01" THEN state<=dooropen;</p><p> ELSIF uplight='1' THEN state<=dooropen;&
30、lt;/p><p><b> ELSE</b></p><p> udsig<='0'; state<=up;</p><p><b> END IF;</b></p><p> ELSIF position=2 THEN--電梯在二樓時</p>&l
31、t;p> IF stoplight="00" and uplight='0' and downlight='0' THEN</p><p> udsig<='1'; state<=doorclose;</p><p> ELSIF stoplight="10" THEN stat
32、e<=dooropen;</p><p> ELSIF downlight='1' THEN state<=dooropen; </p><p><b> ELSE</b></p><p> udsig<='1'; state<=down;</p><p&g
33、t;<b> END IF;</b></p><p><b> END IF;</b></p><p><b> END IF;</b></p><p> WHEN up=>position<=position+1; pos:=pos+1;</p><p>
34、; IF (pos=2) THEN </p><p> state<=stop;</p><p><b> END IF;</b></p><p> WHEN down=>position<=position-1; pos:=pos-1;</p><p> IF (POS=1) THE
35、N</p><p> state<=stop;</p><p><b> END IF;</b></p><p> WHEN stop=>state<=dooropen;</p><p> WHEN dooropen=>doorlight<='1'; clearup&
36、lt;='1'; cleardn<='1'; state<=wait1;</p><p> when others=>state<=stopon1;</p><p><b> end case;</b></p><p><b> end if;</b></
37、p><p> end process cont; </p><p> butt:PROCESS(reset,anjianclk) --設(shè)定按鍵</p><p><b> BEGIN</b></p><p> if reset='1' then</p><p> stop
38、light<="00"; uplight<='0'; downlight<='0';</p><p> elsif rising_edge(anjianclk) then</p><p> if clearup='1' then</p><p> stoplight(posi
39、tion)<='0'; uplight<='0';</p><p><b> else</b></p><p> if up1='1' then uplight<='1';</p><p><b> END IF;</b></p&
40、gt;<p><b> END IF;</b></p><p> if cleardn='1' then</p><p> stoplight(position)<='0'; downlight<='0';</p><p><b> else</b
41、></p><p> if down2='1'then downlight<='1';</p><p><b> end if;</b></p><p><b> end if;</b></p><p> if stop1='1'
42、then stoplight(1)<='1'; end if;</p><p> if stop2='1' then stoplight(2)<='1'; end if; </p><p><b> END IF;</b></p><p> END PROCESS butt;
43、</p><p> END behav; </p><p> 功能分析:此程序一共有三個進(jìn)程(process):時鐘設(shè)定,狀態(tài)機設(shè)定,按鍵設(shè)定。狀態(tài)機進(jìn)程的運行基于電梯時鐘dianticlk,此時鐘為外部時鐘的周期是外部時鐘周期的十六倍;按鍵設(shè)定進(jìn)程基于按鍵時鐘anjianclk,此時鐘的周期為外部時鐘周期的兩倍。按鍵時鐘周期比電梯時鐘周期短,這就意味著按鍵設(shè)定進(jìn)程比狀態(tài)機進(jìn)程快,這
44、就保證了每一次按鍵都能掃描并保留而不會被狀態(tài)機進(jìn)程中的清零程序消除。一共有7個燈顯示電梯的狀況:stoplight1~2、uplight,downlight、udsig、POSITION1~2、doorlight。</p><p> 電梯的初始狀態(tài)是停在一樓,門關(guān)。復(fù)位鍵reset可實現(xiàn)電梯的初始功能。電梯在一樓時,position1=1,其燈亮,并且電梯一直保持預(yù)上升狀態(tài),udsig=1,其燈亮。當(dāng)接到一樓外
45、部請求信號(up1)時,uplight亮,電梯門打開,doorlight亮。四秒后,電梯門關(guān),doorlight滅。這時,只有收到去二樓的請求(stop2)時,才會上二樓,此時stoplight2亮,直到門開為止。若門關(guān)時接收到的是stop1的請求,則電梯不上二樓,門開,四秒后門再關(guān)閉。</p><p> 當(dāng)電梯停在二樓是,情況類似。</p><p><b> 仿真結(jié)果如下圖
46、:</b></p><p> 電梯在一樓,乘客在外部按up1請求進(jìn)入,進(jìn)入電梯后按stop2請求上二樓</p><p> 電梯在一樓,乘客在外部按up1請求進(jìn)入,進(jìn)入電梯后按stop1請求出電梯</p><p> 電梯在二樓,乘客在外部按down2請求進(jìn)入,進(jìn)入電梯后按stop1請求下一樓</p><p><b>
47、 三、課程設(shè)計總結(jié)</b></p><p> 本設(shè)計是基于VHDL語言開發(fā)的兩層電梯控制器。以Quartus Ⅱ為開發(fā)環(huán)境,最終在EDA實驗箱上實現(xiàn)其演示的基本功能。其功能包括:顯示電梯當(dāng)前所在樓層,顯示有請求發(fā)生的樓層,響應(yīng)樓層請求,關(guān)門延時設(shè)置,電梯開關(guān)門顯示。</p><p> 這個課程設(shè)計還有很多不足之處:</p><p> 1、電梯各個
48、進(jìn)程依賴于3個不同的時鐘,這樣做雖然比較精確但是顯得有些多余,經(jīng)老師的指導(dǎo)后發(fā)現(xiàn)其實除了開關(guān)門過程時需要時鐘以外其他地方不用時鐘也沒有關(guān)系。</p><p> 2、沒有考慮到消抖問題。</p><p> 3、電梯控制程序只實現(xiàn)了兩層樓電梯的控制,這種電梯在現(xiàn)實生活中應(yīng)用很少,而且此程序不方便向更多層電梯控制器程序擴展。</p><p> 本課程設(shè)計遇到了不少困
49、難,主要原因是由于平時學(xué)習(xí)沒有特別系統(tǒng)認(rèn)真,所以對VHDL語言沒有熟練掌握,很多語句的具體含義和應(yīng)用都不是很了解,編程時遇到一定的困難。我是第一次接觸這種EDA實驗箱,第一次設(shè)計一個完整的程序然后連線運行,這個過程讓我感受到了動手做實驗的樂趣。很感謝老師的悉心教導(dǎo)和同學(xué)的熱心幫助,讓我比較順利的做出了這個課程設(shè)計。通過這次課程設(shè)計,我深刻了解到光學(xué)會課本上的知識沒有用,還要運用到實踐中,考試100分不代表就能熟練掌握這項技術(shù)。</
50、p><p><b> 四、參考文獻(xiàn)</b></p><p> 侯伯亨,劉凱,顧新 . VHDL硬件描述語言與數(shù)字邏輯電路設(shè)計(第三版). 西安電子科技大學(xué)出版社 . 2009</p><p> 曾繁泰,陳美金 . VHDL數(shù)字系統(tǒng)設(shè)計 . 清華大學(xué)出版社 . 2001</p><p> 曾繁泰,陳美金 . VHDL程
溫馨提示
- 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)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- eda課程設(shè)計之電梯控制
- eda課程設(shè)計之電梯控制
- eda課程設(shè)計--電梯控制器設(shè)計
- eda課程設(shè)計--電梯控制器設(shè)計
- eda電梯控制器課程設(shè)計報告
- eda_電梯控制器課程設(shè)計
- eda課程設(shè)計--基于fpga的4層電梯控制
- eda技術(shù)課程設(shè)計--電梯控制器電路設(shè)計
- eda彩燈控制課程設(shè)計
- 電梯控制課程設(shè)計
- 電梯控制課程設(shè)計
- 電梯控制課程設(shè)計
- eda課程設(shè)計--eda課程設(shè)計實驗報告
- eda課程設(shè)計-- eda與數(shù)字系統(tǒng)課程設(shè)計
- eda課程設(shè)計---多路彩燈控制的設(shè)計
- eda課程設(shè)計
- eda課程設(shè)計--三層電梯plc控制程序設(shè)計
- eda課程設(shè)計
- eda課程設(shè)計--用vhdl實現(xiàn)多路彩燈控制器的設(shè)計
- eda課程設(shè)計---彩燈控制器
評論
0/150
提交評論