2023年全國(guó)碩士研究生考試考研英語(yǔ)一試題真題(含答案詳解+作文范文)_第1頁(yè)
已閱讀1頁(yè),還剩23頁(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>  目錄</b></p><p><b>  摘 要2</b></p><p><b>  正文3</b></p><p>  1設(shè)計(jì)目的及要求3</p><p><b>  2設(shè)計(jì)原理3</b></p>&

2、lt;p>  2.1 設(shè)計(jì)實(shí)現(xiàn)原理3</p><p>  2.2項(xiàng)目分塊及其實(shí)現(xiàn)方案5</p><p>  2.3電梯控制器的流程圖6</p><p><b>  3設(shè)計(jì)內(nèi)容7</b></p><p>  3.1基本狀態(tài)設(shè)計(jì)7</p><p><b>  3.2模塊設(shè)計(jì)

3、8</b></p><p><b>  3.3波形仿真9</b></p><p><b>  總結(jié)與致謝13</b></p><p><b>  參考文獻(xiàn)14</b></p><p><b>  附錄15</b></p>

4、<p><b>  摘 要</b></p><p>  電梯作為垂直方向的交通工具,在高層建筑和公共場(chǎng)所已成為不可或缺的設(shè)備。中國(guó)是全球最大的電梯市場(chǎng),也具有最強(qiáng)的電梯生產(chǎn)能力,但由于缺乏自主知識(shí)產(chǎn)權(quán)和核心技術(shù),自主品牌占市場(chǎng)的份額很少。因此要加大對(duì)電梯技術(shù)的創(chuàng)新和發(fā)展,提升電梯的性能,就需要引進(jìn)更好的技術(shù),電梯控制器就是很好的裝置,大力開(kāi)發(fā)控制器是很必要的。 </p>

5、;<p>  電梯的微機(jī)化控制主要有以下幾種形式:PLC控制;單片機(jī)控制;單板機(jī)控制;單微機(jī)控制;多微機(jī)控制;人工智能控制。本次課程設(shè)計(jì)采用了EDA技術(shù)進(jìn)行操作EDA技術(shù)打破了軟件和硬件間的壁壘,使計(jì)算機(jī)的軟件技術(shù)與硬件實(shí)現(xiàn)、設(shè)計(jì)效率與產(chǎn)品性能合二為一,它代表了電子設(shè)計(jì)技術(shù)和應(yīng)用技術(shù)的發(fā)展方向。</p><p>  本設(shè)計(jì)采用Verilog HDL語(yǔ)言的編程技術(shù),源程序Altera公司的Quartu

6、s II軟件仿真。</p><p>  關(guān)鍵字:EDA技術(shù); Verilog HDL語(yǔ)言; Quartus II軟件</p><p><b>  正文</b></p><p><b>  1設(shè)計(jì)目的及要求</b></p><p>  1、設(shè)計(jì)一個(gè)6層電梯控制器電路,用數(shù)碼管顯示電梯所在樓層號(hào),電梯初

7、始狀態(tài)為第一樓層;每樓層電梯外都有上、下樓請(qǐng)求開(kāi)關(guān),電梯內(nèi)設(shè)有乘客到達(dá)樓層的請(qǐng)求開(kāi)關(guān)、電梯所處樓層、上升模式及下降模式的指示;電梯每2秒升降一層,到達(dá)有停站請(qǐng)求的樓層后,經(jīng)4秒電梯門打開(kāi),開(kāi)門指示燈亮,開(kāi)門4秒后,指示燈滅,關(guān)門,關(guān)門時(shí)間3秒,電梯繼續(xù)運(yùn)行??梢酝ㄟ^(guò)快速關(guān)門和關(guān)門中斷信號(hào)控制;能記憶電梯內(nèi)外的請(qǐng)求信號(hào),當(dāng)電梯處于上升模式時(shí),只響應(yīng)比電梯所在位置高的樓請(qǐng)求信號(hào),直到最后一個(gè)上樓請(qǐng)求執(zhí)行完畢,再進(jìn)入下降模式。</p&g

8、t;<p>  2、進(jìn)一步鞏固理論知識(shí),培養(yǎng)所學(xué)理論知識(shí)的在實(shí)際中的應(yīng)用能力;掌握EDA設(shè)計(jì)的一般方法;熟悉一種EDA軟件,掌握一般EDA系統(tǒng)的調(diào)試方法;利用EDA軟件設(shè)計(jì)一個(gè)電子技術(shù)綜合問(wèn)題,培養(yǎng)Verilog HDL編程、書寫技術(shù)報(bào)告的能力。為以后進(jìn)行工程實(shí)際問(wèn)題的研究打下設(shè)計(jì)基礎(chǔ)。</p><p><b>  2設(shè)計(jì)原理</b></p><p> 

9、 2.1 設(shè)計(jì)實(shí)現(xiàn)原理</p><p>  根據(jù)系統(tǒng)設(shè)計(jì)要求,并考慮到系統(tǒng)的可檢驗(yàn)性,整個(gè)系統(tǒng)的輸入輸出接口設(shè)計(jì)如圖1所示:系統(tǒng)工作用2Hz基準(zhǔn)時(shí)鐘信號(hào)CLKIN,樓層上升請(qǐng)求鍵UPIN,樓層下降請(qǐng)求鍵DOWNIN,樓層選擇鍵入鍵ST_CH,提前關(guān)門輸入鍵CLOSE,延遲關(guān)門輸入鍵DELAY,電梯運(yùn)行的開(kāi)關(guān)鍵RUN_STOP,電梯運(yùn)行或停止指示鍵LAMP,電梯運(yùn)行或等待時(shí)間指示鍵RUN_WAIT,電梯所在樓層指

10、示數(shù)碼管ST_OUT,樓層選擇指示數(shù)碼管DIRECT。</p><p>  圖 1. 電梯控制器DTKZQ的輸入輸出接口圖</p><p>  各輸入端口的功能如下:</p><p>  CLKIN:基準(zhǔn)時(shí)鐘信號(hào),為系統(tǒng)提供2Hz的時(shí)鐘脈沖,上升沿有效;</p><p>  UPIN:電梯上升請(qǐng)求鍵。由用戶向電梯控制器發(fā)出上升請(qǐng)求。高電平有

11、效;</p><p>  DOWNIN:電梯下降請(qǐng)求鍵,由用戶向電梯控制器發(fā)出下降請(qǐng)求。高電平有效;</p><p>  ST_CH[2..0]:樓層選擇鍵入鍵,結(jié)合DIRECT完成樓層選擇的鍵入,高電平有效;</p><p>  CLOSE:提前關(guān)門輸入鍵??蓪?shí)現(xiàn)無(wú)等待時(shí)間的提前關(guān)門操作,高電平有效;</p><p>  DELAY:延遲

