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

四層電梯控制DE1-SoC開(kāi)發(fā)板verilog 4層電梯

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

1-231101154029232.doc

共1個(gè)文件

名稱(chēng):四層電梯控制DE1-SoC開(kāi)發(fā)板verilog(代碼在文末下載)

軟件:Quartus II

語(yǔ)言:Verilog

代碼功能:

4層電梯

設(shè)計(jì)一個(gè)4層樓高的電梯自動(dòng)控制系統(tǒng),要求實(shí)現(xiàn):

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

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

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

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

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

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

本代碼已在DE1-SoC開(kāi)發(fā)板驗(yàn)證,其他開(kāi)發(fā)板可以修改管腳適配,開(kāi)發(fā)板如下:

電梯.png

演示視頻:

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

部分代碼展示:

`timescale?1ns?/?1ps
//控制樓層
module?floorControl(clk,reset,openDoor,closeDoor,C1U,C2D,C2U,C3D,C3U,C4D,G1,G2,G3,G4,MoveCountDone,MoveCountEn,door,dir,state,resetButtons);?
????input?clk,reset,openDoor,closeDoor,C1U,C2D,C2U,C3D,C3U,C4D,G1,G2,G3,G4,MoveCountDone;
????output?reg?MoveCountEn,door,dir;
????output?reg?[2:0]?state;
????output?reg?[9:0]?resetButtons;?//{C1U,C2D,C2U,C3D,C3U,C4D,G1,G2,G3,G4}
????
?
????//for?dir?(direction)
????parameter?DOWN?=?1'b0;
????parameter?UP?=?1'b1;
????
????//for?state
????parameter?FLOOR1?=?3'b000;
????parameter?FLOOR1to2?=?3'b001;
????parameter?FLOOR2?=?3'b010;
????parameter?FLOOR2to3?=?3'b011;
????parameter?FLOOR3?=?3'b100;
????parameter?FLOOR3to4?=?3'b101;
????parameter?FLOOR4?=?3'b110;
????
????//timing?is?a?bit?of?an?issue?so?maybe?have?a?slowclock?module?to?control?the?always?block?
????//wire?slowishclk;
//slowishClock?sc1(clk,reset,slowishclk);
????always?@(posedge?clk)?begin
????if?(reset)begin
????????MoveCountEn?<=?0;
????????door?<=?0;
????????dir?<=?UP;
????????state?<=?FLOOR1;
????????resetButtons?<=?0;
????end
????
????if?(~reset?&?openDoor?&?((state==FLOOR1)?|?(state==FLOOR2)?|?(state==FLOOR3)?|?(state==FLOOR4)))begin?//we?are?stopped?and?there?is?a?door?open?command?(sensor?or?timer?not?done)
????????MoveCountEn?<=?0;
????????door?<=?1;
????end
????
????if?(~reset?&?~openDoor?&?closeDoor?&?((state==FLOOR1)?|?(state==FLOOR2)?|?(state==FLOOR3)?|?(state==FLOOR4)))begin?//someone?wants?to?close?the?door,?or?the?timer?has?finished
????????MoveCountEn?<=?0;
????????door?<=?0;
????end
????
????//UP?logic?when?stopped
????//floor1
????if?(~reset?&?~openDoor?&?~door?&?dir==UP?&?state==FLOOR1?&?(C1U|G1))begin
????????MoveCountEn?<=?0;
????????door?<=?1;
????????dir?<=?UP;
????????state?<=?FLOOR1;
????end?
????if?(~reset?&?~openDoor?&?~door?&?dir==UP?&?state==FLOOR1?&?~C1U?&?~G1?&?(C2D|C2U|C3D|C3U|C4D|G2|G3|G4))begin
????????MoveCountEn?<=?1;
????????door?<=?0;
????????dir?<=?UP;
????????state?<=?FLOOR1to2;
????end
????
????//floor2?
????if?(~reset?&?~openDoor?&?~door?&?(dir==UP)?&?state==FLOOR2?&?~C2D?&?(C2U|G2))begin
????????MoveCountEn?<=?0;
????????door?<=?1;
????????dir?<=?UP;
????????state?<=?FLOOR2;
????end?
????if?(~reset?&?~openDoor?&?~door?&?(dir==UP)?&?state==FLOOR2?&?~C2U?&?~G2?&?(C3D|C3U|C4D|G3|G4))begin
????????MoveCountEn?<=?1;
????????door?<=?0;
????????dir?<=?UP;
????????state?<=?FLOOR2to3;
????end????
????if?(~reset?&?~openDoor?&?~door?&?(dir==UP)?&?state==FLOOR2?&?C2D?&?~C2U?&?~C3D?&?~C3U?&?~C4D?&?~G2?&?~G3?&?~G4?)begin
????????MoveCountEn?<=?0;
????????door?<=?1;
????????dir?<=?DOWN;
????????state?<=?FLOOR2;
????end?
????if?(~reset?&?~openDoor?&?~door?&?(dir==UP)?&?state==FLOOR2?&?~C2D?&?~C2U?&?~C3D?&?~C3U?&??~C4D?&?~G2?&?~G3?&?~G4?&?(C1U|G1))begin
????????MoveCountEn?<=?1;
????????door?<=?0;
????????dir?<=?DOWN;
????????state?<=?FLOOR1to2;
????end

設(shè)計(jì)文檔:

1. 工程文件

2. 程序文件

3. 程序編譯

4. 管腳分配

5. RTL圖

6. Testbench

7. 仿真圖

圖1

圖2

圖3

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

  • 1-231101154029232.doc
    下載

相關(guān)推薦