职场文秘网

首页 > 演讲致辞 > 会议主持 / 正文

基于FPGA的电梯控制系统设计毕业设计论文

2020-12-27 00:22:34

毕 业 设 计 [论 文] 题 目:
基于FPGA的电梯控制系统设计 学 院:
电气与信息工程学院 专 业:
电 子 信 息 工 程 姓 名:
学 号:
指导老师:
完成时间:
2013年X月X日 摘 要 电梯作为现代化的产物,早在上个世纪就已经进入了人们的生活之中。随着城市建设的不断发展,高层建筑的不断增多,电梯作为高层建筑中垂直运行的交通工具已与人们的日常生活密不可分。目前电梯控制系统主要有三种控制方式:继电路控制系统、FPGA/CPLD的控制系统、微机控制系统。FPGA/CPLD控制系统由于运行可靠性高、使用维修方便、抗干扰性强、设计和调试周期较短等优点,倍受人们重视,已经成为目前在电梯控制系统中使用最多的控制方式。

本文设计了一款基于FPGA 的四层电梯控制系统设计。该控制系统主要有按键输入部分、FPGA控制处理部分、显示部分、提醒部分等组成。该控制系统以FPGA 芯片EP2C5T114为核心,采用VHDL 语言进行描述,采用有限状态机的设计方法完成的。通过程序仿真调试及硬件运行,结果表明,本程序可以完成电梯运行所有按键请求输入、按键指示灯显示、楼层显示、电梯运行方向指示、关门延时、到达提醒等,电梯运行正确无误。该设计采用模块化编程,升级可实现任意多层电梯系统,具有很强的适应性和实用性。

关键词:VHDL, 电梯控制器, FPGA , Quartus II Abstract As a modern elevator product early in the last century has entered people's lives. With the continuous development of urban construction, the growing number of high-rise buildings, the elevator as high-rise buildings in a vertical run of transport has been inextricably linked with people's daily lives. Currently there are three main elevator control system control: Following the circuit control system, FPGA / CPLD control systems, computer control system. FPGA / CPLD control system due to high reliability, easy maintenance, strong anti-jamming design and debug cycle is shorter, etc., much of the attention of people, has become in the elevator control system using the most control. This paper presents an FPGA-based four-story elevator control system design. The control system has the key input section, FPGA control processing section, a display section, reminding parts and other components. The control system EP2C5T114 FPGA chip as the core, using VHDL language to describe finite state machine design complete. Simulation and hardware debugging through the program runs, the results show that the procedure can be completed where the elevator buttons request input, key indicator displays, floor displays, elevator directions, closing delay setting, arrived reminders, elevators run correctly. The design is modular programming, upgrades can be any multi-elevator system, has strong adaptability and practicality. Keywords: VHDL, Elevator controller, FPGA, Quartus II 目 录 摘 要 I Abstract II 目 录 III 第1章 绪论 1 1.1 课题研究的背景及意义 1 1.2 国内外状况的研究 1 1.2.1国内电梯的状况 1 1.2.2 国外电梯的状况 2 1.3 本章小结 2 第2章 EDA的介绍 3 2.1 EDA技术的简介 3 2.2 FPGA的简介 4 2.3 VHDL语言的简介 5 2.4 FPGA开发环境 7 2.5 状态机的简介 8 2.6 本章小结 9 第3章 方案分析与论证 10 3.1 设计任务 10 3.2 设计思路 10 3.3 软件系统流程 12 3.4 状态原理图说明 15 3.5 本章小结 16 第4章 软件设计原理及开发测试 17 4.1 软件编程在Quartus II中实现的流程 17 4.2 仿真操作与结果分析 23 4.2.1仿真的基本操作 23 4.2.2仿真图的分析 25 4.3本章小结 29 第5章 硬件设计原理及开发调试 31 5.1 芯片介绍 31 5.2 硬件实现下载 31 5.3 硬件电路原理图 33 5.3.1 按键部分硬件电路设计 33 5.3.2 按键指示灯部分硬件电路设计 33 5.3.3 楼层显示部分硬件电路设计 34 5.3.4上升下降指示灯硬件电路图设计 35 5.4 设计在硬件电路板上的运行 35 5.4.1 硬件电路图功能介绍 35 5.4.2 硬件电路的开发调试 37 5.5 本章小结 40 结论 41 参考文献 42 致 谢 43 附录A 本设计的RTL级视图 44 附录B 硬件电路原理图 45 附录C 部分程序 46 第1章 绪论 1.1 课题研究的背景及意义 随高层楼宇的增加,电梯越来越普遍的走进了人们的生活,对人们的生活的影响也越来越大。为了让电梯更好的服务人们,各种电梯新技术不断地发展起来。随着人们生活水平的不断提高,经济的快速发展和生产生活的需要,城市高层建筑如雨后春笋拔地而起。与此相应,作为一种可以垂直升降运输的工具——电梯也得到迅猛的发展。现在,电梯已完全融入我们的生活、工作及学习中,人们越来越离不开它。因此,它的安全可靠性、迅速准确性、舒适性,对人们来说都是非常重要的。为了确保电梯正常运行、安全使用,一般电梯都有专业的维修管理人员。他们必须对电梯原理、性能、特点、控制、运行做出全面认识和掌握,才能做到对电梯的正确使用、管理及维护。根据我国有关部门的规定,电梯作业属于特种作业,其作业人员必须经过专门培训,并经理论考试和实践考核合格后,发给《特种作业操作证》方可上岗操作。同时,对电梯操作人员定期考核,让他们定期参加安全技术学习,扎扎实实地做好电梯维护和保养工作,才能使人们平安长久的使用电梯。

电梯控制系统是一个相当复杂的逻辑控制系统.系统要同时对几百个信号进行接收、处理。由于用户对电梯功能的要求不断提高.其相应控制方式也在不断发生变化。随着EDA技术的快速发展.基于FPGA的微机化控制已广泛应用于电梯电路设计与控制的各个方面。

1.2 国内外状况的研究 1.2.1国内电梯的状况  随着我国城乡居民生活水平的不断提高,住宅和一般公共建筑内,空调和电梯成为最大的两只“电老虎”。据测算,在冬夏两季,建筑中空调的能耗一般占整个建筑能耗的50%,因此控制空调温度、使用节能空调,对降低建筑能耗起着至关重要的作用。与此同时,电梯的耗能不容忽视,据了解,目前我国星级酒店每年每平方米耗电量为150度,其中将近一半用于电梯。中国电梯行业协会认为,2005年我国所有电梯中,如果80%采用节能电梯,全年可节电122亿度。如果2015年全部采用节能电梯,将节电800亿度,几乎相当于三峡大坝一年的发电量。     在国内电梯领域享有盛誉,率先倡导并推进环保节能电梯的杭州西子奥的斯电梯有限公司,是国内最早敏锐察觉未来电梯发展方向,大力推进科技创新,并取得多项成就的高科技企业。西子奥的斯电梯相关负责人表示:“目前,我国电梯行业的节能电梯生产能力已达到相当规模,尤其主要品牌的节能电梯技术,也已经达到国际领先水平。然而,在实际应用中,节能电梯的普及率还很低。根据中国电梯行业协会公布的数字,目前中国电梯的载用量在77万台左右,其中节能电梯不足5%。从长远看,发展绿色节能电梯,既是实现可持续发展的需要,也是节约社会能源、保护周边环境的需要。  1.2.2 国外电梯的状况  当今世界,电梯的生产情况与使用数量已经成为衡量一个国家工业现代化程度的标志之一。在一些发达的工业国家,电梯的使用相当普遍。  世界上有名的几家电梯公司,诸如:美国奥梯斯公司、瑞士讯达公司、日本三菱和日立公司、芬兰科恩等,其电梯的产量已占世界市场的51%。其中,奥梯斯公司和三菱公司是世界上最大的电梯生产企业。  目前,国外除了以交流电梯取代直流电梯以外,在低层楼房越来越多的使用液压电梯。此外,家用小型电梯将成为电梯家族中新的组成部分。  电梯是集机电一体的复杂系统,不仅涉及机械传动、电气控制和土建等工程领域,还要考虑可靠性、舒适感和美学等问题。而对现代电梯而言,应具有高度的安全性。事实上,己经在电梯上采用了多项安全保护措施。在设计电梯的时候,对机械零部件和电器元件都采取了很大的安全系数和保险系数。然而,只有电梯的制造,安装调试、售后服务和维修保养都达到高质量,才能全面电子商务资料库保证电梯的最终高质量。在国外己“法规“实行电梯制造、安装和维修一体化,实行由各制造企业认可的、法规认证的专业安装队和维修单位,承担安装调试、定期维修和检查试验,从而为电梯运行的可靠性和安全性提供了保证。因此,可以说乘坐电梯更安全。美国一家保险公司对电梯的安全性做过认真地调查和科学计算,其结论是:乘电梯比走楼梯安全5倍。据资料统计,在美国乘其他交通工具的人数每年约为80亿人次,而乘电梯的人数每年却有540亿人次之多。