12、關(guān)門輸入鍵??蓪?shí)現(xiàn)有等待時(shí)間的延遲關(guān)門操作,高電平有效;</p><p>  RUN_STOP:電梯運(yùn)行或停止開(kāi)關(guān)鍵。可實(shí)現(xiàn)由管理員控制電梯的運(yùn)行或停止,高電平有效。</p><p><b>  一下為輸出端口:</b></p><p>  LAMP:電梯運(yùn)行或等待指示鍵,指示電梯的運(yùn)行或等待狀況。高電平有效;</p><p

13、>  RUN_WAIT:電梯運(yùn)行或等待時(shí)間指示鍵,指示電梯運(yùn)行狀況或等待時(shí)間的長(zhǎng)短,高電平有效;</p><p>  ST_OUT:電梯所在樓層指示數(shù)碼管,只是電梯當(dāng)前所在的樓層數(shù)。即1~6層,高電平有效;</p><p>  DIRECT:樓層選擇指示數(shù)碼管,指示用戶所要選擇的樓層數(shù),高電平有效。</p><p>  2.2項(xiàng)目分塊及其實(shí)現(xiàn)方案</p&

14、gt;<p>  電梯的控制狀態(tài)包括運(yùn)行狀態(tài)﹑停止?fàn)顟B(tài)及等待狀態(tài),其中運(yùn)行狀態(tài)又包含向上狀態(tài)和向下?tīng)顟B(tài)。主要?jiǎng)幼饔虚_(kāi)、關(guān)門,乘客可通過(guò)鍵入開(kāi)、關(guān)門按鍵,呼喚按鍵,指定樓層按鈕等來(lái)控制電梯的行與停。</p><p>  據(jù)此,整個(gè)電梯控制器DTLZQ應(yīng)包括如下幾個(gè)組成部分:①時(shí)序輸出及樓選計(jì)數(shù)器;②電梯服務(wù)請(qǐng)求處理器;③電梯升降控制器;④上升及下降寄存器;⑤電梯次態(tài)生成器。該電梯控制器設(shè)計(jì)的關(guān)鍵是確定

15、上升及下降寄存器的置位與復(fù)位。整個(gè)系統(tǒng)的內(nèi)部組成結(jié)構(gòu)圖2所示。</p><p>  圖2. 電梯控制器的內(nèi)部組成結(jié)構(gòu)圖</p><p>  圖3. 電梯控制器系統(tǒng)框圖</p><p>  2.3電梯控制器的流程圖</p><p><b>  圖4 總流程圖</b></p><p><b&

16、gt;  3設(shè)計(jì)內(nèi)容</b></p><p><b>  3.1基本狀態(tài)設(shè)計(jì)</b></p><p>  1、采用信號(hào)并置處理很多輸入信號(hào)的方式:</p><p>  always @(call_up_1 or call_up_2 or call_up_3 or call_up_4 or call_up_5)</p>

