eda課程設(shè)計(jì)--電梯控制器設(shè)計(jì)_第1頁(yè)
已閱讀1頁(yè),還剩18頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論