1.3 本章小结 通过本章的介绍,明确了这次设计的背景与意义,以及国内外的研究状况等,有助于在后来的设计中对方案做出更好的选择。

第2章 EDA的介绍 EDA在通信行业(电信)里的另一个解释是企业数据架构,EDA给出了一个企业级的数据架构的总体视图,并按照电信企业的特征,进行了框架和层级的划分。

EDA是电子设计自动化(Electronic Design Automation)的缩写,在20世纪60年代中期从计算机辅助设计(CAD)、计算机辅助制造(CAM)、计算机辅助测试(CAT)和计算机辅助工程(CAE)的概念发展而来的。

2.1 EDA技术的简介 20世纪90年代,国际上电子和计算机技术较先进的国家,一直在积极探索新的电子电路设计方法,并在设计方法、工具等方面进行了彻底的变革,取得了巨大成功。在电子技术设计领域,可编程逻辑器件(如CPLD、FPGA)的应用,已得到广泛的普及,这些器件为数字系统的设计带来了极大的灵活性。这些器件可以通过软件编程而对其硬件结构和工作方式进行重构,从而使得硬件的设计可以如同软件设计那样方便快捷。这一切极大地改变了传统的数字系统设计方法、设计过程和设计观念,促进了EDA技术的迅速发展。

EDA技术就是以计算机为工具,设计者在EDA软件平台上,用硬件描述语言HDL完成设计文件,然后由计算机自动地完成逻辑编译、化简、分割、综合、优化、布局、布线和仿真,直至对于特定目标芯片的适配编译、逻辑映射和编程下载等工作。EDA技术的出现,极大地提高了电路设计的效率和可操作性,减轻了设计者的劳动强。

利用EDA工具,电子设计师可以从概念、算法、协议等开始设计电子系统,大量工作可以通过计算机完成,并可以将电子产品从电路设计、性能分析到设计出IC版图或PCB版图的整个过程的计算机上自动处理完成。

现在对EDA的概念或范畴用得很宽。包括在机械、电子、通信、航空航天、化工、矿产、生物、医学、军事等各个领域,都有EDA的应用。目前EDA技术已在各大公司、企事业单位和科研教学部门广泛使用。例如在飞机制造过程中,从设计、性能测试及特性分析直到飞行模拟,都可能涉及到EDA技术。

EDA技术有以下特点 :
(1)高层综合和优化 为了能更好地支持自顶向下的设计方法,现代的EDA工具能够在系统进行综合和优化,这样就缩短了设计的周期,提高了设计效率。

(2)采用硬件描述语言进行设计 采用硬件描述语言进行电路与系统的描述是当前EDA技术的另一个特征。与传统的原理图设计方法相比,HDL语言更适合描述规模大的数字系统,它能够使设计者在比较抽象的层次上对所设计系统的结构和逻辑功能进行描述。采用HDL语言设计的突出优点是:语言的公开性和利用性;
设计与工艺的无关性;
宽 度范围的描述能力;
便于组织大规模系统的设计;
便于设计的复用,交流,保存和修改等。目前最常用的硬件描述语言有VHDL和Verilog HDL,它们都已经成为IEEE标准。

(3)开放性和标准化 现代EDA工具普遍采用标准化和开放性框架结构,任何一个EDA系统只要建立了一个符合标准的开放式框架结构,就可以接纳其他厂商的EDA工具仪器进行设计工作。这样就可以实现各种EDA工具的优化组合,并集成在一个易于管理的统一环境下,实现资源共享。

2.2 FPGA的简介 目前以硬件描述语言(Verilog或 VHDL)所完成的电路设计,可以经过简单的综合与布局,快速的烧录至 FPGA 上进行测试,是现代 IC 设计验证的技术主流。这些可编辑元件可以被用来实现一些基本的逻辑门电路(比如AND、OR、XOR、NOT)或者更复杂一些的组合功能比如解码器或数学方程式。在大多数的FPGA里面,这些可编辑的元件里也包含记忆元件例如触发器(Flip-flop)或者其他更加完整的记忆块。

系统设计是可以根据需要通过可编辑的连接吧FPGA内部的逻辑块连接起来,就好像一个电路实验板被放在一个芯片里。一个出厂后的成品FPGA的逻辑块和连接可以按照设计者而改变,所以FPGA可以完成所需要的逻辑功能。

FPGA一般来说比ASIC(专用集成芯片)的速度要慢,无法完成复杂的设计,而且消耗更多的电能。但是他们也有很多的优点比如可以快速成品,可以被修改来改正程序中的错误和更便宜的造价。厂商也可能会提供便宜的但是编辑能力差的FPGA。因为这些芯片有比较差的可编辑能力,所以这些设计的开发是在普通的FPGA上完成的,然后将设计转移到一个类似于ASIC的芯片上。另外一种方法是用CPLD(复杂可编程逻辑器件备)。

早在18世纪80年代中期,FPGA已经在PLD设备中扎根。CPLD和FPGA包括了一些相对大数量的可以编辑逻辑单元。CPLD逻辑门的密度在几千到几万个逻辑单元之间,而FPGA通常是在几万到几百万。

FPGA采用了逻辑单元阵列LCA(Logic Cell Array)这样一个概念,内部包括可配置逻辑模块CLB(Configurable Logic Block)、输出输入模块IOB(Input Output Block)和内部连线(Interconnect)三个部分。

归纳起来 ,FPGA有以下几个优点:
(1)采用FPGA设计ASIC电路(特定用途集成电路),用户不需要投片生产,就能得到合用的芯片。

(2)FPGA可做其它全定制或半定制ASIC电路的中试样片。

(3)FPGA内部有丰富的触发器和I/O引脚。

(4)FPGA是ASIC电路中设计周期最短、开发费用最低、风险最小的器件之一。

(5)FPGA采用高速CHMOS工艺,功耗低,可以与CMOS、TTL点评兼容。

可以说,FPGA芯片是小批量系统提高系统集成度、可靠性的最佳选择之一。

FPGA是由存放在片内RAM中的程序来设置其工作状态的,因此,工作时需要对片内的RAM进行编程。用户可以根据不同的配置模式,采用不同的编程方式。加电时,FPGA芯片将EPROM中数据读入片内编程RAM中,配置完成后,FPGA进入工作状态。掉电后,FPGA恢复成白片,内部逻辑关系消失,因此,FPGA能够反复使用。FPGA的编程无须专用的FPGA编程器,只须用通用的EPROM、PROM编程器即可。当需要修改FPGA功能时,只需换一片EPROM即可。这样,同一片FPGA,不同的编程数据,可以产生不同的电路功能。因此,FPGA的使用非常灵活。

2.3 VHDL语言的简介 VHDL的英文全名是Very-High-Speed Integrated Circuit Hardware Description Language,诞生于 1982 年。1987 年底,VHDL被 IEEE 和美国国防部确认为标准硬件描述语言。

VHDL主要用于描述数字系统的结构,行为,功能和接口。除了含有许多具有硬件特征的语句外,VHDL的语言形式和描述风格与句法是十分类似于一般的计算机高级语言。VHDL的程序结构特点是将一项工程设计,或称为设计实体(可以是一个元件,一个电路模块或一个系统)分成外部(或称可视部分,及端口)和内部(或称不可视部分),既涉及实体的内部功能和算法完成部分。在对一个设计实体定义了外部界面后,一旦其内部开发完成后,其他的设计就可以直接调用这个实体。这种将设计实体分成内外部分的概念是VHDL系统设计的基本点。

