版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、<p><b> 課程設(shè)計(jì)報(bào)告</b></p><p> 專業(yè)班級(jí): 電信 </p><p> 課程名稱: EDA技術(shù) </p><p> 學(xué)年學(xué)期: 2013—2014 學(xué)年 第二學(xué)期 </p>
2、;<p> 指導(dǎo)教師: </p><p> 2 0 14年 6月</p><p><b> 課程設(shè)計(jì)成績(jī)?cè)u(píng)定表</b></p><p><b> 目錄</b></p><p><b> 設(shè)計(jì)題目</
3、b></p><p><b> 設(shè)計(jì)目的</b></p><p><b> 設(shè)計(jì)內(nèi)容</b></p><p><b> 設(shè)計(jì)原理</b></p><p><b> 具體程序說(shuō)明</b></p><p> 實(shí)現(xiàn)的功能及
4、運(yùn)行規(guī)則</p><p><b> 7.編譯與仿真波形</b></p><p><b> 8.硬件測(cè)試</b></p><p><b> 9.設(shè)計(jì)體會(huì)</b></p><p><b> 10.附錄</b></p><p>&
5、lt;b> 引言</b></p><p> 電梯控制器設(shè)計(jì)EDA技術(shù)的基本特征和基本工具總的來(lái)說(shuō),現(xiàn)代EDA技術(shù)的基本特征是采用高級(jí)語(yǔ)言描述,具有系統(tǒng)級(jí)仿真和綜合能力。它主要采用并行工程和“自頂向下”的設(shè)計(jì)方法,使開(kāi)發(fā)者從一開(kāi)始就要考慮到產(chǎn)品生成周期的諸多方面,包括質(zhì)量、成本、開(kāi)發(fā)時(shí)間及用戶的需求等等,然后從系統(tǒng)設(shè)計(jì)入手,在頂層進(jìn)行功能方框圖的劃分和結(jié)構(gòu)設(shè)計(jì),在方框圖一級(jí)進(jìn)行仿真、糾錯(cuò)、并用
6、VHDL、Verilog-HDL、ABEL等硬件描述語(yǔ)言對(duì)高層次的系統(tǒng)行為進(jìn)行描述,在系統(tǒng)一級(jí)進(jìn)行驗(yàn)證,然后再用邏輯綜合優(yōu)化工具生成具體的門級(jí)邏輯電路的網(wǎng)表[3],其對(duì)應(yīng)的物理實(shí)現(xiàn)級(jí)可以是印刷電路板或?qū)S眉呻娐贰?lt;/p><p> 利用EDA技術(shù)進(jìn)行電子系統(tǒng)的設(shè)計(jì),具有以下幾個(gè)特點(diǎn):用軟件的方式設(shè)計(jì)硬件;用軟件方式設(shè)計(jì)的系統(tǒng)到硬件系統(tǒng)的轉(zhuǎn)換是由相關(guān)的開(kāi)發(fā)軟件自動(dòng)完成;設(shè)計(jì)過(guò)程中可用相關(guān)軟件進(jìn)行各種仿真;系統(tǒng)可
7、現(xiàn)場(chǎng)編程,在線升級(jí);整個(gè)系統(tǒng)可集成在一個(gè)芯片上,具有體積小、功耗低及可靠性高的特點(diǎn)。因此,EDA技術(shù)是現(xiàn)代電子設(shè)計(jì)的發(fā)展趨勢(shì)。電子設(shè)計(jì)自動(dòng)化(EDA)是一種實(shí)現(xiàn)電子系統(tǒng)或電子產(chǎn)品自動(dòng)化的技術(shù),它與電子技術(shù)、微電子技術(shù)的發(fā)展密切相關(guān),它吸收了計(jì)算機(jī)科學(xué)領(lǐng)域的大多數(shù)最新研究成果,以高性能的計(jì)算機(jī)作為工作平臺(tái),促進(jìn)了工程發(fā)展。</p><p> 關(guān)鍵詞: 電梯;VHDL;信號(hào);運(yùn)行</p><p&
8、gt;<b> 設(shè)計(jì)題目</b></p><p><b> 電梯控制器設(shè)計(jì)</b></p><p><b> 設(shè)計(jì)目的</b></p><p> 本文應(yīng)用狀態(tài)機(jī),設(shè)計(jì)了一個(gè)電梯控制器的狀態(tài)機(jī)。狀態(tài)機(jī)是符合人的思維邏輯的,且簡(jiǎn)單明了。</p><p> 通過(guò)對(duì)EDA課程
9、設(shè)計(jì),結(jié)合計(jì)算機(jī)科學(xué)的理論、抽象和設(shè)計(jì)三種形態(tài),進(jìn)一步掌握各功能部件的工作原理和邏輯實(shí)現(xiàn),熟悉電梯控制器的基本工作原理。</p><p> 通過(guò)該EDA課程設(shè)計(jì)的學(xué)習(xí),總結(jié)課程的學(xué)習(xí)內(nèi)容,運(yùn)用所學(xué)的數(shù)字電路以及計(jì)算機(jī)組成和狀態(tài)機(jī)的基本原理、基本知識(shí)和基本技巧,解決某一個(gè)具體的試驗(yàn)問(wèn)題,培養(yǎng)綜合分析和解決問(wèn)題的能力。</p><p> 為今后分析、設(shè)計(jì)、開(kāi)發(fā)以及使用計(jì)算機(jī)軟件設(shè)計(jì)打下堅(jiān)實(shí)
10、的基礎(chǔ)。</p><p> 三層電梯廣泛應(yīng)用在大型的貨運(yùn)之中。其使用便捷,貨運(yùn)周期短,效率高成本低,對(duì)貨運(yùn)事業(yè)具有相當(dāng)?shù)慕?jīng)濟(jì)價(jià)值。</p><p> 采用VHDL語(yǔ)言來(lái)設(shè)計(jì)實(shí)用三層電梯控制器,其代碼具有良好的可讀性和易理解性,源程序經(jīng)A1tera公司的MAX+plus II軟件仿真,目標(biāo)器件選用CPLD器件。通過(guò)對(duì)三層電梯控制器的設(shè)計(jì),可以發(fā)現(xiàn)本設(shè)計(jì)有一定的擴(kuò)展性,而且可以作為更多層電
11、梯控制器實(shí)現(xiàn)的基礎(chǔ)。</p><p><b> 設(shè)計(jì)內(nèi)容</b></p><p> EDA設(shè)計(jì)實(shí)現(xiàn)一個(gè)3層電梯的控制系統(tǒng)。系統(tǒng)要求如下:(1)電梯到達(dá)樓層時(shí),能發(fā)出指示信號(hào)(數(shù)碼管顯示樓層號(hào));(2)能指示電梯的運(yùn)行狀態(tài)(上行或下行);(3)電梯的門操作具有關(guān)門延時(shí)設(shè)置(當(dāng)按下梯內(nèi)關(guān)門按鈕時(shí)立刻響應(yīng)關(guān)門操作,否則延時(shí)固定時(shí)間后響應(yīng)關(guān)門操作);(4)正確響應(yīng)各樓層的
12、上行和下行請(qǐng)求(各樓層設(shè)置上行和下行選擇按鈕)。電梯運(yùn)行規(guī)則:當(dāng)電梯處在上升模式時(shí),只響應(yīng)比電梯所在位置高的上樓請(qǐng)求,由下向上逐個(gè)執(zhí)行,直到最后一個(gè)上樓請(qǐng)求執(zhí)行完畢。如果高層有下樓請(qǐng)求,直接升到有下樓請(qǐng)求的最高樓層,然后進(jìn)入下降模式。當(dāng)電梯在一樓時(shí),不管是梯內(nèi)梯外,電梯都只可能接收到上升的請(qǐng)求信號(hào)。此時(shí),電梯就進(jìn)入預(yù)上升狀態(tài),準(zhǔn)備作上升運(yùn)行。如果電梯沒(méi)有接收到請(qǐng)求信號(hào),電梯則在一樓待機(jī)。當(dāng)電梯在二樓時(shí),電梯則可能出現(xiàn)三種情況:電梯并沒(méi)有
13、接收到梯內(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)。當(dāng)電梯在三樓時(shí),不管是梯內(nèi)梯外,電梯都只可能接收到下降的請(qǐng)求信號(hào)。此時(shí),電梯就進(jìn)入預(yù)下降狀態(tài),準(zhǔn)備作下降運(yùn)行。如果電梯沒(méi)有接收到請(qǐng)求信號(hào),電梯則停在</p><p><b> 設(shè)計(jì)原理</b></p><p> 電梯控制器的功能模塊如下
14、圖所示,包括主控制器、分控制器、樓層選擇器、狀態(tài)顯示器、譯碼器和樓層顯示器。乘客在電梯中選擇所要到達(dá)的樓層,通過(guò)主控制器的處理,電梯開(kāi)始運(yùn)行,狀態(tài)顯示器顯示電梯的運(yùn)行狀態(tài),電梯所在樓層數(shù)通過(guò)譯碼器譯碼從而在樓層顯示器中顯示。分控制器把有效的請(qǐng)求傳給主控制器進(jìn)行處理,同時(shí)顯示電梯的運(yùn)行狀態(tài)和電梯所在樓層數(shù)。由于分控制器相對(duì)簡(jiǎn)單很多,所以主控制器是核心部分。</p><p><b> 電梯控制器原理圖&l
15、t;/b></p><p><b> 5.具體程序說(shuō)明</b></p><p> 整段代碼由三大部分組成:庫(kù)聲明,實(shí)體,結(jié)構(gòu)體。</p><p><b> (1)庫(kù)聲明部分</b></p><p> 調(diào)用VHDL庫(kù),通過(guò)library語(yǔ)句本程序應(yīng)用了VHDL庫(kù)中的”通用ieee庫(kù)”和”
16、標(biāo)準(zhǔn)std庫(kù)”。</p><p> 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&
17、gt;<b> ?。?) 實(shí)體部分</b></p><p> 實(shí)體部分列出了代碼所用到的所用輸入輸出端口。結(jié)構(gòu)體部分共使用了分頻進(jìn)程,電梯狀態(tài)進(jìn)程,讀按鍵、控制指示燈進(jìn)程和信號(hào)燈進(jìn)程4個(gè)進(jìn)程。主控制器系統(tǒng)由VHDL語(yǔ)言實(shí)現(xiàn),其輸入輸出端口定義如下:</p><p> entity flift is</p><p> port(clk:in
18、 std_logic; ——時(shí)鐘信號(hào)</p><p> close :in std_logic; ——立即關(guān)門</p><p> rightlight:buffer std_logic; ——門燈信號(hào)</p><p
19、> up1:in std_logic; ——樓上升按鈕</p><p> up2:in std_logic; —二樓上升按鈕</p><p> down2:in std_logic; ——二樓下將按鈕</p&
20、gt;<p> down3:in std_logic; ——三樓下將按鈕</p><p> uplight:buffer std_logic_vector(3 downto 1); ——上升指示燈</p><p> dnlight:buffer std_logic_vector(3 downto 1);
21、 ——下將指示燈</p><p> stop1,stop2,stop3:in std_logic; ——停止按鈕</p><p> stoplight:buffer std_logic_vector(3 downto 1); ——停止指示燈</p><p> position:buffer intege
22、r range 1 to 3; ——樓層信號(hào)</p><p> led: buffer std_logic_vector(3 downto 0); ——樓層指示燈</p><p> doorlight:out std_logic; ——門燈信號(hào)</p><p> u
23、dsig:buffer std_logic); ——電梯運(yùn)行狀態(tài)</p><p><b> (3)結(jié)構(gòu)體部分</b></p><p> 使用狀態(tài)機(jī)來(lái)實(shí)現(xiàn)電梯功能。</p><p> 在結(jié)構(gòu)體中,設(shè)計(jì)了倆個(gè)進(jìn)程互相配合,一個(gè)是狀態(tài)機(jī)進(jìn)程作為主要進(jìn)程,另外一個(gè)是信號(hào)燈控制進(jìn)程作為輔助進(jìn)程。狀態(tài)機(jī)進(jìn)程
24、中的很多判斷條件是以信號(hào)燈進(jìn)程產(chǎn)生的信號(hào)燈信號(hào)為依據(jù)的,而信號(hào)燈進(jìn)程中信號(hào)燈的熄滅又是由狀態(tài)機(jī)進(jìn)程中傳出的clearup和cleardn信號(hào)來(lái)控制。 在狀態(tài)機(jī)進(jìn)程中,在電梯的上升狀態(tài)中,通過(guò)對(duì)信號(hào)燈的判斷,決定下一個(gè)狀態(tài)是繼續(xù)上升還是停止;在電梯下降狀態(tài)中,也是通過(guò)對(duì)信號(hào)燈的判斷,決定下一個(gè)狀態(tài)是繼續(xù)下降還是停止;在電梯停止?fàn)顟B(tài)中,判斷是最復(fù)雜的,通過(guò)對(duì)信號(hào)的判斷,決定電梯是上升、下降還是停止。&l
25、t;/p><p> 在信號(hào)燈控制進(jìn)程中,由于使用了專門的頻率較高的按鍵時(shí)鐘,所以使得按鍵的靈敏度增大,但是時(shí)鐘頻率不能過(guò)高,否則容易使按鍵過(guò)于靈敏。按鍵后產(chǎn)生的點(diǎn)亮的信號(hào)燈(邏輯值為‘1’)用于作為狀態(tài)機(jī)進(jìn)程中的判斷條件,而clearup和cleardn信號(hào)為邏輯‘l’使得相應(yīng)的信號(hào)燈熄滅。</p><p> 分頻進(jìn)程:該進(jìn)程的目的是產(chǎn)生不同頻率的兩個(gè)時(shí)鐘,電梯控制時(shí)鐘fliclk和按鍵控
26、制時(shí)鐘buttclk。</p><p> process(clk) ——產(chǎn)生電梯控制時(shí)鐘fliclk和按鍵控制時(shí)鐘buttclk</p><p><b> begin </b></p><p> if (clk'event and clk='1') then q<=q+1;</p>
27、;<p><b> end if;</b></p><p> buttclk<=q(0);</p><p> fliclk<=q(3);</p><p> end process;</p><p> 狀態(tài)機(jī)進(jìn)程:該部分是整個(gè)設(shè)計(jì)的核心,根據(jù)電梯的工作模式,將電梯的工作分為10個(gè)狀態(tài),分
28、別為停一層stopno1、開(kāi)門狀態(tài)dooropen、關(guān)門狀態(tài)doorclose、開(kāi)門等待1秒wait1、開(kāi)門等待2秒wait2、開(kāi)門等待3秒wait3、開(kāi)門等待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> 停一層狀態(tài):電梯開(kāi)門同時(shí)轉(zhuǎn)入下一狀態(tài)wait1。</p><p> when stop
29、onl=>doorlight<='1'; position<=1; pos:=1;state<=wait1;</p><p> 開(kāi)門等待1秒:該狀態(tài)時(shí)重新計(jì)入上升下降請(qǐng)求。如果此時(shí)有關(guān)門請(qǐng)求,則轉(zhuǎn)入下一狀態(tài)doorclose;如果沒(méi)有請(qǐng)求,則下一狀態(tài)為wait2。</p><p> when wait1=>clearup<='
30、0'; cleardn<='0'; </p><p> if(close='1') then state<=doorclose;</p><p> else state<=wait2;</p><p><b> end if;</b></p><p> 開(kāi)
31、門等待2秒:如果此時(shí)有關(guān)門請(qǐng)求,則轉(zhuǎn)入下一狀態(tài)doorclose;如果沒(méi)有請(qǐng)求,則下一狀態(tài)為wait3。</p><p> 開(kāi)門等待3秒:如果此時(shí)有關(guān)門請(qǐng)求,則轉(zhuǎn)入下一狀態(tài)doorclose;如果沒(méi)有請(qǐng)求,則下一狀態(tài)為wait4。</p><p> 開(kāi)門等待4秒:該狀態(tài)的下一狀態(tài)為doorclose。</p><p> 關(guān)門狀態(tài):此時(shí)電梯開(kāi)門。該狀態(tài)要分為2種
32、情況進(jìn)行分析即電梯處于上升情況或下降情況。</p><p> 當(dāng)處于上升模式,同時(shí)電梯位于三層,如果此時(shí)電梯的內(nèi)部與外部都沒(mé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)down。</p><p> if (position=3) then
33、 </p><p> if (stoplight="000" and uplight="000" and downlight="000" ) </p><p> then udsig<='1'; state<=doorclose;</p><
34、;p> elsif(stoplight(3)='1' or downlight(3)='1') </p><p> then state<=dooropen;</p><p> else udsig<='1'; state<=down;</p><p><b> end if;
35、</b></p><p> 當(dāng)處于上升模式,同時(shí)電梯位于二層,如果此時(shí)電梯的內(nèi)部與外部都沒(méi)有請(qǐng)求,電梯仍為上升模式,并進(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&g
36、t;<p> elsif (position=2) then </p><p> if(stoplight="000" and uplight="000" and downlight="000") </p><p> then udsig<='0
37、9;; state<=doorclose;</p><p> elsif (stoplight(3)='1' or downlight(3)='1') </p><p> then udsig<='0'; state<=up;</p><p> else udsig<='1'
38、;; state<=down;</p><p><b> end if;</b></p><p> 當(dāng)處于上升模式,同時(shí)電梯位于一層,如果此時(shí)電梯的內(nèi)部與外部都沒(mé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。<
39、/p><p> 當(dāng)處于下降模式,同時(shí)電梯位于一層,如果此時(shí)電梯的內(nèi)部與外部都沒(mé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。當(dāng)處于下降模式,同時(shí)電梯位于二層,如果此時(shí)電梯的內(nèi)部與外部都沒(méi)有請(qǐng)求,電梯仍為下降模式,并進(jìn)入下一狀態(tài)doorclose;如果此時(shí)電梯內(nèi)部有在二層下的
40、請(qǐng)求或二層外部有下樓請(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。當(dāng)處于下降模式,同時(shí)電梯位于三層,如果此時(shí)電梯的內(nèi)部與外部都沒(méi)有請(qǐng)求,電梯仍為下降模式,并進(jìn)入下一狀態(tài)doorclose;如果此時(shí)電梯內(nèi)部有在三層下的請(qǐng)求或三層外部有下樓請(qǐng)求,電梯進(jìn)入下一狀態(tài)dooropen;否則電梯仍為下降模式,
41、并進(jìn)入下一狀態(tài)down。</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><p> when up=>position<=position+1; pos:
42、=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><p> elsif(pos=2 and (st
43、oplight(3)='1' or downlight(3)='1')) </p><p> then state<=up;</p><p> else state<=stop;</p><p><b> end if;</b></p><p> 下降:電梯所在樓層數(shù)減
44、一。如果此時(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><p> 開(kāi)門狀態(tài):電梯開(kāi)門同時(shí)清除上升下降的請(qǐng)求,并轉(zhuǎn)入下一狀態(tài)wait1,其它的狀態(tài)都轉(zhuǎn)
45、入下一狀態(tài)stopup='1'。</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> then stoplight(position)<='0
46、'; uplight(position)<='0';</p><p><b> else</b></p><p> if(up1='1')then uplight(1)<='1';</p><p> elsif(up2='1')then uplight(2
47、)<='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)樓層下降信號(hào)清除;否則當(dāng)有下降請(qǐng)求時(shí)相應(yīng)的電梯外部下降指示燈亮。如果停止信號(hào)有效,則相應(yīng)的
48、電梯內(nèi)部停站請(qǐng)求燈亮。</p><p> 6.實(shí)現(xiàn)的功能及運(yùn)行規(guī)則</p><p> 電梯一層入口處設(shè)有上升請(qǐng)求開(kāi)關(guān),二層入口處設(shè)有上、下請(qǐng)求開(kāi)關(guān),三層入口處設(shè)有下降請(qǐng)求開(kāi)關(guān),電梯內(nèi)部設(shè)有顧客到達(dá)樓層的停站請(qǐng)求開(kāi)關(guān)。</p><p> 每層電梯入口處設(shè)有位置指示裝置及電梯運(yùn)行模式 (上升或下降)指示裝置。</p><p> 電梯初始狀
49、態(tài)為一層開(kāi)門狀態(tài)。</p><p> 電梯每秒上升(下降)一層樓。</p><p> 電梯到達(dá)需要停止的樓層,經(jīng)過(guò)1秒電梯門打開(kāi),開(kāi)門指示燈亮,開(kāi)門4秒后,電梯門關(guān)閉(開(kāi)門指示燈滅),電梯繼續(xù)運(yùn)行,直至執(zhí)行完最后一個(gè)請(qǐng)求信號(hào)后停留在當(dāng)前層。</p><p> 電梯需要寄存器來(lái)記憶電梯內(nèi)外所有請(qǐng)求,并按照電梯運(yùn)行規(guī)則按順序響應(yīng),每個(gè)請(qǐng)求信號(hào)保留至執(zhí)行后消除。&l
50、t;/p><p> 電梯的運(yùn)行規(guī)則:當(dāng)電梯處于上升模式時(shí),只響應(yīng)比電梯所在位置高的上樓請(qǐng)求信號(hào)和停站請(qǐng)求信號(hào),由下而上逐個(gè)執(zhí)行,直到最后一個(gè)上樓請(qǐng)求執(zhí)行完畢;如果高層有下樓請(qǐng)求,則直接上升到有下樓請(qǐng)求的最高層,然后進(jìn)入下降模式。當(dāng)電梯處于下降模式時(shí)則與上升模式相反。</p><p><b> 7.編譯與仿真波形</b></p><p> 電梯
51、運(yùn)行情況分析,選取幾個(gè)典型運(yùn)行情況進(jìn)行分析。</p><p> 電梯運(yùn)行情況一:二層和三層都有下樓請(qǐng)求并都要求停在一層,初始時(shí)電梯停在一層,上升模式,并保持開(kāi)門狀態(tài)。外部沒(méi)有請(qǐng)求時(shí),電梯等待4秒關(guān)門。由于二層和三層都是下樓請(qǐng)求,而電梯此時(shí)是上升模式,則電梯到二層時(shí)不停,直接運(yùn)行到三層,開(kāi)門,由于沒(méi)有關(guān)門請(qǐng)求,電梯等待4秒自動(dòng)關(guān)門,并轉(zhuǎn)為下降模式。電梯運(yùn)行到二層,開(kāi)門,由于沒(méi)有關(guān)門請(qǐng)求,電梯等待4秒自動(dòng)關(guān)門。由于
52、電梯內(nèi)部要求停在一層,則電梯直接運(yùn)行到一層,開(kāi)門,由于沒(méi)有關(guān)門請(qǐng)求,電梯等待4秒自動(dòng)關(guān)門,并自動(dòng)轉(zhuǎn)為上升模式。仿真情況如圖1所示。</p><p> 圖1 電梯運(yùn)行情況一</p><p><b> 8.硬件測(cè)試</b></p><p> 該硬件調(diào)試使用實(shí)驗(yàn)電路結(jié)構(gòu)引腳鎖定與按鍵設(shè)置如下:</p><p> clk
53、>chip=lift;input pin=183;</p><p> up1>chip=lift;input pin=68;按鍵1</p><p> up2>chip=lift;input pin=69;按鍵2</p><p> down2>chip=lift;input pin=70;按鍵3</p><p>
54、 down3>chip=lift;input pin=71;按鍵4</p><p> stop1>chip=lift;input pin=64;按鍵5</p><p> stop2>chip=lift;input pin=65;按鍵6</p><p> stop3>chip=lift;input pin=67;按鍵7</p>
55、<p> close>chip=lift;input pin=74;按鍵8</p><p> doorlight>chip=lift;output pin=90</p><p> udsig>chip=lift;output pin=92</p><p> Uplight1>chip=lift;output pin=14
56、1</p><p> Uplight2>chip=lift;output pin=136</p><p> Uplight3>chip=lift;output pin=135</p><p> Stoplight1>chip=lift;output pin=199</p><p> Stoplight2>chi
57、p=lift;output pin=198</p><p> Dout0>chip=lift;output pin=191</p><p> Dout1>chip=lift;output pin=192</p><p> Dout2>chip=lift;output pin=193</p><p> Dout3>
58、;chip=lift;output pin=195</p><p><b> 9.設(shè)計(jì)體會(huì)</b></p><p> 為期一周的課程設(shè)計(jì)結(jié)束了,這次課程設(shè)計(jì)使我懂得了合作在一項(xiàng)工作中是必不可少的的,我們的程序總是在出現(xiàn)各種錯(cuò)誤,是我們一組的人經(jīng)過(guò)多次的嘗試與修改才贏得了最后的成功。而且我覺(jué)得理論與實(shí)際相結(jié)合更是重要,只有理論知識(shí)是遠(yuǎn)遠(yuǎn)不夠的,只有把所學(xué)的理論知識(shí)與
59、實(shí)踐相結(jié)合起來(lái),從理論中得出結(jié)論,才能真正為社會(huì)服務(wù),從而提高自己的實(shí)際動(dòng)手能力和獨(dú)立思考的能力。</p><p> 在設(shè)計(jì)的過(guò)程中我們遇到了好多的問(wèn)題,可以說(shuō)得是困難重重。分析設(shè)計(jì)要求可知用狀態(tài)機(jī)實(shí)現(xiàn)電梯的控制比較簡(jiǎn)便,通過(guò)各個(gè)狀態(tài)的分析找出關(guān)系,逐步分解各個(gè)狀態(tài),進(jìn)行設(shè)計(jì)。電梯到達(dá)樓層時(shí),能發(fā)出指示信號(hào);能指示電梯的運(yùn)行狀態(tài);電梯的門操作具有關(guān)門延時(shí)設(shè)置;正確響應(yīng)各樓層的上行和下行請(qǐng)求。雖然本設(shè)計(jì)能基本實(shí)現(xiàn)
60、上述的功能,但是也存在一定的問(wèn)題:仿真中參數(shù)的設(shè)置問(wèn)題。參數(shù)的設(shè)置對(duì)于整個(gè)設(shè)計(jì)可謂至關(guān)重要。在程序仿真之初,這個(gè)問(wèn)題就曾一度被忽視。造成在調(diào)試的過(guò)程中對(duì)信號(hào)隨意設(shè)置,導(dǎo)致仿真失敗,還以為是程序出錯(cuò)。例如,在程序仿真之初,clk信號(hào)的周期設(shè)置為100ms,由仿真的效果看到只能實(shí)現(xiàn)最基本的樓層顯示,其他功能都失效。后來(lái)通過(guò)對(duì)clk信號(hào)的周期進(jìn)行調(diào)試,當(dāng)其減少到25ms時(shí),電梯的上述功能都能基本實(shí)現(xiàn);信號(hào)傳輸延時(shí)的問(wèn)題。通過(guò)調(diào)試仿真觀察,可以
61、看到本系統(tǒng)的信號(hào)延時(shí)在10ms左右。但當(dāng)改變仿真時(shí)的一些參數(shù)時(shí)(如仿真時(shí)間、時(shí)鐘信號(hào)的周期、分頻信號(hào)的周期以及器件的選用等),可以發(fā)現(xiàn)延時(shí)又會(huì)發(fā)生比較細(xì)微的變化。</p><p><b> 附錄(程序)</b></p><p> library ieee;</p><p> use ieee.std_logic_1164.all;<
62、/p><p> use ieee.std_logic_arith.all;</p><p> use ieee.std_logic_unsigned.all;</p><p> entity flift is</p><p> port(clk,up1,up2,down2,down3,stop1,stop2,stop3,close:in
63、std_logic;</p><p> uplight,downlight,stoplight:buffer std_logic_vector(3 downto 1);</p><p> udsig:buffer std_logic;</p><p> position:buffer integer range 1 to 3;</p><p
64、> doorlight:out std_logic;</p><p> dout:out std_logic_vector(3 downto 0));</p><p> end flift;</p><p> architecture behav of flift is</p><p> type state_type is(
65、stoponl,dooropen,doorclose,wait1,wait2,wait3,wait4,up,down,stop);</p><p> signal state:state_type:=stoponl;</p><p> signal clearup,cleardn,buttclk,fliclk:std_logic;</p><p> signa
66、l q:std_logic_vector(3 downto 0);</p><p><b> begin</b></p><p> process(clk) ---分頻進(jìn)程,產(chǎn)生電梯控制時(shí)鐘fliclk和按鍵控制時(shí)鐘buttclk</p><p><b> begin </b></p>
67、<p> if (clk'event and clk='1') then q<=q+1;</p><p><b> end if;</b></p><p> buttclk<=q(0);</p><p> fliclk<=q(3);</p><p> end
68、 process;</p><p> cont:process(fliclk) ---狀態(tài)機(jī)進(jìn)程</p><p> variable pos:integer range 3 downto 1;</p><p><b> begin</b></p>
69、<p> if (fliclk'event and fliclk='1') then</p><p> case state is</p><p> when stoponl=>doorlight<='1'; position<=1; pos:=1;state<=wait1;</p><p
70、> when wait1=>clearup<='0'; cleardn<='0'; ---開(kāi)門等待1秒</p><p> if(close='1') then state<=doorclose;</p><p> else state<=wait2;</p><p&
71、gt;<b> end if;</b></p><p> when wait2=> ---開(kāi)門等待2秒</p><p> if(close='1') then state<=doorclose;</p><p> else state<=wai
72、t3;</p><p><b> end if;</b></p><p> when wait3=> ---開(kāi)門等待3秒</p><p> if(close='1') then state<=doorclose;</p><p>
73、; else state<=wait4;</p><p><b> end if;</b></p><p> when wait4=>state<=doorclose; ---開(kāi)門等待4秒</p><p> when doorclose=>doorlight<='0'
74、;; ---關(guān)門狀態(tài)</p><p> if (udsig='0') then ---上升情況</p><p> if (position=3) then ---電梯在3層</p><p> if (stoplight=&
75、quot;000" and uplight="000" and downlight="000" ) </p><p> then udsig<='1'; state<=doorclose;</p><p> elsif(stoplight(3)='1' or downlight(3)='
76、;1')</p><p> then state<=dooropen;</p><p> else udsig<='1'; state<=down;</p><p><b> end if;</b></p><p> elsif (position=2) then
77、 ---電梯在2層</p><p> if(stoplight="000" and uplight="000" and downlight="000") </p><p> then udsig<='0'; state<=doorclose;</p>
78、<p> elsif(stoplight(2)='1' or downlight(2)='1' or uplight(2)='1') </p><p> then state<=dooropen; </p><p> elsif (stoplight(3)
79、='1' or downlight(3)='1')</p><p> then udsig<='0'; state<=up;</p><p> else udsig<='1'; state<=down;</p><p><b> end if;</b>
80、</p><p> elsif (position=1) then ---電梯在1層</p><p> if(stoplight="000" and uplight="000" and downlight="000")</p><p> then udsig
81、<='0'; state<=doorclose;</p><p> elsif(stoplight(1)='1' or uplight(1)='1') </p><p> then state<=dooropen; </p><
82、p> else udsig<='0'; state<=up;</p><p><b> end if;</b></p><p><b> end if;</b></p><p> elsif (udsig='1') then
83、 ---下降情況</p><p> if (position=1) then ---電梯在1層</p><p> if (stoplight="000"and uplight="000" and downlight="000") </p><p>
84、; then udsig<='0'; state<=doorclose;</p><p> elsif(stoplight(1)='1' or uplight(1)='1')</p><p> then state<=dooropen; <
85、/p><p> else udsig<='0'; state<=up;</p><p><b> end if;</b></p><p> elsif(position=2) then ---電梯在2層</p><p> if(stoplight
86、="000" and uplight="000" and downlight="000") </p><p> then udsig<='1'; state <=doorclose;</p><p> elsif(stoplight(2)='1' or downlight(2)=
87、39;1' or uplight(2)='1') </p><p> then state<=dooropen; </p><p> elsif(stoplight(1)='1' or uplight(1)='1')</p><p> then udsig<=
88、9;1'; state<=down;</p><p> else udsig<='0'; state<=up;</p><p><b> end if;</b></p><p> elsif(position=3) then ---電梯在3層</p
89、><p> if(stoplight ="000" and uplight="000" and downlight="000")</p><p> then udsig<='1'; state<=doorclose;</p><p> elsif(stoplight(3)=
90、39;1' or downlight(3)='1') </p><p> then state<=dooropen; </p><p> else udsig<='1'; state<=down;</p><p><b> end if;</b></p><
91、p><b> end if;</b></p><p><b> end if;</b></p><p> when up=>position<=position+1; pos:=pos+1; ---電梯上一層</p><p> if (pos=2 and (uplight(2)=
92、9;1' or downlight(2)='1'or stoplight(2)='1' ))</p><p> then state<=stop;</p><p> elsif(pos=2 and (stoplight(3)='1' or downlight(3)='1')) </p><
93、p> then state<=up;</p><p> else state<=stop;</p><p><b> end if;</b></p><p> when down=>position<=position-1; pos:=pos-1; ---電梯下一層</p><p
94、> 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 (stoplight(1)='1' or uplig
95、ht(1)='1') )</p><p> then state<=down;</p><p> else state<=stop;</p><p><b> end if;</b></p><p> when stop=>state<=dooropen;
96、 ---電梯停止</p><p> when dooropen=>doorlight<='1';clearup<='1';cleardn<='1';state<=wait1; </p><p> when others=>state<=stoponl;</p>
97、<p><b> end case;</b></p><p><b> end if;</b></p><p> end process cont;</p><p> butt: process( buttclk) ---讀按鍵、控制指示燈進(jìn)程<
98、;/p><p> begin </p><p> if(buttclk'event and buttclk='1')then </p><p> if(clearup='1')</p><p> then stoplight(position)<='0'; uplig
99、ht(position)<='0';</p><p><b> else</b></p><p> if(up1='1')then uplight(1)<='1';</p><p> elsif(up2='1')then uplight(2)<='1
100、';</p><p><b> end if;</b></p><p><b> end if;</b></p><p> if(cleardn='1')</p><p> then stoplight(position)<='0'; downl
101、ight(position)<='0';</p><p><b> else </b></p><p> if(down2='1')then downlight(2)<='1';</p><p> elsif(down3='1') then downlight(3
102、)<='1';</p><p><b> end if;</b></p><p><b> end if;</b></p><p> if (stop1='1') then stoplight(1)<='1';</p><p> e
103、lsif (stop2='1') then stoplight(2)<='1';</p><p> elsif (stop3='1') then stoplight(3)<='1'; </p><p><b> end if;</b></p><
104、;p><b> end if;</b></p><p> end process butt;</p><p> process(position)</p><p><b> begin</b></p><p> if(position=1) then dout<="0
105、001";</p><p><b> end if;</b></p><p> if(position=2) then dout<="0010";</p><p><b> end if;</b></p><p> if(position=3) then
106、dout<="0011";</p><p><b> end if;</b></p><p> end process;</p><p> end behav;</p><p><b> 參考文獻(xiàn)</b></p><p> 潘松,黃繼業(yè).
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫(kù)僅提供信息存儲(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ì)報(bào)告
- eda_電梯控制器課程設(shè)計(jì)
- eda技術(shù)課程設(shè)計(jì)--電梯控制器電路設(shè)計(jì)
- eda課程設(shè)計(jì)---彩燈控制器
- eda課程設(shè)計(jì)彩燈控制器
- eda課程設(shè)計(jì)-彩燈控制器
- 電梯控制器課程設(shè)計(jì)
- eda課程設(shè)計(jì)---節(jié)日彩燈控制器
- eda課程設(shè)計(jì)--多路彩燈控制器
- eda課程設(shè)計(jì)空調(diào)控制器設(shè)計(jì)
- eda課程設(shè)計(jì)—空調(diào)控制器
- eda課程設(shè)計(jì)之電梯控制
- eda課程設(shè)計(jì)之電梯控制
- 《eda技術(shù)》課程設(shè)計(jì)報(bào)告----彩燈控制器
- eda課程設(shè)計(jì)---洗衣機(jī)控制器
- eda課程設(shè)計(jì)--交通燈控制器設(shè)計(jì)
- eda課程設(shè)計(jì)---微波爐控制器設(shè)計(jì)
- eda課程設(shè)計(jì)---洗衣機(jī)控制器設(shè)計(jì)
- eda課程設(shè)計(jì)--汽車燈控制器設(shè)計(jì)
評(píng)論
0/150
提交評(píng)論