17、<p>  up_all={1'b0, call_up_5, call_up_4, call_up_3, call_up_2, call_up_1}; </p><p>  //將各下降請(qǐng)求信號(hào)實(shí)時(shí)地合并(1樓為底層,無(wú)下降請(qǐng)求,考慮到通用性,將第1位填零)</p><p>  always @(call_down_2 or call_down_3 or

18、 call_down_4 or call_down_5 or call_down_6)</p><p>  down_all={call_down_6, call_down_5, call_down_4, call_down_3, call_down_2, 1'b0};</p><p>  //將各??空?qǐng)求信號(hào)實(shí)時(shí)地合并 </p><p>  alway

19、s @(request_1 or request_2 or request_3 or request_4 or request_5 or request_6)</p><p>  request_all={request_6, request_5, request_4, request_3, request_2, request_1};</p><p>  2、通過(guò)參數(shù)定義把信號(hào)并置的方法

20、和有限狀態(tài)機(jī)聯(lián)系起來(lái)</p><p>  parameter WAIT=7'b0000001, UP=7'b0000010, DOWN=7'b0000100, UPSTOP=7'b0001000, DOWNSTOP=7'b0010000, OPENDOOR=7'b0100000, CLOSEDOOR=7'b1000000;</p><p&

21、gt;  //定義樓層的符號(hào)常量</p><p>  parameterFLOOR1=6'b000001,FLOOR2=6'b000010,FLOOR3=6'b000100, FLOOR4=6'b001000, FLOOR5=6'b010000, FLOOR6=6'b100000;</p><p>  parameter TRUE=1

22、'b1, FALSE=1'b0;//定義門打開(kāi)和門關(guān)閉的符號(hào)常量</p><p>  parameter OPEN=1'b1, CLOSED=1'b0;//定義電梯上升,下降和靜止的符號(hào)常量</p><p>  parameter UPFLAG=2'b01,DNFLAG=2'b10,STATIC=2'b00;</p>&

23、lt;p>  3、采用了七個(gè)狀態(tài)實(shí)現(xiàn)了有限狀態(tài)機(jī)</p><p><b>  圖6.狀態(tài)轉(zhuǎn)換圖</b></p><p>  黑線:WAIT TO UP TO UPSTOP TO OPENDOOR TO CLOSEDOOR TO WAIT</p><p>  粉紅線:WAIT TO DOWN TO

24、DOWNSTOP TO OPENDOOR TO CLOSEDOOR TO WAIT </p><p><b>  3.2模塊設(shè)計(jì)</b></p><p>  1、電梯主控制器模塊elevator_controller:</p><p>  此段智能電梯控制器由三個(gè)重要部分組成的。</p><p> 

25、?。╝)信號(hào)并置部分,完成對(duì)5路向上請(qǐng)求、5路向下請(qǐng)求、6路內(nèi)部請(qǐng)求的信號(hào)并置,化繁為簡(jiǎn)。</p><p>  (b)三段式有限狀態(tài)機(jī)部分。在有請(qǐng)求的情況下,電梯控制器還要根據(jù)電梯的當(dāng)前狀態(tài)和當(dāng)前的樓層去判斷電梯的下一步該如何運(yùn)作。</p><p>  (c)計(jì)數(shù)器部分。完成電梯的開(kāi)門、關(guān)門的時(shí)間管理。</p><p><b>  圖7.電梯主控模塊<

26、;/b></p><p>  2、分頻模塊frequence_div:</p><p>  這段分頻器完成對(duì)50Mhz的1分頻操作。采用傳統(tǒng)的“一半就翻轉(zhuǎn)”的計(jì)數(shù)技巧。</p><p><b>  圖8.分頻模塊</b></p><p><b>  3、數(shù)碼管譯碼模塊</b></p>

27、;<p><b>  3.3波形仿真</b></p><p>  1、當(dāng)電梯處于初始狀態(tài)時(shí),電梯在高層有向下的請(qǐng)求時(shí):</p><p><b>  圖9</b></p><p>  2、當(dāng)電梯停在6樓處于等待狀態(tài)時(shí),在1樓和2樓同時(shí)有向上的請(qǐng)求時(shí):</p><p><b>

28、  圖10</b></p><p>  3、當(dāng)電梯停在1樓處于等待狀態(tài)時(shí),在6樓和5樓同時(shí)有向下的請(qǐng)求時(shí):</p><p><b>  圖11</b></p><p>  4、當(dāng)電梯停在6樓時(shí),有在5樓的向下的請(qǐng)求時(shí),電梯應(yīng)該先到五樓,電梯內(nèi)部請(qǐng)求到1樓,如果電梯在下降的過(guò)程中,有在2樓的向上的請(qǐng)求時(shí),電梯應(yīng)該先相應(yīng)內(nèi)部請(qǐng)求,然后相

29、應(yīng)外部請(qǐng)求:</p><p><b>  圖12</b></p><p>  5、電梯的強(qiáng)制運(yùn)行按鈕forbid:</p><p><b>  圖13</b></p><p><b>  總結(jié)與致謝</b></p><p>  通過(guò)本次課程設(shè)計(jì)進(jìn)一步熟悉

30、Quartus II軟件的使用和操作方法,以及硬件實(shí)現(xiàn)時(shí)的下載方法與運(yùn)行方法;對(duì)Verilog HDL語(yǔ)言的自頂向下設(shè)計(jì)方法有了進(jìn)一步的認(rèn)識(shí),對(duì)其中的許多語(yǔ)句也有了新了解,掌握;對(duì)自己獨(dú)立思考和解決問(wèn)題的能力也有了很大的鍛煉。 </p><p>  本次課程設(shè)計(jì)設(shè)計(jì)的選題、課題調(diào)研與撰寫工作是在和老師的指導(dǎo)下完成的。在我的課程設(shè)計(jì)期間,同課題的同學(xué)都給予了我熱情的幫助和無(wú)私的指導(dǎo),在此向這些同學(xué)們表示衷心的感謝。

