VIVADO三层电梯控制器VHDL代码ego1开发板 您所在的位置:网站首页 Verilog4层电梯控制器csdn VIVADO三层电梯控制器VHDL代码ego1开发板

VIVADO三层电梯控制器VHDL代码ego1开发板

2023-12-09 22:57| 来源: 网络整理| 查看: 265

名称:VIVADO三层电梯控制器VHDL代码ego1开发板

软件:VIVADO

语言:VHDL

代码功能:

3层电梯控制

(1)电梯运行规则:当电梯处于上升模式时,只响应比电梯所在位置高的上楼请求信号,由下而上逐个执行,直到最后一个上楼请求执行完毕;如果高层有下楼请求,则直接升到由下楼请求的最高层,然后进入下降模式。当电梯处于下降模式时则与上升模式相反;

(2)电梯初始状态为一层状态。

(3)每层电梯入口处设有上下请求开关,电梯内设有顾客到达层次的停站请求开关;

(4)设有电梯入口处设有位置指示装置及电梯运行模式(上升或下降)指示装置;

(5)电梯到达有停站请求的楼层,电梯门打开,开门指示灯亮,开门3秒后,电梯门关闭(开门指示灯灭)。若按下电梯内开门按钮,则电梯一直处于开门状态,若按下电梯内关门按钮,则电梯立即关门。电梯继续进行,直至执行完最后一个请求信号后停留在当前层;

(6)能记忆电梯内外所有请求,并按照电梯运行规则按顺序响应,每个请求信号保留至执行后消除。

FPGA代码Verilog/VHDL代码资源下载:www.hdlcode.com

本代码已在ego1开发板验证,开发板如下,其他开发板可以修改管脚适配:

ego1开发板.png

代码下载:

VIVADO三层电梯控制器VHDL代码ego1开发板名称:VIVADO三层电梯控制器VHDL代码ego1开发板(代码在文末下载)软件:VIVADO语言:VHDL代码功能:3层电梯控制(1)电梯运行规则:当电梯处于上升模式时,只响应比电梯所在位置高的上楼请求信号,由下而上逐个执行,直到最后一个上楼请求执行完毕;如果高层有下楼请求,则直接升到由下楼请求的最高层,然后进入下降模式。当电梯处于下降模式时则与上升模式相反;(2)电梯初始状态为一层状态。(3)icon-default.png?t=N7T8http://www.hdlcode.com/index.php?m=home&c=View&a=index&aid=317

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;--梯内按键,      led1,led2,led3:out std_logic;--梯内目的楼层,高电平有效      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 --电梯控制进程   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--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';--标志位               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';--开门,清数据 elsif down(3)='1' or goal(3)='1' or x='1' then--目的是3楼 state:=c3;x:='0';--上三楼,清标志 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';--开门,清数据 elsif up(1)='1' or goal(1)='1' or y='1' then--目的是1楼 state:=c1;y:='0';--去1楼,清标志 elsif up(2)='1' or down(3)='1' or goal(3)='1' then--目的是3楼 mo:='0';--目的是上 end if;   end if; when c3=>--3楼



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有