版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
1、北京郵電大學數(shù)字電路與邏輯設計實驗簡易三層電梯控制器學院:信息與通信工程學院專業(yè):通信工程班級:姓名:學號:設計課題的任務要求(一)、實驗目的1. 熟練掌握 VHDL 語言和 QuartusII 軟件的使用;2. 理解狀態(tài)機的工作原理和設計方法;3. 掌握利用 EDA 工具進行自頂向下的電子系統(tǒng)設計方法;(二)、相關知識本實驗要利用狀態(tài)機設計實現(xiàn)一個三層電梯控制系統(tǒng), 與其他控制系統(tǒng)一樣, 本系統(tǒng)劃 分為控制器和受控電路兩部分。 控制器使整個系統(tǒng)按設定的工作方式實現(xiàn)電梯的上升下降和 開關門, 并接收受控部分即外部按鈕以及內(nèi)部按鈕的反饋信號, 決定其狀態(tài)轉換方向及輸出 信號,控制整個系統(tǒng)的工作過
2、程。三層電梯系統(tǒng)的有上升下降 LED指示燈,開關門 LED指示燈,所有 LED燈均為高電平點亮。 設置 4s的開關門等待電路,用數(shù)碼管顯示電梯樓層,用按鈕模擬電梯外部及內(nèi)部的按鈕 (BTN)。系統(tǒng)有正常工作和復位兩種工作模式。(三)、實驗任務 模擬真實電梯的運行情況,設計制作一個簡易電梯控制器控制二層電梯的運行?;疽螅?. 電梯設有一層、二層外部呼叫按鈕和內(nèi)部一層、二層指定按鈕(BTN)。2. 利用數(shù)碼管顯示電梯所在樓層,用 LED顯示電梯運行狀態(tài)如上行、下行、開門、關門等。提高要求:1. 點陣顯示樓層;2. 用點陣顯示樓層的上下滾動移出移入表示電梯的上行或下行運行方向3. 增加為三層電梯
3、控制器二系統(tǒng)設計(包括設計思路、總體框圖、分塊設計)一)設計思路電梯控制器采用狀態(tài)機來實現(xiàn) , 思路比較清晰。可以將電梯等待的每秒鐘以及開門、 關門都看成一個獨立的狀態(tài)。 由于電梯又是每秒上升或下降一層 , 所以就可以通過一個統(tǒng)一 的1秒為周期的時鐘來觸發(fā)狀態(tài)機。 根據(jù)電梯的實際工作情況 , 可以把狀態(tài)機設置 10個狀態(tài), 分別是“電梯停留在第 1層”、“開門”、“ 關門”、“開門等待第 1秒”、“開門等待第 2 秒”、“開門等待第 3秒”、“開門等待第 4秒”、“上升”、“下降”和“停止”狀態(tài)。各 個狀態(tài)之間的轉換條件可由設計要求所決定。對于特殊情況:當復位信號reset為高電平時,則回到最
4、初狀態(tài)。(二)總體框圖1. 系統(tǒng)結構框圖2. 模塊劃分方框圖3控制模塊流程圖4.狀態(tài)轉移圖三)分塊設計 在 VHDL設計中,采用 自頂向下 的設計思路。1.頂層模塊中,根據(jù)硬件設計,設置如下端口: 外部時鐘信號: clk 異步復位按鍵 : reset 各層上升下降請求端口: f1upbutton,f2dnbutton, 各層停站信號: stop1button,stop2button,stop3button 電梯位置信號: position 電梯模式(上升 / 下降)信號: udsig 上升、下降、停站請求寄存信號: fuplight,fdnlight,stoplight 開關門信號: door
5、light 數(shù)碼管共陰極控制: dout1 選通信號; choose2.在底層中,把不同功能分模塊設計。主分頻模塊 (分頻器模塊 ):外部時鐘信號 CLK的頻率為 50MHz ,而實際需要的 內(nèi)部計時時鐘頻率為 1Hz,需要一個分頻電路。輸入端口:CLK外部時鐘信號輸出端口:CLK_OUT分頻后信號次分頻模塊 (防抖動模塊 ):按鍵有效按下方觸發(fā)上升沿,引起狀態(tài)變化,防抖防止一些無效的按鍵抖動影響狀態(tài)機的狀態(tài)轉移。輸入端口:CLK外部時鐘信號輸出端口:CLK_OUT1分頻后信號狀態(tài)機模塊:描述電梯所有十個狀態(tài)之間詳細的狀態(tài)轉移和轉移條件。輸入端口:CLK時鐘信號, RESET復位信號 , PO
6、SITION信號輸出端口: f1upbutton,f2dnbutton, udsig doorlight數(shù)碼管顯示模塊:接收數(shù)字信號,進行 7 位數(shù)碼管顯示譯碼輸出。輸入接口:POSITION輸入信號輸出接口:dou1 共陰極控制, choose 選通信號燈控制模塊: 實現(xiàn)狀態(tài)記憶和清零, 保存之前狀態(tài)機所處狀態(tài), 消除已過狀態(tài)輸入接口:RESET信號, buttonclk 信號輸出接口:stop1button,stop2button,stop3button, ,fuplight,fdnlight,stoplight三仿真波形及波形分析1 第二層電梯外部有上升請求 , 當乘客進入電梯以后 ,
7、在電梯內(nèi)部要求上升到第三層 , 電梯上升到第三層 , 開門 4 秒以后關門 , 停留在第三層。2當電梯停留在第三層的時候,在電梯外第二層有下降請求 ,電梯下降到二層, 相應下降 請求,此后電梯內(nèi)部沒有停留在哪層的請求,所以電梯停留在第二層。3. 同時有上升和下降請求信號時,原先電梯停留在第一層,這時電梯外三層有下降請求。 電梯上升到第三層,乘客進入電梯后要求下降到一層,與此同時,電梯外二層有上升請求, 電梯首先鄉(xiāng)音下降請求后再響應這個上升請求, 所以電梯線下降到一層再上升到第二層。 最 后乘客在電梯內(nèi)要求上升到三層,所以電梯最后停留在三層。4. 原先電梯停留在第一層,電梯外第三層有下降請求,電
8、梯上升升到三層,乘客進入電梯后要求下降到一層,此時二層有下降請求, 接著又有上升請求, 電梯先在二層停留。 然后下降到一層,隨后又響應二層上升請求, 上升到二層, 乘客進入電梯后要求上升到三層,電梯最后停留在三層。5.復位 狀態(tài)四源程序(注釋)library ieee;use-程序包的說明use lizhouthreelift isport(clk:in std_logic;reset:in std_logic; f1upbutton:in std_logic; f2upbutton:in std_logic; f2dnbutton:in std_logic; f3dnbutton:in st
9、d_logic; stop1button:in std_logic;stop2button:in std_logic;stop3button:in std_logic; position:buffer integer range 1 to 3; udsig:buffer std_logic;-庫的說明-實體-時鐘信號-異步復位端口-一層上升請求端口-二層上升請求端口-二層下降請求端口-三層下降請求端口-一層停站請求端口-二層停站請求端口-三層停站請求端口-電梯位置信號-電梯模式(上升或下降)信號fuplight,fdnlight,stoplight:buffer std_logic_vecto
10、r(3 downto 1);-上升、下降、停站請求寄存信號doorlight:out std_logic;-開關門信號dout1:out std_logic_vector(6 downto 0);choose:out std_logic_vector(5 downto 0);end entity lizhouthreelift;architecture one of lizhouthreelift is -結構體type lift_state is - 定義十個狀態(tài)(stopon1,dooropen,doorclose,doorwait1,doorwait2,doorwait3,doorwai
11、t4,up,down,stop); signal mylift:lift_state;signal clearup:std_logic;- 上升和停站請求清除信號signal cleardn:std_logic;- 下降和停站請求清除信號signal liftclk:std_logic;signal buttonclk:std_logic;signal COUNT1:integer range 0 to ;signal COUNT2:integer range 0 to 6499;beginctrlift:process(reset,liftclk)variable pos:integer r
12、ange 3 downto 1;beginif reset='1' then-異步復位,電梯的初始狀態(tài)為一層開門狀態(tài)mylift<=stopon1;clearup<='0'cleardn<='0'elseif liftclk'event and liftclk='1' thencase mylift iswhen stopon1=>doorlight<='1'position<=1;pos:=1;mylift<=doorwait1;when doorwait1=&g
13、t;- 電梯等待 4smylift<=doorwait2;when doorwait2=>clearup<='0'cleardn<='0'mylift<=doorwait3;when doorwait3=>mylift<=doorwait4;when doorwait4=>mylift<=doorclose;-關門,判定電梯下一個運行方式when doorclose=>doorlight<='0'if udsig='1' then- 電梯處在上升模式if posit
14、ion=3 thenif fuplight="000" and fdnlight="000" and stoplight="000" then-沒有請求信號時,電梯停在當前層udsig<='0'mylift<=doorclose;elsif fdnlight(3)='1' or stoplight(3)='1' then- 本層有請求信號是,電梯開門udsig<='0'mylift<=dooropen;else-否則下降udsig<='
15、;0'mylift<=down;end if;elsif position=2 thenif fuplight="000" and fdnlight="000" and stoplight="000" thenudsig<='1'mylift<=doorclose;elsif fuplight(2)='1' or stoplight(2)='1' then-本層有上升或停站請求時時,電梯開門udsig<='1'mylift<=door
16、open;elsif fuplight="000" and stoplight="000" and fdnlight="010" then-只有二層有下降請求時,電梯開門udsig<='0'mylift<=dooropen;elsif stoplight(3)='1' or fdnlight(3)='1' then-三層有停站請求或下降請求,則上升udsig<='1'mylift<=up;elseudsig<='0'mylif
17、t<=down;end if;elsif position=1 thenif fuplight="000" and fdnlight="000" and stoplight="000" then udsig<='1'mylift<=doorclose;elsif stoplight(1)='1' or fuplight(1)='1' thenudsig<='1'mylift<=dooropen;elseudsig<='1'
18、;mylift<=up;end if;end if;elsif udsig='0' then- 電梯處在下降模式if position=3 thenif fuplight="000" and fdnlight="000" and stoplight="000" then udsig<='0'mylift<=doorclose;elsif fdnlight(3)='1' or stoplight(3)='1' thenudsig<='0
19、9;mylift<=dooropen;elseudsig<='0'mylift<=down;end if;elsif position=2 thenif fuplight="000" and fdnlight="000" and stoplight="000" then udsig<='0'mylift<=doorclose;elsif fdnlight(2)='1' or stoplight(2)='1' thenudsig<=
20、9;0'mylift<=dooropen;elsif fdnlight="000" and stoplight="000" and fuplight="010" then udsig<='1'mylift<=dooropen;elsif fuplight(1)='1' or stoplight(1)='1' then-一層有停站請求或上升請求,則下降udsig<='0'mylift<=down;elseudsig<='1
21、'mylift<=up;end if;elsif position=1 thenif fuplight="000" and fdnlight="000" and stoplight="000" then udsig<='1'mylift<=doorclose;elsif stoplight(1)='1' or fuplight(1)='1' thenudsig<='1'mylift<=dooropen;elseudsig<=
22、39;1'mylift<=up;end if;end if;end if;position<=position+1;-電梯樓層數(shù)加一pos:=pos+1;if pos<3 and (stoplight(pos)='1' or fuplight(pos)='1') then則停mylift<=stop; - 電梯在一層或二層, 本層有停站或上升請求時, 止elsif pos=3 and (stoplight(pos)='1' or fdnlight(pos)='1') thenmylift<=s
23、top;-電梯處在三層,并且有三層停站或下降請求,則停止elsemylift<=doorclose;end if;when down=>-電梯處在下降狀態(tài)position<=position-1;-電梯樓層數(shù)減一pos:=pos-1;if pos>1 and (stoplight(pos)='1' or fdnlight(pos)='1') thenmylift<=stop;elsif pos=1 and (stoplight(pos)='1' or fuplight(pos)='1') thenmy
24、lift<=stop;elsemylift<=doorclose;end if;when stop=>mylift<=dooropen;when dooropen=>doorlight<='1'if udsig='1' thenif position<3 and (fuplight(pos)='1' or stoplight(pos)='1') then clearup<='1'elseclearup<='1'cleardn<='1
25、'end if;elsif udsig='0' thenif position>1 and (fdnlight(pos)='1' or stoplight(pos)='1') then cleardn<='1'- 清除當前層上升和停站請求elseclearup<='1'cleardn<='1'end if;end if;mylift<=doorwait1;end case;end if;end if;end process ctrlift;ctrlight:pr
26、ocess(reset,buttonclk)- 信號燈控制進程beginif reset='1' then- 復位,寄存信號清零fuplight<="000"fdnlight<="000"stoplight<="000"elseif buttonclk'event and buttonclk='1' thenif clearup='1' thenfuplight(position)<='0'stoplight(position)<=&
27、#39;0'elseif f1upbutton='1' thenfuplight(1)<='1'elsif f2upbutton='1' thenfuplight(2)<='1'end if;end if;if cleardn='1' thenfdnlight(position)<='0'stoplight(position)<='0'elseif f2dnbutton='1' thenfdnlight(2)<='1
28、9;elsif f3dnbutton='1' thenfdnlight(3)<='1'end if;end if;if stop1button='1' thenstoplight(1)<='1'elsif stop2button='1' thenstoplight(2)<='1'elsif stop3button='1' then-上升和停站請求清零-記憶各層上升請求-下降和停站請求清零-記憶各層下降請求-記憶各層停站請求stoplight(3)<='
29、1'end if;end if;end if;end process ctrlight;time1:process(clk)beginIF (clk'EVENT AND clk='1') THEN COUNT1<=COUNT1 + 1; IF (COUNT1=) THENCOUNT1<=0;liftclk<= NOT liftclk;END IF;END IF;END PROCESS time1;time2:process(clk)beginIF (clk'EVENT AND clk='1') THEN COUNT2&l
30、t;=COUNT2 + 1; IF (COUNT2=6499) THENCOUNT2<=0;buttonclk<= NOT buttonclk;END IF;END IF;END PROCESS time2;process(position)beginif position=1 thendout1<="0110000"choose<="111110"elsif position=2 thendout1<="1101101"choose<="111110"elsif position=3 thendout1<="1111001"choose<="111110"end if;end process;end architecture on
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024版建筑工地安全防護措施協(xié)議版
- 專用軟件升級服務合同范本(2024)一
- 二手房交易合同范文(2024版)
- 2025版出租車服務質(zhì)量監(jiān)控承包服務合同3篇
- 2025年度電子廢棄物回收處理服務協(xié)議3篇
- 2024門窗買賣銷售合同質(zhì)量保證書3篇
- 2024版建筑行業(yè)戰(zhàn)略合作伙伴合同版
- 2024版校際聯(lián)合辦學合作合同標準文本版B版
- 二零二五年度標簽打印機行業(yè)標準化合作協(xié)議3篇
- 專業(yè)音樂版權購買協(xié)議
- 【課件】寒假是用來超越的!課件 2024-2025學年高中上學期寒假學習和生活指導班會
- 2024-2025學年北師大版數(shù)學七年級上冊期末練習卷
- 2025年山東兗礦集團公司招聘筆試參考題庫含答案解析
- 燃氣有限公司工程部管理制度匯編
- 2024年中國干粉涂料市場調(diào)查研究報告
- (自考)經(jīng)濟學原理中級(政經(jīng))課件 第二章 商品和貨幣
- ×××老舊小區(qū)改造工程施工組織設計(全面)
- 科創(chuàng)板知識題庫試題及答案
- GB/T 3324-2024木家具通用技術條件
- NGS二代測序培訓
- 《材料合成與制備技術》課程教學大綱(材料化學專業(yè))
評論
0/150
提交評論