资源描述
摘 要电梯作为垂直方向的交通工具,在高层建筑和公共场所已成为不可或缺的设备。中国是全球最大的电梯市场,也具有最强的电梯生产能力,但由于缺乏自主知识产权和核心技术,自主品牌占市场的份额很少。随着社会需求的变化,电梯朝着节能、环保及智能化方向发展。EDA技术打破了软件和硬件间的壁垒,使计算机的软件技术与硬件实现、设计效率与产品性能合二为一,它代表了电子设计技术和应用技术的发展方向。VHDL主要用于描述数字系统的接口,结构和功能,它的语法简单易懂,移植性好。本设计采用VHDL,源程序经A1tera公司的MAX+plus II软件仿真。运用有限状态机的设计方法,设计了两个进程相互配合,状态机进程作为主要进程,信号灯控制进程作为辅助进程。在电梯时钟的触发下,通过当前状态和信号灯信号来判定下一状态。信号灯控制进程中,信号灯信号存储按键请求情况,它的熄灭是由状态机进程中传出的信号来控制。【关键词】电梯控制器 EDA技术及其优点,电梯控制器的基本设计原理目 录前 言第一章 概述第一节 中国电梯的现状及发展趋势 一 、中国电梯市场的现状二 、电梯的发展方向第二节 EDA技术及VHDL简述一 、EDA技术及其发展二 、硬件描述语言VHDL第二章 五层电梯控制器的基本设计原理第一节 电梯控制器的功能模块第二节 电梯控制器的流程图第三节 有限状态机一 、建立状态机的基本原理和基本方法 二 、状态机的优越性三 、一般状态机的VHDL设计第三章 五层电梯控制器的具体设计第一节 五层电梯控制器实现的功能及运行规则第二节 五层电梯控制器的综合设计一 、五层电梯控制器的设计思路二 、实体设计三 、结构体设计四 、VHDL源代码语法的简单说明 五 、VHDL源代码参考文献前 言随着EDA技术的发展和应用领域的扩大和深入,EDA技术在电子信息、通信、自动控制及计算机领域的重要性日益突出。随着技术市场与人才市场对EDA的需求不断提高,产品的市场需求和技术市场的要求也必然会反映到教学和科研领域中来。用VHDL硬件描述语言的形式来进行数字系统的设计方便灵活,利用EDA软件进行编译优化仿真极大地减少了电路设计时间和可能发生的错误,降低了开发成本,这种设计方法必将在未来的数字系统设计中发挥越来越重要的作用。CPLD作为新一代工业控制器,以其高可靠性和技术先进性,在电梯控制中得到广泛应用,从而使电梯由传统的继电器控制方式发展为计算机控制的一个重要方向,成为当前电梯控制和技术改造的热点之一。另外CPLD是一种专门从事逻辑控制的微型计算机系统。由于CPLD具有性能稳定、抗干扰能力强、设计配置灵活等特点,配合VHDL语言的突出的优点,因此在工业控制方面得到了广泛应用。相信以后必将受到世界范围内电子工程设汁人员的广泛关注和普遍欢迎。EDA是目前世界电子设计的最新技术方向和潮流,是一种全新的实验手段,能有效地提高现代化电子设计能力。为了跟上时代的步伐,提高自己的电子设计能力,我选择了做本课题来学习EDA技术的基本内容。第一章 概述第一节 中国电梯的现状及发展趋势一、中国电梯市场的现状近年来,随着中国房地产业的快速发展,与之配套的电梯生产制造业也经历了迅猛发展的阶段,电梯产量保持了每年20以上的增长速度。我国电梯的出口年均增长率将保持在35%以上,电梯行业逐步成为国内比较重要的行业。 随着我国经济持续增长、城镇化建设的加速和房地产行业的进一步发展,对电梯的需求越来越大。估计未来50年中国新增住房面积将达到200亿平方米。国家规定20米以上高楼就应安装电梯,因此未来电梯最大的市场就是住宅市场。此外,机场、商场、地铁等大型公共设施建设对自动扶梯、观光电梯等电梯的需求量也十分可观。目前,中国不但是全球最大的电梯市场,而且形成了全球最强的电梯生产能力,但由于缺乏自主的知识产权和核心技术,产品的附加价值不高,利润非常低。目前,全国注册电梯企业约400家,但美国奥的斯、瑞士迅达、芬兰通力、德国蒂森、日本三菱、日立、富士达、东芝等13家大型外企占据中国电梯市场75%左右的份额,而自主品牌只占25%左右的市场份额。电梯作为终端消费品,品牌在市场竞争中的作用非常明显。品牌往往成为人们在选择电梯产品时的重要考虑因素,电梯生产要想建立良好的品牌并获得市场的认可,也必须经过市场一定时间的不断考验。面对外资巨头的贴身进逼,我 国电梯品牌在服务和营销上难以匹敌,其生存状况不容乐观。二、电梯的发展方向电梯作为垂直方向的交通工具,在高层建筑和公共场所已经成为重要的建筑设备而不可或缺。电梯产业的前景和走势随着社会的需求而悄然发生着改变,除了考虑安全、舒适、豪华装修等要求外,市场对新一代的绿色电梯、节能电梯和智能电梯的需求越来越旺盛。国内外电梯企业顺应市场需要,加大研发投入,都准备在未来新概念电梯产业发展中占得先机。1、电梯的节能和环保“绿色”已成为21世纪的主流色调,一个全球性的绿色市场为企业的发展提供了广阔的空间,当今社会谁先推出绿色产品,抢占绿色营销市场,谁就能掌握竞争的主动权。有关人士预言,绿色环保电梯将成为今后电梯市场的主导性产品,谁拥有了它的核心技术,谁就在竞争中获得了优势。老式电梯噪音、占用空间、耗能等形成的危害积累起来是相当大的,因此,在城市环保社区建设中,如何尽量减少电梯对环境的危害是相当重要的课题之一。目前,我国市场每年销售各种类型的电梯达4.5万部,如果这些电梯全部实现环保化,其环境效益是难以估量的。电梯现在越来越多,在对宾馆、写字楼等的用电情况调查统计中,电梯用电量占总用电量的17%-25%以上,仅次于空调用电量,高于照明、供水等的用电量。负责任的开发商,都会为业主的长远利益着想,购买节能型的电梯。近年来,节能型电梯的市场越来越好,电梯制造商也越来越注重电梯的“节能”性能。在上世纪90年代,在电梯驱动上开始应用变频调压调速系统,能耗大幅度地降低。近几年,又出现了永磁同步电机驱动的电梯,能耗又有大幅度的下降,有的电梯还能利用太阳能对机房的电能进行补充。2、电梯的智能化随着城市化的高速发展,越来越多的摩天大楼拔地而起。就摩天大楼的高度而言,不仅受建筑技术上的制约,而且还有电梯升高方面的困惑,因而,在摩天大楼日益完备智能化的趋势中,电梯的智能化也不容忽视。它不仅是人们上上下下的代步工具,同时,也是摩天大楼智能化的一个重要标志。尽管电梯在摩天大楼中只是个细节,但电梯智能化程度的高低却决定着它服务质量的优劣。因而,电梯的智能化在一定程度上反映出智能大厦的智能程度。计算机技术,通讯技术与控制技术的发展使大厦的智能化成为现实,而电梯是智能建筑中的重要交通工具,其技术发展及智能化程度也倍受世人关注。智能化的电梯要与智能大厦中所有自动化系统联网,如与楼宇控制系统、消防系统、保安监控系统等交互联系,使电梯成为高效优质、安全舒适的服务工具。第二节 EDA技术及VHDL简述一、EDA技术现代EDA技术就是以让算机为工具,在EDA软件平台上,根据硬件描述语言HDL完成的设计文件,能自动地完成用软件方式描述的电子系统到硬件系统的逻辑编译、逻辑化简、逻辑分割、逻辑综合及优化、布局布线、逻辑仿真,直至完成对于特定目标芯片的适配编译、逻辑映射和编程下载等工作。设计者的工作仅限于利用软件的方式来完成对系统硬件功能的描述,在EDA工具的帮助下和应用相应的FPGA/CPLD器件,就可以得到最后的设计结果。尽管目标系统是硬件,但整个设计和修改过程如同完成软件设计一样方便和高效。可见,利用EDA技术进行电子系统的设计,具有以下几个特点:用软件的方式设计硬件;用软件方式设计的系统到硬件系统的转换是由有关的开发软件自动完成的;从以前的“组合设计”转向真正的“自由设计”;设计过程中可用有关软件进行各种仿真;系统可现场编程,在线升级;设计的移植性好,效率高;非常适合分工设计,团队协作;整个系统可集成在一个芯片上,体积小、功耗低、可靠性高。因此,EDA是当今电子设计的发展趋势。二、硬件描述语言VHDLVHDL主要用于描述数字系统的结构,行为,功能和接口,它是从抽象到具体的水平来描述硬件的一个行业标准的语言。VHDL的程序结构特点是将一项工程设计分成外部和内部,外部即端口,内部则涉及实体的功能和算法。在对一个设计实体定义了外部端口并完成内部开发后,其他的设计就可以直接调用这个实体。自1987年被IEEE批准后,VHDL语言已经在电子设计生产中处于核心地位。它有以下优点:VHDL语言功能强大,设计方式多样。VHDL语言具有强大的硬件描述能力。VHDL语言具有很好移植性。VHDL语言的设计描述与器件无关。VHDL语言程序易于共享和复用。由于VHDL语言是一种描述、模拟、综合、优化和布线的标准硬件描述语言,因此它可以使设计成果在设计人员之间方便地进行交流和共享,从而减小硬件电路设计的工作量,缩短开发周期。三,EDA设计技术的基本特征一般来说,EDA设计技术就是指以计算机为工作平台,以eda软件工具未开发环境,以硬件描述语言为设计语言,以可编程逻辑器件为载体,以asic和soc芯片为设计的基本目标,以电子系统设计为应用方向的电子产品自动化设计过程。通常,eda技术的基本特征主要包括以下几个方面:(1)自顶向下的设计方法。(2)硬件描述语言。(3)逻辑综合与优化功能。(4)开放性与标准化。 第二章 三层电梯控制器的基本设计原理第一节 电梯控制器的功能模块电梯控制器的功能模块如图2.1所示,包括主控制器、分控制器、楼层选择器、状态显示器、译码器和楼层显示器。乘客在电梯中选择所要到达的楼层,通过主控制器的处理,电梯开始运行,状态显示器显示电梯的运行状态,电梯所在楼层数通过译码器译码从而在楼层显示器中显示。分控制器把有效的请求传给主控制器进行处理,同时显示电梯的运行状态和电梯所在楼层数。由于分控制器相对简单很多,所以主控制器是核心部分。状态显示器主控制器楼层选择器分控制器译码器楼层显示器 图2.1 电梯控制器原理图第二节 电梯控制器的流程图外部按键请求信号寄存器状态寄存器内部软件执行机构外部硬件执行机构图2.2 总流程图初始化判定电梯运行方向是否有请求?等待电梯运行楼层检测否电梯停止目标层与本层是否同层?是是否目标层?开门延时关门是否停止运行?是否是否是否停止图2.3 电梯控制主流程图第三节 有限状态机 有限状态机(finite state machine)又称有限状态自动机或简称状态机,是表示有限个状态以及这些状态之间的转移和动作等行为的数学模型,它是由一组状态、一个初始状态、输入和根据输入及现有状态转换为下一个状态的转换函数组成。有限状态机是一种基本的、简单的、重要的形式化技术,在软件设计中常常采用。它是描述一个由有限个独立状态组成的过程,这些状态可以互相迁移,直到最终离开这个过程。采用有限状态机可以使设计过程直观简单易于理解,随着硬件设计软件化趋势的加剧,在运用VHDL硬件描述语言设计数字系统时,利用有限状态机成为了可靠方便的途径。控制器作为电子系统设计的核心部分,在EDA软件平台上,借助有限状态机表示方法符合人的逻辑思维的特征,将控制功能用有限状态机来建模实现,有许多优越之处,以使FSM成为大型控制电路设计的有力工具。一、建立状态机的基本原理和基本方法1、状态机的基本原理除了输人信号、输出信号外,状态机还包含一组寄存器记忆内部状态。状态机寄存器的下一个状态及输出,不仅同输入信号有关,而且还与寄存器的当前状态有关,状态机有两个主要部分:即组合逻辑和寄存器部分。组合逻辑部分又可分为状态译码器和输出译码器,状态译码器确定状态机的下一个状态,即确定状态机的激励方程,输出译码器确定状态机的输出,即确定状态机的输出方程。在实际的应用中,根据有限状态机是否使用输入信号,设计人员经常将其分为摩尔(moore)型状态机和米立(mealy)型状态机两种类型。摩尔状态机的输出只是当前状态的函数,而米立状态机的输出一般是当前状态和输入信号的函数。大多数实用的状态机都是同步的时序电路,由时钟信号触发进行状态的转换。时钟信号同所有的边沿触发的状态寄存器和输出寄存器相连,使状态的改变发生在时钟的上升或下降沿。在数字系统中,那些输出取决于过去的输入和当前的输入的部分都可以作为有限状态机。有限状态机的全部“历史”都反映在当前状态上。当给FSM一个新的输入时,在时钟的触发下,状态就会发生转移。2、建立状态机的方法数字系统中,传统的状态机建立方法主要有状态转移图和状态转移表两种。状态转移图:如图2.4所示,图中每个椭圆表示状态机的一个状态,而箭头表示状态之间的转移方向,引起状态转换的输入信号及当前输出表示在箭头上。状态A状态B状态C状态D输入/出输入/出输入/出输入/出图2.4 状态转移图状态转移表:如表2.1所示,表中的行列出了全部可能的输入信号和内部状态以组合及相应的次状态和输出,因此状态表表现了状态转移函数和输出函数。然而,状态表不适合具有大量输入的系统,因为随着输入的增加其状态数和系统的复杂性会显著增加。表2.1 状态转移表现态输入次态输出A-DI0-ImA-DO0-On如果能够画出状态转移图或状态转移表,就可以列出状态转移方程和输出方程,画出设计电路图。状态转移图、状态转移表这两种状态机的建立方法是等价的,都可以描述同一硬件的结构,它们可以相互转换,但各有优缺点,分别适合于不同场合,并且这种传统的设计方法十分复杂。 利用VHDL设计状态机,不必进行繁杂的状态分配,状态表绘制和化简,更不必画出设计电路和搭试硬件电路测试逻辑功能,这些工作可以全由EDA工具完成。用VHDL语言设计状态机,是通过简便地定义状态变量,将状态描述成进程,每个状态均可表达为case-when语句结构中的一条case语句,状态的转移通过if-then-else语句实现,并输出信号以控制其他进程,从而实现所需功能。二、状态机的优越性 状态机的工作方式是根据控制信号按照预先设定的状态进行顺序运行的,它是纯硬件数字系统中的顺序控制电路,状态机克服了纯硬件数字系统顺序方式控制不灵活的缺点。 由于状态机的结构模式相对简单,设计方案相对固定,特别是可以定义符号化枚举类型的状态,这一切都是VHDL综合器尽可能发挥其强大的优化功能提供了有利条件。状态机容易构成性能良好的同步时序逻辑模块,在大规模逻辑电路设计可以抑制冒险现象。状态机的VHDL表述丰富多样,程序层次分明,结构清晰,简单易懂,便于于排错、修改和模块移植。由于在VHDL中,一个状态机可以有多个进程,一个结构体中可以有多个状态机,而一个单独的状态机(多个并行运行的状态机)以顺序方式所能完成的运算与控制方面的工作与一个CPU的功能类似,所以在高速运算和控制方面,状态机更有其巨大的优势。由于状态机是由纯硬件电路构成,它的运行不依赖软件指令的逐条执行,在设计中能使用各种完整的容错技术,并且当状态机进入非法状态时会从中跳出,此过程耗时很少,所以就可靠性而言,状态机的优势也是十分明显的。三、一般状态机的VHDL设计用VHDL设计的状态机有多种形式,但最一般和最常用的状态机通常包含说明部分,主控时序进程,主控组合进程和辅助进程几个部分。1、说明部分说明部分中使用type语句定义新的数据类型,此数据类型为枚举型,其元素通常都用状态机的状态名来定义。状态变量定义为信号,便于信息传递,并将状态变量的数据类型定义为含有既定状态元素的新定义的数据类型。说明部分一般放在结构体的architecture和begin之间。2、主控时序进程主控时序进程是指负责状态机运转和在时钟驱动下负责状态转换的进程。状态机随外部时钟信号以同步时序方式工作,因此,状态机中必须包含一个对工作时钟信号敏感的进程,作为状态机的“驱动泵”,当时钟发生跳变时,状态机的状态才会发生改变。当时钟的有效跳变到来时,时序进程将代表次态的信号next_state中的内容送入现态信号current_state中,而next_state中的内容完全由其他进程根据实际情况而定,此进程中往往也包括一些清零或置位的控制信号。3、主控组合进程主控组合进程的任务是根据外部输入的控制信号(包括来自状态机外部的信号和来自状态机内部其他非主控的组合或时序进程的信号)和当前状态值确定下一状态next_state的取向,以及确定对外输出或对内其他进程输出控制信号的内容。4、辅助进程辅助进程是用于配合状态机工作的组合或时序进程。在一般状态机的设计过程中,为了能获得可综合的,高效的VHDL状态机描述,建议使用枚举数据类型来定义状态机的状态,并使用多进程方式来描述状态机的内部逻辑。例如可使用两个进程来描述,个进程描述时序逻辑,包括状态寄存器的工作和寄存器状态的输出,另一个进程描述组合逻辑,包括进程间状态值的传递逻辑以及状态转换值的输出。必要时还可以引入第三个进程完成其它的逻辑功能。第三章 五层电梯控制器的设计原理本设计尝试用硬件描述语言VHDL来实现对三层电梯的控制,源程序经A1tera公司的MAX+plus II软件仿真,保证了设计的正确性。使用VHDL进行电梯控制器的设计,主要就是对电梯软件部分的设计,使用VHDL中的逻辑关系建立电梯的升降模式,开门,关门达到动作,而外部器件的硬件设备基本上保持不变。使用VHDL硬件描述语言设计电梯控制器可以为电梯实现智能控制奠定基础。第一节 五层电梯控制器实现的功能及运行规则电梯一层入口处设有上升请求开关,二,三,四层入口处设有上、下请求开关,五层入口处设有下降请求开关,电梯内部设有顾客到达楼层的停站请求开关。每层电梯入口处设有位置指示装置及电梯运行模式 (上升或下降)指示装置。电梯初始状态为一层开门状态。电梯每秒上升(下降)一层楼。电梯到达需要停止的楼层,经过1秒电梯门打开,开门指示灯亮,开门4秒后,电梯门关闭(开门指示灯灭),电梯继续运行,直至执行完最后一个请求信号后停留在当前层。电梯需要寄存器来记忆电梯内外所有请求,并按照电梯运行规则按顺序响应,每个请求信号保留至执行后消除。电梯的运行规则:当电梯处于上升模式时,只响应比电梯所在位置高的上楼请求信号和停站请求信号,由下而上逐个执行,直到最后一个上楼请求执行完毕;如果高层有下楼请求,则直接上升到有下楼请求的最高层,然后进入下降模式。当电梯处于下降模式时则与上升模式相反。第二节 五层电梯控制器的综合设计一、五层电梯控制器的设计思路电梯控制器设计两个进程相互配合,状态机进程作为主要进程,信号灯控制进程作为辅助进程。根据电梯的实际工作情况,可以为状态机设置十个状态,它们分别是“电梯停在一层”“开门”“关门”“开门等待第一秒”“开门等待第二秒”“开门等待第三秒”“开门等待第四秒”“上升”“下降”和“停止”。由于电梯每秒上升或下降一层,则可以用周期为1s的信号来作为电梯状态转换的触发时钟。状态机进程中的很多判断条件是以信号灯控制进程产生的信号灯信号为依据,而信号灯控制进程中信号灯的熄灭又是由状态机进程中传出的信号来控制。五层电梯控制器的设计主要是对实体和结构体的设计,它的VHDL描述模块流程如图3.1所示:元件库的说明定义实体结构体端口状态机进程信号灯控制进程结束按键信号灯图3.1 五层电梯控制器的VHDL描述模块流程二、实体设计实体设计即是对端口名、端口模式及数据类型的说明。首先考虑输入端口,一个异步复位端口“reset”,用于当电梯出现非正常情况时回到初始状态;在电梯外部,一层入口处设有上升请求端,二,三,四层入口处设有上升和下降请求端,五层入口处设有下降请求端;在电梯内部,应设有各层停站请求端口;一个电梯时钟输入端口,它提供周期为1s的时钟信号,用作电梯状态转换的触发时钟;还有一个频率很高的按键时钟输入端口。其次考虑输出端口,当有各层上升或下降请求时,各层入口处应该有端口显示请求是否被响应,有请求时端口输出逻辑1,被执行后则恢复成逻辑0;同样的,电梯内部也应有各层停站请求是否被响应的指示端口;一个开关门指示端口,当门开着时,它为逻辑1,门关着时,则为逻辑0;还需要端口来显示电梯所处的位置和模式(上升或下降)。三、结构体设计在结构体中,首先说明了状态机设置的十个状态,分别是:电梯停在1层(stopon1)、开门(dooropen)、关门(doorclose)、开门等待第1秒(doorwait1)、开门等待第2秒(doorwait2)、开门等待第3秒(doorwait3)、开门等待第4秒(doorwait4)、上升(up)、下降(down)和停止(stop)。在结构体最前端用如下的定义语句,来定义状态机。type lift_state is(stopon1,dooropen,doorclose,doorwait1,doorwait2,doorwait3,doorwait4,up,down,stop);接着描述电梯内部功能实现,在结构体中设计了两个进程,一个状态机进程(ctrlift),它是以reset和liftclk作为敏感信号,控制电梯的状态转移;另外一个是信号灯控制进程(ctrlight),它是以reset和buttonclk作为敏感信号,控制寄存信号的逻辑值。在状态机进程中,电梯关门后根据信号灯的情况,来决定下一个状态是上升、下降还是停止;在信号灯控制进程中,由于使用了专门的频率较高的按键时钟,所以使得按键的灵敏度大,但是时钟频率不能过高,否则容易使按键过于灵敏,而信号灯的熄灭是由状态机进程中传出clearup和cleardn信号来控制。四、VHDL源代码语法的简单说明本程序设计调用了ieee库,ieee库是VHDL设计中最为常用的库,它包含有ieee标准的程序包和其他一些支持工业标准的程序包。本设计采用std-logic-1164、std-logic-unsigned、std-logic-arith程序包。以关键词entity引导,end entity threelift结尾的部分是程序的实体部分。VHDL的实体描述了电路器件的外部情况,本设计定义了关于三层电梯控制器用到的各类时钟、异步复位按键、信号灯指示端口、电梯的请求端口。它描述了端口模式主要有in、buffer、out,以及各端口信号的数据类型主要有std-logic、std-logic-vector、integer。(3)以关键词architecture引导,end architecture one结尾的语句部分是结构体部分,结构体描述电路器件的内部逻辑功能。五、VHDL源代码library ieee; -库的说明use ieee.std_logic_1164.all; -程序包的说明use ieee.std_logic_unsigned.all;use ieee.std_logic_arith.all;entity threelift is -实体 port(buttonclk:in std_logic; -按键时钟信号 liftclk:in std_logic; -电梯时钟信号 reset:in std_logic; -异步复位端口 f1upbutton:in std_logic; -一层上升请求端口 f2upbutton:in std_logic; -二层上升请求端口 f2dnbutton:in std_logic; -二层下降请求端口 f3dnbutton:in std_logic; -三层下降请求端口 stop1button:in std_logic; -一层停站请求端口 stop2button:in std_logic; -二层停站请求端口 stop3button:in std_logic; -三层停站请求端口 position:buffer integer range 1 to 3; -电梯位置信号 udsig:buffer std_logic; -电梯模式(上升或下降)信号 fuplight,fdnlight,stoplight:buffer std_logic_vector(3 downto 1); -上升、下降、停站请求寄存信号doorlight:out std_logic; -开关门信号 dout1:out std_logic_vector(3 downto 0); end entity threelift;architecture one of threelift is -结构体type lift_state is -定义十个状态(stopon1,dooropen,doorclose,doorwait1,doorwait2,doorwait3,doorwait4,up,down,stop);signal mylift:lift_state;signal clearup:std_logic; -上升和停站请求清除信号signal cleardn:std_logic; -下降和停站请求清除信号beginctrlift:process(reset,liftclk) -状态机进程variable pos:integer range 3 downto 1;beginif reset=1 then -异步复位,电梯的初始状态为一层开门状态 mylift=stopon1; clearup=0; cleardn doorlight=1; position=1; pos:=1; mylift mylift clearup=0; cleardn=0; mylift mylift mylift -关门,判定电梯下一个运行方式 doorlight=0; if udsig=1 then -电梯处在上升模式 if position=3 then if fuplight=000 and fdnlight=000 and stoplight=000 then -没有请求信号时,电梯停在当前层 udsig=0; mylift=doorclose; elsif fdnlight(3)=1 or stoplight(3)=1 then -本层有请求信号是,电梯开门 udsig=0; mylift=dooropen; else -否则下降 udsig=0; mylift=down; end if; elsif position=2 then if fuplight=000 and fdnlight=000 and stoplight=000 then udsig=1; mylift=doorclose;elsif fuplight(2)=1 or stoplight(2)=1 then -本层有上升或停站请求时时,电梯开门 udsig=1; mylift=dooropen; elsif fuplight=000 and stoplight=000 and fdnlight=010 then -只有二层有下降请求时,电梯开门 udsig=0; mylift=dooropen; elsif stoplight(3)=1 or fdnlight(3)=1 then -三层有停站请求或下降请求,则上升 udsig=1; mylift=up; else udsig=0; mylift=down; end if; elsif position=1 then if fuplight=000 and fdnlight=000 and stoplight=000 then udsig=1; mylift=doorclose; elsif stoplight(1)=1 or fuplight(1)=1 then udsig=1; mylift=dooropen; else udsig=1; mylift=up; end if; end if; elsif udsig=0 then -电梯处在下降模式 if position=3 then if fuplight=000 and fdnlight=000 and stoplight=000 then udsig=0; mylift=doorclose; elsif fdnlight(3)=1 or stoplight(3)=1 then udsig=0; mylift=dooropen; else udsig=0; mylift=down; end if; elsif position=2 then if fuplight=000 and fdnlight=000 and stoplight=000 then udsig=0; mylift=doorclose; elsif fdnlight(2)=1 or stoplight(2)=1 then udsig=0; mylift=dooropen; elsif fdnlight=000 and stoplight=000 and fuplight=010 then udsig=1; mylift=dooropen; elsif fuplight(1)=1 or stoplight(1)=1 then -一层有停站请求或上升请求,则下降 udsig=0; mylift=down; else udsig=1; mylift=up; end if; elsif position=1 then if fuplight=000 and fdnlight=000 and stoplight=000 then udsig=1; mylift=doorclose; elsif stoplight(1)=1 or fuplight(1)=1 then udsig=1; mylift=dooropen; else udsig=1; mylift -电梯处于上升状态 position=position+1; -电梯楼层数加一 pos:=pos+1; if pos3 and (stoplight(pos)=1 or fuplight(pos)=1) then mylift=stop; -电梯在一层或二层,本层有停站或上升请求时,则停止 elsif pos=3 and (stoplight(pos)=1 or fdnlight(pos)=1) then mylift=stop;-电梯处在三层,并且有三层停站或下降请求,则停止 else mylift -电梯处在下降状态 position1 and (stoplight(pos)=1 and fdnlight(pos)=1) then mylift=stop; elsif pos=1 and (stoplight(pos)=1 or fuplight(pos)=1) then mylift=stop; else mylift mylift doorlight=1; if udsig=1 then if position3 and (fuplight(pos)=1 or stoplight(pos)=1) then clearup=1; -清除当前层上升和停站请求 else clearup=1; cleardn1 and (fdnlight(pos)=1 or stoplight(pos)=1) then cleardn=1; -清除当前层下降和停站请求 else clearup=1; cleardn=1; end if; end if; mylift=doorwait1; end case; end if;end if;end process ctrlift;ctrlight:process(reset,buttonclk) -信号灯控制进程beginif reset=1 then -复位,寄存信号清零 fuplight=000; fdnlight=000; stoplight=000;else if buttonclkevent and buttonclk=1 then if clearup=1 then -上升和停站请求清零 fuplight(position)=0; stoplight(position)=0; else if f1upbutton=1 then -记忆各层上升请求 fuplight(1)=1; elsif f2upbutton=1 then fuplight(2)=1; end if; end if; if cleardn=1 then -下降和停站请求清零 fdnlight(position)=0; stoplight(position)=0; else if f2dnbutton=1 then -记忆各层下降请求 fdnlight(2)=1; elsif f3dnbutton=1 then fdnlight(3)=1; end if; end if; if stop1button=1 then -记忆各层停站请求 stoplight(1)=1; elsif stop2button=1 then stoplight(2)=1; elsif stop3button=1 then stoplight(3)=1; end if; end if;end if;end process ctrlight;process(position) -楼层显示进程beginif position=1 then dout1=0001;elsif position=2 then dout1=0010;elsif position=3 then dout1=0011;end if;end process;end architecture one;第三节 本章小结本设计运用有限状
展开阅读全文