在集成电路制造工艺的发展的过程中,微电子设计工艺已经达到了深亚微米时代,在EDA设计中主要有软硬件协作设计的要求,现有的工具支持SOC设计尚有难度,迫切需要提高设计能力。在设计语言中,由于VHL和Verilog HDL是目前通用的设计语言,在设计大系统时,不够方便直观,所以需要进一步完善。

电子产品随着技术的进步,更新换代日新月异,而掌握电子产品开发研制的动力源—EDA技术,是我们国家工程技术人员不可推卸的责任,因为中国的设计公司大多还处在发展的初级阶段,所使用的设计工具都是几年前国外的主流工具。

VHDL语言能够成为标准化的硬件描述语言并获得广泛应用 , 它自身必然具有很多其他硬件描述语言所不具备的优点。归纳起来 ,VHDL 语言主要具有以下优点:
(1)VHDL语言功能强大,设计方式多样 VHDL语言具有强大的语言结构,只需采用简单明确的VHDL语言程序就可以描述十分复杂的硬件电路。同时,它还具有多层次的电路设计描述功能。此外,VHDL语言能够同时支持同步电路、异步电路和随机电路的设计实现,这是其他硬件描述语言所不能比拟的。VHDL语言设计方法灵活多样,既支持自顶向下的设计方式, 也支持自底向上的设计方法; 既支持模块化设计方法,也支持层次化设计方法。

(2)VHDL语言具有强大的硬件描述能力 VHDL语言具有多层次的电路设计描述功能,既可描述系统级电路 , 也可以描述门级电路;
描述方式既可以采用行为描述、寄存器传输描述或者结构描述,也可以采用三者的混合描述方式。同时,VHDL语言也支持惯性延迟和传输延迟,这样可以准确地建立硬件电路的模型。VHDL 语言的强大描述能力还体现在它具有丰富的数据类型。VHDL语言既支持标准定义的数据类型,也支持用户定义的数据类型,这样便会给硬件描述带来较大的自由度。

(3)VHDL语言具有很强的移植能力 VHDL语言很强的移植能力主要体现在:对于同一个硬件电路的VHDL语言描述,它可以从一个模拟器移植到另一个模拟器上、从一个综合器移植到另一个综合器上或者从一个工作平台移植到另一个工作平台上去执行。

(4) VHDL语言的设计描述与器件无关 采用 VHDL语言描述硬件电路时, 设计人员并不需要首先考虑选择进行设计的器件。这样做的好处是可以使设计人员集中精力进行电路设计的优化, 而不需要考虑其他的问题。当硬件电路的设计描述完成以后 ,VHDL语言允许采用多种不同的器件结构来实现。

(5)VHDL语言程序易于共享和复用 VHDL语言采用基于库(library)的设计方法。在设计过程中,设计人员可以建立各种可再次利用的模块,一个大规模的硬件电路的设计不可能从门级电路开始一步步地进行设计,而是一些模块的累加。这些模块可以预先设计或者使用以前设计中的存档模块,将这些模块存放在库中,就可以在以后的设计中进行复用。

由于VHDL语言是一种描述、模拟、综合、优化和布线的标准硬件描述语言,因此它可以使设计成果在设计人员之间方便地进行交流和共享,从而减小硬件电路设计的工作量,缩短开发周期。

2.4 FPGA开发环境  QuarterⅡ是Altera提供的FPGA/CPLD开发集成环境,Altera 是世界上最大的可编程逻辑器件供应商之一。QuarterⅡ在21世纪初推出,是Altera前一代FPGA/CPLD集成开发环境Max+plusⅡ的更新换代产品,其界面友好,使用便捷。QuarterⅡ7.2中允许将软件界面设置为Max+plusⅡ风格,支持RTL View也就是通常所讲的能够查看VHDL对应的电路原理图。这个功能对于使用HDL进行逻辑设计的人员还是很有用的,一方面可以充分理解HDL和硬件电路的对应关系,另一方面可以更加方便的查找设计中的错误。同时它支持综合布线和优化,以及功耗的计算。  Altera的QuarterⅡ提供了完整的多平台设计环境,能满足各种特定的设计要求,也是单芯片可编程系统(SOPC)设计的综合性环境和SOPC开发的基本设计工具,并为Altera DSP开发包进行系统模块设计提供了集成综合环境。QuarterⅡ设计工具完全支持VHDL、Verilog的设计流程,其内部嵌有VHDL、Verilog逻辑综合器。QuartusⅡ也可以利用第三方的综合工具,同时QuartusⅡ也具备仿真功能,可以进行基于FPGA的DSP系统开发和数字通信模块开发。  QuarterⅡ包括模块化的编译器。编译器包括的功能块有分析/综合器(Analysis与Synthesis)、适配器(Fitter)、装配器(Assembler)、时序分析器(Timing Analyzer)、辅助设计模块、EDA网表文件生成器、编辑数据接口等。可以通过选择Start单独运行各个模块。还可以通过选择Compiler Tool,在Compiler Tool窗口中运行该模块来启动编译器模块。在Compiler Tool窗口中,可以打开该模块的设置文件或报告文件,或打开其他相关窗口。

QuarterⅡ具有如下的多种设计输入方法:原理图输入和富豪编辑、硬件描述语言、波形设计输入、平面图编辑及层次设计输入。如此众多的涉及输入方法帮助设计者轻松的完成涉及输入。  QuarterⅡ处理一个设计时,软件编辑器读取设计文件信息,产生用于器件编程、仿真、时序分析的输出文件。消息处理器可以自动定位编译过程中发现的错误,编译器还可以优化设计文件。  QuarterⅡ提供的设计校验功能包括功能仿真与时序分析,用于测试设计的逻辑操作和内部时序。  QuarterⅡ编程器使用编译器生成的编程文件对Altera器件进行下载编程,它可以用来进行编程、校验、检查及功能测试。

2.5 状态机的简介 关于状态机的一个极度确切的描述是它是一个有向图形,由一组节点和一组相应的转移函数组成。状态机通过响应一系列事件而“运行”。每个事件都在属于“当前” 节点的转移函数的控制范围内,其中函数的范围是节点的一个子集。函数返回“下一个”(也许是同一个)节点。这些节点中至少有一个必须是终态。当到达终态, 状态机停止。包含一组状态集(states)、一个起始状态(start state)、一组输入符号集(alphabet)、一个映射输入符号和当前状态到下一状态的转换函数(transition function)的计算模型。当输入符号串,模型随即进入起始状态。它要改变到新的状态,依赖于转换函数。在有限状态机中,会有有许多变量,例如,状态 机有很多与动作(actions)转换(Mealy机)或状态(摩尔机)关联的动作,多重起始状态,基于没有输入符号的转换,或者指定符号和状态(非定有 限状态机)的多个转换,指派给接收状态(识别者)的一个或多个状态,等等。传统应用程序的控制流程基本是顺序的:遵循事先设定的逻辑,从头到尾地执行。很少有事件能改变标准执行流程;
而且这些事件主要涉及异常情况。“命令行实用程序”是这种传统应用程序的典型例子。   另一类应用程序由外部发生的事件来驱动——换言之,事件在应用程序之外生成,无法由应用程序或程序员来控制。具体需要执行的代码取决于接收到的事件,或者它 相对于其他事件的抵达时间。所以,控制流程既不能是顺序的,也不能是事先设定好的,因为它要依赖于外部事件。事件驱动的GUI应用程序是这种应用程序的典型例子,它们由命令和选择(也就是用户造成的事件)来驱动。Web应用程序由提交的表单和用户请求的网页来驱动,它们也可划归到上述类 别。但是,GUI应用程序对于接收到的事件仍有一定程度的控制,因为这些事件要依赖于向用户显示的窗口和控件,而窗口和控件是由程序员控制的。Web应用 程序则不然,因为一旦用户采取不在预料之中的操作(比如使用浏览器的历史记录、手工输入链接以及模拟一次表单提交等等),就很容易打乱设计好的应用程序逻辑。显然,必须采取不同的技术来处理这些情况。它能处理任何顺序的事件,并能提供有意义的响应——即使这些事件发生的顺序和预计的不同。有限状态机正是为了满足这方面的要求而设计的。   有限状态机是一种概念性机器,它能采取某种操作来响应一个外部事件。具体采取的操作不仅能取决于接收到的事件,还能取决于各个事件的相对发生顺序。之所以能 做到这一点,是因为机器能跟踪一个内部状态,它会在收到事件后进行更新。为一个事件而响应的行动不仅取决于事件本身,还取决于机器的内部状态。另外,采取 的行动还会决定并更新机器的状态。这样一来,任何逻辑都可建模成一系列事件/状态组合。   状态机可归纳为4个要素,即现态、条件、动作、次态。这样的归纳,主要是出于对状态机的内在因果关系的考虑。“现态”和“条件”是因,“动作”和“次态”是果。详解如下:    ①现态:是指当前所处的状态。     ②条件:又称为“事件”。当一个条件被满足将会触发一个动作,或者执行一次状态的迁移。    ③动作:条件满足后执行的动作。动作执行完毕后,可以迁移到新的状态,也可以仍旧保持原状态。动作不是必需的,当条件满足后,也可以不执行任何动作,直接迁移到新状态。   ④次态:条件满足后要迁往的新状态。“次态”是相对于“现态”而言的,“次态”一旦被激活,就转变成新的“现态”了。