31、</p><p>  在我的學(xué)習(xí)過(guò)程中,**老師也給了我耐心的指導(dǎo)和幫助。我在此對(duì)各位老師表示誠(chéng)摯的感謝!</p><p><b>  參考文獻(xiàn)</b></p><p>  [1] 黃仁欣.EDA技術(shù)實(shí)用教程.北京:清華大學(xué)出版社,2006</p><p>  [2] 潘松,黃繼業(yè).EDA技術(shù)與VHDL.北京:清華大學(xué)出

32、版社,2009</p><p>  [3] 江國(guó)強(qiáng)編著.EDA技術(shù)與應(yīng)用(第三版)..北京:電子工業(yè)出版社,2010</p><p>  [4] 夏宇聞編著.Verilog HDL數(shù)字系統(tǒng)設(shè)計(jì)教程..北京:北京航空航天大學(xué)出版社,2008</p><p>  [5] 周祖成,程曉軍,馬卓釗編著.?dāng)?shù)字電路與系統(tǒng)教學(xué)實(shí)驗(yàn)教程.北京:科學(xué)出版社,2010</p>

33、;<p>  [6] 周潤(rùn)景,蘇良碧.基于Quartus II 的數(shù)字系統(tǒng)Verilog HDL設(shè)計(jì)實(shí)例詳解.北京:電子工業(yè)出版社,2010</p><p>  [7] (美國(guó))Sanir Palnitkar 譯者:夏宇聞 胡燕祥 刁嵐松.Verilog HDL數(shù)字設(shè)計(jì)與綜合(第2版).北京:電子工業(yè)出版社,2009</p><p>  [8] 云創(chuàng)工作室.Verilog H

34、DL程序設(shè)計(jì)與實(shí)踐.北京:人民郵電出版社,2009</p><p>  [9] 劉福奇,劉波.Verilog HDL應(yīng)用程序設(shè)計(jì)實(shí)例精講.北京:電子工業(yè)出版社,2009</p><p>  [10] 張延偉,楊金巖,葛愛(ài)學(xué).verilog hdl程序設(shè)計(jì)實(shí)例詳解.北京:人民郵電出版社,2008</p><p><b>  附錄</b></

35、p><p><b>  1、分頻模塊</b></p><p>  module frequence_div(cp_50M,cp_1);</p><p>  input cp_50M;//板子提供的最高時(shí)鐘</p><p>  output cp_1;//要求得到的秒脈沖</p><p>  reg [

36、27:0] counter_1;//計(jì)數(shù)器</p><p>  reg cp_1;//類型聲明</p><p>  always@(posedge cp_50M)</p><p><b>  begin</b></p><p>  if(counter_1==28'h17D7840)//50M的一半到了,秒脈沖翻

37、轉(zhuǎn)</p><p><b>  begin </b></p><p>  cp_1<=~cp_1;//翻轉(zhuǎn)</p><p>  counter_1<=28'h0000000;</p><p><b>  end</b></p><p><b> 

38、 else </b></p><p>  counter_1<=counter_1+1'b1;//否則加1</p><p><b>  end</b></p><p><b>  endmodule</b></p><p>  2、智能電梯主控制模塊</p>

39、<p>  module elevator_controller(//input ports:</p><p>  cp_50M,clk,reset,forbid,</p><p>  call_up_1, call_up_2, call_up_3, </p><p>  call_up_4, call_up_5,</p><p>

40、  call_down_2, call_down_3, call_down_4, </p><p>  call_down_5,call_down_6,</p><p>  request_1, request_2, request_3, </p><p>  request_4, request_5, request_6,</p><p>

41、  //output ports:</p><p>  out,LiftState,over_alarm,count_out,count</p><p><b>  );</b></p><p>  //output ports:</p><p>  output [6:0]out;//輸出樓層</p>&

42、lt;p>  output [6:0] LiftState;//輸出電梯狀態(tài)</p><p>  output over_alarm;//出錯(cuò)</p><p>  output [6:0]count_out;//計(jì)數(shù)器輸出,便于我控制開(kāi)關(guān)門的狀態(tài)顯示</p><p>  output [2:0]count;//計(jì)數(shù)器</p><p> 

43、 //input ports:</p><p>  input cp_50M;</p><p>  input clk,reset,call_up_1,call_up_2,call_up_3,call_up_4,call_up_5,call_down_2,call_down_3,call_down_4,call_down_5,call_down_6,request_1,request_2,

44、request_3,request_4,request_5,request_6;</p><p>  input forbid;</p><p>  //pos與Posout的關(guān)系:當(dāng)前狀態(tài)一改變,pos立即作相應(yīng)改變,而PosOut則是當(dāng)前狀態(tài)在要變到下一狀態(tài)的瞬間</p><p>  //,將PosOut作相應(yīng)改變。如從WAIT切換到第一個(gè)UP時(shí),pos立即加一

45、,而PosOut則要等到第一個(gè)UP</p><p>  //即將切換到第二個(gè)UP時(shí),才加一。</p><p>  //這個(gè)說(shuō)的簡(jiǎn)單一點(diǎn),就是移位寄存器,便于對(duì)電梯狀態(tài)的實(shí)時(shí)的控制</p><p>  wire over_alarm;</p><p>  wire [6:0]out;</p><p>  wire [6:

46、0]count_out;</p><p>  reg [5:0]pos,PosOut;</p><p>  reg [2:0] count;//門開(kāi)后要持續(xù)5個(gè)時(shí)鐘周期,用count來(lái)計(jì)數(shù)</p><p>  reg DoorFlag;</p><p>  reg [1:0] UpDnFlag;</p><p>  r

