IC课程
六层电梯控制器
《IC设计课程设计》报告
六
层
电
梯
控
制
器
姓名: 陈刚祥
学号: 080110011106
班级: 2008级1班
院系: 文华学院信息学部
专业: 电子科学与技术
2011年12月25日
成绩评定
教师签名
一、 设计题目描述
针对我国楼层层数的基本水平,利用VHDL语言编程实现六层电梯控制器各个模块的功能,并用QuartusII对本文进行设计,讨论六层电梯控制器设计的思路、示意图、结构图、流程图及程序仿真图。将设计在EDA工具QuartusII下进行时序仿真,得到仿真结果,验证六层电梯控制器设计的正确性。本设计希望通过简单的六层电梯控制器的设计,为广大电梯设计者提供一个基础。针对目前中小型电梯所能实现的功能,本控制器虚拟实现以下功能:
指示电梯所在楼层;
(1) 电梯基本运行;
(2) 关门延时设置;
(3) 提前关门设置;
(4) 看门狗设置;
(5) 超载报警;
二、 模块定义及功能描述
2.1算法分析
2.1.1 电梯运行规则
(1)请求信号分析:
电梯的请求信号分为梯内请求和梯外请求,如果从这个角度就很难去进行对电梯运行可能情况的分析,因为电梯的运行是根据梯内和梯外的请求信号、行程信号进行控制的,而梯内和梯外的请求是随机且不能以有限的规则去对其进行说明的。因此,很难对电梯的运行情况作出一个统一的分析。出于这方面的考虑,本设计把电梯的请求信号划分为上升请求和下降请求。
电梯接收到请求信号后,都必须作预操作。使电梯进入预上升状态的请求信号就是上升请求信号。具体来说,就是当电梯所在楼层低于发出请求的楼层所要到达的目的楼层时,电梯必须在下一操作中作出上升运行,这时的请求信号就是上升请求信号。反之,则是下降请求信号。
(2)电梯处于各楼层时的运行情况:
处于一楼时,电梯只可能接收到上升的请求信号。此时,电梯就进入预上升状态,准备作上升运行。如果电梯没有接收到请求信号,电梯则在一楼待机。
处于二楼到五楼时,电梯可能出现三种情况:
<1>电梯没有接收到请求信号,电梯返回一楼待机;
<2>电梯收到上升请求信号,进入预上升状态;
<3>电梯受到下降请求信号,进入预下降状态。
处于六楼时,电梯只可能接收到下降的请求信号。此时,电梯就进入预下降状态,准备作下降运行。如果电梯没有接收到请求信号,电梯则返回一楼待机。
对上述电梯的运行情况进行汇总,可以得到如图1的电梯运行状态图。
图1 电梯运行状态图
在电梯运行过程中,存在一个如何处理信号优先的问题。电梯实际上是一个人机交互式的控制系统,单纯用顺序优先或逻辑优先是不能满足控制要求的,因此,控制系统采用随机逻辑方式控制去解决信号优先的问题。即在以顺序逻辑控制实现电梯的基本控制要求的基础,根据随机的输入信号,以及电梯的相应状态时的控制电梯的运行。本设计采用以下规则:电梯以前一状态为基准,即前一状态为上升,则操作完所以上升请求再操作下降请求;前一状态为下降,则反之。
(3)对电梯开门、关门、报警等内部信号处理分析。其流程图如图2所示。
图2 信号处理
当电梯接收到请求信号后,将以随机逻辑控制的方式到达发出请求的楼层。开门使能信号促使电梯开门载客,同时驱动关门延时信号、超重检测以及故障检测。在电梯进行完关门倒数计时、超重排除以及故障排除后,关门使能信号将促使电梯关门进入预操作状态。如果此前出现提前关门信号而且电梯也已经进行完超重排除和故障排除,电梯同样关门进入预操作状态。
电梯在超重检测时发现超重,关门中断信号会促使电梯发出超重报警并且进行开门操作以减少乘客,重新进入载客操作;电梯在故障检测时,发现电梯某部分出现故障,关门中断信号会促使电梯发出故障报警并且进入开门操作的同时停止关门延时,作故障处理待机。
电梯控制器的原理图如图3所示。
图3 控制器原理图
2.1.2 程序流程分析
电梯的运行规则确立后,需对整个控制程序的设计作一个流程规范。对程序进行模块化构思。根据VHDL语言的规则,程序必须由最基本的实体和结构体构成。实体对控制器的端口进行定义,结构体对各端口的行为进行描述。因此程序运行需经过以下流程:VHDL库调用;确立控制器的端口及相关的寄存器;根据电梯运行规则,设计相关运行描述;对电梯内外信号进行处理。具体流程图如图4所示。
图4 总程序流程图
2.2 程序设计说明
2.2.1端口、寄存器设计说明
(1)由功能要求得到本程序设计的端口必须包括:
输入端口:时钟(clk,频率为2Hz)、超载(full)、关门中断(deng)、提前关门(quick)、清除报警(clr)、电梯外人的上升请求信号(c_u1,c_u2,c_u3, ,c_u4,c_u5)、电梯外人的下降请求信号(c_d2,c_d3,c_d4,c_d5,c_d6)、电梯内人的请求信号(d1,d2,d3,d4,d5,d6)、到达楼层信号(g1,g2,g3,g4,g5,g6)。
输出端口:电梯门控制信号(door)、电梯所在楼层显示(led)电梯外人上升请求信号显示(led_c_u)、电梯外人下降请求信号显示(led_c_d)、电梯内请求信号显示(led_d)、看门狗报警信号(wahaha)、电梯运动方向显示(ud)、超载警告信号(alarm)、电机控制信号(up,down)。
其分布如图5所示。
图5 控制器端口分布
(2)程序要求的寄存器(中间信号)包括:
电梯内人请求信号寄存信号(d11,d22,d33,d44,d55,d66)、电梯外人上升请求信号寄存信号(c_u11,c_u22,c_u33,c_u44,c_u55)、电梯外人下降请求信号寄存信号(c_d22,c_d33,c_d44,c_d55,c_d66)、分频信号(q)、关门延时计数器(q1)、看门狗计数器(q2)、电梯内外请求信号寄存器(dd,cc_u,cc_d,dd_cc)、开门使能信号(opendoor)、电梯运动方向信号寄存器(updown)、预备上升、预备下降预操作使能信号(en_up,en_dw)。
2.2.2模块设计说明
本程序由三个基本模块组成,包括调用VHDL库模块、实体设计模块和结构体设计模块。而在结构体模块中又内嵌有进程执行单元。
(1) 调用VHDL库
使用library语句,本程序应用了VHDL库中的“通用ieee库”和“标准std库” 。
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_unsigned.all;
use ieee.std_logic_arith.all;
(2) entity实体设计模块
entity dianti is
port ( clk : in std_logic;--时钟信号(频率为2Hz)
full,deng,quick,clr : in std_logic; --超载、关门中断、提前关门、清除报警信号
c_u1,c_u2,c_u3,c_u4,c_u5: in std_logic; --电梯外人的上升请求信号
c_d2,c_d3,c_d4,c_d5,c_d6: in std_logic; --电梯外人的下降请求信号
d1,d2,d3,d4,d5,d6 : in std_logic;--电梯内人的请求信号
g1,g2,g3,g4,g5,g6 : in std_logic;--到达楼层信号
door : out std_logic_vector(1 downto 0);--电梯门控制信号
led : out std_logic_vector(6 downto 0);--电梯所在楼层显示(数码管显示)
led_c_u:out std_logic_vector(5 downto 0);--电梯外人上升请求信号显示
led_c_d:out std_logic_vector(5 downto 0);--电梯外人下降请求信号显示
led_d : out std_logic_vector(5 downto 0);--电梯内请求信号显示
wahaha : out std_logic;--看门狗报警信号
ud,alarm : out std_logic;--电梯运动方向显示,超载警告信号
up,down : out std_logic );--电机控制信号和电梯运动
end dianti;
(3)archi结构体设计模块和process进程执行单元
architecture behav of dianti is
signal d11,d22,d33,d44,d55,d66:std_logic; --电梯内人请求信号寄存信号
signal c_u11,c_u22,c_u33,c_u44,c_u55:std_logic;--电梯外人上升请求信号寄存信号
signal c_d22,c_d33,c_d44,c_d55,c_d66:std_logic;--电梯外人下降请求信号寄存信号
signal q:integer range 0 to 1;--分频信号
signal q1:integer range 0 to 6;--关门延时计数器
signal q2:integer range 0 to 9;--看门狗计数器
signal dd,cc_u,cc_d,dd_cc:std_logic_vector(5 downto 0);--电梯内外请求信号寄存器
signal opendoor:std_logic;--开门使能信号
signal updown:std_logic;--电梯运动方向信号寄存器
signal en_up,en_dw:std_logic;--预备上升、预备下降预操作使能信号
begin
process(clk)
begin
。。。(进程语句具体看附录)
end behav;
2.2.3具体语句设计说明
况的具体说明。
elsif g2='1' then led<="0010010"; --电梯到达2楼,数码管显示2
if updown='1' then --电梯前一运动状态位上升
if d22='1' or c_u22='1' then
d22<='0'; c_u22<='0'; opendoor<='1'; --有当前层的请求,则电梯进入开门状态
elsif dd_cc>"00000011" then
en_up<='1';en_dw<='0'; opendoor<='0'; --有上升请求,则电梯进入预备上升状态
elsif dd_cc<"00000010" then
en_dw<='1';en_up<='0'; opendoor<='0';--有下降请求,则电梯进入预备下降状态
end if;
--电梯前一运动状态为下降
elsif d22='1' or c_d22='1' then
d22<='0'; c_d22<='0';opendoor<='1'; --有当前层的请求,则电梯进入开门状态
elsif dd_cc<"00000010" then
en_dw<='1';en_up<='0'; opendoor<='0'; --有下降请求,则电梯进入预备下降状态
elsif dd_cc>"00000011" thenen_up<='1';en_dw<='0'; opendoor<='0'; --有上升请求,电梯进入预备上升状态 end if;
在上述语句中的“elsif g2=‘1’then led<=“0010010;”,led的赋值之所以为“0010010”是根据共阳极七段数字显示器的发光段排列的,如图6所示。
可发光段a、b、c、e、g形成一个2字。以此类推,在一楼时led赋值为“100111”
,三楼时为“0000110”,四楼时为……
在进程执行单元里,对电梯在楼层时的操作情况作出了描述,例如:开门、关门延时、超载报警、故障报警以及电梯内的请求信号处理,具体说明给出如下:
process(clk)
begin
if clk'event and clk='1' then
if clr='1' then q1<=0;q2<=0;wahaha<='0';--清除故障报警
elsif full='1' then alarm<='1'; q1<=0;--超载报警
if q1>=3 then door<="10";
else door<="00";
end if;
elsif q=1 then q<=0;alarm<='0';
if q2=3 then wahaha<='1'; --故障报警
else
if opendoor='1' then
door<="10";q1<=0;q2<=0;up<='0';down<='0';--开门操作
elsif en_up='1' then --上升预操作
if deng='1' then door<="10";q1<=0;q2<=q2+1;--关门中断
elsif quick='1' then q1<=3;--提前关门
elsif q1=6 then door<="00";updown<='1';up<='1'; --关门完毕,电梯进入上升状态
elsif q1>=3 then door<="01";q1<=q1+1; --电梯进入关门状态
else q1<=q1+1;door<="00"; --电梯进入等待状态
end if;
elsif en_dw='1' then --下降预操作
if deng='1' then door<="10";q1<=0;q2<=q2+1;
elsif quick='1' then q1<=3;
elsif q1=6 then door<="00";updown<='0';down<='1';
elsif q1>=3 then door<="01";q1<=q1+1;
else q1<=q1+1;door<="00";
end if;
end if;
else q<=1;alarm<='0'; --清除超载报警
if d1='1' then d11<=d1; --对电梯内人请求信号进行检测和寄存
elsif d2='1' then d22<=d2;
elsif d3='1' then d33<=d3;
elsif d4='1' then d44<=d4;
elsif d5='1' then d55<=d5;
elsif d6='1' then d66<=d6;
end if;
if c_u1='1' then c_u11<=c_u1; --对电梯外人上升请求信号进行检测和寄存
elsif c_u2='1' then c_u22<=c_u2;
elsif c_u3='1' then c_u33<=c_u3;
elsif c_u4='1' then c_u44<=c_u4;
elsif c_u5='1' then c_u55<=c_u5;
end if;
if c_d2='1' then c_d22<=c_d2; --对电梯外人下降请求信号进行检测和寄存
elsif c_d3='1' then c_d33<=c_d3;
elsif c_d4='1' then c_d44<=c_d4;
elsif c_d5='1' then c_d55<=c_d5;
elsif c_d6='1' then c_d66<=c_d6;
end if;
dd<=d66&d55&d44&d33&d22&d11; -电梯内人请求信号并置
cc_u<='0'&c_u55&c_u44&c_u33&c_u22&c_u11; --电梯外人上升请求信号并置
cc_d<=c_d66&c_d55&c_d44&c_d33&c_d22&'0'; --电梯外人下降请求信号并置
dd_cc<=dd or cc_u or cc_d; --电梯内、外人请求信号进行综合
end if;
ud<=updown; --电梯运动状态显示
led_d<=dd; --电梯内人请求信号显示
led_c_u<=cc_u; --电梯外人上升请求信号显示
led_c_d<=cc_d; --电梯外人下降请求信号显示
end if;
三、 Verilog 源代码
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_unsigned.all;
use ieee.std_logic_arith.all;
entity dianti is
port ( clk : in std_logic; --时钟信号(频率为2Hz)
full,deng,quick,clr : in std_logic; --超载、关门中断、提前关门清除报警信号
c_u1,c_u2,c_u3,c_u4,c_u5: in std_logic; --电梯外人的上升请求信号
c_d2,c_d3,c_d4,c_d5,c_d6: in std_logic; --电梯外人的下降请求信号
d1,d2,d3,d4,d5,d6 : in std_logic; --电梯内人的请求信号
g1,g2,g3,g4,g5,g6 : in std_logic; --到达楼层信号
door : out std_logic_vector(1 downto 0); --电梯门控制信号
led : out std_logic_vector(6 downto 0); --电梯所在楼层显示
led_c_u:out std_logic_vector(5 downto 0); --电梯外人上升请求信号显示
led_c_d:out std_logic_vector(5 downto 0); --电梯外人下降请求信号显示
led_d : out std_logic_vector(5 downto 0); --电梯内请求信号显示
wahaha : out std_logic; --看门狗报警信号
ud,alarm : out std_logic; --电梯运动方向显示,超载警告信号
up,down : out std_logic ); --电机控制信号和电梯运动
end dianti;
architecture behav of dianti is
signal d11,d22,d33,d44,d55,d66:std_logic; --电梯内人请求信号寄存信号
signal c_u11,c_u22,c_u33,c_u44,c_u55:std_logic; --电梯外人上升请求信号寄存信号
signal c_d22,c_d33,c_d44,c_d55,c_d66:std_logic; --电梯外人下降请求信号寄存信号
signal q:integer range 0 to 1; --分频信号
signal q1:integer range 0 to 6; --关门延时计数器
signal q2:integer range 0 to 9; --看门狗计数器
signal dd,cc_u,cc_d,dd_cc:std_logic_vector(5 downto 0); --电梯内外请求信号寄存器
signal opendoor:std_logic; --开门使能信号
signal updown:std_logic; --电梯运动方向信号寄存器
signal en_up,en_dw:std_logic; --预备上升、预备下降预操作使能信号
begin
process(clk)
begin
if clk'event and clk='1' then
if clr='1' then q1<=0;q2<=0;wahaha<='0'; --清除故障报警
elsif full='1' then alarm<='1'; q1<=0; --超载报警
if q1>=3 then door<="10";
else door<="00";
end if;
elsif q=1 then q<=0;alarm<='0';
if q2=3 then wahaha<='1'; --故障报警
else
if opendoor='1' then door<="10";q1<=0;q2<=0;up<='0';down<='0'; --开门操作
elsif en_up='1' then --上升预操作
if deng='1' then door<="10";q1<=0;q2<=q2+1; --关门中断
elsif quick='1' then q1<=3; --提前关门
elsif q1=6 then door<="00";updown<='1';up<='1'; --关门完毕,电梯进入上升状态
elsif q1>=3 then door<="01";q1<=q1+1; --电梯进入关门状态
else q1<=q1+1;door<="00"; --电梯进入等待状态
end if;
elsif en_dw='1' then --下降预操作
if deng='1' then door<="10";q1<=0;q2<=q2+1;
elsif quick='1' then q1<=3;
elsif q1=6 then door<="00";updown<='0';down<='1';
elsif q1>=3 then door<="01";q1<=q1+1;
else q1<=q1+1;door<="00";
end if;
end if;
if g1='1' then led<="1001111"; --电梯到达1楼,数码管显示1
if d11='1' or c_u11='1' then d11<='0'; c_u11<='0';opendoor<='1';
--有当前层的请求,则电梯进入开门状态
elsif dd_cc>"00000001" then en_up<='1';en_dw<='0'; opendoor<='0';
--有上升请求,则电梯进入预备上升状态
elsif dd_cc="00000000" then opendoor<='0'; --无请求时,电梯停在1楼待机
end if;
elsif g2='1' then led<="0010010"; --电梯到达2楼,数码管显示2
if updown='1' then --电梯前一运动状态位上升
if d22='1' or c_u22='1' then d22<='0'; c_u22<='0'; opendoor<='1';
--有当前层的请求,则电梯进入开门状态
elsif dd_cc>"00000011" then en_up<='1';en_dw<='0'; opendoor<='0';
--有上升请求,则电梯进入预备上升状态
elsif dd_cc<"00000010" then en_dw<='1';en_up<='0'; opendoor<='0';
--有下降请求,则电梯进入预备下降状态
end if;
--电梯前一运动状态为下降
elsif d22='1' or c_d22='1' then d22<='0'; c_d22<='0';opendoor<='1';
--有当前层的请求,则电梯进入开门状态
elsif dd_cc<"00000010" then en_dw<='1';en_up<='0'; opendoor<='0';
--有下降请求,则电梯进入预备下降状态
elsif dd_cc>"00000011" then en_up<='1';en_dw<='0'; opendoor<='0';
--有上升请求,则电梯进入预备上升状态
end if;
elsif g3='1' then led<="0000110"; --电梯到达3楼,数码管显示3
if updown='1' then
if d33='1' or c_u33='1' then d33<='0'; c_u33<='0';opendoor<='1';
elsif dd_cc>"00000111" then en_up<='1'; en_dw<='0'; opendoor<='0';
elsif dd_cc<"00000100" then en_dw<='1'; en_up<='0'; opendoor<='0';
end if;
elsif d33='1' or c_d33='1' then d33<='0'; c_d33<='0'; opendoor<='1';
elsif dd_cc<"00000100" then en_dw<='1';en_up<='0';opendoor<='0';
elsif dd_cc>"00000111" then en_up<='1';en_dw<='0'; opendoor<='0';
end if;
elsif g4='1' then led<="1001100"; --电梯到达4楼,数码管显示4
if updown='1' then
if d44='1' or c_u44='1' then d44<='0'; c_u44<='0'; opendoor<='1';
elsif dd_cc>"00001111" then en_up<='1';en_dw<='0'; opendoor<='0';
elsif dd_cc<"00001000" then en_dw<='1';en_up<='0'; opendoor<='0';
end if;
elsif d44='1' or c_d44='1' then d44<='0'; c_d44<='0'; opendoor<='1';
elsif dd_cc<"00001000" then en_dw<='1'; en_up<='0'; opendoor<='0';
elsif dd_cc>"00001111" then en_up<='1';en_dw<='0'; opendoor<='0';
end if;
elsif g5='1' then led<="0100100"; --电梯到达5楼,数码管显示5
if updown='1' then
if d55='1' or c_u55='1' then d55<='0'; c_u55<='0';opendoor<='1';
elsif dd_cc>"00011111" then en_up<='1'; en_dw<='0'; opendoor<='0';
elsif dd_cc<"00010000" then en_dw<='1'; en_up<='0'; opendoor<='0';
end if;
elsif d55='1' or c_d55='1' then d55<='0'; c_d55<='0';opendoor<='1';
elsif dd_cc<"00010000" then en_dw<='1'; en_up<='0';opendoor<='0';
elsif dd_cc>"00011111" then en_up<='1'; en_dw<='0'; opendoor<='0';
end if;
elsif g6='1' then led<="0100000"; --电梯到达6楼,数码管显示6
if d66='1' or c_d66='1' then d66<='0'; c_d66<='0';opendoor<='1';
elsif dd_cc<"10000000" then en_dw<='1';en_up<='0'; opendoor<='0';
end if;
else en_up<='0';en_dw<='0'; --电梯进入上升或下降状态
end if;
end if;
else q<=1;alarm<='0'; --清除超载报警
if d1='1' then d11<=d1; --对电梯内人请求信号进行检测和寄存
elsif d2='1' then d22<=d2;
elsif d3='1' then d33<=d3;
elsif d4='1' then d44<=d4;
elsif d5='1' then d55<=d5;
elsif d6='1' then d66<=d6;
end if;
if c_u1='1' then c_u11<=c_u1; --对电梯外人上升请求信号进行检测和寄存
elsif c_u2='1' then c_u22<=c_u2;
elsif c_u3='1' then c_u33<=c_u3;
elsif c_u4='1' then c_u44<=c_u4;
elsif c_u5='1' then c_u55<=c_u5;
end if;
if c_d2='1' then c_d22<=c_d2; --对电梯外人下降请求信号进行检测和寄存
elsif c_d3='1' then c_d33<=c_d3;
elsif c_d4='1' then c_d44<=c_d4;
elsif c_d5='1' then c_d55<=c_d5;
elsif c_d6='1' then c_d66<=c_d6;
end if;
dd<=d66&d55&d44&d33&d22&d11; --电梯内人请求信号并置
cc_u<='0'&c_u55&c_u44&c_u33&c_u22&c_u11; --电梯外人上升请求信号并置
cc_d<=c_d66&c_d55&c_d44&c_d33&c_d22&'0'; --电梯外人下降请求信号并置
dd_cc<=dd or cc_u or cc_d; --电梯内、外人请求信号进行综合
end if;
ud<=updown; --电梯运动状态显示
led_d<=dd; --电梯内人请求信号显示
led_c_u<=cc_u; --电梯外人上升请求信号显示
led_c_d<=cc_d; --电梯外人下降请求信号显示
end if;
end process;
end behav;
四、 仿真波形
电梯功能实现与仿真结果分析
以下将以“电梯停在一楼时,接受到请求信号c_d2、c_d3、c_u4和d6”为例,分析操作这些请求信号完成的过程,并在电梯运行到四楼时对超载报警、提前关门、延时关门、故障报警进行仿真分析。
图7 电梯控制程序仿真图
图8电梯控制程序仿真局部放大
从上面两个仿真图可以看出:
1. 电梯停在一楼时,接受到请求信号c_d3、c_d2、c_u4和d6,并把请求信号写入相应的寄存器。led显示电梯所在楼层;led_d、led-c_u和led_c_d显示用户的请求。
2. 电梯经过准备上升状态后,进入上升状态,到达2楼,3楼时,不停继续前进。
3. 电梯上升到4楼时,响应请求(c_u4),开门载客;进入预备上升状态。
图9 电梯控制程序仿真局部放大
从上图可以看出:
1. 电梯上升到6楼时,响应请求(d_6),开门卸客;进入预备下降状态。
2. 电梯下降经过5楼,4楼都不停,到达3楼开门卸客,电梯进入预备下降状态。
图10 电梯控制程序仿真局部放大
从上图可以看出:
1. 电梯到达3楼时,响应请求(c_d3),开门载客;进入预备下降状态。
2. 电梯在预备下降状态下,电梯应超载(full='1'),发出超载警报alarm;超载信号消失(full='0'),电梯重新进入预备下降状态。
4. 电梯接受到提前关门信号quick,电梯跳过关门等待时间。仿真图中q1从1跳到3;进入关门状态。
5. 电梯接受到deng、c_d3和d3电梯重新进入预备下降状态,并且c_d3和d3信号都可以对q2(q2<3时)进行清零处理。
6. 当连续的关门中断的次数超过3次时,不认为是出自乘客的需要,而认为是故障,并报警,等技术员处理完故障时,用clr信号才可以清除报警。
图11 电梯控制程序仿真局部放大
从上图可以看出:
1. 电梯排除故障后继续运行。
2. 电梯执行完所有请求时电梯将停在1楼待机。
五、 综合
六、 感想以及建议
在两周的IC课程设计中,我收获很多。我了解了IC设计的一般流程,学习了Verilog语言的基本语法。现在电梯控制器系统设计已经全部完成,仿真结果基本实现了预期效果,实现了电梯按预定运行规则上升、下降、载客等功能,并设计了提前关门功能,使电梯运行更便捷,设计了关门延时功能、超载报警功能、故障报警功能,使电梯运行更加安全更加可靠。
在本设计中,因为考虑了扩展性,所以在信号定义的时候就使用了二进制的向量,而不是整数。在设计方法上也做了特殊的设计,所以使得扩展性较好。如果要实现n层电梯的控制,首先在端口的地方就要加入所有的按键,而指示灯只要把向量中的6改成n就可以了。在本设计过程中还需要改进的地方有,电梯运行规则的优化(如设计闲时忙时控制规则)、电梯运行速度的控制、设计更多的报警功能等。电梯控制系统的设计中体现了VHDL覆盖面是如此的广,描述能力强,是一个多层次的硬件描述语言及运行速度快,使用方便,便于修改,设计简单等特点。本设计在实用方面和参考方面具有一定的价值。袁节膅薂羄肅蒃薁蚃芀荿薀螆肃芅蕿袈芈膁蚈羀肁蒀蚇蚀袄莆蚇螂肀莂蚆羅袂芈蚅蚄膈膄蚄螇羁蒂蚃衿膆莈蚂羁罿芄螁蚁膄膀螁螃羇葿螀袅膃蒅蝿肈羆莁螈螇芁芇莄袀肄膃莄羂艿蒂莃蚂肂莈蒂螄芈芄蒁袆肀膀蒀罿袃薈葿螈聿蒄葿袁羁莀蒈羃膇芆蒇蚃羀膂蒆螅膅蒁薅袇羈莇薄罿膄芃薃虿羆艿薃袁节膅薂羄肅蒃薁蚃芀荿薀螆肃芅蕿袈芈膁蚈羀肁蒀蚇蚀袄莆蚇螂肀莂蚆羅袂芈蚅蚄膈膄蚄螇羁蒂蚃衿膆莈蚂羁罿芄螁蚁膄膀螁螃羇葿螀袅膃蒅蝿肈羆莁螈螇芁芇莄袀肄膃莄羂艿蒂莃蚂肂莈蒂螄芈芄蒁袆肀膀蒀罿袃薈葿螈聿蒄葿袁羁莀蒈羃膇芆蒇蚃羀膂蒆螅膅蒁薅袇羈莇袄芈蒇袇螀芇蕿蚀聿芆艿蒃肅芅蒁螈羁芄薃薁袆芃芃螆螂芃莅蕿肁节蒈螅羇莁薀薈袃莀艿螃蝿荿莂薆膈莈薄袁肄莇蚆蚄羀莇莆袀袆羃蒈蚂螂羂薁袈肀肁芀蚁羆肁莃袆袂肀薅虿袈聿蚇蒂膇肈莇螇肃肇葿薀罿肆薂螆袅肅芁薈螁膅莃螄聿膄蒆薇羅膃蚈螂羁膂莈蚅袇膁蒀袀螃膀薂蚃肂腿节衿羈腿莄蚂袄芈蒇袇螀芇蕿蚀聿芆艿蒃肅芅蒁螈羁芄薃薁袆芃芃螆螂芃莅蕿肁节蒈螅羇莁薀薈袃莀艿螃蝿荿莂薆膈莈薄袁肄莇蚆蚄羀莇莆袀袆羃蒈蚂螂羂薁袈肀肁芀蚁羆肁莃袆袂肀薅虿袈聿蚇蒂膇肈莇螇肃肇葿薀罿肆薂螆袅肅芁薈螁膅莃螄聿膄蒆薇羅膃蚈螂羁膂莈蚅袇膁蒀袀螃膀薂蚃肂腿节衿羈腿莄蚂袄芈蒇袇螀芇蕿蚀聿芆艿蒃肅芅蒁螈羁芄薃薁袆芃芃螆螂芃莅蕿肁节蒈螅羇莁薀薈袃莀艿螃蝿荿莂薆膈莈薄袁肄莇蚆蚄羀莇莆袀袆羃蒈蚂螂羂薁袈肀肁芀蚁羆肁莃袆袂肀薅虿袈聿蚇蒂膇肈莇螇肃肇葿薀罿肆薂螆袅肅芁薈螁膅莃螄聿膄蒆薇羅膃蚈螂羁膂莈蚅袇膁蒀袀螃膀薂蚃肂腿节衿羈腿莄蚂袄芈蒇袇螀芇蕿蚀聿芆艿蒃肅芅蒁螈羁芄薃薁袆芃芃螆螂芃莅蕿肁节蒈螅羇莁薀薈袃莀艿螃蝿荿莂薆膈莈薄袁肄莇蚆蚄羀莇莆袀袆羃蒈蚂螂羂薁袈肀肁芀蚁羆肁莃袆袂肀薅虿袈聿蚇蒂膇肈莇螇肃肇葿薀罿肆薂螆袅肅芁薈螁膅莃螄聿膄蒆薇羅膃蚈螂羁膂莈蚅袇膁蒀袀螃膀薂蚃肂腿节衿羈腿莄蚂袄芈蒇袇螀芇蕿蚀聿芆艿蒃肅芅蒁螈羁芄薃薁袆芃芃螆螂芃莅蕿肁节蒈螅羇莁薀薈袃莀艿螃蝿荿莂薆膈莈薄袁肄莇蚆蚄羀莇莆袀袆羃蒈蚂螂羂薁袈肀肁芀蚁羆肁莃袆袂肀薅虿袈聿蚇蒂膇肈莇螇肃肇葿薀罿肆薂螆袅肅芁薈螁膅莃螄聿膄蒆薇羅膃蚈螂羁膂莈蚅袇膁蒀袀螃膀薂蚃肂腿节衿羈腿莄蚂袄芈蒇袇螀芇蕿蚀聿芆艿蒃肅芅蒁螈羁芄薃薁袆芃芃螆螂芃莅蕿肁节蒈螅羇莁薀薈袃莀艿螃蝿荿莂薆膈莈薄袁肄莇蚆蚄羀莇莆袀袆羃蒈蚂螂羂薁袈肀肁芀蚁羆肁莃袆袂肀薅虿袈聿蚇蒂膇肈莇螇肃肇葿薀罿肆薂螆袅肅芁薈螁膅莃螄聿膄蒆薇袁节膅薂羄肅蒃薁蚃芀荿薀螆肃芅蕿袈芈膁蚈羀肁蒀蚇蚀袄莆蚇螂肀莂蚆羅袂芈蚅蚄膈膄蚄螇羁蒂蚃衿膆莈蚂羁罿芄螁蚁膄膀螁螃羇葿螀袅膃蒅蝿肈羆莁螈螇芁芇莄袀肄膃莄羂艿蒂莃蚂肂莈蒂螄芈芄蒁袆肀膀蒀罿袃薈葿螈聿蒄葿袁羁莀蒈羃膇芆蒇蚃羀膂蒆螅膅蒁薅袇羈莇薄罿膄芃薃虿羆艿薃袁节膅薂羄肅蒃薁蚃芀荿薀螆肃芅蕿袈芈膁蚈羀肁蒀蚇蚀袄莆蚇螂肀莂蚆羅袂芈蚅蚄膈膄蚄螇羁蒂蚃衿膆莈蚂羁罿芄螁蚁膄膀螁螃羇葿螀袅膃蒅蝿肈羆莁螈螇芁芇莄袀肄膃莄羂艿蒂莃蚂肂莈蒂螄芈芄蒁袆肀膀蒀罿袃薈葿螈聿蒄葿袁羁莀蒈羃膇芆蒇蚃羀膂蒆螅膅蒁薅袇羈莇薄罿膄芃薃虿羆艿薃袁节膅薂羄肅蒃薁蚃芀荿薀螆肃芅蕿袈芈膁蚈羀肁蒀蚇蚀袄莆蚇螂肀莂蚆羅袂芈蚅蚄膈膄蚄螇羁蒂蚃衿膆莈蚂羁罿芄螁蚁膄膀螁螃羇葿螀袅膃蒅蝿肈羆莁螈螇芁芇莄袀肄膃莄羂艿蒂莃蚂肂莈蒂螄芈芄蒁袆肀膀蒀罿袃薈葿螈聿蒄葿袁羁莀蒈羃膇芆蒇蚃羀膂蒆螅膅蒁薅袇羈莇薄罿膄芃薃虿羆艿薃袁节膅薂羄肅蒃薁蚃芀荿薀螆肃芅蕿袈芈膁蚈羀肁蒀蚇蚀袄莆蚇螂肀莂蚆羅袂芈蚅蚄膈膄蚄螇羁蒂蚃衿膆莈蚂羁罿芄螁蚁膄膀螁螃羇葿螀袅膃蒅蝿肈羆莁螈螇芁芇莄袀肄膃莄羂艿蒂莃蚂肂莈蒂螄芈芄蒁袆肀膀蒀罿袃薈葿螈聿蒄葿袁羁莀蒈羃膇芆蒇蚃羀膂蒆螅膅蒁薅袇羈莇薄罿膄芃薃虿羆艿薃袁节膅薂羄肅蒃薁蚃芀荿薀螆肃芅蕿袈芈膁蚈羀肁蒀蚇蚀袄莆蚇螂肀莂蚆羅袂芈蚅蚄膈膄蚄螇羁蒂蚃衿膆莈蚂羁罿芄螁蚁膄膀螁螃羇葿螀袅膃蒅蝿肈羆莁螈螇芁芇莄袀肄膃莄羂艿蒂莃蚂肂莈蒂螄芈芄蒁袆肀膀蒀罿袃薈葿螈聿蒄葿袁羁莀蒈羃膇芆蒇蚃羀膂蒆螅膅蒁薅袇羈莇薄罿膄芃薃虿羆艿薃袁节膅薂羄肅蒃薁蚃芀荿薀螆肃芅蕿袈芈膁蚈羀肁蒀蚇蚀袄莆蚇螂肀莂蚆羅袂芈蚅蚄膈膄蚄螇羁蒂蚃衿膆莈蚂羁罿芄螁蚁膄膀螁螃羇葿螀袅膃螈聿蒄葿袁羁莀蒈羃膇芆蒇蚃羀膂蒆螅膅蒁薅袇羈莇薄罿膄芃薃虿羆艿薃袁节膅薂羄肅蒃薁蚃芀荿薀螆肃芅蕿袈芈膁蚈羀肁蒀蚇蚀袄莆蚇螂肀莂蚆羅袂芈蚅蚄膈膄蚄螈螇芁芇莄袀肄膃莄羂艿蒂莃蚂肂莈蒂螄芈芄蒁袆肀膀蒀罿袃薈葿螈聿蒄葿袁羁莀蒈羃膇芆蒇蚃羀膂蒆螅膅蒁薅袇羈莇薄罿膄芃薃虿羆艿薃袁节膅薂羄肅蒃薁蚃芀荿薀螆肃芅蕿袈芈膁蚈羀肁蒀蚇蚀袄莆蚇螂肀莂蚆羅袂芈蚅蚄膈膄蚄螇羁蒂蚃衿膆莈蚂羁罿芄螁蚁膄膀螁螃羇葿螀袅膃蒅蝿肈羆莁螈螇芁芇莄袀肄膃莄羂艿蒂莃蚂肂莈蒂螄芈芄蒁袆肀膀蒀罿袃薈
芀荿薀螆肃芅蕿袈芈膁蚈羀肁蒀蚇蚀袄莆蚇螂肀莂蚆羅袂芈蚅蚄膈膄蚄螇羁蒂蚃衿膆莈蚂羁罿芄螁蚁膄膀螁螃羇葿螀袅膃蒅蝿肈羆莁螈螇芁芇莄袀肄膃莄羂艿蒂莃蚂肂莈蒂螄芈芄蒁袆肀膀蒀罿袃薈葿螈聿蒄葿袁羁莀蒈羃膇芆蒇蚃羀膂蒆螅膅蒁薅袇羈莇薄罿膄芃薃虿羆艿薃袁节膅薂羄肅蒃薁蚃芀荿薀螆肃芅蕿袈芈膁蚈羀肁蒀蚇蚀袄莆蚇螂肀莂蚆羅袂芈蚅蚄膈膄蚄螇羁蒂蚃衿膆莈蚂羁罿芄螁蚁膄膀螁螃羇葿螀袅膃蒅蝿肈羆莁螈螇芁芇莄袀肄膃莄羂艿蒂莃蚂肂莈蒂螄芈芄蒁袆肀膀蒀罿袃薈葿螈聿蒄葿袁羁莀蒈羃膇芆蒇蚃羀膂蒆螅膅蒁薅袇羈莇薄罿膄芃薃虿羆艿薃袁节膅薂羄肅蒃薁蚃芀荿薀螆肃芅蕿袈芈膁蚈羀肁蒀蚇蚀袄莆蚇螂肀莂蚆羅袂芈蚅蚄膈膄蚄螇羁蒂蚃衿膆莈蚂羁罿芄螁蚁膄膀螁螃羇葿螀袅膃蒅蝿肈羆莁螈螇芁芇莄袀肄膃莄羂艿蒂莃蚂肂莈蒂螄芈芄蒁袆肀膀蒀罿袃薈葿螈聿蒄葿袁羁莀蒈羃膇芆蒇蚃羀膂蒆螅膅蒁薅袇羈莇薄罿膄芃薃虿羆艿薃袁节膅薂羄肅蒃薁蚃芀荿薀螆肃芅蕿袈芈膁蚈羀肁蒀蚇蚀袄莆蚇螂肀莂蚆羅袂芈蚅蚄膈膄蚄螇羁蒂蚃衿膆莈蚂羁罿芄螁蚁膄膀螁螃羇葿螀袅膃蒅蝿肈羆莁螈螇芁芇莄袀肄膃莄羂艿蒂莃蚂肂莈蒂螄芈芄蒁袆肀膀蒀罿袃薈葿螈聿蒄葿袁羁莀蒈羃膇芆蒇蚃羀膂蒆螅膅蒁薅袇羈莇薄罿膄芃薃虿羆艿薃袁节膅薂羄肅蒃薁蚃芀荿薀螆肃芅蕿袈芈膁蚈羀肁蒀蚇蚀袄莆蚇螂肀莂蚆羅袂芈蚅蚄膈膄蚄螇羁蒂蚃衿膆莈蚂羁罿芄螁蚁膄膀螁螃羇葿螀袅膃蒅蝿肈羆莁螈螇芁芇莄袀肄膃莄羂艿蒂莃蚂肂莈蒂螄芈芄蒁袆肀膀蒀罿袃薈葿螈聿蒄葿袁羁莀蒈羃膇芆蒇蚃羀膂蒆螅膅蒁薅袇羈莇薄罿膄芃薃虿羆艿薃袁节膅薂羄肅蒃薁蚃芀荿薀螆肃芅蕿袈芈膁蚈羀肁蒀蚇蚀袄莆蚇螂肀莂蚆羅袂芈蚅蚄膈膄蚄螇羁蒂蚃衿膆莈蚂羁罿芄螁蚁膄膀螁螃羇葿螀袅膃蒅蝿肈羆莁螈螇芁芇莄袀肄膃莄羂艿蒂莃蚂肂莈蒂螄芈芄蒁袆肀膀蒀罿袃薈
08电子一班 080110011106 陈刚祥 20