2.6 本章小结 本章通过对EDA几个方面的详细介绍,确定了设计的主要内容所要用到的知识,对以后的程序设计有着很好的指导意义。熟知FPGA的知识可以有助于我对主要芯片型号的选择。VHDL语言是程序设计的主要语言,相当于本设计的“血液”,为电路的运行输送指令。QUARTERⅡ是设计的软件环境,所有仿真都的在其内部完成。

、 第3章 方案分析与论证 本系统是基于FPGA的4层楼的电梯控制系统。该控制系统可控制电梯完成4层楼的载客服务而且遵循方向优先原则,即上升(下降)时只响应上升(下降)信号,直到执行完最顶层(底层),再转入另一模式。电梯具有显示电梯楼层数、电梯运行方向、响应楼层请求、电梯开关门、电梯复位等功能。

3.1 设计任务 本控制系统设计主要完成以下功能:
(1)每层电梯入口处设有上下请求按键(第一层只有上升请求按键,第四层只有下降请求按键)和按键请求指示灯,电梯内设有乘客到达楼层的停站请求按键。

(2)电梯入口处设有电梯位置指示装置及电梯正在运行模式(上升或下降)指示装置。

(3)电梯到达有停站请求的楼层,开门指示灯亮,开门6秒后,电梯门关闭并且开门指示灯灭,电梯继续运行响应请求,直至执行完最后一个请求信号后停留在当前楼层。    (4)能记忆电梯内外所有请求,并按照电梯运行规则按顺序响应,每个请求信号保留至执行后消除,相应的请求指示灯灭。    (5)电梯运行规则——当电梯处于上升模式时,只响应比电梯所在位置高的上楼请求信号,由下而上逐个执行响应,直到最后一个上楼请求执行完毕;
如果高层有下楼请求,则直接升到有下楼请求的最高层,然后进入下降模式。当电梯处于下降模式时则与上升模式相反。    (6)电梯初始状态为一层开门状态。

3.2 设计思路 本系统的设计完成主要有以下几个部分:按键请求输入部分、FPGA控制处理部分、电梯运行模式及楼层显示部分、蜂鸣器提醒部分等组成。按键请求部分输入请求响应之后,FPGA控制器会做出相应的响应,同时运行模式指示灯、楼层显示等部分会做出相应的响应。

系统设计原理图如图3.1所示。

FPGA 控 制 器 按键请求 输入 运行模式显示 电梯所在楼层显示 开门指示灯 蜂鸣器到达提醒 系统复位按键 图3.1 系统设计总原理图 各个部分功能介绍如下:
当系统复位时,电梯处在楼层的第一层,并处于状态机的stopon1状态,进入待命状态。

按键部分在电梯外面设有一层上(f1upbutton)、二层上(f2upbutton)、二层下(f2dnbutton)、三层上(f3upbutton)、三层下(f3dnbutton)、四层下(f4dnbutton)等按键,在电梯内部设有停在一层(stop1button)、停在二层(stop2button)、停在三层(stop3button)、停在四层(stop4button)、延迟关门(delaybutton)、提前关门(aheadbutton)等按键。在按键输入请求按下时,相对应的指示灯会亮,表示按键输入有效。FPGA控制器会储存这些请求,然后根据运行原则做出相应的响应,待响应之后,会清除相应的请求,同时相应的指示灯会熄灭。按键部分示意图如图3.2所示。每个按键下都连接一个指示灯,只要按键请求有效,则对应的指示灯就会发光,直到请求被消除。

图3.2 按键部分示意图 电梯的运行模式有三种:上升、下降、等待。当电梯上升时,上升指示灯亮,下降指示灯灭;
下降时,上升指示灯灭,下降指示灯亮;
否则,上下指示灯都灭,进入等待状态。三个状态可以相互转换。上升下降模式指示灯示意图如图3.3所示。

图3.3 上升下降模式指示灯示意图 电梯所在位置由一位数码管显示出来,分别显示为:“1”、“2”、“3”、“4”。它随着电梯的运行而做成相应的变化。

开门指示灯是由一个LED灯表示,在电梯处在dooropen状态,LED会自动点亮,表示处在开门状态;
当处在doorclose 状态,LED会自动熄灭,表示处在关门状态。

在电梯在上升或者下降状态运行时,到达了有停站请求的楼层时,蜂鸣器会发出声响来提醒乘客。

3.3 软件系统流程 当电梯处于一楼并在等待状态时,如果有内部停在一楼请求时,则电梯门会打开;
如果有外部高层上升或下降请求或者内部停在高层请求时,电梯会不开门而直接转入上升模式。直到高层,再根据请求决定进入下降模式还是上升模式。当电梯处在一楼并处在上升模式或者下降模式时,有请求时都将进入上升模式。

当电梯处在二楼并处在等待状态时,如果有一楼上升或者停站请求时,则电梯直接进入下降模式;
如果有高层上升、下降或停站请求时,则电梯直接进入上升模式;
如果只有本层停站请求时,电梯进入开门状态;
如果由本站上升或下降请求时,电梯先进入开门状态,在进入上升或下降模式。当电梯处在第二层并处在上升模式时,如果有本层有上升请求或者有高层请求时,电梯继续进入上升模式;
如果本层有下降请求或者低层的请求时,则直接转入下降模式;
如果无请求则进入等待模式,上下指示灯都灭。当电梯处在第二层并处在下降模式时,如果有本层有上升请求或者有高层请求时,电梯直接转入上升模式;
如果有本层有下降请求或者低层的请求时,则继续进入下降模式;
如果无请求则进入等待模式,上下指示灯都灭。

当电梯处在第三层时,情况等同第二层。

当电梯处在第四层并处于等待状态时,如果低层有请求或者本层有下降请求时,电梯进入下降模式,否则继续进入等待模式。如果电梯处在第四层并处于上升或者下降状态时,有任何请求都会进入下降模式。

各种情况如表3.1所示。

表3.1 电梯运行状态转换情况 可进入状态 楼层 上升模式 下降模式 等待模式 一层 √ × √ 二层 √ √ √ 三层 √ √ √ 四层 × √ √ 注:打“×”表示该楼层不会进入状态 电梯的运行规则确立后,需对整个控制程序的设计做一个流程规范。根据VHDL语言的规则,程序必须由最基本的实体和结构体构成。实体对控制器的端口进行定义,结构体对各端口的行为进行描述。因此程序运行需经过以下流程:VHDL库调用:确立控制器的端口及相关的寄存器;
根据电梯运行规则,设计相关运行描述;
对电梯内信号进行处理。

系统设计流程图如图3.4所示。