47、eg [6:0] LiftState,NextState;//分別表示電梯的當(dāng)前狀態(tài)和下一狀態(tài)</p><p>  wire real_clk;</p><p>  //up_all,down_all,request_all分別用來(lái)合并向上請(qǐng)求的各信號(hào),向下請(qǐng)求的各信號(hào)和??空?qǐng)求的各信號(hào)</p><p>  //以便判斷電梯在狀態(tài)間如何轉(zhuǎn)移時(shí)更簡(jiǎn)潔</p>

48、;<p>  reg [5:0] up_all,down_all,request_all;</p><p>  //定義電梯7種狀態(tài)的符號(hào)常量</p><p>  parameter WAIT=7'b0000001, UP=7'b0000010, DOWN=7'b0000100, UPSTOP=7'b0001000</p><

49、;p>  , DOWNSTOP=7'b0010000, OPENDOOR=7'b0100000, CLOSEDOOR=7'b1000000;</p><p>  //定義樓層的符號(hào)常量</p><p>  parameter FLOOR1=6'b000001, FLOOR2=6'b000010, FLOOR3=6'b000100, FL

50、OOR4=6'b001000, FLOOR5=6'b010000, FLOOR6=6'b100000;</p><p>  parameter TRUE=1'b1, FALSE=1'b0;</p><p>  //定義門打開(kāi)和門關(guān)閉的符號(hào)常量</p><p>  parameter OPEN=1'b1, CLOSED=

51、1'b0;</p><p>  //定義電梯上升,下降和靜止的符號(hào)常量</p><p>  parameter UPFLAG=2'b01,DNFLAG=2'b10,STATIC=2'b00;</p><p>  assign real_clk=(clk&(~forbid));</p><p>  //采

52、用屏蔽時(shí)鐘的方法來(lái)實(shí)現(xiàn)“電梯強(qiáng)制禁止運(yùn)行”。方法雖然違反了“同步電路最好</p><p>  //沒(méi)有時(shí)鐘門控”的要求,但是在此只要“負(fù)面影響”不是很大還是可以接受的。</p><p>  //將各上升請(qǐng)求信號(hào)實(shí)時(shí)地合并(6樓為頂層,無(wú)上升請(qǐng)求,考慮到通用性,將第4位填零)</p><p>  always @(call_up_1 or call_up_2 or c

53、all_up_3 or call_up_4 or call_up_5)</p><p>  up_all={1'b0, call_up_5, call_up_4, call_up_3, call_up_2, call_up_1}; </p><p>  //將各下降請(qǐng)求信號(hào)實(shí)時(shí)地合并(1樓為底層,無(wú)下降請(qǐng)求,考慮到通用性,將第1位填零)</p>&l

54、t;p>  always @(call_down_2 or call_down_3 or call_down_4 or call_down_5 or call_down_6)</p><p>  down_all={call_down_6, call_down_5, call_down_4, call_down_3, call_down_2, 1'b0};</p><p> 

55、 //將各??空?qǐng)求信號(hào)實(shí)時(shí)地合并 </p><p>  always @(request_1 or request_2 or request_3 or request_4 or request_5 or request_6)</p><p>  request_all={request_6, request_5, request_4, request_3, request_2, req

56、uest_1};</p><p>  always @(posedge real_clk or posedge reset)</p><p><b>  if(reset)</b></p><p><b>  count<=0;</b></p><p>  else if((NextState

57、==OPENDOOR)&&(count<5))//or else if(NextState==OPENDOOR)</p><p>  count<=count+1;//如果計(jì)數(shù)不到5且下一狀態(tài)為OPENDOOR的話,繼續(xù)計(jì)數(shù)</p><p><b>  else</b></p><p>  count<=0;/

58、/清零,以備下次計(jì)數(shù)</p><p>  //display which floor the elevator is....</p><p>  display_decode h1(cp_50M,PosOut,out,over_alarm);</p><p>  display_decode_count h2(cp_50M,count,cou

59、nt_out);</p><p>  // finite state machine in the style of three segments ,三段式</p><p>  //1st StateShift always block,sequential state transition,有限狀態(tài)機(jī)第一段</p><p>  always @(posedge r

60、eal_clk or posedge reset)</p><p><b>  if(reset)</b></p><p><b>  begin</b></p><p>  LiftState<=WAIT; </p><p><b>  end</b></p&g

61、t;<p><b>  else</b></p><p>  LiftState<=NextState;</p><p>  //2nd StateShift always block,combinational condition judgement,有限狀態(tài)機(jī)第二段</p><p>  always @(LiftStat

62、e or up_all or down_all or request_all or pos or count or UpDnFlag)</p><p>  case(LiftState)</p><p><b>  WAIT:</b></p><p><b>  begin</b></p><p>

63、  if(request_all>0)//有停靠請(qǐng)求否</p><p><b>  begin</b></p><p>  if((request_all&pos)>0)//??空?qǐng)求中有當(dāng)前樓層停靠請(qǐng)求否</p><p>  NextState=OPENDOOR;//有當(dāng)前樓層請(qǐng)求,則下一狀態(tài)轉(zhuǎn)開(kāi)門</p>&

