为了正常的体验网站,请在浏览器设置里面开启Javascript功能!

eda课程设计电梯(3层)

2018-09-21 19页 doc 152KB 16阅读

用户头像 个人认证

北溟愚鱼

暂无简介

举报
eda课程设计电梯(3层)课程设计说明书 目 录 1 1 引言 2 2 EDA技术介绍 2 2.1 EDA概述 2 HYPERLINK \l "_Toc266216970" 2.2 MAX+plus II软件简介 3 3 电梯控制器设计 3 3.1设计要求 3 3.2电梯运行规则 3 3.3电梯整体设计 4 3.4端口设计说明 5 3.5具体程序设计说明 5 3.5.1 库声明部分 5 3.5.2 实体部分 5 3.5.3 结构体部分 9 4 系统仿真 11 5 硬件测试 ...
eda课程设计电梯(3层)
课程设计 目 录 1 1 引言 2 2 EDA技术介绍 2 2.1 EDA概述 2 HYPERLINK \l "_Toc266216970" 2.2 MAX+plus II软件简介 3 3 电梯控制器设计 3 3.1设计要求 3 3.2电梯运行规则 3 3.3电梯整体设计 4 3.4端口设计说明 5 3.5具体程序设计说明 5 3.5.1 库声明部分 5 3.5.2 实体部分 5 3.5.3 结构体部分 9 4 系统仿真 11 5 硬件测试 12 6 结论 13 参考文献 14 附录 1 引言 当今世界,部分地区人口高度密集,人和土地资源短缺的矛盾日益激化。这就注定了必须合理的利用土地去解决人与土地的矛盾。而兴建高层建筑是其中有效措施之一。因此能使人们快速便捷地到达目的楼层的电梯就应运而生了。 随着电子技术日薪月异的发展,集成电路从20 世纪60年代的小规模到中规模,再到大规模集成电路,伴随着它的高速发展,EDA技术、CPLD 技术也得到充分发展。电梯的使用越来越普遍,已从原来只在商业大厦、宾馆使用,过度到在办公室、居民楼等场所使用,并且对电梯功能的要求也不断提高,相应地其控制方式也在不停地发生变化。对于电梯的控制,随着技术的不断发展,微型计算机在电梯控制上的应用日益广泛,现在已进入全微机化控制的时代。电梯的微机化控制主要有以下几种形式:PLC控制,单片机控制,单板机控制,单微机控制,多微机控制,人工智能控制[1]。随着EDA技术的快速发展,CPLD/FPGA[2]已广泛应用于电子设计与控制的各个方面。本设计就是使用一片CPLD/FPGA来实现对电梯的控制的。 三层电梯广泛应用在大型的货运之中。其使用便捷,货运周期短,效率高成本低,对货运事业具有相当的经济价值。 电梯作为高层建筑物的重要交通工具与人们的工作日益紧密FPGA/CPLD作为新一代工业控制器,以其高可靠性和技术先进性,在电梯控制中得到广泛应用,从而使电梯由传统的继电器控制方式发展为计算机控制的一个重要方向,成为当前电梯控制和技术改造的热点之一。 电梯控制器是控制电梯按顾客要求自动上下的装置。本文采用VHDL语言来设计实用三层电梯控制器,其代码具有良好的可读性和易理解性,源程序经A1tera公司的MAX+plus II软件仿真,目标器件选用CPLD器件。通过对三层电梯控制器的设计,可以发现本设计有一定的扩展性,而且可以作为更多层电梯控制器实现的基础。 2 EDA技术介绍 2.1 EDA概述 EDA技术是20世纪90年代初从计算机辅助设计(Computer Adied Design)、计算机辅助制造(Computer Adied Manufacture)、计算机辅助测试(Computer Adied Testing)和计算机辅助工程(Computer Adied Engineering)的概念发展而来的。随着超大规模集成电路(Very Large Scale Integration)规模和技术复杂度的急剧增长,一块芯片内集成门可达几十万甚至几百万门,并且还在迅速增长,电子系统人工设计已十分困难,必须依靠电子设计自动化技术。 EDA技术的基本特征和基本工具总的来说,现代EDA技术的基本特征是采用高级语言描述,具有系统级仿真和综合能力。它主要采用并行工程和“自顶向下”的设计方法,使开发者从一开始就要考虑到产品生成周期的诸多方面,包括质量、成本、开发时间及用户的需求等等,然后从系统设计入手,在顶层进行功能方框图的划分和结构设计,在方框图一级进行仿真、纠错、并用VHDL、Verilog-HDL、ABEL等硬件描述语言对高层次的系统行为进行描述,在系统一级进行验证,然后再用逻辑综合优化工具生成具体的门级逻辑电路的网表[3],其对应的物理实现级可以是印刷电路板或专用集成电路。 利用EDA技术进行电子系统的设计,具有以下几个特点:用软件的方式设计硬件;用软件方式设计的系统到硬件系统的转换是由相关的开发软件自动完成;设计过程中可用相关软件进行各种仿真;系统可现场编程,在线升级;整个系统可集成在一个芯片上,具有体积小、功耗低及可靠性高的特点。因此,EDA技术是现代电子设计的发展趋势。电子设计自动化(EDA)是一种实现电子系统或电子产品自动化的技术,它与电子技术、微电子技术的发展密切相关,它吸收了计算机科学领域的大多数最新研究成果,以高性能的计算机作为工作平台,促进了工程发展。 2.2 MAX+plus II软件简介 MAX+plusⅡ是Altera公司提供的FPGA/CPLD开发集成环境,Altera是世界上最大可编程逻辑器件[4]的供应商之一。MAX+plusⅡ界面友好,使用便捷,被誉为业界最易用易学的EDA软件。在MAX+plusⅡ上可以完成设计输入、元件适配、时序仿真和功能仿真[5]、编程下载整个流程,它提供了一种与结构无关的设计环境,使设计者能方便地进行设计输入、快速处理和器件编程[6]。 3 电梯控制器设计 3.1设计要求 EDA设计实现一个3层电梯的控制系统。系统要求如下: (1)电梯到达楼层时,能发出指示信号(数码管显示楼层号); (2)能指示电梯的运行状态(上行或下行); (3)电梯的门操作具有关门延时设置(当按下梯内关门按钮时立刻响应关门操作,否则延时固定时间后响应关门操作); (4)正确响应各楼层的上行和下行请求(各楼层设置上行和下行选择按钮)。 3.2电梯运行规则 电梯运行规则:当电梯处在上升模式时,只响应比电梯所在位置高的上楼请求,由下向上逐个执行,直到最后一个上楼请求执行完毕。如果高层有下楼请求,直接升到有下楼请求的最高楼层,然后进入下降模式。 当电梯在一楼时,不管是梯内梯外,电梯都只可能接收到上升的请求信号。此时,电梯就进入预上升状态,准备作上升运行。如果电梯没有接收到请求信号,电梯则在一楼待机。 当电梯在二楼时,电梯则可能出现三种情况:电梯并没有接收到梯内梯外的任何请求信号时,电梯停在二楼待机;电梯接收到上升请求信号,进入预上升状态;电梯接收到下降请求信号,进入预下降状态。 当电梯在三楼时,不管是梯内梯外,电梯都只可能接收到下降的请求信号。此时,电梯就进入预下降状态,准备作下降运行。如果电梯没有接收到请求信号,电梯则停在二楼待机。 3.3电梯整体设计 电梯控制器采用状态机来实现,思路比较清晰。可以将电梯等待的每秒钟以及开门、关门都看成一个独立的状态。由于电梯又是每秒上升或下降一层,所以就可以通过一个统一的1秒为周期的时钟来触发状态机。根据电梯的实际工作情况,可以把状态机设置10个状态,分别是“电梯停留在第1层”、“开门”、“关门”、“开门等待第1秒”、“开门等待第2秒”、“开门等待第3秒”、“开门等待第4秒”、“上升”、“下降”和“停止状态”。各个状态之间的转换条件可由上面的设计要求所决定。 电梯初始状态为一层,处在开门状态,开门指示灯亮。 一层电梯入口处设有上楼请求开关,二层电梯入口设有上、下楼请求开关,三层电梯入口处设有下楼请求开关,电梯内部设有乘客到达楼层的停站请求开关及其显示,电梯内部还设有乘客关门请求。 设置电梯所处位置指示(用数码管表示)及电梯上升或下降指示。 电梯到达有停站请求的楼层后,电梯门打开,开门指示灯亮。当按下梯内关门按钮时立刻响应关门操作,否则,开门4秒后,电梯门关闭,开门指示灯灭,电梯继续运行,直至执行完最后一个请求信号后停在当前层。 电梯控制系统能记忆电梯内外的请求信号,并按照电梯运行规则工作,每个请求信号执行完毕后随即清除。 3.4端口设计说明 由功能要求得到本程序设计的端口必须包括: 时钟信号(clk); 系统复位信号(reset); 一楼电梯外人的上升请求信号(up1); 二楼电梯外人的上升请求信号(up2); 二楼电梯外人的下降请求信号(down2); 三楼电梯外人的下降请求信号(down2); 电梯内部人到达楼层的请求信号(stop1、stop2、stop3); 电梯内部关门请求信号(close); 所有输入信号等于1,表示有请求,等于0,表示无请求; 电梯外部上升指示灯(uplight)和下降请求指示灯(downlight),它们与up1、up2、down2、down3信号相对应; 电梯内部乘客到达楼层的停站请求灯(stoplight),该信号与stop1、stop2和stop3信号相对应; 电梯运行模式指示(udsig),1代表下降模式,0代表上升模式; 电梯所在楼层指示(position),表示电梯在对应楼层; 电梯所在楼层数码管表示(dout),该信号与position信号相对应; 电梯门状态指示(doorlight),1表示开门,0表示关门。 3.5具体程序设计说明 整段代码由三大部分组成:库声明,实体,结构体。 3.5.1 库声明部分 调用VHDL库,通过library语句本程序应用了VHDL库中的”通用ieee库”和”标准std库”。 library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_arith.all; use ieee.std_logic_unsigned.all; 3.5.2 实体部分 实体部分列出了代码所用到的所用输入输出端口。结构体部分共使用了分频进程,电梯状态进程,读按键、控制指示灯进程和信号灯进程4个进程。主控制器系统由VHDL语言实现,其输入输出端口定义如下: entity flift is port(clk:in std_logic; ——时钟信号 close :in std_logic; ——立即关门 rightlight:buffer std_logic; ——门灯信号 up1:in std_logic; ———楼上升按钮 up2:in std_logic; ——二楼上升按钮 down2:in std_logic; ——二楼下将按钮 down3:in std_logic; ——三楼下将按钮 uplight:buffer std_logic_vector(3 downto 1); ——上升指示灯 dnlight:buffer std_logic_vector(3 downto 1); ——下将指示灯 stop1,stop2,stop3:in std_logic; ——停止按钮 stoplight:buffer std_logic_vector(3 downto 1); ——停止指示灯 position:buffer integer range 1 to 3; ——楼层信号 led: buffer std_logic_vector(3 downto 0); ——楼层指示灯 doorlight:out std_logic; ——门灯信号 udsig:buffer std_logic); ——电梯运行状态 3.5.3 结构体部分 使用状态机来实现电梯功能。 在结构体中,设计了俩个进程互相配合,一个是状态机进程作为主要进程,另外一个是信号灯控制进程作为辅助进程。状态机进程中的很多判断条件是以信号灯进程产生的信号灯信号为依据的,而信号灯进程中信号灯的熄灭又是由状态机进程中传出的clearup和cleardn信号来控制。     在状态机进程中,在电梯的上升状态中,通过对信号灯的判断,决定下一个状态是继续上升还是停止;在电梯下降状态中,也是通过对信号灯的判断,决定下一个状态是继续下降还是停止;在电梯停止状态中,判断是最复杂的,通过对信号的判断,决定电梯是上升、下降还是停止。 在信号灯控制进程中,由于使用了专门的频率较高的按键时钟,所以使得按键的灵敏度增大,但是时钟频率不能过高,否则容易使按键过于灵敏。按键后产生的点亮的信号灯(逻辑值为‘1’)用于作为状态机进程中的判断条件,而clearup和cleardn信号为逻辑‘l’使得相应的信号灯熄灭。 分频进程:该进程的目的是产生不同频率的两个时钟,电梯控制时钟fliclk和按键控制时钟buttclk。 process(clk) ——产生电梯控制时钟fliclk和按键控制时钟buttclk begin if (clk'event and clk='1') then q<=q+1; end if; buttclk<=q(0); fliclk<=q(3); end process; 状态机进程:该部分是整个设计的核心,根据电梯的工作模式,将电梯的工作分为10个状态,分别为停一层stopno1、开门状态dooropen、关门状态doorclose、开门等待1秒wait1、开门等待2秒wait2、开门等待3秒wait3、开门等待4秒wait4、上升up、下降down和停止stop。在每个状态下,判断输入信号的请求,转入下一状态且产生对应得输出信号。 停一层状态:电梯开门同时转入下一状态wait1。 when stoponl=>doorlight<='1'; position<=1; pos:=1;state<=wait1; 开门等待1秒:该状态时重新计入上升下降请求。如果此时有关门请求,则转入下一状态doorclose;如果没有请求,则下一状态为wait2。 when wait1=>clearup<='0'; cleardn<='0'; if(close='1') then state<=doorclose; else state<=wait2; end if; 开门等待2秒:如果此时有关门请求,则转入下一状态doorclose;如果没有请求,则下一状态为wait3。 开门等待3秒:如果此时有关门请求,则转入下一状态doorclose;如果没有请求,则下一状态为wait4。 开门等待4秒:该状态的下一状态为doorclose。 关门状态:此时电梯开门。该状态要分为2种情况进行分析即电梯处于上升情况或下降情况。 当处于上升模式,同时电梯位于三层,如果此时电梯的内部与外部都没有请求,电梯转为下降模式,并进入下一状态doorclose;如果此时电梯内部有在三层下的请求或三层外部有下楼请求,电梯进入下一状态dooropen;否则电梯转为下降模式,并进入下一状态down。 if (position=3) then if (stoplight="000" and uplight="000" and downlight="000" ) then udsig<='1'; state<=doorclose; elsif(stoplight(3)='1' or downlight(3)='1') then state<=dooropen; else udsig<='1'; state<=down; end if; 当处于上升模式,同时电梯位于二层,如果此时电梯的内部与外部都没有请求,电梯仍为上升模式,并进入下一状态doorclose;如果此时电梯内部有在二层下的请求或二层外部有下楼请求或上楼请求,电梯进入下一状态dooropen;如果此时电梯内部有在三层下的请求或三层外部有下楼请求,电梯仍为上升模式,并进入下一状态up;否则电梯转为下降模式,并进入下一状态down。 elsif (position=2) then if(stoplight="000" and uplight="000" and downlight="000") then udsig<='0'; state<=doorclose; elsif (stoplight(3)='1' or downlight(3)='1') then udsig<='0'; state<=up; else udsig<='1'; state<=down; end if; 当处于上升模式,同时电梯位于一层,如果此时电梯的内部与外部都没有请求,电梯仍为上升模式,并进入下一状态doorclose;如果此时电梯内部有在一层下的请求或一层外部有上楼请求,电梯进入下一状态dooropen;否则电梯仍为上升模式,并进入下一状态up。 当处于下降模式,同时电梯位于一层,如果此时电梯的内部与外部都没有请求,电梯转为上升模式,并进入下一状态doorclose;如果此时电梯内部有在一层下的请求或一层外部有上楼请求,电梯进入下一状态dooropen;否则电梯转为上升模式,并进入下一状态up。当处于下降模式,同时电梯位于二层,如果此时电梯的内部与外部都没有请求,电梯仍为下降模式,并进入下一状态doorclose;如果此时电梯内部有在二层下的请求或二层外部有下楼请求或上楼请求,电梯进入下一状态dooropen;如果此时电梯内部有在一层下的请求或一层外部有上楼请求,电梯仍为下降模式,并进入下一状态down;否则电梯转为上升模式,并进入下一状态up。当处于下降模式,同时电梯位于三层,如果此时电梯的内部与外部都没有请求,电梯仍为下降模式,并进入下一状态doorclose;如果此时电梯内部有在三层下的请求或三层外部有下楼请求,电梯进入下一状态dooropen;否则电梯仍为下降模式,并进入下一状态down。 上升:电梯所在楼层数加一。如果此时电梯在二层同时二层外部有上升或下降的请求或电梯内部有在二层下的请求,则进入下一状态stop。如果此时电梯在二层同时三层外部有下降的请求或电梯内部有在三层下的请求,则进入下一状态up;否则进入下一状态stop。 when up=>position<=position+1; pos:=pos+1; if (pos=2 and (uplight(2)='1' or downlight(2)='1'or stoplight(2)='1' )) then state<=stop; elsif(pos=2 and (stoplight(3)='1' or downlight(3)='1')) then state<=up; else state<=stop; end if; 下降:电梯所在楼层数减一。如果此时电梯在二层同时二层外部有上升或下降的请求或电梯内部有在二层下的请求,则进入下一状态stop。如果此时电梯在二层同时一层外部有上升的请求或电梯内部有在一层下的请求,则进入下一状态down;否则进入下一状态stop。 停止:该状态的下一状态为dooropen。 开门状态:电梯开门同时清除上升下降的请求,并转入下一状态wait1,其它的状态都转入下一状态stopup='1'。 如果清除上升的信号有效,则电梯内部相应楼层停止信号清除,同时电梯外部相应楼层上升信号清除;否则当有上升请求时相应的电梯外部上升指示灯亮。 if(clearup='1') then stoplight(position)<='0'; uplight(position)<='0'; else if(up1='1')then uplight(1)<='1'; elsif(up2='1')then uplight(2)<='1'; end if; end if; 如果清除下降的信号有效,则电梯内部相应楼层停止信号清除,同时电梯外部相应楼层下降信号清除;否则当有下降请求时相应的电梯外部下降指示灯亮。如果停止信号有效,则相应的电梯内部停站请求灯亮。 4 系统仿真 电梯运行情况分析,选取几个典型运行情况进行分析。 电梯运行情况一:二层和三层都有下楼请求并都要求停在一层,初始时电梯停在一层,上升模式,并保持开门状态。外部没有请求时,电梯等待4秒关门。由于二层和三层都是下楼请求,而电梯此时是上升模式,则电梯到二层时不停,直接运行到三层,开门,由于没有关门请求,电梯等待4秒自动关门,并转为下降模式。电梯运行到二层,开门,由于没有关门请求,电梯等待4秒自动关门。由于电梯内部要求停在一层,则电梯直接运行到一层,开门,由于没有关门请求,电梯等待4秒自动关门,并自动转为上升模式。仿真情况如图1所示。 图1 电梯运行情况一 电梯运行情况二:电梯一层有上楼请求并要求停在三层,二层同时有下楼请求并要求停在一层,初始时电梯停在一层,上升模式,并保持开门状态。外部没有请求时,电梯等待4秒关门。当一层外部有上楼请求时,电梯开门,由于没有关门请求,电梯等待4秒自动关门。虽然此时二层有下楼请求,但由于此时电梯处于上升模式,所以电梯在二层不停。电梯内部要求在三层停止,电梯直接运行到三层停止,开门,由于没有关门请求,电梯等待4秒自动关门,并自动转为下降模式。二层外部有下楼请求,则电梯运行到二层停止,开门,由于没有关门请求,电梯等待4秒自动关门。电梯内部要求在一层停,则电梯停止在一层,开门,由于没有关门请求,电梯等待4秒自动关门,并自动转为上升模式。仿真情况如图2所示。 图2 电梯运行情况二 电梯运行情况三:一层有上楼请求并要求停在三层,二层有上楼请求并要求停在三层,同时二层有下楼请求并要求停在一层:初始时电梯停在一层,上升模式,并保持开门状态。外部没有请求时,电梯等待4秒关门。当一层外部有上楼请求时,电梯开门,由于没有关门请求,电梯等待4秒自动关门。电梯内部要求停在三层同时二层外部有上楼请求,则电梯停在二层,开门,由于没有关门请求,电梯等待4秒自动关门。电梯运行到三层,执行内部请求,开门,由于没有关门请求,电梯等待4秒自动关门,并自动转为下降模式。二层有下楼请求,电梯运行到二层停止,开门,由于没有关门请求,电梯等待4秒自动关门。电梯内部要求停在一层,开门,由于没有关门请求,电梯等待4秒自动关门,并转为上升模式。仿真情况如图3所示。 图3 电梯运行情况三 5 硬件测试 该硬件调试使用实验电路结构图5(即选择模式5进行硬件测试),引脚锁定与按键设置如下: clk>chip=lift;input pin=126; up1>chip=lift;input pin=8;按键1 up2>chip=lift;input pin=9;按键2 down2>chip=lift;input pin=10;按键3 down3>chip=lift;input pin=12;按键4 stop1>chip=lift;input pin=13;按键5 stop2>chip=lift;input pin=17;按键6 stop3>chip=lift;input pin=18;按键7 close>chip=lift;input pin=19;按键8 doorlight>chip=lift;output pin=20 udsig0>chip=lift;output pin=21 udsig1>chip=lift;output pin=22 led0>chip=lift;output pin=30 led1>chip=lift;output pin=31 led2>chip=lift;output pin=32 led3>chip=lift;output pin=33 6 结论 分析设计要求可知用状态机实现电梯的控制比较简便,通过各个状态的分析找出关系,逐步分解各个状态,进行设计。电梯到达楼层时,能发出指示信号;能指示电梯的运行状态;电梯的门操作具有关门延时设置;正确响应各楼层的上行和下行请求。虽然本设计能基本实现上述的功能,但是也存在一定的问题:仿真中参数的设置问题。参数的设置对于整个设计可谓至关重要。在程序仿真之初,这个问题就曾一度被忽视。造成在调试的过程中对信号随意设置,导致仿真失败,还以为是程序出错。例如,在程序仿真之初,clk信号的周期设置为100ms,由仿真的效果看到只能实现最基本的楼层显示,其他功能都失效。后来通过对clk信号的周期进行调试,当其减少到25ms时,电梯的上述功能都能基本实现;信号传输延时的问题。通过调试仿真观察,可以看到本系统的信号延时在10ms左右。但当改变仿真时的一些参数时(如仿真时间、时钟信号的周期、分频信号的周期以及器件的选用等),可以发现延时又会发生比较细微的变化。在日常应用中,由于选用的硬件以及使用环境的问题,延时问题可能会进一步显著。如何解决信号的延时,也是本设计未来需解决的主要问题之一。另外Endtime的值需要设置的长一点:20us左右,这样就可以观察到完整的仿真结果。 通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。在设计的过程中遇到问题,可以说得是困难重重,第一次课程设计,难免会遇到过各种各样的问题,同时在设计的过程中发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固。 参考文献 [1] 潘松,黄继业. EDA技术实用教程.北京:科学出版社,2002 [2] 甘历.VHDL应用与开发实际.北京:科学出版社,2003 [3] 梁勇,王留奎.EDA技术教程.北京:人民邮电出版社,2010. [4] 柳春锋.电子设计自动化(EDA).北京:北京理工大学出版社,2005. [5] 黄仁欣.EDA技术实用教程.北京:清华大学出版社,2006. [6] 朱正伟.EDA技术及应用 .北京:清华大学出版社,2005. 附录 library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_arith.all; use ieee.std_logic_unsigned.all; entity flift is port(clk,up1,up2,down2,down3,stop1,stop2,stop3,close:in std_logic; uplight,downlight,stoplight:buffer std_logic_vector(3 downto 1); udsig:buffer std_logic; position:buffer integer range 1 to 3; doorlight:out std_logic; dout:out std_logic_vector(3 downto 0)); end flift; architecture behav of flift is type state_type is(stoponl,dooropen,doorclose,wait1,wait2,wait3,wait4,up,down,stop); signal state:state_type:=stoponl; signal clearup,cleardn,buttclk,fliclk:std_logic; signal q:std_logic_vector(3 downto 0); begin process(clk) ---分频进程,产生电梯控制时钟fliclk和按键控制时钟buttclk begin if (clk'event and clk='1') then q<=q+1; end if; buttclk<=q(0); fliclk<=q(3); end process; cont:process(fliclk) ---状态机进程 variable pos:integer range 3 downto 1; begin if (fliclk'event and fliclk='1') then case state is when stoponl=>doorlight<='1'; position<=1; pos:=1;state<=wait1; when wait1=>clearup<='0'; cleardn<='0'; ---开门等待1秒 if(close='1') then state<=doorclose; else state<=wait2; end if; when wait2=> ---开门等待2秒 if(close='1') then state<=doorclose; else state<=wait3; end if; when wait3=> ---开门等待3秒 if(close='1') then state<=doorclose; else state<=wait4; end if; when wait4=>state<=doorclose; ---开门等待4秒 when doorclose=>doorlight<='0'; ---关门状态 if (udsig='0') then ---上升情况 if (position=3) then ---电梯在3层 if (stoplight="000" and uplight="000" and downlight="000" ) then udsig<='1'; state<=doorclose; elsif(stoplight(3)='1' or downlight(3)='1') then state<=dooropen; else udsig<='1'; state<=down; end if; elsif (position=2) then ---电梯在2层 if(stoplight="000" and uplight="000" and downlight="000") then udsig<='0'; state<=doorclose; elsif(stoplight(2)='1' or downlight(2)='1' or uplight(2)='1') then state<=dooropen; elsif (stoplight(3)='1' or downlight(3)='1') then udsig<='0'; state<=up; else udsig<='1'; state<=down; end if; elsif (position=1) then ---电梯在1层 if(stoplight="000" and uplight="000" and downlight="000") then udsig<='0'; state<=doorclose; elsif(stoplight(1)='1' or uplight(1)='1') then state<=dooropen; else udsig<='0'; state<=up; end if; end if; elsif (udsig='1') then ---下降情况 if (position=1) then ---电梯在1层 if (stoplight="000"and uplight="000" and downlight="000") then udsig<='0'; state<=doorclose; elsif(stoplight(1)='1' or uplight(1)='1') then state<=dooropen; else udsig<='0'; state<=up; end if; elsif(position=2) then ---电梯在2层 if(stoplight="000" and uplight="000" and downlight="000") then udsig<='1'; state <=doorclose; elsif(stoplight(2)='1' or downlight(2)='1' or uplight(2)='1') then state<=dooropen; elsif(stoplight(1)='1' or uplight(1)='1') then udsig<='1'; state<=down; else udsig<='0'; state<=up; end if; elsif(position=3) then ---电梯在3层 if(stoplight ="000" and uplight="000" and downlight="000") then udsig<='1'; state<=doorclose; elsif(stoplight(3)='1' or downlight(3)='1') then state<=dooropen; else udsig<='1'; state<=down; end if; end if; end if; when up=>position<=position+1; pos:=pos+1; ---电梯上一层 if (pos=2 and (uplight(2)='1' or downlight(2)='1'or stoplight(2)='1' )) then state<=stop; elsif(pos=2 and (stoplight(3)='1' or downlight(3)='1')) then state<=up; else state<=stop; end if; when down=>position<=position-1; pos:=pos-1; ---电梯下一层 if (pos=2 and (uplight(2)='1' or downlight(2)='1'or stoplight(2)='1' )) then state<=stop; elsif(pos=2 and (stoplight(1)='1' or uplight(1)='1') ) then state<=down; else state<=stop; end if; when stop=>state<=dooropen; ---电梯停止 when dooropen=>doorlight<='1';clearup<='1';cleardn<='1';state<=wait1; when others=>state<=stoponl; end case; end if; end process cont; butt: process( buttclk) ---读按键、控制指示灯进程 begin if(buttclk'event and buttclk='1')then if(clearup='1') then stoplight(position)<='0'; uplight(position)<='0'; else if(up1='1')then uplight(1)<='1'; elsif(up2='1')then uplight(2)<='1'; end if; end if; if(cleardn='1') then stoplight(position)<='0'; downlight(position)<='0'; else if(down2='1')then downlight(2)<='1'; elsif(down3='1') then downlight(3)<='1'; end if; end if; if (stop1='1') then stoplight(1)<='1'; elsif (stop2='1') then stoplight(2)<='1'; elsif (stop3='1') then stoplight(3)<='1'; end if; end if; end process butt; process(position) begin if(position=1) then dout<="0001"; end if; if(position=2) then dout<="0010"; end if; if(position=3) then dout<="0011"; end if; end process; end behav; 袁节膅薂羄肅蒃薁蚃芀荿薀螆肃芅蕿袈芈膁蚈羀肁蒀蚇蚀袄莆蚇螂肀莂蚆羅袂芈蚅蚄膈膄蚄螇羁蒂蚃衿膆莈蚂羁罿芄螁蚁膄膀螁螃羇葿螀袅膃蒅蝿肈羆莁螈螇芁芇莄袀肄膃莄羂艿蒂莃蚂肂莈蒂螄芈芄蒁袆肀膀蒀罿袃薈葿螈聿蒄葿袁羁莀蒈羃膇芆蒇蚃羀膂蒆螅膅蒁薅袇羈莇薄罿膄芃薃虿羆艿薃袁节膅薂羄肅蒃薁蚃芀荿薀螆肃芅蕿袈芈膁蚈羀肁蒀蚇蚀袄莆蚇螂肀莂蚆羅袂芈蚅蚄膈膄蚄螇羁蒂蚃衿膆莈蚂羁罿芄螁蚁膄膀螁螃羇葿螀袅膃蒅蝿肈羆莁螈螇芁芇莄袀肄膃莄羂艿蒂莃蚂肂莈蒂螄芈芄蒁袆肀膀蒀罿袃薈葿螈聿蒄葿袁羁莀蒈羃膇芆蒇蚃羀膂蒆螅膅蒁薅袇羈莇袄芈蒇袇螀芇蕿蚀聿芆艿蒃肅芅蒁螈羁芄薃薁袆芃芃螆螂芃莅蕿肁节蒈螅羇莁薀薈袃莀艿螃蝿荿莂薆膈莈薄袁肄莇蚆蚄羀莇莆袀袆羃蒈蚂螂羂薁袈肀肁芀蚁羆肁莃袆袂肀薅虿袈聿蚇蒂膇肈莇螇肃肇葿薀罿肆薂螆袅肅芁薈螁膅莃螄聿膄蒆薇羅膃蚈螂羁膂莈蚅袇膁蒀袀螃膀薂蚃肂腿节衿羈腿莄蚂袄芈蒇袇螀芇蕿蚀聿芆艿蒃肅芅蒁螈羁芄薃薁袆芃芃螆螂芃莅蕿肁节蒈螅羇莁薀薈袃莀艿螃蝿荿莂薆膈莈薄袁肄莇蚆蚄羀莇莆袀袆羃蒈蚂螂羂薁袈肀肁芀蚁羆肁莃袆袂肀薅虿袈聿蚇蒂膇肈莇螇肃肇葿薀罿肆薂螆袅肅芁薈螁膅莃螄聿膄蒆薇羅膃蚈螂羁膂莈蚅袇膁蒀袀螃膀薂蚃肂腿节衿羈腿莄蚂袄芈蒇袇螀芇蕿蚀聿芆艿蒃肅芅蒁螈羁芄薃薁袆芃芃螆螂芃莅蕿肁节蒈螅羇莁薀薈袃莀艿螃蝿荿莂薆膈莈薄袁肄莇蚆蚄羀莇莆袀袆羃蒈蚂螂羂薁袈肀肁芀蚁羆肁莃袆袂肀薅虿袈聿蚇蒂膇肈莇螇肃肇葿薀罿肆薂螆袅肅芁薈螁膅莃螄聿膄蒆薇羅膃蚈螂羁膂莈蚅袇膁蒀袀螃膀薂蚃肂腿节衿羈腿莄蚂袄芈蒇袇螀芇蕿蚀聿芆艿蒃肅芅蒁螈羁芄薃薁袆芃芃螆螂芃莅蕿肁节蒈螅羇莁薀薈袃莀艿螃蝿荿莂薆膈莈薄袁肄莇蚆蚄羀莇莆袀袆羃蒈蚂螂羂薁袈肀肁芀蚁羆肁莃袆袂肀薅虿袈聿蚇蒂膇肈莇螇肃肇葿薀罿肆薂螆袅肅芁薈螁膅莃螄聿膄蒆薇羅膃蚈螂羁膂莈蚅袇膁蒀袀螃膀薂蚃肂腿节衿羈腿莄蚂袄芈蒇袇螀芇蕿蚀聿芆艿蒃肅芅蒁螈羁芄薃薁袆芃芃螆螂芃莅蕿肁节蒈螅羇莁薀薈袃莀艿螃蝿荿莂薆膈莈薄袁肄莇蚆蚄羀莇莆袀袆羃蒈蚂螂羂薁袈肀肁芀蚁羆肁莃袆袂肀薅虿袈聿蚇蒂膇肈莇螇肃肇葿薀罿肆薂螆袅肅芁薈螁膅莃螄聿膄蒆薇羅膃蚈螂羁膂莈蚅袇膁蒀袀螃膀薂蚃肂腿节衿羈腿莄蚂袄芈蒇袇螀芇蕿蚀聿芆艿蒃肅芅蒁螈羁芄薃薁袆芃芃螆螂芃莅蕿肁节蒈螅羇莁薀薈袃莀艿螃蝿荿莂薆膈莈薄袁肄莇蚆蚄羀莇莆袀袆羃蒈蚂螂羂薁袈肀肁芀蚁羆肁莃袆袂肀薅虿袈聿蚇蒂膇肈莇螇肃肇葿薀罿肆薂螆袅肅芁薈螁膅莃螄聿膄蒆薇袁节膅薂羄肅蒃薁蚃芀荿薀螆肃芅蕿袈芈膁蚈羀肁蒀蚇蚀袄莆蚇螂肀莂蚆羅袂芈蚅蚄膈膄蚄螇羁蒂蚃衿膆莈蚂羁罿芄螁蚁膄膀螁螃羇葿螀袅膃蒅蝿肈羆莁螈螇芁芇莄袀肄膃莄羂艿蒂莃蚂肂莈蒂螄芈芄蒁袆肀膀蒀罿袃薈葿螈聿蒄葿袁羁莀蒈羃膇芆蒇蚃羀膂蒆螅膅蒁薅袇羈莇薄罿膄芃薃虿羆艿薃袁节膅薂羄肅蒃薁蚃芀荿薀螆肃芅蕿袈芈膁蚈羀肁蒀蚇蚀袄莆蚇螂肀莂蚆羅袂芈蚅蚄膈膄蚄螇羁蒂蚃衿膆莈蚂羁罿芄螁蚁膄膀螁螃羇葿螀袅膃蒅蝿肈羆莁螈螇芁芇莄袀肄膃莄羂艿蒂莃蚂肂莈蒂螄芈芄蒁袆肀膀蒀罿袃薈葿螈聿蒄葿袁羁莀蒈羃膇芆蒇蚃羀膂蒆螅膅蒁薅袇羈莇薄罿膄芃薃虿羆艿薃袁节膅薂羄肅蒃薁蚃芀荿薀螆肃芅蕿袈芈膁蚈羀肁蒀蚇蚀袄莆蚇螂肀莂蚆羅袂芈蚅蚄膈膄蚄螇羁蒂蚃衿膆莈蚂羁罿芄螁蚁膄膀螁螃羇葿螀袅膃蒅蝿肈羆莁螈螇芁芇莄袀肄膃莄羂艿蒂莃蚂肂莈蒂螄芈芄蒁袆肀膀蒀罿袃薈葿螈聿蒄葿袁羁莀蒈羃膇芆蒇蚃羀膂蒆螅膅蒁薅袇羈莇薄罿膄芃薃虿羆艿薃袁节膅薂羄肅蒃薁蚃芀荿薀螆肃芅蕿袈芈膁蚈羀肁蒀蚇蚀袄莆蚇螂肀莂蚆羅袂芈蚅蚄膈膄蚄螇羁蒂蚃衿膆莈蚂羁罿芄螁蚁膄膀螁螃羇葿螀袅膃蒅蝿肈羆莁螈螇芁芇莄袀肄膃莄羂艿蒂莃蚂肂莈蒂螄芈芄蒁袆肀膀蒀罿袃薈葿螈聿蒄葿袁羁莀蒈羃膇芆蒇蚃羀膂蒆螅膅蒁薅袇羈莇薄罿膄芃薃虿羆艿薃袁节膅薂羄肅蒃薁蚃芀荿薀螆肃芅蕿袈芈膁蚈羀肁蒀蚇蚀袄莆蚇螂肀莂蚆羅袂芈蚅蚄膈膄蚄螇羁蒂蚃衿膆莈蚂羁罿芄螁蚁膄膀螁螃羇葿螀袅膃蒅蝿肈羆莁螈螇芁芇莄袀肄膃莄羂艿蒂莃蚂肂莈蒂螄芈芄蒁袆肀膀蒀罿袃薈葿螈聿蒄葿袁羁莀蒈羃膇芆蒇蚃羀膂蒆螅膅蒁薅袇羈莇薄罿膄芃薃虿羆艿薃袁节膅薂羄肅蒃薁蚃芀荿薀螆肃芅蕿袈芈膁蚈羀肁蒀蚇蚀袄莆蚇螂肀莂蚆羅袂芈蚅蚄膈膄蚄螇羁蒂蚃衿膆莈蚂羁罿芄螁蚁膄膀螁螃羇葿螀袅膃螈聿蒄葿袁羁莀蒈羃膇芆蒇蚃羀膂蒆螅膅蒁薅袇羈莇薄罿膄芃薃虿羆艿薃袁节膅薂羄肅蒃薁蚃芀荿薀螆肃芅蕿袈芈膁蚈羀肁蒀蚇蚀袄莆蚇螂肀莂蚆羅袂芈蚅蚄膈膄蚄螈螇芁芇莄袀肄膃莄羂艿蒂莃蚂肂莈蒂螄芈芄蒁袆肀膀蒀罿袃薈葿螈聿蒄葿袁羁莀蒈羃膇芆蒇蚃羀膂蒆螅膅蒁薅袇羈莇薄罿膄芃薃虿羆艿薃袁节膅薂羄肅蒃薁蚃芀荿薀螆肃芅蕿袈芈膁蚈羀肁蒀蚇蚀袄莆蚇螂肀莂蚆羅袂芈蚅蚄膈膄蚄螇羁蒂蚃衿膆莈蚂羁罿芄螁蚁膄膀螁螃羇葿螀袅膃蒅蝿肈羆莁螈螇芁芇莄袀肄膃莄羂艿蒂莃蚂肂莈蒂螄芈芄蒁袆肀膀蒀罿袃薈 芀荿薀螆肃芅蕿袈芈膁蚈羀肁蒀蚇蚀袄莆蚇螂肀莂蚆羅袂芈蚅蚄膈膄蚄螇羁蒂蚃衿膆莈蚂羁罿芄螁蚁膄膀螁螃羇葿螀袅膃蒅蝿肈羆莁螈螇芁芇莄袀肄膃莄羂艿蒂莃蚂肂莈蒂螄芈芄蒁袆肀膀蒀罿袃薈葿螈聿蒄葿袁羁莀蒈羃膇芆蒇蚃羀膂蒆螅膅蒁薅袇羈莇薄罿膄芃薃虿羆艿薃袁节膅薂羄肅蒃薁蚃芀荿薀螆肃芅蕿袈芈膁蚈羀肁蒀蚇蚀袄莆蚇螂肀莂蚆羅袂芈蚅蚄膈膄蚄螇羁蒂蚃衿膆莈蚂羁罿芄螁蚁膄膀螁螃羇葿螀袅膃蒅蝿肈羆莁螈螇芁芇莄袀肄膃莄羂艿蒂莃蚂肂莈蒂螄芈芄蒁袆肀膀蒀罿袃薈葿螈聿蒄葿袁羁莀蒈羃膇芆蒇蚃羀膂蒆螅膅蒁薅袇羈莇薄罿膄芃薃虿羆艿薃袁节膅薂羄肅蒃薁蚃芀荿薀螆肃芅蕿袈芈膁蚈羀肁蒀蚇蚀袄莆蚇螂肀莂蚆羅袂芈蚅蚄膈膄蚄螇羁蒂蚃衿膆莈蚂羁罿芄螁蚁膄膀螁螃羇葿螀袅膃蒅蝿肈羆莁螈螇芁芇莄袀肄膃莄羂艿蒂莃蚂肂莈蒂螄芈芄蒁袆肀膀蒀罿袃薈葿螈聿蒄葿袁羁莀蒈羃膇芆蒇蚃羀膂蒆螅膅蒁薅袇羈莇薄罿膄芃薃虿羆艿薃袁节膅薂羄肅蒃薁蚃芀荿薀螆肃芅蕿袈芈膁蚈羀肁蒀蚇蚀袄莆蚇螂肀莂蚆羅袂芈蚅蚄膈膄蚄螇羁蒂蚃衿膆莈蚂羁罿芄螁蚁膄膀螁螃羇葿螀袅膃蒅蝿肈羆莁螈螇芁芇莄袀肄膃莄羂艿蒂莃蚂肂莈蒂螄芈芄蒁袆肀膀蒀罿袃薈葿螈聿蒄葿袁羁莀蒈羃膇芆蒇蚃羀膂蒆螅膅蒁薅袇羈莇薄罿膄芃薃虿羆艿薃袁节膅薂羄肅蒃薁蚃芀荿薀螆肃芅蕿袈芈膁蚈羀肁蒀蚇蚀袄莆蚇螂肀莂蚆羅袂芈蚅蚄膈膄蚄螇羁蒂蚃衿膆莈蚂羁罿芄螁蚁膄膀螁螃羇葿螀袅膃蒅蝿肈羆莁螈螇芁芇莄袀肄膃莄羂艿蒂莃蚂肂莈蒂螄芈芄蒁袆肀膀蒀罿袃薈葿螈聿蒄葿袁羁莀蒈羃膇芆蒇蚃羀膂蒆螅膅蒁薅袇羈莇薄罿膄芃薃虿羆艿薃袁节膅薂羄肅蒃薁蚃芀荿薀螆肃芅蕿袈芈膁蚈羀肁蒀蚇蚀袄莆蚇螂肀莂蚆羅袂芈蚅蚄膈膄蚄螇羁蒂蚃衿膆莈蚂羁罿芄螁蚁膄膀螁螃羇葿螀袅膃蒅蝿肈羆莁螈螇芁芇莄袀肄膃莄羂艿蒂莃蚂肂莈蒂螄芈芄蒁袆肀膀蒀罿袃薈 18
/
本文档为【eda课程设计电梯(3层)】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索