复 位 一楼 等待状态 上升信号 否 是 等待状态 二楼 否 上升信号 是 等待状态 三楼 否 上升信号 是 等待状态 四楼 否 下降信号 是 三楼 否 下降信号 是 二楼 否 下降信号 是 一楼 图3.4 系统设计流程图 3.4 状态原理图说明 本系统的设计采用了VHDL语言,在进程中嵌套了状态机的运用,从而简化了系统设计的难度。状态机中共有9个状态:stopon1(系统准备状态)、dooropen(开门状态)、doorclose(关门状态)、doorwait1(等待状态1)、doorwait2(等待状态2)、doorwait3(等待状态3)、up(上升状态)、down(下降状态)、stop(停止状态)等。每个状态的协调运行,使得本设计可以准确有序的工作。

状态机转移图如图3.5所示。

无请求 有上升请求 上升状态 关门状态 无请求 系统复位 准备状态 等待状 态1 等待状 态2 开门状态 停止状态 本层有请求 有提前关门请求 有延迟请求 下降状态 等待状 态3 有下降请求 无请求 图3.5 状态机转移图 本状态机的文字流程为: ⑴系统复位时,电梯处于系统准备状态,此状态系统设计电梯处于第一层,并有开门动作。然后进入等待状态1。

⑵在等待状态1时,电梯自动进入等待状态2。

⑶在等待状态2 时,如果延迟关门按键按下,则电梯停在等待状态2;
如果提前关门按键按下,电梯立即进入关门状态;
否则电梯将进入等待状态3。

⑷在等待状态3时,电梯自动进入关门状态。

⑸在关门状态时,如果无请求,则电梯一直处在此状态;
如果高楼层有请求,则电梯进入上升状态;
如果低楼层有请求,则电梯进入下降状态;
如果本层有请求,则进入开门状态。

⑹在上升 状态时,如果无请求则进入关门状态 状态,电梯门一直关着;
否则电梯上升,最后进入停止状态。

⑺在 下降 状态时,如果无请求则进入关门状态 状态,电梯门一直关着;
否则电梯下降,最后进入停止状态。

⑻在 停止状态 状态时,电梯控制器会发出提醒声音,然后将进入开门 状态。

⑼在 开门 状态时,电梯会进入等待状态1,并给乘客进入或者走出电梯留出时间。

本状态机转移图主要说明了系统运行当前状态与下一个状态的关系,考虑了从当前状态到下一状态的所有触发因素,较为复杂。

3.5 本章小结 在本章里,明确了设计的任务,提出设计思路,画出了系统设计的流程图和状态机转移图。这样对以后的编程有了指导作用。有了编程思路和程序中重要部分的分析则可以很顺利的完成软件的编程。

第4章 软件设计原理及开发测试 本控制系统的设计显示采用VHDL语言编程,在Quartus II软件中通过编译、时序仿真、调试等最终才得以完成。在软件实现初期,由于运行的复杂性,程序在编写运行规则时,经常出错误。经过多次修改尝试,最后选择使用状态机的方法,多个process(进程)相互作用,才使程序得以正确的运行。

4.1 软件编程在Quartus II中实现的流程 Quartus II 的使用基本流程如下:
⑴双击桌面的Quartus II软件快捷方式,打开Quartus II软件(如图4.1)。

图 4.1 Quartus II开发界面 ⑵在工具栏File菜单下,点击“NEW”出现“NEW”对画框,再选择“VHDL. File ”选项,建立VHDL文本。点击“OK”进入程序编写界面(如图4.2)。

图 4.2 VHDL语言输入文件选择 ⑶ 程序编写完成后,点击保存,进行文件的保存(如图4.3)。

图 4.3 保存文件 ⑷点击保存后,会出现保存对话框,填写文件名。此时应注意,文件名必须与实体名一致,例如,本设计实体名为“dianti”则保存的文件名应该是“dianti.vhd”。再点击保存选项(如图4.4)。

图 4.4 填写文件名 ⑸点击保存后,会出现一个询问是否建立工程的对话框,本设计此时应该建立工程,故选择“是”(如图4.5)。

图 4.5 工程的建立 ⑹此时询问是否需要填写工程路径、工程名称和文件名称。填好之后点击“Next”选项(如图4.6)。

图 4.6 把文件加入工程 ⑺再点击“Next”,则会出现如图所示的界面,此时应该选择FPGA芯片系列,封装,管脚数以及速度级别等。本设计使用EP2C5T114C8芯片,故芯片系列选择“Cyclone Ⅱ”系列,封装为“TQFP”,管脚数为“114”,速度级别为“8”(如图4.7)。

图 4.7 FPGA芯片选择 ⑻工程建好之后,选择编译按键,进行编译(如图4.8)。

图 4.8 工程编译 ⑼编译完成后,会出现编译成功提示对话框。同时还可以显示出管脚使用数,寄存器使用情况等(如图4.9)。

图 4.9 编译完成 ⑽再在“dianti.vhd”界面上,选择“File”下菜单“Create/Update”下的“Create Symbol Files for Current File”选项(如图4.10)。

图 4.10 生成原理图 ⑾这样编译成功之后,就会出现软件内生成的电梯电路图(如图4.11)。

图 4.11 原理图 对此电路图的各个端口的解释如下:
Clk:时钟信号,输入为50MHz。

reset:系统复位信号。低电平有效。

F1upbutton:一楼上升请求按键。低电平有效。

F2upbutton:二楼上升请求按键。低电平有效。

F2dnbutton:二楼下降请求按键。低电平有效。

F3upbutton:三楼上升请求按键。低电平有效。

F3dnbutton:三楼下降请求按键。低电平有效。

F4dnbutton:四楼下降请求按键。低电平有效。

Stop1button:一楼停站请求按键。低电平有效。

Stop2button:二楼停站请求按键。低电平有效。

Stop3button:三楼停站请求按键。低电平有效。

Stop4button:四楼停站请求按键。低电平有效。

Delaybutton0::延迟关门按键。低电平有效。

Aheadbutton:提前关门按键。低电平有效。

Using:上升指示灯输出。灯亮表示正在上升。

Dsing::下降指示灯输出。灯亮表示正在下降。

Fulight[3..1]:三楼到一楼上升按键指示灯。按键有效时,灯一直亮,直到按键请求被执行。

Fdlight[4..2]:四楼到二楼下降按键指示灯。按键有效时,灯一直亮,直到按键请求被执行。

Stlight[4..1]:四楼到一楼停站按键指示灯。按键有效时,灯一直亮,直到按键请求被执行。

Aheadlight:提前关门按键指示灯。按键有效时,灯会一直亮,直到按键请求被执行。

Delaylight:延迟关门按键指示灯。按键有效时,灯会一直亮,直到按键请求被执行。

Beer:开门提醒输出。开门时,蜂鸣器会发出响声,以提醒乘客注意。

Doorlight:开门指示灯。灯亮,表示正在开门。

Dout1[6..0]:楼层显示数码管输出。分别显示“1”“2”“3”“4”。

4.2 仿真操作与结果分析 通过Quartus II软件可以对程序做出仿真。通过对仿真图的数据分析可以验证程序是否可以达到要求。

4.2.1仿真的基本操作 ⑴在工程界面打开“File”菜单下的“New”选项。在“New”对话框中选择“Vector Waveform File”选项(如图4.12)。

图 4.12 建立仿真文件 ⑵然后双击“Master Time Bar”界面中的“Name”框的空白处,会出现“Insert Node or Bus”对话框。然后点击“Node Finder..”选项。会弹出“Node Finder..”对话框(如图4.13)。

图4.13 准备加入管脚 ⑶在“Node Finder”对话框中,先点击“List”,在左边方框内会出现端口名称,选择需要仿真的端口后,在点击“>>”选项,最后点击“OK”选项(如图4.14)。

图4.14 管脚加入文件 ⑷接着点击“OK”(如图4.15)。

图4.15 管脚加入完成 ⑸这样就把信号加入了仿真文件中,然后设置仿真的参数,点击保存。最后点击仿真按键,就可以开始仿真了(如图4.16)。

图4.16 准备仿真 4.2.2仿真图的分析 对仿真图的分析可以知道结果是否正确,是否需要修改等。以下是对几个特殊状态的仿真图做出分析。