64、lt;p>  else if(request_all>pos)//有當(dāng)前樓層之上的??空?qǐng)求否(優(yōu)先向上的請(qǐng)求) </p><p>  NextState=UP;//有則,下一狀態(tài)轉(zhuǎn)上升</p><p><b>  else</b></p><p>  NextState=DOWN;//只有當(dāng)前樓層之下的停靠請(qǐng)求,下一狀態(tài)轉(zhuǎn)下降

65、</p><p><b>  end</b></p><p>  else if((up_all&pos)||(down_all&pos))//上下請(qǐng)求中有當(dāng)前樓層請(qǐng)求否</p><p><b>  begin</b></p><p>  NextState=OPENDOOR;<

66、;/p><p><b>  end</b></p><p>  else if((up_all>pos)||(down_all>pos))//上下請(qǐng)求中有當(dāng)前樓層之上的請(qǐng)求否</p><p>  NextState=UP;</p><p>  else if(up_all||down_all)//上下請(qǐng)求中有當(dāng)前

67、樓層之下的請(qǐng)求否</p><p>  NextState=DOWN;</p><p><b>  else</b></p><p>  NextState=WAIT;//無(wú)任何請(qǐng)求,繼續(xù)處于WAIT模式</p><p><b>  end</b></p><p><b&

68、gt;  UP:</b></p><p><b>  begin</b></p><p>  if((request_all&pos)||(up_all&pos))//??炕蛏仙?qǐng)求中有當(dāng)前樓層的請(qǐng)求否</p><p>  NextState=UPSTOP;//有,下一狀態(tài)轉(zhuǎn)為UPSTOP(停靠后要1s才開(kāi)門,UPS

69、TOP即為這1s的過(guò)渡期)</p><p>  else if((request_all>pos)||(up_all>pos))//停靠或上升請(qǐng)求中有當(dāng)前樓層之上的請(qǐng)求否</p><p>  NextState=UP;</p><p>  else if(down_all>0)//有下降請(qǐng)求否</p><p><b&g

70、t;  begin</b></p><p>  if((down_all>pos)&&((down_all^pos)>pos))//下降請(qǐng)求中有當(dāng)前樓層的請(qǐng)求否</p><p>  NextState=UP;</p><p>  else if((down_all&pos)||(pos<FLOOR6)) //其實(shí)

71、這樣做意義不大,只是使上下標(biāo)志提前變化</p><p>  NextState=UPSTOP;</p><p>  else if((down_all&pos)&&(pos==FLOOR6))//事實(shí)上不滿足第一條件的話,電梯根本不會(huì)到達(dá)第四層</p><p>  NextState=DOWNSTOP;</p><p>

72、;  else//下降請(qǐng)求中只有當(dāng)前樓層之下的請(qǐng)求</p><p>  NextState=DOWN;</p><p><b>  end</b></p><p>  else if(request_all||up_all)//只有當(dāng)前樓層之上的??炕蛏仙?qǐng)求否</p><p>  NextState=DOWN;<

73、/p><p><b>  else</b></p><p>  NextState=WAIT;//無(wú)任何請(qǐng)求,轉(zhuǎn)為WAIT模式</p><p><b>  end</b></p><p>  //DOWN的狀態(tài)轉(zhuǎn)移請(qǐng)參見(jiàn)UP的狀態(tài)轉(zhuǎn)移</p><p><b>  DOW

74、N:</b></p><p><b>  begin</b></p><p>  if((request_all&pos)||(down_all&pos))</p><p>  NextState=DOWNSTOP;</p><p>  else if(((request_all&FL

75、OOR1)<pos&&(request_all&FLOOR1))||((request_all&FLOOR2)<pos&&(request_all&FLOOR2))||((request_all&FLOOR3)<pos&&(request_all&FLOOR3))||((request_all&FLOOR4)<pos&

76、amp;&(request_all&FLOOR4))||((request_all&FLOOR5)<pos&&(request_all&FLOOR5))||((request_all&FLOOR6)<pos&&(request_all&FLOOR6)))</p><p>  NextState=DOWN;</p>

77、;<p>  else if(((down_all&FLOOR1)<pos&&(down_all&FLOOR1))||((down_all&FLOOR2)<pos&&(down_all&FLOOR2))||((down_all&FLOOR3)<pos&&(down_all&FLOOR3))||((down_al

78、l&FLOOR4)<pos&&(down_all&FLOOR4))||((down_all&FLOOR5)<pos&&(down_all&FLOOR5))||((down_all&FLOOR6)<pos&&(down_all&FLOOR6)))</p><p>  NextState=DOWN;<

79、;/p><p>  else if(up_all>0)</p><p><b>  begin</b></p><p>  if(((up_all&FLOOR1)<pos&&(up_all&FLOOR1))||((up_all&FLOOR2)<pos&&(up_all&

80、;FLOOR2))||((up_all&FLOOR3)<pos&&(up_all&FLOOR3))||((up_all&FLOOR4)<pos&&(up_all&FLOOR4))||((up_all&FLOOR5)<pos&&(up_all&FLOOR5))||((up_all&FLOOR6)<pos&

81、&(up_all&FLOOR6)))</p><p>  NextState=DOWN;</p><p>  else if((up_all&pos)&&(pos>FLOOR1)) </p><p>  NextState=DOWNSTOP;</p><p>  else if((up_all&a

82、mp;pos)&&(pos==FLOOR1))</p><p>  NextState=UPSTOP;</p><p><b>  else</b></p><p>  NextState=UP;</p><p><b>  end</b></p><p> 

