• 方案介紹
  • 附件下載
  • 相關(guān)推薦
申請入駐 產(chǎn)業(yè)圖譜

VIVADO三層電梯控制器VHDL代碼ego1開發(fā)板

加入交流群
掃碼加入
獲取工程師必備禮包
參與熱點資訊討論

1-23120210525Q50.doc

共1個文件

名稱:VIVADO三層電梯控制器VHDL代碼ego1開發(fā)板(代碼在文末下載)

軟件:VIVADO

語言:VHDL

代碼功能:

3層電梯控制:

(1)電梯運行規(guī)則:當(dāng)電梯處于上升模式時,只響應(yīng)比電梯所在位置高的上樓請求信號,由下而上逐個執(zhí)行,直到最后一個上樓請求執(zhí)行完畢;如果高層有下樓請求,則直接升到由下樓請求的最高層,然后進(jìn)入下降模式。當(dāng)電梯處于下降模式時則與上升模式相反;

(2)電梯初始狀態(tài)為一層狀態(tài)。

(3)每層電梯入口處設(shè)有上下請求開關(guān),電梯內(nèi)設(shè)有顧客到達(dá)層次的停站請求開關(guān);

(4)設(shè)有電梯入口處設(shè)有位置指示裝置及電梯運行模式(上升或下降)指示裝置;

(5)電梯到達(dá)有停站請求的樓層,電梯門打開,開門指示燈亮,開門3秒后,電梯門關(guān)閉(開門指示燈滅)。若按下電梯內(nèi)開門按鈕,則電梯一直處于開門狀態(tài),若按下電梯內(nèi)關(guān)門按鈕,則電梯立即關(guān)門。電梯繼續(xù)進(jìn)行,直至執(zhí)行完最后一個請求信號后停留在當(dāng)前層;

(6)能記憶電梯內(nèi)外所有請求,并按照電梯運行規(guī)則按順序響應(yīng),每個請求信號保留至執(zhí)行后消除。

FPGA代碼Verilog/VHDL代碼資源下載:www.hdlcode.com

本代碼已在ego1開發(fā)板驗證,開發(fā)板如下,其他開發(fā)板可以修改管腳適配:

ego1開發(fā)板.png

演示視頻:

設(shè)計文檔:

1. 工程文件

2. 程序文件

3. 程序編譯

4. 管腳分配

5. testbench文件

6. 仿真圖

部分代碼展示:

--?三層電梯控制模塊?
library?ieee;
use?ieee.std_logic_1164.all;
entity?lift_ctrl?is
port(
?clk:in?std_logic;--1KHz
?up1,up2,down2,down3:in?std_logic;--梯外按鍵,
?floor1,floor2,floor3:in?std_logic;--梯內(nèi)按鍵,
?????led1,led2,led3:out?std_logic;--梯內(nèi)目的樓層,高電平有效
?????door:out?std_logic;--開門
?floor_num:?out?std_logic_vector(2?downto?0)--樓層
?);
end?entity?lift_ctrl;
architecture?behave?of?lift_ctrl?is
type?stateTYPE?is(c1,c2,c3,open_door);
begin
--電梯控制進(jìn)程
??process(clk)
??variable?up,down,goal:std_logic_vector(3?downto?1):="000";
??variable?storey:std_logic_vector(2?downto?0):="000";
??variable?mo,x,y,z:std_logic:='0';--mo控制方向,低電平表示上
??variable?clk_cnt,time_cnt:integer:=0;
??variable?state:stateTYPE:=c1;
??begin
????if?clk'event?and?clk='1'?then
??????if?up1='1'?then?up(1):='1';--按鍵低電平有效,信號存入up
??????end?if;
??????if?up2='1'?then?up(2):='1';--按鍵低電平有效,信號存入up
??????end?if;
??????if?down3='1'?then?down(3):='1';--按鍵低電平有效,信號存入down
??????end?if;
??????if?down2='1'?then?down(2):='1';--按鍵低電平有效,信號存入down
??????end?if;
??????if?floor1='1'?then?goal(1):='1';--按鍵低電平有效,信號存入goal
??????end?if;
??????if?floor2='1'?then?goal(2):='1';--按鍵低電平有效,信號存入goal
??????end?if;
??????if?floor3='1'?then?goal(3):='1';--按鍵低電平有效,信號存入goal
??????end?if;
??????if?clk_cnt<1000?then?clk_cnt:=clk_cnt+1;--計數(shù)
??????else
case?state?is
when?c1=>--1樓
??storey:="001";
??if?up="000"?or?down="000"?or?goal="000"?then?storey:="001";--沒有輸入,保持1樓
??end?if;
??????????????if?goal(1)='1'?or?up(1)='1'?then--1樓按鍵按下
????????????????state:=open_door;--開門
????????????????goal(1):='0';up(1):='0';--清信號
??????????????elsif?up(2)='1'?or?goal(2)='1'?then--2樓上按鍵按下
????????????????state:=c2;--2樓
??????????????elsif?down(3)='1'?or?goal(3)='1'?then--3樓按鍵按下
????????????????state:=c2;--先上2樓
????????????????x:='1';--標(biāo)志位
??????????????elsif?down(2)='1'?then---2樓下按鍵按下
????????????????state:=c2;--上2樓
????????????????mo:='1';--目的是下
??????????????end?if;
--????end?if;
when?c2=>
??storey:="010";--2樓
??if?mo='0'?then--目的是上
if?goal(2)='1'?or?up(2)='1'?then--目的地是2樓
state:=open_door;goal(2):='0';up(2):='0';--開門,清數(shù)據(jù)
elsif?down(3)='1'?or?goal(3)='1'?or?x='1'?then--目的是3樓
state:=c3;x:='0';--上三樓,清標(biāo)志
elsif?down(2)='1'?or?up(1)='1'?or?goal(1)='1'?then--目的是1樓
mo:='1';--目的是下
end?if;
??else--目的是下
if?goal(2)='1'?or?down(2)='1'?then--目的地是2樓
state:=open_door;goal(2):='0';down(2):='0';--開門,清數(shù)據(jù)
elsif?up(1)='1'?or?goal(1)='1'?or?y='1'?then--目的是1樓
state:=c1;y:='0';--去1樓,清標(biāo)志
elsif?up(2)='1'?or?down(3)='1'?or?goal(3)='1'?then--目的是3樓
mo:='0';--目的是上
end?if;
??end?if;
when?c3=>--3樓

點擊鏈接獲取代碼文件:http://www.hdlcode.com/index.php?m=home&c=View&a=index&aid=317

  • 1-23120210525Q50.doc
    下載

相關(guān)推薦