图4.17 对复位按键的仿真 从图4.17可以看出,在复位按键有效时,无论电梯内外有什么请求,都不会进入FPGA控制器内部的寄存器中,即任何请求按键都无效。电梯上下指示灯都不会亮。只有在复位按键无效时,按键请求才有效。

图4.18 上升情况的仿真 图4.18显示的是对上升情况的仿真,可以看出,电梯从下到上响应,到有请求的楼层都会开门。蜂鸣器会提醒开门,电梯处于上升状态。

图4.19 下降情况的仿真 图4.19显示的是对下降情况的仿真,可以看出,此情况正好与上升情况相反,电梯先从1楼升到有下降请求的最高层,然后再依次从上到下响应请求,到有请求的楼层都会开门。蜂鸣器会提醒开门,电梯先处于上升状态,再转为下降状态。

图4.20 无请求情况的仿真 图4.20是上升状态以及完成上升请求后,无请求的情况变化。上升状态uing 为高电平,电梯在二楼载入乘客后到达四楼停止后走出,此时整个电梯都无请求,电梯降停在四楼,并进入等待状态,此时上下指示灯都不会亮。

图4.21 电梯内部请求的仿真 图4.21是对乘客进入电梯后无到达楼层请求输入和电梯在等待状态时,本层内部突然有到达请求时的仿真。从图上得知,乘客在二楼有上楼请求,但是进入之后没有到达停站的请求,电梯就会转入等待状态。过了一会,内部的乘客又按下停在本层请求,然后电梯开门,乘客走出,但是上下指示灯都不亮。

图4.22 上升过程中有下降请求情况的仿真 图4.22是在上升情况下,有了下降请求时,电梯先响应上升请求,待响应完之后,电梯立即从上升状态转入下降状态,并开始响应下降请求。在上升状态下,虽然要下降的楼层比电梯所在的位置高,但当电梯运行到该层时,并不响应,如果没有停站请求或者上升请求的情况下,电梯不在该层停止。

图4.23 同楼层有上升和下降的仿真 图4.23显示的是在同一楼层同时有上升请求和下降请求时,要根据电梯状态来做出响应。因为电梯开始在一楼,到达二楼时是上升状态,所以先响应上升请求。但上升请求响应之后没有停站请求,电梯转入下降状态,开始响应下降请求。

图4.24 按键指示灯的仿真 图4.24是当按键有请求时,对应的指示灯会亮,直到该请求被响应完,对应的指示灯会熄灭。

4.3本章小结 在本章之内,先介绍Quartus II开发环境的使用,再通过Quartus II开发环境的仿真,并对仿真电路图的分析,来判断程序是否达到要求的效果。

经过对几个重要的状态的分析,本程序完全正确,达到了要求的结果。

第5章 硬件设计原理及开发调试 软件设计完成后,就要把程序下载到FPGA硬件电路中,用硬件电路去验证软件设计的正确性。通过硬件电路的调试,使得系统最终可以顺利正确的运行。

5.1 芯片介绍 CycloneII系列EP2C5T114C8型号的FPGA可编程逻辑芯片。此芯片属于FPGA芯片,即现场可编程门阵列芯片,有114个输出管脚,4608个逻辑单元,2个PLL,是作为专用集成电路(ASIC)领域中的一种半定制电路而出现的,既解决了定制电路的不足,又克服了原有可编程器件门电路数有限的缺点。

5.2 硬件实现下载 在硬件实现时,要把程序通过软件Quartus II下载到FPGA芯片中,然后再加上外围硬件电路,修改调试,最后完成。在下载时有三个步骤必须做到正确无误。

⑴在Device中进行如下选择(如图5.1)。

图5.1 芯片选择 ⑵ 正确选择所需要的各个引脚(如图5.2)。

图5.2 引脚分配 ⑶用下载线将程序下载到硬件环境中。在程序没有确定时,可先使用“JTAG”方式下载。待程序完全正确后可使用“AS”下载方式下载。引脚锁定后进行全程编译,选择开始下载(如图5.3)。

图4-5 下载界面 图5.3 程序下载 待程序成功下载进去之后,配合硬件外围电路,就可进行FPGA控制电梯系统的硬件仿真。通过硬件仿真可以更直观的观察电梯运行是否正确。

5.3 硬件电路原理图 5.3.1 按键部分硬件电路设计 FPGA 按键外围电路可以设计成如图5.4所示。

图5.4 按键原理图 此电路图为按键实现电路图,当轻触按键按下后,把IO直接与地相接,则把IO口拉低到低电平。当按键弹起时,3.3v电源接一个上拉电阻,则把IO口致向高电平。

5.3.2 按键指示灯部分硬件电路设计 按键指示灯的外围电路可以设计成图5.5所示。

图5.5 LED原理图 由上图可以看出,3.3v电源接一个180的限流电阻,再与发光二级管串联,最后直接与IO口相连。当IO口为低电平时,发光二级管导通发光,若二极管为高电平时,则发光二极管截止。

5.3.3 楼层显示部分硬件电路设计 楼层是用一位数码管显示的,可以分别显示“1”、“2”、“3”、“4”即可。楼层显示部分硬件电路图可按图5.6方式设计。

图5.6 楼层显示原理图 此部分采用7段共阴数码管。公共端通过一个NPN三极管放大电路,使流过数码管的电流变大,而看上去会很亮。三极管一直处在导通放大状态。180Ω电阻起到限流作用,而三极管基极的电阻起到分压的作用。数码管的a、b、c、d、e、f、g段选通过电阻直接与FPGA的IO口相连。

5.3.4上升下降指示灯硬件电路图设计 上升下降指示灯的硬件电路图设计如图5.7。

图5.7 上升下降指示灯原理图 上升和下降电路都是采用6个发光二级管组成的“↑”“↓”符号,6个发光二极管并联使用,采用NPN三极管放大电路中的电流,使集电极电流可以达到正常驱动6个发光二级管的大小。同时基极电阻的大小又可以起到调节集电极电流的作用,保证发光二级管不被烧坏。三极管的基极通过电阻与FPGA的IO口相连,IO口电平为低时,指示灯不亮,反之则发亮。

5.4 设计在硬件电路板上的运行 无论怎样的软件设计和理论分析,最终都要应用到硬件设备上运行,才能真正的体现出它的价值,才有真正的说服力。在本设计系统软件设计完成后,以及理论分析完全正确的情况下,把它下载到硬件电路中,观察运行是否正确。

5.4.1 硬件电路图功能介绍 本系统设计开发的硬件电路由三部分组成:按键和按键指示灯电路部分、FPGA控制部分、显示部分等三部分组成。电梯运行过程是先由按键部分输入请求,然后FPGA控制部分处理数据,最后显示部分显示运行结果。

图5.8 按键和指示灯部分实物图 按键部分含有各个楼层所需的上升和下降请求按键以及各个按键指示灯。当按键请求被记忆后,对应的指示灯会亮起;
当请求被响应后,FPGA内部记忆会自动消除,对应的按键指示灯也会自动熄灭。

图5.9 FPGA控制部分实物图 FPGA 控制部分使用的芯片为EP2C5T114,该芯片速度级别是5,共有114个输出管脚,时钟频率是50MHz。该系统的大部分引脚都已经引出,可以作为输入或者输出管脚,非常方便。此外,该系统还支持JTAG下载和AS下载两种方式。在本设计还没有调试完成之前,可以使用JTAG下载方式下载,便于修改;
在调试完成之后,可以使用AS下载方式下载,便于存储。

图5.10 显示部分实物图 从图5.10可以看出,该部分有上升指示灯、下降指示灯、开门指示灯、楼层位置指示、蜂鸣器提醒和电源指示灯等几部分组成。在上升或者下降时,相应的上升或者下降指示灯会亮。在开门时,开门指示灯会亮,同时蜂鸣器会发出提醒的声音。关门后,关门指示灯就会熄灭。当电梯处在不同的楼层时,数码管会显示不同的数字。

本设计的硬件电路系统可以直观的看到电梯运行的过程与结果,很方便调试,也具有很好的说服力。

5.4.2 硬件电路的开发调试 通过FPGA下载器把程序下载到FPGA内部以后,在硬件电路板中进行运行调试,验证是否可以达到预期的效果。如果可以,则表明本系统设计完成,否则,就要查找原因,进行改正。