83、 else if(request_all||down_all)</p><p>  NextState=UP;</p><p><b>  else</b></p><p>  NextState=WAIT;</p><p><b>  end</b></p><p><

84、;b>  UPSTOP:</b></p><p><b>  begin</b></p><p>  NextState=OPENDOOR;//停靠1時(shí)鐘周期后開(kāi)門</p><p><b>  end</b></p><p><b>  DOWNSTOP:</b&g

85、t;</p><p><b>  begin</b></p><p>  NextState=OPENDOOR;//???時(shí)鐘周期后開(kāi)門</p><p><b>  end</b></p><p><b>  OPENDOOR:</b></p><p>

86、<b>  begin</b></p><p>  if(count<5)//開(kāi)門不足5周期,則繼續(xù)轉(zhuǎn)移到開(kāi)門狀態(tài)</p><p>  NextState=OPENDOOR;</p><p><b>  else</b></p><p>  NextState=CLOSEDOOR;//開(kāi)門5周

87、期后,關(guān)門</p><p><b>  end</b></p><p>  CLOSEDOOR:</p><p><b>  begin</b></p><p>  if(UpDnFlag==UPFLAG)//開(kāi)門關(guān)門前電梯是處于上升狀態(tài)嗎</p><p><b>

88、  begin</b></p><p>  if((request_all&pos)||(up_all&pos))//上升或停靠請(qǐng)求中有當(dāng)前樓層的請(qǐng)求否,有可能關(guān)門的瞬間又有新的請(qǐng)求</p><p>  NextState=OPENDOOR;</p><p>  else if((request_all>pos)||(up_all&

89、gt;pos))//上升或??空?qǐng)求中有當(dāng)前樓層之上的請(qǐng)求否</p><p>  NextState=UP;</p><p>  else if(down_all>0)//有下降請(qǐng)求否</p><p><b>  begin</b></p><p>  if((down_all>pos)&&((

90、down_all^pos)>pos))</p><p>  NextState=UP;//有當(dāng)前樓層之上的下降請(qǐng)求,則下一狀態(tài)轉(zhuǎn)移上升</p><p>  else if((down_all&pos)>0)//有當(dāng)前樓層的下降請(qǐng)求信號(hào),且更上層無(wú)下降請(qǐng)求</p><p>  NextState=OPENDOOR;</p><p

91、>  else//只有低于當(dāng)前層的下降請(qǐng)求</p><p>  NextState=DOWN;</p><p><b>  end</b></p><p>  else if(request_all||up_all)//上升和??空?qǐng)求中有當(dāng)前層的請(qǐng)求且只有當(dāng)前層下的請(qǐng)求</p><p>  NextState=DO

92、WN;</p><p><b>  else</b></p><p>  NextState=WAIT;//無(wú)任何請(qǐng)求,轉(zhuǎn)為WAIT模式</p><p><b>  end</b></p><p>  //請(qǐng)參考UpDnFlag=UPFLAG的注釋</p><p>

93、  else if(UpDnFlag==DNFLAG)</p><p><b>  begin</b></p><p>  if((request_all&pos)||(down_all&pos))</p><p>  NextState=OPENDOOR;</p><p>  else if(((req

94、uest_all&FLOOR1)<pos&&(request_all&FLOOR1))||((request_all&FLOOR2)<pos&&(request_all&FLOOR2))||((request_all&FLOOR3)<pos&&(request_all&FLOOR3))||((request_all&

95、FLOOR4)<pos&&(request_all&FLOOR4))||((request_all&FLOOR5)<pos&&(request_all&FLOOR5))||((request_all&FLOOR6)<pos&&(request_all&FLOOR6)))</p><p>  NextState

96、=DOWN;</p><p>  else if(((down_all&FLOOR1)<pos&&(down_all&FLOOR1))||((down_all&FLOOR2)<pos&&(down_all&FLOOR2))||((down_all&FLOOR3)<pos&&(down_all&FLOO

97、R3))||((down_all&FLOOR4)<pos&&(down_all&FLOOR4))||((down_all&FLOOR5)<pos&&(down_all&FLOOR5))||((down_all&FLOOR6)<pos&&(down_all&FLOOR6)))</p><p>  Nex

98、tState=DOWN;</p><p>  else if(up_all>0)</p><p><b>  begin</b></p><p>  if(((up_all&FLOOR1)<pos&&(up_all&FLOOR1))||((up_all&FLOOR2)<pos&&

99、amp;(up_all&FLOOR2))||((up_all&FLOOR3)<pos&&(up_all&FLOOR3))||((up_all&FLOOR4)<pos&&(up_all&FLOOR4))||((up_all&FLOOR5)<pos&&(up_all&FLOOR5))||((up_all&FLOO

100、R6)<pos&&(up_all&FLOOR6)))</p><p>  NextState=DOWN;</p><p>  else if((up_all&pos)>0)</p><p>  NextState=OPENDOOR;</p><p><b>  else</b>

101、</p><p>  NextState=UP;//</p><p><b>  end</b></p><p>  else if(request_all||down_all)</p><p>  NextState=UP;</p><p><b>  else</b>&l

