EDA电梯控制器课设报告文档格式.docx
- 文档编号:19652237
- 上传时间:2023-01-08
- 格式:DOCX
- 页数:32
- 大小:228.97KB
EDA电梯控制器课设报告文档格式.docx
《EDA电梯控制器课设报告文档格式.docx》由会员分享,可在线阅读,更多相关《EDA电梯控制器课设报告文档格式.docx(32页珍藏版)》请在冰豆网上搜索。
1.设计此系统是通过状态机实现的,首先定义以下状态:
TYPELIFT_STATEIS
(STOPON1,DOOROPEN,DOORCLOSE,DOORWAIT1,DOORWAIT2,DOORWAIT3,DOORWAIT4,UP,DOWN,STOP);
2.利用用户所输入请求,在以上状态之间进行转换,同时也定义了以下寄存器信号以备调用:
SIGNALMYLIFT:
LIFT_STATE;
SIGNALCLEARUP:
STD_LOGIC;
--清除上升请求指示灯
SIGNALCLEARDN:
--清除上下降请求指示灯
SIGNALPOS:
STD_LOGIC_VECTOR(3DOWNTO0);
SIGNALPOSITION:
INTEGERRANGE1TO3;
3.在用户输入控制时,通过多个进程进行协调工作:
CTRLIFT:
PROCESS(RESET,LIFTCLK)--控制电梯状态进程
用来为用户楼层选择
主要用了以下语句:
(1)CASE语句
CASE语句属于顺序语句,因此必须放在进程语句中使用,CASE语句的一般表达式是:
CASE<
表达式>
IS
WHEN<
选择值或标志符>
=〉<
顺序语句>
;
...<
...
ENDCASE;
当执行到CASE语句时,首先计算<
的值,然后根据WHEN条件句中与之相同的<
,执行对应的<
,最后结束CASE语句。
条件句中的=“>
”不是操作符,它的含义相当于THEN(或“于是”)。
使用CASE语句应该注意以下几点:
WHEN条件句中的选择值或标志符所代表的值必须在表达式的取值范围内。
除非所以条件句中的选择值能完全覆盖CASE语句中表达式的取值,否则最末一个条件句中的选择必须如教材例那样用OTHERS关键词表示以上已列的所有条件句中的未能列出的其他可能的取值。
OTHERS只能出现一次,且只能作为最后一种条件取值。
使用OTHERS的目的是为了使条件句中的所有选择值能涵盖表达式的所有取值,以免综合器会插入不必要的锁存器。
关键词NULL表示不做任何操作。
CASE语句中的选择值只能出现一次,不允许有相同选择值的条件语句出现。
CASE语句执行中必须选中,且只能选中所列条件语句中的一条。
(2)IF语句
IF语句是VHDL设计中最重要和最常用的语句,IF语句作为一种条件语句,它根据语句中所设置的一种或多种条件,有选择地执行制定的顺序语句。
IF语句的语句结构有以下几种:
IF条件句THEN
顺序语句
ENDIF;
IF条件语句THEN
ELSE
IF条件语句THEN
IF条件句THEN
END IF
ENDIF
顺序句
ELSIF条件句THEN
ELSE
ENDIF;
IF语句中至少应有一个条件句,“条件句”可以是BOOLEAN类型的标志符,如IFA1THEN...,或者是一个判别表达式,如IFA<B+1 THEN...,判别表达式输出的值,即判断结果的数据类型是BOOLEAN。
IF语句根据条件语句产生的判断结果是TRUE或是FALSE,有条件的选择执行其后的顺序语句。
以上具体应用如源代码所示.
2.2.4电梯控制器的组成
电梯的控制状态包括运行状态、停止状态及等待状态,其中运行状态又包含向上状态和向下状态。
每层楼设有用户请求按钮,用户可以通过本层的请求,对电梯进行控制,使电梯到当前楼层;
而在电梯内部,还设有电梯停靠按钮,当用户需要下电梯时,可按下停止按钮,在计数及显示上,当电梯运行停止后,计数4s后,门自动关闭,而显示器也可显示当前电梯所在楼层数。
图2.2.2电梯内部控制结构图
2.3系统设计源程序及程序具体分析
LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164.ALL;
USEIEEE.STD_LOGIC_UNSIGNED.ALL;
USEIEEE.STD_LOGIC_ARITH.ALL;
ENTITYTHREEFLIFTIS
PORT(BUTTONCLK:
INSTD_LOGIC;
--按键时钟
LIFTCLK:
--电梯时钟
RESET:
--
F1UPBUTTON:
INSTD_LOGIC;
F2UPBUTTON:
F2DNBUTTON:
F3DNBUTTON:
FUPLIGHT:
BUFFERSTD_LOGIC_VECTOR(3DOWNTO1);
--外部上升请求指示灯
FDNLIGHT:
--外部下降请求指示灯
STOP1BUTTON,STOP2BUTTON,STOP3BUTTON:
--内部请求按键
STOPLIGHT:
--内部请求指示灯
POST:
OUTSTD_LOGIC_VECTOR(3DOWNTO0);
--电梯楼层数
DOORLIGHT:
OUTSTD_LOGIC;
--开关
UDSIG:
BUFFERSTD_LOGIC);
--升降
ENDTHREEFLIFT;
ARCHITECTUREARTOFTHREEFLIFTIS
BEGIN
CTRLIFT:
IFRESET='
1'
THEN--异步信号如果为1时电梯状态
MYLIFT<
=STOPON1;
CLEARUP<
='
0'
;
CLEARDN<
ELSE—否则,异步信号如果惟0时正常工作状态
IFLIFTCLK'
EVENTANDLIFTCLK='
THEN
CASEMYLIFTIS
WHENSTOPON1=>
DOORLIGHT<
POSITION<
=1;
POS<
="
0001"
UDSIG<
--电梯位置为1
=DOORWAIT1;
--状态转移到开门等待第1秒状态
--CLEARUP<
--CLEARDN<
--电梯处在一层状态时
WHENDOORWAIT1=>
MYLIFT<
=DOORWAIT2;
--电梯处在等待第1秒状态时
CLEARDN<
WHENDOORWAIT2=>
=DOORWAIT3;
--电梯处在等待第2秒状态时
WHENDOORWAIT3=>
=DOORWAIT4;
--电梯处在等待第3秒状态时
WHENDOORWAIT4=>
--电梯处在等待第4秒状态时
IFUDSIG='
THEN--UDSIG=0表示上升模式;
IFPOSITION=3THEN--如果电梯在第三层;
IFSTOPLIGHT="
000"
ANDFUPLIGHT="
ANDFDNLIGHT="
THEN--没有任何请求信号;
UDSIG<
--UDSIG=1表示下降模式;
=DOORCLOSE;
--电梯转为关门状态;
ELSIFSTOPLIGHT(POSITION)='
ORFDNLIGHT(POSITION)='
THEN
=DOOROPEN;
ELSEUDSIG<
=DOWN;
--电梯转为下降状态;
ENDIF;
ELSIFPOSITION=2THEN--如果电梯在第二层;
IFSTOPLIGHT="
THEN--没有任何请求信号;
ELSIFSTOPLIGHT(POSITION)='
ORFUPLIGHT(POSITION)='
ELSIFSTOPLIGHT(3)='
ORFDNLIGHT(3)='
THEN--有3层停站或3层下降请求
--处于上升状态
=UP;
THENUDSIG<
ELSIFPOSITION=1THEN--处于1层
THEN
--任何请求,电梯处于1层,肯定上升,using置0
状态置回关门状态等待升降请求
THEN
--否则无论怎么样电梯都得上升
ELSIFPOSITION=2THEN--如果电梯在第二层
--没有任何请求信号,电梯仍处于下降模式
--状态置回关门状态等待升降请求
ELSIF
STOPLIGHT(POSITION)='
ORFDNLIGHT(POSITION)='
THEN–-如果内部有1层停站请求或者有1层上升请求
ELSIFSTOPLIGHT
(1)='
ORFUPLIGHT
(1)='
--状态转移到下降状态
ORFUPLIGHT(POSITION)='
--其他情况电梯都得上升
ELSIFPOSITION=3THEN--如果电梯停在第三层
--没有任何请求信号,由于电梯处于最高层,所以肯定要下降
WHENUP=>
--电梯处于上升状态时
=POSITION+1;
--信号POSITION加1表示上升1层
POS<
=POS+1;
--电梯处在上升状态时,变量POS加1表示上升一层
IFPOSITION=2AND(STOPLIGHT
(2)='
ORFUPLIGHT
(2)='
)
--如果即将到达的层不是最高层并且内部有该层停站请求或者该层外部有上升请求
THENMYLIFT<
=STOP;
--下一状态电梯停止
ELSIFPOSITION<
3AND(STOPLIGHT(3)='
ORFUPLIGHT(3)='
3AND(STOPLIGHT(POSITION)='
ELSIFPOSITION=3AND(STOPLIGHT(POSITION)='
ELSEMYLIFT<
WHENDOWN=>
=POSITION-1;
=POS-1;
--电梯处在下降的状态时
IFPOSITION>
1AND(STOPLIGHT(POSITION)='
ELSIFPOSITION>
1AND(STOPLIGHT
(1)='
ORFUPLIGHT
(1)='
)THEN
MYLIFT<
--如果即将到达的层不是1层且内部有该层停站请求或者该层外部有下降请求
--下一状态为停止状态
ELSIFPOSITION=1AND(STOPLIGHT(POSITION)='
--如果即将到达的层是1层且内部有该层停站请求或者该层外部有上升请求
ENDIF;
WHENSTOP=>
--电梯处在停止状态时
--状态转移到开门状态
WHENDOOROPEN=>
--电梯处于开门状态时
THEN--如果电梯处于上升模式
IFPOSITION<
)THEN
--如果电梯位于2层或2层以上,且内部停站等于1或外部请求下降信号等于1,此时只用--清除上升
--请求指示灯
CLEARUP<
ELSECLEARUP<
--其他情况需同时清除上升和下降指示灯
ELSIFUDSIG='
THEN--如果电梯处于下降模式
--如果电梯位于2层或2层以上,且内部停站等于1或外部请求下降信号等于1,此时只用--清除下降
ELSECLEARDN<
CLEARUP<
--其他情况需同时清除上升和下降指示灯
WHENDOORCLOSE=>
--10电梯处在关门状态时
WHENOTHERS=>
ENDCASE;
ENDPROCESSCTRLIFT;
POST<
=POS;
CTRLIGHT:
PROCESS(RESET,BUTTONCLK)--控制按键信号灯的进程
THEN--异步复位信号为1时
STOPLIGHT<
FUPLIGHT<
FDNLIGHT<
ELSE
IFBUTTONCLK'
EVENTANDBUTTONCLK='
IFCLEARUP='
THEN--当清除上升请求指示灯信号为1时
STOPLIGHT(POSITION)<
FUPLIGHT(POSITION)<
--该层电梯内部停站信号灯和外部上升请求指示灯灭
IFF1UPBUTTON='
THENFUPLIGHT
(1)<
ELSIFF2UPBUTTON='
THENFUPLIGHT
(2)<
--如果按键,那么指示灯亮
IFCLEARDN='
THEN--当清除下降请求指示灯信号为1时
FDNLIGHT(POSITION)<
IFF2DNBUTTON='
THENFDNLIGHT
(2)<
ELSIFF3DNBUTTON='
THENFDNLIGHT(3)<
IFSTOP1BUTTON='
THENSTOPLIGHT
(1)<
ELSIFSTOP2BUTTON='
THENSTOPLIGHT
(2)<
ELSIFSTOP3BUTTON='
THENSTOPLIGHT(3)<
ENDPROCESSCTRLIGHT;
ENDART;
2.4程序仿真图及分析
①在第二层电梯外部有上升请求,也就是f2upbuttton信号的一个脉冲,可以看到电梯从一层上升到二层,position信号由1变到2,doorlight信号‘1’表示开门,‘0’表示关门。
当乘客进入电梯以后,在电梯内部要求上升到第三层,也就是stop3button产生一个脉冲,电梯上升到第3层,开门4秒以后关门,停留在第三层,position最后的值为3。
在仿真图中看不到buttonclk,只显示为一条黑色的线,是因为采用了频率较大的时钟。
再看fuplight信号灯,当二层有上升请求的时候,它的值由0变到2。
(注意fuplight和fdnlight是3位的二进制向量,这里的2代表“010”,表示二层有请求;
“100”也就是4,表示三层有请求)。
当电梯停留到第二层以后,表明该请求被响应,所以它的值变为0,由于没有下降请求信号,所以fdnlight信号灯的值一盲都为O。
波形图如图3.2.1。
图3.2.1
②有下降请求的情况,它是图4的继续,当电梯停留在第三层的时候,在电梯外第二层有下降请求,这时候fdnlight信号灯由0变为2,说明第二层有下降请求。
电梯下降到第二层,响应了下降请求,所以fdnlight信号灯清0。
这时候,在电梯内部没有停留在哪
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- EDA 电梯 控制器 报告