图5.11 上升过程中有下降请求 图5.11显示的是电梯上升运行状态中有了下降的请求的情况。它从一楼开始向上依次响应上升请求。但是在二楼时,不仅有上升请求,还有下降请求,因为此刻电梯处在上升过程,所以它只响应二楼的上升请求,而下降请求保留,直到上升请求响应完后,再响应二楼的下降请求。同理,下降请求也是这样。

图5.12演示的是延迟关门按键对电梯的影响。在电梯开门状态下,如需等待更长的时间,则可以一直按着延迟开关按键,电梯将一直停在开门状态,直到按键松开,再过2秒的时间,电梯才会进入关门状态。与理论分析一致。

图5.12 延时按键的延时作用 图5.13演示的是电梯在二楼并进入等待状态时,三楼同时有上升和下降请求时的情况。由于电梯原来在二楼,比三楼楼层要低,在响应请求时要先升到三楼,在到达三楼时,电梯处在上升状态,所以此时应先响应三楼上升请求,再响应下降请求。反之,如果电梯在四楼时,响应三楼请求时,应先下降到三楼,此时电梯处在下降状态,所以会先响应三楼下降请求,再响应三楼上升请求。同理,楼梯在其他楼层时,也一样。如下图5.13所示。

图5.13 同一楼层同时由上升和下降请求的情况 5.5 本章小结 本章主要介绍了本设计系统实现的各部分硬件电路的设计原理图、硬件实现电路的介绍以及程序在硬件电路中的运行结果的验证。经过调试验证,本电梯系统运行正常,并且可以寄存请求信号,请求指示灯也正常。运行规则和理论一致。

结论 通过几次软件仿真和硬件的测试可以看出系统完成了设计要求,并且运行正确。

本设计状态较为复杂,状态中嵌套状态,状态图的绘制比较困难。本设计使用的状态图考虑了所有不同条件下的状态转移的情况。

外部请求按键较多,电梯在上升过程中只能响应高于其当前所在楼层的请求,反之在下降过程中只能响应低于其当前所在楼层的请求。如果上升过程中出现下降请求,则只能待上升请求完成后才响应下降请求,反之亦然。本系统的设计还考虑了实际应用中的记忆存贮问题。

使用者在电梯内外提出的请求不一致时,例如乘客本来是要下楼,但在电梯外却按下上楼按钮。对于这种情况,系统认定使用者进入电梯后提出的请求为最终请求。

本设计虽然完成了电梯运行的主要部分,但却不是最完美的设计。许多外围电路还可以应用到设计中。在完成本设计后,可以继续完善如下内容:超载报警,故障报警,语音提醒、视屏监控系统等。

参考文献 [1] 潘松,黄继业.EDA实用技术教程[M].北京:科学出版社,2006.1-100. [2] 何道君,刘皖.FPGA设计与应用[M].北京:清华大学出版社,2006.3-16 [3] 褚振勇,翁木云. FPGA设计及应用[M]. 西安:西安电子科技大学出版社,2003. [4] 刘福奇.FPGA嵌入式项目开发实战[M]. 北京:电子工业出版社,2009 [5] 罗苑棠.CPLD\FPGA常用模块与综合系统设计实例精讲[M]. 北京:电子工业出版社,2007. [6] 延明,张亦华.数字电路EDA技术入门[M]. 北京:电子工业出版社,2007. [7] 陈雪松.VHDL入门与应用[M].北京:人民邮电出版社, 2000. [8] 侯伯亨.VHDL硬件描述语言与数字逻辑设计[M].西安:西安电子科技大学出版社, 2001. [9] 刘宝琴.ALTERA可编程器件及其应用[M].北京:清华大学出版社 ,1995 . [10] 赵雅兴.FPGA原理及应用[M].天津:天津大学出版社 ,1999 . [11]毛宗源等,微机控制电梯[M],国防工业出版社出版,1996 [12]李鼎培,当前电梯研制开发技术动态[J],中国电梯,1995 [13]梁延东主编,电梯控制技术[M].中国建筑工业出版社,1997 [14]Stephen Brown,R.Francis,J.rose,and Z.Vranesic.Field-Prorram-mable Gate Arrays[M].Boston:Kluwer Academic Publishers,1992. [15]Kolar J.W.Status of the Techniques of the Three-Phase PWM Rectifier Systems with low Effects on the Mains[J].Profeeional Education Tutouial workbook of IEEE Power Electronics Specialists Conference,2000,21(3):18-23. [16]B.W.Kernighan and S.Lin.An efficient heuristic procedure for partitioning Graphs[J].Bell System TechnicalJournal,1970,49(2):291-308 致 谢 本次毕业设计能够顺利完成,是各位老师在设计过程中帮助的结果,在这里我对各位老师表示真诚的感谢! 随着毕业设计的完成,自己四年的大学生活也接近了尾声,在这四年难忘的岁月中,留下许多美好的回忆,尤其是最后的毕业设计,更是令我记忆深刻。首先,我要感谢我们的学校,感谢在这四年中教给我许多做人做事的道理,让我从一个懵懂得高中生变成一个能被社会所接纳的知识青年;
其次,我要特别的感谢一下我们的指导老师,是他在我撰写毕业论文过程中给了我无私的帮助和指导,从当初选题到中期答辩,再到最后定稿,老师多次询问我们设计进程中所遇到的难题,并及时为我指点迷津。再次,我要感谢那些曾经教我们的老师们,是他们教会了这些知识和本领,才能在这次设计中得以运用。当然,我还要感谢寝室的兄弟们和其它同学,是他们在我完成论文的过程中给予我帮助和鼓励,也是他们陪我度过了这四年最美好的生活。最后还要感谢我家人的支持和网友们的帮助。