102、t;/p><p>  NextState=WAIT;//</p><p><b>  end</b></p><p>  //請(qǐng)參考WAIT模式的注釋</p><p><b>  else</b></p><p><b>  begin</b></p&

103、gt;<p>  if(request_all>0)</p><p><b>  begin</b></p><p>  if((request_all&pos)>0)</p><p>  NextState=OPENDOOR;</p><p>  else if(request_all

104、>pos)</p><p>  NextState=UP;</p><p><b>  else </b></p><p>  NextState=DOWN;</p><p><b>  end</b></p><p>  else if((up_all&pos

105、)||(down_all&pos))</p><p><b>  begin</b></p><p>  NextState=OPENDOOR;</p><p><b>  end</b></p><p>  else if((up_all>pos)||(down_all>pos

106、))</p><p>  NextState=UP;</p><p>  else if(up_all||down_all)</p><p>  NextState=DOWN; </p><p><b>  else</b></p><p>&l

107、t;b>  begin</b></p><p>  NextState=WAIT;</p><p><b>  end</b></p><p><b>  end</b></p><p><b>  end</b></p><p>&l

108、t;b>  default:</b></p><p>  NextState=WAIT;</p><p><b>  endcase</b></p><p>  //3rd StateShift always block,the sequential FSM output,有限狀態(tài)機(jī)第三段</p><p&g

109、t;  always @(posedge real_clk or posedge reset)//output</p><p><b>  if(reset)</b></p><p>  //復(fù)位后初始化當(dāng)前樓層為第一層,門是關(guān)閉的,電梯是靜止的</p><p><b>  begin</b></p><

110、;p>  pos<=FLOOR1;</p><p>  DoorFlag<=CLOSED;</p><p>  UpDnFlag<=STATIC;</p><p><b>  end</b></p><p>  else </p><p><b> 

111、 begin</b></p><p>  PosOut<=pos;//PosOut的輸出慢pos一個(gè)時(shí)鐘周期</p><p>  case(NextState)</p><p><b>  WAIT:</b></p><p>  //狀態(tài)為WAIT時(shí),樓層不變,門是關(guān)閉的,電梯是靜止的,其他模式的情況請(qǐng)

112、大家自己推導(dǎo)</p><p><b>  begin</b></p><p><b>  pos<=pos;</b></p><p>  DoorFlag<=CLOSED;</p><p>  UpDnFlag<=STATIC;</p><p><b&

113、gt;  end</b></p><p><b>  UP:</b></p><p><b>  begin</b></p><p>  pos<=pos<<1;</p><p>  DoorFlag<=CLOSED;</p><p>  

114、UpDnFlag<=UPFLAG;</p><p><b>  end</b></p><p><b>  DOWN:</b></p><p><b>  begin</b></p><p>  pos<=pos>>1;</p><p

115、>  DoorFlag<=CLOSED;</p><p>  UpDnFlag<=DNFLAG;</p><p><b>  end</b></p><p><b>  UPSTOP:</b></p><p><b>  begin</b></p>

116、<p><b>  pos<=pos;</b></p><p>  DoorFlag<=CLOSED;</p><p>  UpDnFlag<=UPFLAG;</p><p><b>  end</b></p><p><b>  DOWNSTOP:<

117、/b></p><p><b>  begin</b></p><p><b>  pos<=pos;</b></p><p>  DoorFlag<=CLOSED;</p><p>  UpDnFlag<=DNFLAG;</p><p><b&

118、gt;  end</b></p><p><b>  OPENDOOR:</b></p><p><b>  begin</b></p><p><b>  pos<=pos;</b></p><p>  DoorFlag<=OPEN;</p>

119、;<p>  UpDnFlag<=UpDnFlag;</p><p><b>  end</b></p><p>  CLOSEDOOR:</p><p><b>  begin</b></p><p><b>  pos<=pos;</b></

120、p><p>  DoorFlag<=CLOSED;</p><p>  UpDnFlag<=UpDnFlag;</p><p><b>  end</b></p><p><b>  default:</b></p><p><b>  //默認(rèn)情況<

121、/b></p><p><b>  begin</b></p><p>  pos<=FLOOR1;</p><p>  DoorFlag<=CLOSED;</p><p>  UpDnFlag<=STATIC;</p><p><b>  end</b&g

122、t;</p><p><b>  endcase</b></p><p><b>  end</b></p><p><b>  endmodule</b></p><p><b>  3、數(shù)碼管譯碼模塊</b></p><p> 

123、 module display_decode(cp_50M,in,out,over_alarm);</p><p>  input [5:0]in;</p><p>  input cp_50M;</p><p>  output [6:0]out;</p><p>  output over_alarm;</p><p&

124、gt;  reg [6:0]out;</p><p>  reg over_alarm;</p><p>  always@(posedge cp_50M)</p><p><b>  begin</b></p><p><b>  case(in)</b></p><p>

125、  6'b000000:out<=7'b100_0000;//0</p><p>  6'b000001:out<=7'b111_1001;//1</p><p>  6'b000010:out<=7'b010_0100;//2</p><p>  6'b000100:out<=7

126、9;b011_0000;//3</p><p>  6'b001000:out<=7'b001_1001;//4</p><p>  6'b010000:out<=7'b001_0010;//5</p><p>  6'b100000:out<=7'b000_0010;//6</p>&

溫馨提示

  • 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)論