软件:Quartus
语言:VHDL
代码功能:
3层电梯控制器
(1)控制电梯完成至少3层楼的载客服务,并遵循优先原则;
(2)能控制关门开门;
(3)显示电梯楼层
FPGA代码Verilog/VHDL代码资源下载:www.hdlcode.com
演示视频:
设计文档:
1. 工程文件
2. 程序文件
3. 程序编译
4. 管脚分配
5. vwf文件
6. 仿真图
部分代码展示:
-- 三层电梯控制器 library ieee; use ieee.std_logic_1164.all; entity lift 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;--开门 DEL : OUT STD_LOGIC_VECTOR(2 DOWNTO 0);--数码管位选 LEDAG: OUT STD_LOGIC_VECTOR(7 DOWNTO 0)--数码管段选 );--door门开关,高电平有效 end entity lift; architecture behave of lift is type stateTYPE is(c1,c2,c3,open_door); signal floor_num: std_logic_vector(2 downto 0):="000";--楼层 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='0' then up(1):='1';--按键低电平有效,信号存入up end if; if up2='0' then up(2):='1';--按键低电平有效,信号存入up end if; if down3='0' then down(3):='1';--按键低电平有效,信号存入down end if; if down2='0' then down(2):='1';--按键低电平有效,信号存入down end if; if floor1='0' then goal(1):='1';--按键低电平有效,信号存入goal end if; if floor2='0' then goal(2):='1';--按键低电平有效,信号存入goal end if; if floor3='0' then goal(3):='1';--按键低电平有效,信号存入goal end if; if clk_cnt<1000 then clk_cnt:=clk_cnt+1;--计数 else
点击链接获取代码文件:http://www.hdlcode.com/index.php?m=home&c=View&a=index&aid=1089
阅读全文
1036