现在我即将挥别自己的大学生活,万千感慨上心头,有对校园和同学恋恋不舍,更有对美好未来的憧憬。最后,再次感谢我的老师、同学和大学期间所有的朋友们,是你们为我的大学生活增光添色,让它变得五彩斑驳,尤为难忘。真诚的说一声:“谢谢你们! 附录A 本设计的RTL级视图 附录B 硬件电路原理图 附录C 部分程序 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 ; reset:in std_logic; --异步复位端口 f1upbutton:in std_logic; --一层上升请求端口 f2upbutton:in std_logic; --二层上升请求端口 f2dnbutton:in std_logic; --二层下降请求端口 f3upbutton:in std_logic; --三层上升请求端口 f3dnbutton:in std_logic; --三层下降请求端口 f4dnbutton:in std_logic; --四层下降请求端口 stop1button:in std_logic; --一层停站请求端口 stop2button:in std_logic; --二层停站请求端口 stop3button:in std_logic; --三层停站请求端口 stop4button:in std_logic; delaybutton:in std_logic; --延时关门 aheadbutton:in std_logic; --提前关门 usig,dsig:buffer std_logic; --上升下降指示灯输出 fulight:out std_logic_vector(3 downto 1); fdlight:out std_logic_vector(4 downto 2); stlight:out std_logic_vector(4 downto 1); aheadlight:out std_logic; delaylight : out std_logic; beer:out std_logic; doorlight:out std_logic; dout1:out std_logic_vector(6 downto 0)); end ; architecture one of dianti is --结构体 type lift_state is --定义十个状态 (stopon1,dooropen,doorclose,doorwait1,doorwait2,doorwait3, up,down,stop); signal buttonclk:std_logic; --4096hz signal liftclk :std_logic; signal beerclk :std_logic; --2hz signal mylift:lift_state; signal clearup:std_logic; --上升和停站请求清除信号 signal cleardn:std_logic; signal clearst:std_logic; signal fupl: std_logic_vector(3 downto 1); signal fdnl: std_logic_vector(4 downto 2); signal stpl: std_logic_vector(4 downto 1); signal position: integer range 1 to 4; --电梯位置信号 begin fenpin:process(reset,clk) --分频程序 variable cnt1: integer range 0 to 49999999:=0; variable cnt2:integer range 0 to 6103 := 0; begin if reset='0' then --系统复位 cnt1 := 0; cnt2 := 0; buttonclk<='0'; liftclk<='0'; else if clk'event and clk='1' then if cnt1=49999999 then -- liftclk<= not liftclk; cnt1 := 0; else cnt1 := cnt1 + 1; end if; if cnt2 = 6103 then buttonclk<= not buttonclk; cnt2 := 0; else cnt2 := cnt2 + 1; end if; end if; end if; end process fenpin; ctrlift:process(reset,liftclk) --状态机进程 variable cnt:integer range 0 to 1 :=0 ; begin if reset='0' then --异步复位,电梯的初始状态为一层开门状态 mylift<=stopon1; clearup<='0'; cleardn<='0'; usig<='0'; dsig<='0'; delaylight<= '1'; aheadlight <= '1'; beer<='0'; else if liftclk'event and liftclk='1' then case mylift is when stopon1=> doorlight<='1'; --开关门 position<=1; --位置 mylift<=doorwait1; --电梯等待4s when doorwait1=> beer <= '0'; mylift<=doorwait2; when doorwait2=> clearup<='0'; cleardn<='0'; if(delaybutton ='0') then delaylight<= '0'; mylift<=doorwait2; elsif(aheadbutton = '0') then aheadlight <= '0'; mylift<=doorclose; else delaylight<= '1'; aheadlight <= '1'; mylift<=doorwait3; end if; when doorwait3=> mylift<=doorclose; when doorclose=> aheadlight <= '1'; --关门,判定电梯下一个运行方式 doorlight<='0'; if position=4 then if usig= '1' and dsig='0' then if fupl=“000“ and fdnl=“000“ and stpl=“000“ then --没有请求信号时,电梯停在当前层 usig<='0'; dsig<='0'; mylift<=doorclose; elsif fdnl(4)='1' then usig<='0'; dsig<='1'; mylift<=dooropen; elsif stpl(4)='1' then --本层有请求信号是,电梯开门 usig<='1'; dsig<='0'; mylift<=dooropen; else --否则下降 usig<='0'; dsig<='1'; mylift<=down; end if; elsif usig ='0' and dsig ='1' then if fupl=“000“ and fdnl=“000“ and stpl=“0000“ then usig<='0'; dsig<='0'; mylift<=doorclose; elsif fdnl(4)='1' or stpl(4)='1' then usig<='0'; dsig<='1'; mylift<=dooropen; else usig<='0'; dsig<='1'; mylift<=down; end if; elsif usig ='0' and dsig ='0' then if fupl=“000“ and fdnl=“000“ and stpl=“0000“ then usig<='0'; dsig<='0'; mylift<=doorclose; elsif stpl(4)='1' then usig<='0'; dsig<='0'; mylift<=dooropen; elsif fdnl(4)='1' then usig<='0'; dsig<='1'; mylift<=dooropen; else usig<='0'; dsig<='1'; mylift<=down; end if; end if; elsif position=3 then if usig= '1' and dsig='0' then if fupl=“000“ and fdnl=“000“ and stpl=“0000“ then usig<='0'; dsig<='0'; mylift<=doorclose; elsif fupl(3)='1' or stpl(3)='1' then usig<='1'; dsig<='0'; mylift<=dooropen; elsif fupl=“000“ and stpl=“0000“ and fdnl=“010“ then usig<='0'; dsig<='1'; mylift<=dooropen; elsif stpl(4)='1' or fdnl(4)='1' then usig<='1'; dsig<='0'; mylift<=up; else usig<='0'; dsig<='1'; mylift<=down; end if; elsif usig ='0' and dsig ='1' then if fupl=“000“ and fdnl=“000“ and stpl=“0000“ then usig<='0'; dsig<='0'; mylift<=doorclose; elsif fdnl(3)='1' or stpl(3)='1' then usig<='0'; dsig<='1'; mylift<=dooropen; elsif fdnl=“000“ and stpl=“0000“ and fupl=“100“ then usig<='1'; dsig<='0'; mylift<=dooropen; elsif fupl(1)='1' or stpl(1)='1' or fdnl(2)='1' or fupl(2)='1' or stpl(2)='1' then usig<='0'; dsig<='1'; mylift<=down; else usig<='1'; dsig<='0'; mylift<=up; end if; elsif usig ='0' and dsig ='0' then if fupl=“000“ and fdnl=“000“ and stpl=“0000“ then usig<='0'; dsig<='0'; mylift<=doorclose; elsif fdnl(3)='1' then usig<='0'; dsig<='1'; mylift<=dooropen; elsif fupl(3)='1' then usig<='1'; dsig<='0'; mylift<=dooropen; elsif stpl(3)='1'then usig<='0'; dsig<='0'; mylift<=dooropen; elsif fdnl(4)='1' or stpl(4)='1' then usig<='1'; dsig<='0'; mylift<=up; else usig<='0'; dsig<='1'; mylift<=down; end if; end if; elsif position=2 then if usig= '1' and dsig='0' then if fupl=“000“ and fdnl=“000“ and stpl=“0000“ then usig<='0'; dsig<='0'; mylift<=doorclose; elsif fupl(2)='1' or stpl(2)='1' then usig<='1'; dsig<='0'; mylift<=dooropen; elsif fupl=“000“ and stpl=“0000“ and fdnl=“001“ then --只有二层有下降请求时,电梯开门 usig<='0'; dsig<='1'; mylift<=dooropen; elsif stpl(4)='1' or fdnl(4)='1' or fupl(3)= '1' or stpl(3)='1' or fdnl(3)='1' then usig<='1'; dsig<='0'; mylift<=up; else usig<='0'; dsig<='1'; mylift<=down; end if; elsif usig ='0' and dsig ='1' then if fupl=“000“ and fdnl=“000“ and stpl=“0000“ then usig<='0'; dsig<='0'; mylift<=doorclose; elsif fdnl(2)='1' or stpl(2)='1' then usig<='0'; dsig<='1'; mylift<=dooropen; elsif fdnl=“000“ and stpl=“0000“ and fupl=“010“ then usig<='1'; dsig<='0'; mylift<=dooropen; elsif fupl(1)='1' or stpl(1)='1' then usig<='0'; dsig<='1'; mylift<=down; else usig<='1'; dsig<='0'; mylift<=up; end if; elsif usig ='0' and dsig ='0' then if fupl=“000“ and fdnl=“000“ and stpl=“0000“ then usig<='0'; dsig<='0'; mylift<=doorclose; elsif fupl(1)='1'or stpl(1)='1' then usig<='0'; dsig<='1'; mylift<=down; elsif fdnl(2)='1' then usig<='0'; dsig<='1'; mylift<=dooropen; elsif stpl(2)='1' then usig<='0'; dsig<='0'; mylift<=dooropen; elsif fdnl=“000“ and stpl=“0000“ and fupl=“010“ then usig<='1'; dsig<='0'; mylift<=dooropen; else usig<='1'; dsig<='0'; mylift<=up; end if; end if; elsif position=1 then if usig= '1' and dsig='0' then if fupl=“000“ and fdnl=“000“ and stpl=“0000“ then usig<='0'; dsig<='0'; mylift<=doorclose; elsif stpl(1)='1' or fupl(1)='1' then usig<='1'; dsig<='0'; mylift<=dooropen; else usig<='1'; dsig<='0'; mylift<=up; end if; elsif usig ='0' and dsig ='1' then if fupl=“000“ and fdnl=“000“ and stpl=“000“ then usig<='0'; dsig<='0'; mylift<=doorclose; elsif stpl(1)='1' then usig<='0'; dsig<='1'; mylift<=dooropen; elsif fupl(1)='1' then usig<='1'; dsig<='0'; mylift<=dooropen; else usig<='1'; dsig<='0'; mylift<=up; end if; elsif usig ='0' and dsig ='0' then if fupl=“000“ and fdnl=“000“ and stpl=“000“ then usig<='0'; dsig<='0'; mylift<=doorclose; elsif stpl(1)='1' then usig<='0'; dsig<='0'; mylift<=dooropen; elsif fupl(1)='1' then usig<='1'; dsig<='0'; mylift<=dooropen; else usig<='1'; dsig<='0'; mylift<=up; end if; end if; end if; end process ctrlift; end architecture one;

Tags: 毕业设计   控制系统   电梯  

搜索
网站分类
标签列表