(完整版)Verilog实现的基于FPGA的五层楼电梯运行控制逻辑毕业设计论文

合集下载

基于FPGA的智能电梯控制系统的实现毕业论文

基于FPGA的智能电梯控制系统的实现毕业论文

基于FPGA的智能电梯控制系统的实现毕业论文目录第一章概述摘要 (5)1.1 EDA概述 (5)1.1.1什么是EDA (5)1.1.2 EDA的特 (6)1.1.3 EDA的应用 (6)1.2 FPGA的简介及特点 (7)1.3 VHDL语言及程序概述 (8)1.3.1 VHDL语言的发展.............................................. .9 1.3.2 VHDL语言的特点.. (9)1.3.3 VHDL语言程序的基本结构 (10)1.4状态机的简介 (10)第二章电梯控制系统的分析 (12)2.1选题的背景 (12)2.2电梯控制的研究背景 (12)2.3 我国电梯的发展概况 (13)2.4 电梯设计的具体目的及控制要求 (13)2.5电梯控制器设计原理及思路 (14)2.6 电梯控制系统状态图分析 (15)第三章电梯控制系统的设计与实现 (17)3.1 MAX+PLUSII的介绍 (17)3.2 电梯控制系统的VHDL语言设计及仿真 (18)3.2.1 模块示意图和输入输出描述 (18)3.2.2 模块设计过程 (20)3.2.3 波形仿真 (21)3.3 电梯控制系统的实验平台实现 (27)结论与体会 ............................................ .28致谢.................................................. .30附件程序.............................................. .31参考文献.............................................. .43第一章概述摘要1.1 EDA概述EDA在通信行业(电信)里的另一个解释是企业数据架构,EDA给出了一个企业级的数据架构的总体视图,并按照电信企业的特征,进行了框架和层级的划分。

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

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

基于FPGA的电梯控制系统设计毕设论文摘要本毕设论文旨在设计一个基于FPGA的电梯控制系统。

通过采用FPGA芯片作为硬件平台,并结合相应的算法和逻辑设计,实现一个稳定、高效的电梯控制系统。

引言电梯控制系统在现代社会中扮演着重要的角色,它为人们的出行提供了便利。

然而,传统的电梯控制系统存在一些问题,比如效率低下、响应时间长等。

因此,设计一个基于FPGA的电梯控制系统成为了一个迫切的需求。

方法我们采用FPGA作为硬件平台,利用其可编程性和并行性的特点,完成电梯控制系统的设计。

具体的步骤如下:1. 首先,进行电梯控制系统的需求分析,确定系统所需要的功能和性能指标;2. 然后,设计相应的算法和逻辑电路,包括电梯调度算法、楼层按钮输入处理、状态机设计等;3. 接下来,使用FPGA开发平台进行硬件设计和验证,实现电梯控制系统的功能;4. 最后,进行系统性能测试和调优,确保系统的稳定性和高效性。

结果经过实验和测试,我们成功地实现了基于FPGA的电梯控制系统。

该系统具有以下特点:- 响应时间短:通过合理的调度算法和状态机设计,实现了快速响应用户操作的功能;- 稳定性高:通过FPGA的可编程性,能够灵活地根据需求进行调整和优化,提升系统的稳定性;- 高效性好:利用FPGA的并行处理能力,实现了多任务并行处理,提高了系统的处理效率。

结论本毕设论文通过设计一个基于FPGA的电梯控制系统,成功地解决了传统电梯控制系统存在的一些问题。

该系统具有响应时间短、稳定性高和高效性好的优点,能够为用户提供更好的电梯使用体验。

未来可以进一步优化和扩展该系统,使其更加智能化和智能化。

Verilog实现的基于FPGA的五层楼电梯运行控制逻辑设计

Verilog实现的基于FPGA的五层楼电梯运行控制逻辑设计

五层楼电梯运行控制逻辑设计摘要:电梯是高层建筑不可缺少的运输工具,用于垂直运送乘客和货物,传统的电梯控制系统主要采用继电器,接触器进行控制,其缺点是触点多,故障率高、可靠性差、维修工作量大等,本设计根据电梯自动控制的要求利用Verilog语言编写并完成系统设计,在利用软件仿真之后,下载到了FPGA上进行硬件仿真。

FPGA(Field-Programmable Gate Array),即现场可编程门阵列,它是在PAL、GAL、CPLD等可编程器件的基础上进一步发展的产物。

它是作为专用集成电路(ASIC)领域中的一种半定制电路而出现的,既解决了定制电路的不足,又克服了之前的可编程器件门电路数有限及速度上的缺点。

关键词:电梯控制FPGA Verilog软件设计硬件设计在当今社会,随着城市建设的不断发展,高层建筑的不断增多,电梯作为高层建筑中垂直运行的交通工具已与人们的日常生活密不可分。

目前电梯控制系统主要有三种控制方式:继电路控制系统(早期安装的电梯多位继电器控制系统),FPGA/CPLD [1] 的控制系统、微机控制系统。

继电器控制系统由于故障率高、可靠性差、控制方式不灵活以及消耗功率大等缺点,目前已逐渐被淘汰,而微机控制系统虽在智能控制方面有较强的功能,但也存在抗扰性差,系统设计复杂,一般维修人员难以掌握其维修技术等缺陷。

而FPGA/CPLD控制系统由于运行可靠性高,使用维修方便,抗干扰性强,设计和调试周期较短等优点 [2] ,倍受人们重视等优点,已经成为目前在电梯控制系统中使用最多的控制方式,目前也广泛用于传统继电器控制系统的技术改造。

随着现代化城市的高度发展,每天都有大量人流及物流需要输送,因此在实际工程应用中电梯的性能指标相当重要,主要体现在:可靠性,安全性,便捷快速性。

电梯的可靠性非常重要,直接或间接的影响着人们的生产,生活,而电梯的故障主要表现在电力拖动控制系统中,因此要提高可靠性也要从电力拖动控制系统入手。

基于FPGA电梯控制系统实现

基于FPGA电梯控制系统实现

基于FPGA的电梯控制系统的实现摘要:本文通过使用fpga完成对6层的电梯控制系统。

可以使用状态机实现。

要求指示电梯所在楼层位置等其他必要的信号。

通过仿真结果验证其正确性,并在开发板上进行硬件测试。

关键字:信号并置;verilog;状态机;eda;fpga随高层楼宇的增加,电梯越来越多的走进了人们的生活,对人们的生活的影响越来越大。

为了让电梯更好的服务人们,各种电梯新技术不断地发展起来。

电梯控制系统是一个相当复杂的逻辑控制系统.系统要同时对几百个信号进行接收、处理。

由于用户对电梯功能的要求不断提高.其相应控制方式也在不断发生变化。

随着eda 技术的快速发展.基于fpga的微机化控制已广泛应用于电梯电路设计与控制的各个方面。

一、相关概念:eda在通信行业(电信)里的另一个解释是企业数据架构,eda给出了一个企业级的数据架构的总体视图,并按照电信企业的特征,进行了框架和层级的划分。

eda是电子设计自动化(electronic design automation)的缩写,在20世纪60年代中期从计算机辅助设计(cad)、计算机辅助制造(cam)、计算机辅助测试(cat)和计算机辅助工程(cae)的概念发展而来的。

fpga采用了逻辑单元阵列lca(logic cell array)这样一个概念,内部包括可配置逻辑模块clb(configurable logic block)、输出输入模块iob(input output block)和内部连线(interconnect)三个部分。

fpga是由存放在片内ram中的程序来设置其工作状态的,因此,工作时需要对片内的ram进行编程。

用户可以根据不同的配置模式,采用不同的编程方式。

加电时,fpga芯片将eprom中数据读入片内编程ram中,配置完成后,fpga进入工作状态。

掉电后,fpga恢复成白片,内部逻辑关系消失,因此,fpga能够反复使用。

vhdl主要用于描述数字系统的结构,行为,功能和接口。

(完整版)基于PLC的五层电梯控制系统毕业设计

(完整版)基于PLC的五层电梯控制系统毕业设计

目录摘要 ..................................................................................................................... Design of Five-storey Elevator Control System Based on PLC ......................第一章引言.........................................................................................................1.1 设计背景...............................................................................................1.2 课题研究背景和意义.............................................................................1.3 本文的研究目标.....................................................................................第二章电梯的概述.............................................................................................2.1 电梯工作原理.........................................................................................2.2 系统控制方案设计...............................................................................2.2.1 控制方式的选择 ...........................................................................................2.2.2 电梯控制系统的控制要求 ...........................................................................2.2.3 电梯控制系统总体方案的确定 ...................................................................第三章系统硬件设计.......................................................................................3.1 电梯调速系统设计...............................................................................3.1.1 电梯的快速性要求 .......................................................................................3.1.2 电梯舒适度的要求 .......................................................................................3.2 井道信号系统设计...............................................................................3.3 电梯模型结构.........................................................................................3.4 硬件选型.................................................................................................3.4.1 变频器的概述及选型 ...................................................................................3.4.2 位置检测元件的选型 ...................................................................................3.4.3 PLC的概述及选型 ..........................................................................................3.5 电梯控制系统硬件电路设计.................................................................3.5.2门机电路、抱闸电路、门锁及安全运行电路 ..............................................3.6 PLC 控制系统的系统配置及 I/O 地址分配 ....................................3.6.1 I/O接口分配数 ............................................................................................3.6.2.内部继电器分配 ...........................................................................................3.6.3 轿厢位置显示 ...............................................................................................3.6.4 五层电梯PLC控制输入/输出口接线图 .....................................................3.6.5 电梯总体运行效果 .......................................................................................第四章软件设计及程序的编写.........................................................................4.1 创建项目.................................................................................................4.2 程序的编写.............................................................................................4.3 程序的编译及调试.................................................................................4.4 PLC控制电梯的逻辑关系....................................................................4.5 系统的程序设计...................................................................................第五章程序的仿真及调试.................................................................................5.1仿真软件的选用......................................................................................5.2仿真软件的使用......................................................................................5. 3调试结果及其分析................................................................................5.4设计中遇到的问题解决方案..................................................................总结 ...............................................................................................................致谢 ...............................................................................................................参考文献 ...............................................................................................................摘要电梯不仅仅是高层建筑里的必备设施,在多层建筑里也是不可缺少的垂直运输工具。

基于FPGA的全自动电梯控制器设计说明

基于FPGA的全自动电梯控制器设计说明

基于FPGA的全自动电梯控制器的设计序言随着科学技术的发展、近年来,我国的电梯生产技术得到了迅速发展.一些电梯厂也在不断改进设计、修改工艺。

电梯主要分为机械系统与控制系统两大部份,随着自动控制理论与微电子技术的发展,电梯的拖动方式与控制手段均发生了很大的变化。

目前电梯控制系统主要有三种控制方式:继电器控制系统(早期安装的电梯多位继电器控制系统)、微机控制系统、FPGA控制系统。

继电器控制系统由于故障率高、可靠性差、控制方式不灵活以与消耗功率大等缺点,目前已逐渐被淘汰。

微机控制系统虽在智能控制方面有较强的功能,但也存在抗扰性差,系统设计复杂,一般维修人员难以掌握其维修技术等缺陷。

而FPGA控制系统由于运行可靠性高,使用维修方便,抗干扰性强,设计和调试周期较短等优点,倍受人们重视等优点,已成为目前在电梯控制系统中使用最多的控制方式,目前也广泛用于传统继电器控制系统的技术改造[1]。

目前国七八十年代安装的许多电梯电气部分用继电器接触器控制系统,线路复杂,接线多,故障率高,维修保养难,许多已处于闲置状态,其拽引系统多采用交流双速电机系统换速,效率低,调速性能指标较差,严重影响电梯运行质量。

由于这些电梯交流调压调速系统,交流双速电机拖动系统性能与乘坐舒适感较差,交流调压调速系统属能耗型调速的机械部分无大问题,为节约资金,大部分老式电梯用户希望对电梯的电气控制系统进行改造,提高电梯的运行性能。

因此对电梯控制技术进行研究,寻找适合我国老式电梯的改造方法具有十分重要的意义 [1][2]。

可编程器件的广泛使用,为数字系统的设计带来了极大的灵活性。

FPGA作为新一代可编程逻辑器件,以其高可靠性和技术先进性,在电梯控制中得到广泛应用,从而使电梯由传统的继电器控制方式发展为计算机控制的一个重要方向,成为当前电梯控制和技术改造的热点之一。

FPGA不仅具有可以满足电子系统小型化、低功耗、高可靠性、开发周期短、开发软件投入少等优点,而且可以通过软件编程对硬件的结构和工作方式进行重构式的硬件的设计,如同软件设计那样的方便快捷[2]。

基于FPGA的电梯控制系统设计

基于FPGA的电梯控制系统设计

36魁科■技2021年•第2期基于FPGA的电梯控制系统设计◊武汉轻工大学电气与电子工程学院陶云轩李素芬张祥武杨文卓使用FPGA器件作为主控制芯片,Quartus II作为编程软件,使用DE10-NAN0作为编程后的硬件板子,设计一个基于DE10-NAN0板的电梯控制系统,便于实现更多层电梯控制,有较强的灵活性。

电梯在生活中随处可见,大型的商城中、高档的酒店内都少不了电梯的身影。

现阶段,电梯控制系统硬件由轿厢操纵盘、厅门信号、PLC、变频器、调速系统构成,变频器只完成调速功能,而逻辑控制部分是由PLC完成的。

PLC负责处理各种信号的逻辑关系,从而向变频器发出起停信号,同时变频器也将本身的工作状态输送给PLC,形成双向联络关系已。

FPGA,其实是一种开发者在短时间内利用个人PC就可以在实现多次重写的廉价设备,是高密度可编程逻辑器件的主流产品葺具有运行效率高,操作简易易于实现大规模系统和二次开发的系统。

Quartus II是Altera公司的综合性CPLD/FPGA开发软件,原理图、VHDL、VerilogHDL以及AHDL(Altera Hardware支持DescriptionLanguage)等多种设计输入形式,内嵌自有的综合器以及仿真器,可以完成从设计输入到硬件配置的完整PLD设计流本研究将使用FPGA器件作为主控制芯片,Quartus n作为编程软件,设计〜基于DE10-NANO板五层电梯控制系统。

1电梯的控制要求冋(1)该电梯五层,除第一、五层,每层都设有上下键,一层设有上键,五层设有下键。

(2)电梯内有防超重系统、紧急呼叫按钮、故障指示灯、报警系统和楼MS®等。

(3)电梯到达指定楼层后,过2秒后电梯门打开,开门4s电梯开始关闭,再经过6s电梯开始上下行。

(4)电梯没有接到指令时,在3楼待命。

2系统设计2.1电梯控制器的模块设计电梯控制器主要由指令请求模块、电梯运行状态模块、显示模块、开关门模块、超重报警模块这五个模块组成。

FPGA电梯控制系统软件设计

FPGA电梯控制系统软件设计

FPGA电梯控制系统软件设计一、引言电梯是现代城市生活中不可或缺的交通工具,具有极其重要的作用。

随着科技的发展,智能化电梯的需求也日益增长。

FPGA(Field Programmable Gate Array)作为一种可编程的逻辑器件,能够在实现特定功能的同时满足快速设计以及可重构的需求,因此在电梯控制系统中具有广泛的应用前景。

本文将重点介绍FPGA电梯控制系统的软件设计,包括设计目标、系统功能、系统架构、软件模块划分等内容。

二、设计目标1.自动控制:通过FPGA实现对电梯的自动调度、楼层选择、门的开关等功能。

2.安全保障:设计系统保障电梯在运行中的安全,避免因操作失误或其他原因导致的意外事故。

3.高效运行:提高系统的响应速度,保证电梯的运行在最短时间内完成。

三、系统功能1.电梯的调度功能:根据乘客的楼层选择,自动调度电梯的运行,使得乘客能够尽快到达目的楼层。

2.电梯的楼层选择功能:乘客在电梯门口选择所需的楼层时,电梯能够自动识别并调整运行方向。

3.门的开关功能:在乘客进出电梯时,自动控制电梯门的开关,确保乘客的安全。

四、系统架构在软件设计中,需要实现以下几个模块:1.电梯调度模块:根据乘客的楼层选择和当前楼层情况,自动调度电梯的运行。

2.楼层选择模块:在乘客选择楼层时,识别并记录乘客的选择,并与调度模块进行通信。

3.门的控制模块:控制电梯门的开关,确保乘客在进出电梯时的安全性。

4.状态监控模块:监控电梯的当前状态,包括运行方向、当前楼层等信息。

五、软件模块划分在FPGA电梯控制系统的软件设计中,可以将软件模块划分为以下几个部分:1.顶层模块:顶层模块包括整个系统的主控制逻辑,负责协调各个子模块之间的通信和数据传递。

2.电梯调度子模块:电梯调度子模块主要负责对电梯的运行进行调度,根据乘客的需求和当前楼层情况进行合理的调度。

3.楼层选择子模块:楼层选择子模块根据乘客的楼层选择,向电梯调度子模块发送相应的指令。

基于FPGA的电梯控制系统设计

基于FPGA的电梯控制系统设计

摘要电梯作为现代化的产物,早在上个世纪就已经进入了人们的生活之中。

随着城市建设的不断发展,高层建筑的不断增多,电梯作为高层建筑中垂直运行的交通工具已与人们的日常生活密不可分。

目前电梯控制系统主要有三种控制方式:继电路控制系统、FPGA/CPLD的控制系统、微机控制系统。

FPGA/CPLD控制系统由于运行可靠性高、使用维修方便、抗干扰性强、设计和调试周期较短等优点,倍受人们重视,已经成为目前在电梯控制系统中使用最多的控制方式。

本文设计了一款基于FPGA 的四层电梯控制系统设计。

该控制系统主要有按键输入部分、FPGA控制处理部分、显示部分、提醒部分等组成。

该控制系统以FPGA 芯片EP2C5T114为核心,采用VHDL 语言进行描述,采用有限状态机的设计方法完成的。

通过程序仿真调试及硬件运行,结果表明,本程序可以完成电梯运行所有按键请求输入、按键指示灯显示、楼层显示、电梯运行方向指示、关门延时、到达提醒等,电梯运行正确无误。

该设计采用模块化编程,升级可实现任意多层电梯系统,具有很强的适应性和实用性。

关键词:VHDL,电梯控制器, FPGA , Quartus IIAbstractAs 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)目录........................................................................................................................................... I II 第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 课题研究的背景及意义随高层楼宇的增加,电梯越来越普遍的走进了人们的生活,对人们的生活的影响也越来越大。

基于FPGA的智能电梯控制系统的实现 毕业论文

基于FPGA的智能电梯控制系统的实现 毕业论文

毕业论文题目:基于FPGA的智能电梯控制系统的实现2010 年12 月07 日摘要智能电梯控制系统的设计思想智能电梯的编写的过程也不是一帆风顺的。

而且我试过好多种方法去实现电梯的状态的转移。

起初我想到的肯定是有限状态机。

不过由于开始我想到只有六个请求(分别为1~6楼),后来在老师的启发下和东十二楼的电梯实际运行情况我发现,6个按钮肯定是不够的,所以我又加了5个向上的请求按钮和5个向下的请求按钮,这样总共就有16个按钮了,由于当时我没有想到用信号并置的方法,所以需要分析的情况实在是太多了,我也没有信心了.不过问题始终都是要得到解决的,后来我在我们寝室的一个同学的参考书上看到了一个用VHDL语言编写的智能电梯控制器的程序,不过很不完整,它给我的最大的启发就是“信号并置的算法”,我才发现这样一来的话,我的工作量就大大减少了.当时我不仅采用“信号并置的算法”外,还采纳了它的“以楼层为电梯的状态转移的依据”的思想,这确实是一个不错的方法,不过当时我一直没有任何进展,一是它是用VHDL语言编写的,而且我对这个语言不是很熟悉所以不是特别理解。

后来竟然干起了把VHDL语言翻译成verilog语言的工作,这样没有任何含金量的工作让我浪费了不少时间。

现在想起来,我才发现我竟然迷失了自己,我原先自己的算法已经被丢失了,留下了的仅仅是一些他人的程序.“以楼层为电梯的状态转移的依据"的编程方法让我没有得到任何进展,我放弃的这种处理多种状态的方法,继而转向了我原先的“有限状态机”的方法。

使用三段式的有限状态机的方法也花了很多时间去修正和改善。

实现了基本的功能,当时一遇到比较复杂的情况时(比喻同时有几个人在请求或者是同时有两个在不同楼层的请求时电梯该如何运行呢,这些特殊情况我在当时一直没有找到合适和有效的方法去解决).关键词:信号并置 verilog 状态机Intelligent elevator control system design thoughtAbstractIntelligent elevator compilation process is not easy. And I tried a variety of ways to realize the transfer of the state。

基于FPGA的电梯控制器设计

基于FPGA的电梯控制器设计

基于FPGA的电梯控制器设计一、题目要求设计三层电梯控制器,要求能根据用户在电梯内外按下的命令键,实现上升、下降、停止等功能。

电梯内的命令键主要是前往1、2和3楼的按键;电梯外的命令键则主要是分布在电梯三个楼层的入口处,用以呼叫电梯到用户所在的楼层。

二、题目分析本设计主要由电梯控制模块和显示模块两部分组成,其中电梯控制模块又包含状态机、分频、按键扫描、延时等子模块,显示模块主要是通过数码管来完成,可以通过显示“UP”、“DOWN”、“OPEN”、“CLOSE”还有当前楼层数等字样来反映电梯当前状态。

以下是详细介绍。

(一)电梯控制模块电梯控制模块主要部分是一个由14个状态组成的状态机,包括上升、下降、停止、直接打开、等待电梯到来、电梯停稳、等待开门、等待关门、去第几层命令检测等。

电梯控制模块的输入输出端口主动是为该状态机服务的,现介绍模块的输入输出端口如下。

输入端口:up1,up2,up3分别是用户在电梯外部呼叫电梯的信号。

goto_floor1,goto_floor2,goto_floor3分别是用户在电梯内部选择去向的信号。

clk_in为50MHZ时钟信号输入。

rst为复位信号。

输出端口:open_door为开门标志位,当该位置1时为开门状态,当该为置0时为关闭状态。

display_up为上升显示标志位,当该为置1时,表示电梯正处于上升状态。

display_down为下降显示标志位,当该为置1时,表示电梯正处于下降状态。

各状态的定义如表1所示,状态间的切换如图1所示。

表1 状态对照表图1 状态切换图(二)显示模块显示模块主要由6个数目管完成,当电梯处于上升阶段时,会显示“UP”,当电梯处于下降时显示“dn”代表down,当电梯处于开门时显示“OPEN”,当电梯处于关门状态时,由于板载资源有限,显示“CLOE”代表CLOSE ,此外还有当店楼层显示。

整个系统的RTL级结构图如图2所示。

图2 系统RTL图三、程序代码1.电梯控制模块代码/*_______________________电梯控制模块__________________________*/ module Elevator(clk_in,rst,goto_floor1,goto_floor2,goto_floor3, //电梯里面请求去几楼buttonup1,up2,up3, //电梯外面请求去几楼button open_door,display_up,display_down,pos //状态标志作为输出);input clk_in,rst;input up1,up2,up3;input goto_floor1,goto_floor2,goto_floor3;output open_door,display_up,display_down;output pos; //当前楼层数reg open_door,display_up,display_down;reg [1:0] position;reg [3:0] state;reg [1:0] KeyFlag; //外面请求button值reg Cont; //计数标志reg [1:0]goto_floor;reg [27:0] wait_cnt; //计数延时变量reg [24:0] cnt; //分频计数变量wire goto_stop;wire CLK_OUT; //慢时钟扫描button用reg [1:0] pos; //记录当前位置//状态变量parameter[3:0]//wait for elevatorstop=0, //扫描buttonup=1, //电梯向上down=2, //电梯向下opendirect=3, //直接打开wait_evelator_coming=4, //电梯向上或者向下进行中 come_done=5, //电梯停稳wait_door_close=6, //等待电梯门关闭go_to_where=7, //电梯里面选择去哪里//on the elevetorup_d=8, //电梯里面的向上状态down_d=9, //电梯里面的向下状态wait_evelator_coming_d=10, //电梯里面的等待电梯到位 come_done_d=11, //电梯里面的到位完成 wait_door_open=12, //等待开门wait_door_close_d=13; //等待关门/*_______________________状态切换模块_________________________*/ always @ (posedge clk_in or negedge rst)beginif(!rst)beginpos = 1; //默认楼层初始值为1state = stop; //初始状态 stop扫描模式display_up = 0; //显示上升标志位display_down = 0; //显示下降标志位open_door = 0; //开门标志位Cont = 0; //计数标志endelsebegincase(state)/****扫描外部请求button****/stop:beginif(KeyFlag==1) //一楼有请求信号beginif(KeyFlag < pos) //如果电梯当前不是在1楼state = down; //下降elsestate = opendirect; //如在1楼,直接打开门endelse if(KeyFlag==2) //2楼有请求信号beginif(KeyFlag > pos) //如果电梯在1楼state = up; //上升else if(KeyFlag < pos) //如果电梯在3楼state = down; //下降elsestate = opendirect; //在二楼直接打开 endelse if(KeyFlag==3) //如果请求信号在3楼beginif(KeyFlag > pos) //如当期那位置不是在3楼state = up;elsestate = opendirect; //如当前位置在3楼 endelsestate = stop; //如果没有检测到正确值,继续检测 end/******电梯向上******/up:begindisplay_up = 1;state = wait_evelator_coming;end/******等待电梯到来******/wait_evelator_coming:begin Cont = 1;if(wait_cnt[26]==1)beginCont =0;pos = KeyFlag;state = come_done;endelsestate = wait_evelator_coming;end/******电梯已经到来******/come_done:beginopen_door=1;display_up = 0;display_down = 0;state = wait_door_close;end/******等待电梯关门******/wait_door_close:beginCont = 1;if(wait_cnt[26]==1)beginCont =0;pos = KeyFlag;open_door = 0;state = go_to_where;endelsestate = wait_door_close;end/******去哪里—电梯内部button扫描******/go_to_where:beginopen_door = 0;if(((goto_floor ==1) && (goto_floor <pos))|((goto_floor ==2) && (goto_floor < pos)))state = down_d;else if(goto_floor == pos) //elevator at currect pos floor nowstate = opendirect;else if(((goto_floor ==2) && (goto_floor >pos))|((goto_floor ==3) && (goto_floor > pos)))state = up_d;elsestate = go_to_where;end/******直接打开******/opendirect:beginopen_door = 1;state = wait_door_close;end/******检测外部button后,向下运行******/down:begindisplay_down = 1;state = wait_evelator_coming;end/******检测内部button后,向下运行******/down_d:begindisplay_up = 0;display_down = 1;state = wait_evelator_coming_d;end/******检测外部button后,向上运行******/ up_d:begindisplay_up = 1;state = wait_evelator_coming_d;end/******内部状态下,等待电梯到来******/ wait_evelator_coming_d:beginCont = 1;if(wait_cnt[26]==1)beginCont = 0;pos = goto_floor;state = come_done_d;endelsestate = wait_evelator_coming_d;end/******电梯已经到来******/come_done_d:begindisplay_up = 0;display_down = 0;pos = goto_floor;state = wait_door_open;end/******等待开门******/wait_door_open:beginCont = 1;if(wait_cnt[26]==1)beginCont = 0;open_door = 1;state = wait_door_close_d;endelsestate = wait_door_open;end/******等待关门******/wait_door_close_d:beginCont = 1;if(wait_cnt[26]==1)beginCont =0;open_door=0;state = stop;endelsestate = wait_door_close_d;endendcaseendend/*_____________________慢时钟分频模块________________________*/ always @ (posedge clk_in or negedge rst)beginif(!rst)cnt<=0;elsecnt<=cnt+1;endassign CLK_OUT = cnt[8];/*_______________外部button请求扫描模______________________*/ always @ (posedge CLK_OUT or negedge rst)beginif(!rst)KeyFlag<=0;else if(up1)KeyFlag<=1;else if(up2)KeyFlag<=2;else if(up3)KeyFlag<=3;end/*_________________内部button请求扫描模__________________________*/ always @ (posedge CLK_OUT or negedge rst)beginif(!rst)goto_floor<=0;else if(goto_floor1)goto_floor<=1;else if(goto_floor2)goto_floor<=2;else if(goto_floor3)goto_floor<=3;elsegoto_floor<=0;end/*___________________________延时模块______________________________*/ always @ (posedge clk_in or negedge rst)beginif(!rst)wait_cnt<=0;else if(Cont)wait_cnt<=wait_cnt+1;else if(!Cont)wait_cnt<=0;endendmodule2.显示模块代码/*________________________显示模块________________________*/ module display(clk,rst,display_up,display_down,pos,open_door, //标志位信号sm_db0,sm_db1,sm_db2,sm_db3,sm_db4,sm_db5,sm_db6,sm_db60); //数码管input clk,rst;input display_up,display_down;input [1:0]pos,open_door;output[6:0] sm_db0,sm_db1,sm_db2,sm_db3,sm_db4,sm_db5,sm_db6,sm_db60; reg[6:0] sm_db0,sm_db1,sm_db2,sm_db3,sm_db4,sm_db5,sm_db6,sm_db60;//数码管显示编码parameter segC = 7'hC6,segd = 7'hA1,segE = 7'h86,segL = 7'hC7,segN = 7'hC8,segO = 7'hc0,segP = 7'h8C,segU = 7'hC1,seg1 = 7'hf9,seg2 = 7'ha4,seg3 = 7'hb0,segdis = 7'hff;always @ (posedge clk or negedge rst)beginif(!rst)begin //复位显示关闭sm_db0 <= segdis;sm_db1 <= segdis;sm_db2 <= segdis;sm_db3 <= segdis;sm_db4 <= segdis;sm_db5 <= segdis;sm_db6 <= segdis;sm_db60 <= segdis;endelsebeginif(display_up && (!display_down)) //4 5数码管显示UPbeginsm_db5 <= segU;sm_db4 <= segP;endelse if(display_down && (!display_up)) //4 5 数码管显示 DN 代表downbeginsm_db5 <= segd;sm_db4 <= segN;endelsebeginsm_db5 <= segdis;sm_db4 <= segdis;endif(open_door) //0 1 2 3 数码管显示 OPENbeginsm_db3 <= segO;sm_db2 <= segP;sm_db1 <= segE;sm_db0 <= segN;endelse //open_door = 0 数码管显示 CLOEbeginsm_db3 <= segC;sm_db2 <= segL;sm_db1 <= segO;sm_db0 <= segE;endif(pos == 1) sm_db6 <= seg1;else if(pos == 2) sm_db6 <= seg2;else if(pos == 3) sm_db6 <= seg3;endendendmodule四、测试仿真1.测试代码timescale 1ns / 1psmodule test;// Inputsreg clk;reg rst;reg goto_floor1;reg goto_floor2;reg goto_floor3;reg up1;reg up2;reg up3;reg [1:0] seg7_sel;// Outputswire [7:0] seg7;wire led_flag;// Instantiate the Unit Under Test (UUT)top_elevator uut (.clk_in(clk),.rst(rst),.goto_floor1(goto_floor1),.goto_floor2(goto_floor2),.goto_floor3(goto_floor3),.up1(up1),.up2(up2),.up3(up3),.seg7(seg7),.seg7_sel(seg7_sel),.led_flag(led_flag));always # 1 clk =~clk;initialbegin// Initialize Inputsclk = 0;rst = 0;goto_floor1 = 0;goto_floor2 = 0;goto_floor3 = 0;up1 = 0;up2 = 0;up3 = 0;seg7_sel = 0;// Wait 100 ns for global reset to finish#100;rst = 1;up2 = 1;#20000;up2 = 0;//goto_floor3 = 1;//#20000;//goto_floor3 = 0;// Add stimulus hereendendmodule2.仿真结果图3 仿真效果五、实验效果图4 初始状态:楼层为1,电梯关闭图5 当2楼有用户呼叫,电梯状态为up图6 用户选择3楼为目的地并到达3楼,此时电梯门打开六、实验心得本次试验可谓感触颇多,通过题目要求的实现,较为系统的了解了FPGA的编程方法,对状态机也有了更进一步的认识,感谢在程序调试中出现的一系列问题,给了我学习知识的机会,也感谢老师和学长的帮助,最后,对本次作业如此长时间的迟交向老师表示深深的歉意!!。

毕业设计(论文)电梯控制器的实现与仿真设计

毕业设计(论文)电梯控制器的实现与仿真设计

目录摘要 .................................................................................................................................................... Abstract. (I)第一章绪论 01.1 选题的依据及意义 0 01.2.1 国内外电梯研究状况 01.2.2 电梯的发展趋势 (1)第二章电梯控制系统的实现平台 (2)2.1 EDA技术的概述 (2)2.1.1 什么是EDA技术 (2)2.1.2 EDA的特点 (2)2.1.3 EDA技术的应用展望 (2)2.2 FPGA技术介绍 (3)第三章电梯控制系统的设计 (4)3.1 电梯设计的具体目的及控制要求 (4)3.2 电梯控制系统设计方案与思路 (4)3.2.1 总体设计方案 (4)3.2.2 电梯控制器设计思想 (5)3.2.3 电梯的状态转换 (5)第四章电梯控制系统的设计 (7)4.1 程序流程分析 (7)4.2 电梯主控制器模块 (8) (9)4.4 电梯译码器模块 (9)4.5 电梯控制器顶层原理图 (10)第五章系统软件的仿真 (11)5.1 Quartus II软件的介绍 (11)5.2 电梯楼层选择器模块的波形软件仿真图 (11)5.3 电梯译码器模块的波形软件仿真图 (12)5.4 电梯清零的波形软件仿真图 (13)5.5 电梯上运行波形软件仿真图 (13)5.6 电梯下运行的波形软件仿真图 (14)5.7 电梯上下运行的波形软件仿真图 (14)总结 (15)参考文献(References) (16)致谢 (17)附录 (18)电梯控制器的实现与仿真设计摘要:由于传统电梯的控制方式(继电器控制)设计的电梯控制器有着使用寿命低,体积巨大,弧光放电非常严重,性能不稳的缺点,所以提出了基于Verilog HDL语言的电梯控制器的实现与设计。

电梯控制器报告(Verilog实现)

电梯控制器报告(Verilog实现)

华中科技大学课程设计报告数字电路与逻辑设计课程设计报告题目:电梯控制器的设计与实现专业:计算机科学与技术班级:学号:姓名:电话:邮件:****************分组:完成日期:2015.10.8指导教师:华中科技大学课程设计报告不建议采用本报告所采用的设计方案(异步时序),因为这样的实现过于复杂且难以调试。

建议仅采用统一的CLK作为always语句的更新条件,以实现同步时序的电路。

华中科技大学课程设计报告目录1课程设计概述 (5)1.1课设目的 (5)1.2课设要求 (5)1.3课设任务 (5)1.4实验环境 (5)2基本方案设计 (7)2.1设计需求 (7)2.2总体结构设计 (8)2.2.1时钟分频 (8)2.2.2七段译码器显示模块 (8)2.2.3电梯请求控制模块 (8)2.2.4电梯开关门控制模块 (9)2.2.5电梯运行总控模块 (9)2.2.6电梯单次运行模块 (9)2.2.7LED灯控制模块 (9)2.3详细设计 (10)2.3.1时钟分频 (10)2.3.2七段译码器显示 (10)2.3.3电梯请求控制模块 (10)2.3.4电梯开关门控制模块 (12)2.3.5电梯运行总控模块 (14)2.3.6电梯单次运行模块 (14)2.3.7LED灯控制模块 (14)2.4实验过程与调试 (15)2.4.1仿真结果 (15)2.4.2主要故障与调试 (32)华中科技大学课程设计报告2.4.3模块内部图 (33)2.5功能测试 (42)2.5.1手动开关门测试 (42)2.5.1重置功能测试 (44)2.5.1常规使用测试 (46)3总结与心得 (50)3.1课设总结 (50)3.2课设心得 (50)参考文献 (52)附录(源程序) (53)华中科技大学课程设计报告1课程设计概述1.1课设目的通过硬件描述语言Verilog的编程,深入了解并掌握可编程芯片PLD的设计技术,加强学生对《数字逻辑》课程所学知识综合利用的能力。

基于FPGA的电梯控制器设计_毕业设计论文

基于FPGA的电梯控制器设计_毕业设计论文
(2)设有电梯所处位置指示装置及电梯运行情况指示。
(3)当电梯处于上升时,只响应比电梯所在位置高的上楼请求信号,直到最后一个上楼请求执行完毕,再进入下降模式。
(4)当电梯处于下降时,只响应比电梯所在位置低的下楼请求信号,直到最后一个下楼请求执行完毕,再进入上升模式。
(5)电梯的初始状态为第一楼层。
(6)设计超载报警功能。
设计要求:
(1)根据任务要求确定电路各功能模块;
(2)写出设计代码;
(3)给出时序仿真结果和硬件调试结果;
(4)最后要有设计总结。
二、设计原始资料
QuartusⅡ软件,EDA实验箱。
三、要求的设计成果(课程设计说明书、设计实物、图纸等)
软件仿真和硬件仿真结果;课程设计说明书。
四、进程安排
周1-周4:查阅资料,上机编写并调试代码;
3 电梯控制器设计
3.1 电梯控制器设计总体框图
电梯控制器的功能模块如图所示,包括主控制器、分控制器、楼层选择器、状态显示器、译码器和楼层显示器。乘客在电梯中选择所要到达的楼层,通过主控制器的处理,电梯开始运行,状态显示器显示电梯的运行状态,电梯所在楼层数通过译码器译码从而在楼层显示器中显示。分控制器把有效的请求传给主控制器进行处理,同时显示电梯的运行状态和电梯所在楼层数。由于分控制器相对简单很多,所以主控制器是核心部分。
2 EDA技术介绍
2.1 EDA技术简介
EDA是电子设计自动化(Electronic Design Automation)的缩写,在20世纪90年代初从计算机辅助设计(CAD)、计算机辅助制造(CAM)、计算机辅助测试(CAT)和计算机辅助工程(CAE)的概念发展而来的。EDA技术就是以计算机为工具,设计者在EDA软件平台上,用硬件描述语言VHDL完成设计文件,然后由计算机自动地完成逻辑编译、化简、分割、综合、优化、布局、布线和仿真,直至对于特定目标芯片的适配编译、逻辑映射和编程下载等工作。

基于FPGA的电梯设计毕业设计

基于FPGA的电梯设计毕业设计

目录摘要1引言1.1选题背景1.2 升降机设计的要求2 设计的基础2.1 EDA 技术介绍2.2 VHDL语言概述2.2.2 VHDL的优点2.2.3 VHDL语言的开发2.3 大规模可编程逻辑器件3 总体方案选择3.1 基于PLC 技术的升降机控制设计方案3.2 PLC升降机的缺点3.3 基于EDA 技术的升降机控制设计方案3.4升降机控制方式选择3.4.1.内部请求优先控制方式3.4.2.单向层层停控制方式3.4.3.方向优先控制方式3.3 总体方案决定4 升降机控制器的模块设计4.1升降机系统组成4.2 模块设计4.2.1. 外部数据高速采集模块设计4.2.2.信号存储模块4.2.3. 基于FPGA的中央处理模块4.2.4.信号的输出、显示模块5硬件电路设计5.1 FPGA器件硬件电路5.1.1 选择所需的fpga 器件5.1.2 EPF6016A器件固定引脚5.1.3 用户i/o管脚分配5.1.4 FPGA JTAG接口及配置芯片接法5.2电源设计5.2.15V和12V电源设计5.2.1 5.2.23.3V电源设计5.3开关请求信号设计5.4楼层显示6 VHD语言设计6.1状态机设计介绍6.1.1状态机的基本结构和功能6.2 升降机算法分析6.3状态流程图6.4控制系统信号列表6.5控制器系统VHDL语言6.5.1控制器系统VHDL语言实现6.5.2控制器中的构造体的各个信号定义6.5.3控制器的逻辑判断7程序调试及仿真结果7.1程序调试通过编译7.2仿真结果8总结9 参考文献九致谢附录程序中英文摘要摘要升降机作为现代化的产物,早在上个世纪就进入了我们的生活之中。

本设计就是基于电子设计自动化(Electronic Design Automation)技术中的甚高速集成电路硬件描述语言(Very High Speed Integrated Circuit Hardware Description Language)语言所开发的六层升降机控制程序。

Verilog HDL与FPGA数字系统设计ch05_FSM

Verilog HDL与FPGA数字系统设计ch05_FSM

5.2.2 推荐的状态图描述方法
利用Verilog HDL语言描述状态图主要包含四部分内容: 1,利用参数定义语句parameter描述状态机中各个状态 的名称,并指定状态编码。例如,对序列检测器的状态分配 可以使用最简单的自然二进制码,其描述如下: parameter S0=2'b00, S1=2'b01, S2 = 2'b10, S3 = 2'b11; 或者,parameter [1:0] S0=2'b00, S1=2'b01, S2 = 2'b10, S3 = 2'b11; 2,用时序的always 块描述状态触发器实现的状态存储。 3,使用敏感表和case语句(也可以采用if-else等价语句)描 述的状态转换逻辑。 4,描述状态机的输出逻辑。
一般来说,状态机的基本操作主要有以下两种: (1) 状态机的内部状态转换。 (2) 产生输出信号序。
根据电路的输出信号是否与电路的输入有关,可以将状态 机分为两种类型:一类是米利型(Mealy)状态机,电路的输 出信号不仅与电路当前的状态有关,还与电路的输入有关;另 一类是穆尔型(Moore)状态机,电路输出仅仅取决于各触发 器的状态,而不受电路当时的输入信号影响或没有输入变量。
5.2.2 推荐的状态图描述方法
state <= S0; //在nCR跳变为0时,异步清零 Else case(State)
S0: begin Out =1’b0; State = (Sin==1)? S0 : S1; end S1: begin Out = 1’b0; State = (Sin==1)? S2 : S1; end S2: begin Out = 1’b0; State = (Sin==1)? S0 : S3; end

基于FPGA的电梯控制系统的仿真图(附程序)

基于FPGA的电梯控制系统的仿真图(附程序)

系统主体模块的设计与仿真本设计是以9层的电梯控制系统为模型。

主要实现电梯运行开关的控制,楼层的请求,电梯运行遵循的方向优先原则,提前、延时开关门等基本的功能。

以下是对不同的状态进行仿真,以验证本设计的可行性。

电梯进入运行状态控制进程,通过判断上升、下降请求寄存器每一位的值,决定电梯运行状态,并通过状态指示信号输出该状态,本设计都是使用高电平触发。

(1)当电梯处于1楼时,上升请求:图4.1 电梯处于第一层时仿真图(2)提前/延时关门功能没有提前/延时关门时的情况下:图4.2 没有提前/延时关门时的仿真图从图4.2知道,运行或停止输出信号“lamp”为高电平时电梯进入运行状态,低电平时停止。

圈内显示电梯在75.36us后从停止状态转入运行状态。

当设置提前关门“close”为高电平时:图4.3 有提前关门时的仿真图图4.3与图4.2对比可知,由于设置了提前关门进程“close”,电梯提前到75.36us 以前从停止状态转入运行状态。

2当设置了延时关门“delay”为高电平时:图4.4 延时关门时的仿真图图4.4与图4.2对比可知,由于设置了延时关门进程“delay”,电梯延时到80.48us 后才从停止状态转入运行状态。

(3)当电梯处于较高层数时图4.5 电梯处于较高层数时的仿真图(5)电梯轿厢内楼层选择开关功能仿真图4.6 轿厢内楼层选择开关仿真图4(4)电梯的次态功能仿真如图4.7所示,当运行或等待时间“run_wait”计数到0110时,电梯运行状态变量“ladd”给出电梯的下一个状态。

如图 4.7圈内显示,“ladd”从0显示模块的设计与仿真图4.8 显示模块仿真图本设计的显示模块一共有3个显示部分,分别是电梯运行/等待时间显示run_wait、楼层选择指示direct以及所在楼层批示st_out。

这3个显示部分的设计结构都是一样的,所以以其中一个仿真作为例子。

从图4.8圈内看到,当电梯处于楼层2时,ledin收到信号‘0010’,经过系统内部自动转化为‘1011011’并通过ledout输出到共阴极LED数码显示。

基于FPGA的电梯升降控制器设计

基于FPGA的电梯升降控制器设计

基于FPGA的电梯升降控制器设计摘要:针对传统单片机设计的电梯控制器外围电路复杂,性能不稳的缺点,提出了基于FPGA 的电梯控制器设计。

控制器以FPGA 芯片为核心,各种功能通过在FPGA 设计工具中用VHDL 语言进行描述,在集成软件环境中进行编译、调试及综合,使用专用下载电缆将程序代码下载到芯片中以实现其功能。

该方法不仅简化了电路设计,提高了控制器抗干扰性,而且降低了功耗,具有广阔的发展前景。

关键词:VHDL;控制器;FPGA;电梯Design of FPGA-based automatic elevator controller Abstract: A new FPGA-based elevator controller is designed in order to overcome the defects of traditional single-chip microcomputer-based elevator controller, such as the complexity of peripheral circuit and the instability of the performance. The FPGA chip is used as the core of the controller, and the corresponding functions of the controller are described in VHDL language. The editing, debugging and combination of the programs are finished in the integrated software environment, and the program codes are downloaded to the chip using specialized cable to implement its functions. Simulation diagram shows that the FPGA-based controller can offer multi-user operation of six-floor passenger elevator and can also monitor the running status of the elevator. This design not only simplifies the design of the circuit and improves the capability of anti-jamming, but lowers the power consumption as well. Thus, it has broad application prospects.Key words:VHDL;controller;FPGA;elevator引言:采用可编程逻辑器件通过对器件内部的设计来实现系统功能,是一种基于芯片的设计方法.设计者可以根据需要定义器件内部逻辑和引出端,将电路板设计的大部分工作放在芯片的设计中进行,通过对芯片设计实现数字系统的逻辑功能.灵活的内部功能块组合,引出端定义等,可大大减轻电路设计和电路板设计的工作量和难度,有效的增强设计的灵活性,提高工作效率.同时采用可编程逻辑器件,设计人员在实验室可反复编程,修改错误,以期尽快开发产品,迅速占领市场。

Verilog-HDL-电梯程序

Verilog-HDL-电梯程序

这个程序不需要你再添加任何的程序,你只需要添加楼层数就可以成功控制6层以上电梯,另外你必须得读懂每一块程序的作用,才能对这个程序有更好的应用module dtsj(clk,reset,up1,up2,up3,up4,up5,dn2,dn3,dn4,dn5,dn6,d1,d2,d3,d4,d5,d6,overw,pro,led,hex,Buzzer1,lig );input clk,reset; //reset键使用keyinputoverw,pro,up1,up2,up3,up4,up5,dn2,dn3,dn4,dn5,dn6,d1,d2,d3, d4,d5,d6; //故障警报键output[6:0] hex,lig; //light和led用数码管output[5:0] led;output Buzzer1;reg Buzzer1,door;reg[6:0] hex,lig;reg[2:0]state,next_state,count;reg[5:0] d,up,dn,now_f,curr,led; //d是内部按键,up外部上升按键,dn是外部下降按键,//now_f是当前楼层,curr是当前楼层的另外一个变量reg[1:0] ud_f; //上升下降标志位reg light;//reg[29:0] counter;//reg clkout;parameteridle_state=3'b001,open_state=3'b010,close_state=3'b011, up_state=3'b100,down_state=3'b101,sleep_state=3'b110,alarm_state=3'b111,f1=6'b000001,f2=6'b000010,f3=6'b000100,f 4=6'b001000,f5=6'b010000,f6=6'b100000,up_f=2'b01,dn_f=2'b10,idle= 2'b00;//jiu zhong zhuang tai he shang sheng zhuang tai 'shang sheng zhuang tai he xia jia zhuang taiinitialbeginstate<=idle_state;endalways @(posedge clk or posedge reset)if(reset)state<=idle_state;elsestate<=next_state;always @(state or up or dn or d or now_f or count or ud_f) case(state)open_state:beginif(count<5)next_state=open_state;elsenext_state=close_state;endsleep_state:beginif((up||dn||d||ud_f)==0)beginnext_state=close_state;endelsenext_state=idle_state;endidle_state: // 初始状态beginif((up||dn||d||ud_f)==0)next_state=sleep_state;if(!overw||pro==1)next_state=alarm_state;else if(d>0)beginif((d&now_f)>0)next_state=open_state;else if(d>now_f)next_state=up_state;elsenext_state=down_state;endelse if((up&now_f)||(dn&now_f)) next_state=open_state;else if((up>now_f)||(dn>now_f)) next_state=up_state;else if(up||dn)next_state=down_state;elsenext_state=idle_state;endup_state:beginif((up||dn||d||ud_f)==0)next_state=sleep_state;if(!overw||pro==1)next_state=alarm_state;else if((d&now_f)||(up&now_f))next_state=open_state;else if((d>now_f)||(up>now_f))next_state=up_state;else if((d<now_f)||(up<now_f)) //else if(d||up) wait speaknext_state=down_state;else if(dn>0)beginif(dn>now_f)next_state=up_state;else if((dn&now_f)||(now_f<f6))next_state=open_state;else if((dn&now_f)&&(now_f==f6))next_state=open_state;elsenext_state=down_state;endelsenext_state=idle_state;enddown_state:beginif((up||dn||d||ud_f)==0)next_state=sleep_state;else if(!overw||pro==1)next_state=alarm_state;else if((d&now_f)||(dn&now_f))next_state=open_state;elseif(((d<now_f)&&(d!=6'b000001))||((dn<now_f)&&(dn!=6'b000001 )))next_state=down_state;else if((d>now_f)||(dn>now_f))next_state=up_state;else if(up>0)beginif (up<now_f)next_state=down_state;else if((up&now_f)&&(now_f>f1))else if((up&now_f)&&(now_f==f1)) next_state=open_state;elsenext_state=up_state;endelsenext_state=idle_state;endclose_state:beginif((up||dn||d||ud_f)==0)next_state=sleep_state;else if(!overw||pro==1)next_state=alarm_state;else if(ud_f==up_f)beginif((d&now_f)||(up&now_f))next_state=open_state;else if((d>now_f)||(up>now_f)) next_state=up_state;else if(d||up)else if(dn>0)beginif(dn>now_f)next_state=up_state;else if((dn&now_f)>0)next_state=open_state;elsenext_state=down_state;endelsenext_state=idle_state;endelse if(ud_f==dn_f)beginif((d&now_f)||(dn&now_f))next_state=open_state;elseif(((d<now_f)&&(d!=6'b000000))||((dn<now_f)&&(dn!=6'b000000 )))next_state=down_state;else if(d||dn)else if(up>0)beginif(up<now_f)next_state=down_state;else if((up&now_f)>0)next_state=open_state;elsenext_state=up_state;endelsenext_state=idle_state;endelsebeginif(d>0)beginif((d&now_f)>0)next_state=open_state;else if(d>now_f)next_state=up_state;elsenext_state=down_state;endelseif((up&now_f)&&(dn&now_f))next_state=open_state; elseif((up>now_f)&&(dn>now_f))next_state=up_state;else if(up||dn)next_state=down_state; elsenext_state=idle_state; endendalarm_state:beginif(!overw||pro==1)begin//Buzzer1<=1'b1;next_state=open_state;endelsebegin//Buzzer1<=1'b0;if(d>0)beginif((d&now_f)>0)next_state=open_state;else if(d>now_f)next_state<=up_state;elsenext_state=down_state;endelse if((up&now_f)||(dn&now_f)) next_state=open_state;else if((up>now_f)||(dn>now_f)) next_state=up_state;else if(up||dn)next_state=down_state;elsenext_state=idle_state;endenddefault:next_state<=idle_state;endcasealways @(up1 or up2 or up3 or up4 or up5)up ={1'b0,up5,up4,up3,up2,up1};always @(dn2 or dn3 or dn4 or dn5 or dn6)dn ={dn6,dn5,dn4,dn3,dn2,1'b0};always @(d1 or d2 or d3 or d4 or d5 or d6)d ={d6,d5,d4,d3,d2,d1};always @(posedge clk or posedge reset)beginif(reset)count<=0;else if((next_state==open_state)&&(count<5)) count<=count+1;elsecount<=0;endalways @(posedge clk or posedge reset )//always @ (reset or next_state)if(reset)beginnow_f<=f1;ud_f<=idle;led<=6'b000001;light<=1'b0;endelsebeginnow_f<=now_f;curr=now_f;case(next_state)idle_state:beginnow_f<=now_f;ud_f<=idle;led<=led;curr<=now_f;Buzzer1<=1'b0;endup_state:beginnow_f<=now_f<<1;led<=led+1;curr<=now_f;enddown_state:beginnow_f<=now_f>>1; ud_f<=dn_f;led<=led+1;curr<=now_f;endopen_state:beginnow_f<=now_f;ud_f<=ud_f;led<=led;door<=1'b1;light<=door;curr<=now_f;endclose_state:beginud_f<=ud_f;led<=led;curr<=now_f;door<=1'b0;light<=door;endalarm_state:beginnow_f<=now_f; ud_f<=ud_f;led<=led;Buzzer1<=1'b1; curr<=now_f;door<=1'b1;light<=door;endsleep_state:beginnow_f<=now_f; ud_f<=ud_f;led<=6'b000000;enddefault:beginnow_f<=f1;ud_f<=idle;led<=led;endendcaseendalways @ (curr)begincase(curr)6'b000001: hex=7'b1111001; //数码管共阴共阳 6'b000010: hex=7'b1000100;6'b000100: hex=7'b0110000;6'b001000: hex=7'b0011001;6'b010000: hex=7'b1101101;6'b100000: hex=7'b1111101;default:hex=7'b0000000;endcaseendalways @(light)begincase(light)1'b0: lig=7'b1000000; //1'b1: lig=7'b1000000;1'b1: lig=7'b1111001;default:light=7'b0000000;endcaseend//分频程序/*always @ (posedge clk)beginif( counter[29:0] == 24999999)begin //每计到4个(0~3)上升沿,输出信号翻转一次counter <= 0;clkout <= ~ clkout;endelsecounter[29:0] <= counter[29:0] + 1'b1;end*/ endmodule。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

五层楼电梯运行控制逻辑设计摘要:电梯是高层建筑不可缺少的运输工具,用于垂直运送乘客和货物,传统的电梯控制系统主要采用继电器,接触器进行控制,其缺点是触点多,故障率高、可靠性差、维修工作量大等,本设计根据电梯自动控制的要求利用Verilog语言编写并完成系统设计,在利用软件仿真之后,下载到了FPGA上进行硬件仿真。

FPGA(Field-Programmable Gate Array),即现场可编程门阵列,它是在PAL、GAL、CPLD等可编程器件的基础上进一步发展的产物。

它是作为专用集成电路(ASIC)领域中的一种半定制电路而出现的,既解决了定制电路的不足,又克服了之前的可编程器件门电路数有限及速度上的缺点。

关键词:电梯控制FPGA Verilog软件设计硬件设计在当今社会,随着城市建设的不断发展,高层建筑的不断增多,电梯作为高层建筑中垂直运行的交通工具已与人们的日常生活密不可分。

目前电梯控制系统主要有三种控制方式:继电路控制系统(早期安装的电梯多位继电器控制系统),FPGACPLD [1] 的控制系统、微机控制系统。

继电器控制系统由于故障率高、可靠性差、控制方式不灵活以及消耗功率大等缺点,目前已逐渐被淘汰,而微机控制系统虽在智能控制方面有较强的功能,但也存在抗扰性差,系统设计复杂,一般维修人员难以掌握其维修技术等缺陷。

而FPGACPLD控制系统由于运行可靠性高,使用维修方便,抗干扰性强,设计和调试周期较短等优点 [2] ,倍受人们重视等优点,已经成为目前在电梯控制系统中使用最多的控制方式,目前也广泛用于传统继电器控制系统的技术改造。

随着现代化城市的高度发展,每天都有大量人流及物流需要输送,因此在实际工程应用中电梯的性能指标相当重要,主要体现在:可靠性,安全性,便捷快速性。

电梯的可靠性非常重要,直接或间接的影响着人们的生产,生活,而电梯的故障主要表现在电力拖动控制系统中,因此要提高可靠性也要从电力拖动控制系统入手。

本次设计尝试用Verilog实现电梯控制器部分,进行了多层次的电梯控制,也进行了软件及硬件上的仿真验证,时序分析以保证设计的正确。

在设计中先用软件进行模拟仿真,然后又下载到FPGA开发板上进行硬件仿真,以确保设计的正确性。

1电梯的设计分析1.1 系统的需求分析及系统描述设计一个电梯运行控器,该电梯有5层楼,设计的电梯调度算法满足提高服务质量、降低运行成本的原则;电梯的内部有一个控制面板,它负责按下请求到的楼层,并且显示当前尚未完成的目的地请求,当到达该楼层以后自动撤销本楼层的请求,即将面板灯熄灭;除1层和5层分别只有上和下按钮外,其余每个楼层(电梯门口旁)的召唤面板都有两个按钮,分别指示上楼和下楼请求。

当按下后,对应按钮灯亮。

如果电梯已经到达该楼层,按钮灯熄灭;电梯的外部面板会显示电梯当前所在的楼层,及上行还是下行(暂停显示刚才运行时的状态);电梯向一个方向运行时,只对本方向前方的请求进行应答,直到本方向前方无请求时,才对反方向的请求进行应答。

当前内部控制面板上有的请求,只要经过所在楼层均会立即响应.在所有内部外部请求都已完成后,电梯转入等待。

1.2 电梯的模型图1.3 电梯工作过程的具体描述当电梯开始启动的时候,将当前所处的楼层置为第一层,电梯为暂停状态,方向向上,然后等待控制器的调度;等待过程当中(FLOOR保持在该楼层),首先去判断当前楼层(第i层)以上的楼层是否发出召唤或者已经有人已经发请求,若有则向上运行;否则以同样的方法判断是否向下运行;若不向下运行则重复等待状态(故向上运行的优先级要高于向下运行);保持该状态循环进行操作直到检测到有向上或向下的任务;若已经判明要向上运行,则首先将运行停止状态置为运行,且标志向上运行,控制LED在该楼层亮T时间后将所在楼层加1,这时新的当前楼层(第i+1层)灯亮起,接着电梯检索去判断当前楼层是否发出向上召唤或者已经有人已经发出目的地为第i+1层的请求,若有则在第i+1层停靠;否则检索去判断第i+1层以上的楼层是否发出召唤或者已经有人已经发出目的地为第i+1层以上的请求,若有则向上运行;否则(必定是有第i+1层向下的请求)在第i+1层,向下运行过程同理。

[3] 1.4 电梯控制的流程图K1: 当前层i以上有召唤请求或者电梯内部目的地请求有>i的请求;K2: 当前层i以下有召唤请求或者电梯内部目的地请求有<i的请求;K3: 所到达的i层为目的地或者i层有向上的请求;K4: 所到达的i层为目的地或者i层有向下的请求;1.5 状态设置S0 — S14 共15个状态[4]:S0:初始化,电梯位于1楼,清除各请求无条件转入下一状态S1等待S1:等待状态,判断K1,若满足转入S3向上运行,不满足,转入S2判断S2:判断K2,若满足转入S9向下运行,不满足返回S1继续等待判断S3:电梯向上运行修改状态信息无条件转入下一状态S4计数S4:运行时间计数器开始计数,计数完毕转入S5,否则继续计数S5:修改状态信息,楼层数加1,转入S6判断S6:判断K3,若满足转入S8停止,不满足转入S7判断S7:判断K1,若满足转入S4继续运行,不满足转入S8停止S8:暂停并开始计数时间,计数完毕转入S1,否则继续停在S8S9:向下运行,修改状态信息,无条件转入下一状态S10S10:运行时间计数器开始计数,技术完毕转入S11,否则继续计数S11:修改状态信息,楼层数减1,转入S12判断S12:判断K4,若满足转入S14停止,不满足转入S13判断S13:判断K2,若满足转入S10继续运行,不满足转入S14停止S14:暂停并开始计数时间,计数完毕转入S1,否则继续计数2电梯的设计实现[5]2.1 Verilog 语言[6]描述的各个模块说明2.1.1电梯内部目的地请求记录indoor_callinput:set_dest:当按下对应楼层的目的地请求且当前电梯所停靠的cur_floor不是所请求的目的地时,便可以记录这个请求。

rst:在电梯进入初始状态时,撤销记录中的目的地请求。

ce:在电梯进入暂停在cur_floor状态时ce=1;撤销cur_floor的目的地请求并记录在当前状态下该楼层的目的地请求。

cur_Floor:当前楼层output:get_dest: 输出当前未完成的目的地请求。

2.1.2电梯外部召唤请求记录outdoor_callinput:set_call:当按下对应楼层的召唤请求且当前电梯未停在该楼层cur_floor时,便可以记录这个召唤。

rst:当电梯进入初始状态时,撤销目的地面板上的请求。

ce:在电梯进入暂停在cur_floor的状态时ce=1,控制撤销cur_floor 的所在所在召唤请求。

cur_Floor:当前楼层作为判断的条件。

output:get_call: 输出当前未完成的召唤请求。

2.1.3当前楼层current_floorinput:rst: 初始状态时电梯所处的楼层归为第一层。

inc_Floor: 控制电梯在向上运行时楼层加1。

red_Floor: 控制电梯在向下运行时楼层减1。

output:cur_Floor:输出显示当前电梯所在楼层。

2.1.4显示上下楼up_downinput:rst:初始时电梯的运行方向向上。

up_d:当其有一个正向的电平跳变时,电梯的运行方向由向上变为向上;有一个负向电平跳变时电梯的运行方向由向下变为向上。

Up=0 ; Down=1output:out_state_dir: 输出显示当前或电梯暂停前的运行方向。

2.1.5显示运行停止stop_runinput:rst: 初始状态时,电梯状态未停止。

stop_r: 当其有一个正向的电平跳变时,电梯状态由停止变为运行;有一个负向电平跳变时电梯由运行变为停止。

Stop=0 ;Run=1output:out_state_run: 输出显示当前的电梯运行状态。

2.1.6时间计数器counterinput:ce_count:当其为0时计数器不计数,但将其初始计数值赋给计数器,并将0作为结果返回给计数器;当其为1时,计数器开始减计数,每当来一个clk下降沿时计数值减1,当计数值减为0时将其返回给控制器。

clk:电路的时钟脉冲。

output:consignal:返回给控制器的反馈信号,当其为1时,表明计数完毕。

2.1.7条件判断condition_judgeinput:sel_con:当其为00(K1)是判断cur_floor以上是否还有目的地请求或者召唤请求;当其为01(K2)时,判断cur_floor以下是否还有目的地请求或者召唤请求;当其为10(K3)时,判断第cur_floor层是否还有目的地请求或者向上的召唤请求;当其为11(K4)时,判断第cur_floor层是否还有目的地请求或者向下的召唤请求。

get_dest:未完成的目的地请求。

get_call:未完成的召唤请求。

clk:时钟脉冲。

cur_Floor:当前楼层,作为判断条件。

output:result:是把sel_con中对应条件判断的结果送给控制器。

2.1.8中心控制模块controlinput:clk: 时钟脉冲。

reset复位端,低电平有效,将电路状态清0。

consignal:来自counter模块的反馈信号。

result_Con:来自condition模块的反馈信号。

output:rst,sel_Con,inc_Floor,red_Floor,ce,up_d,stop_r, ce_Count为向其它模块的输出控制信号。

2.2 顶层原理图3 测试3.1 test1 测试方案初始化,3楼有向上请求,目的地请求为5楼,观察到达5楼后是否会停止;100#后3楼有向下请求,目的地为2楼,观察是否到达3楼并停止等人然后到2楼;100#后1楼有向上请求,目的地为4楼,观察最后是否会停在4楼。

Input:Resul:波形图:3.2 test2 测试方案初始化,3楼有向上请求,目的地请求为5楼,观察到达5楼后是否会停止;100#后3楼有向下请求,目的地为2楼和5楼,观察是否到达3楼并停止等人然后是先到2楼还是5楼(测试上下楼的优先级);100#后1楼有向上请求,目的地为4楼,观察最后是否会停在4楼。

Input:Result:波形图:通过系统详细的测试,系统的输出结果与我们的预期结果一致,系统并未出现问题,说明系统基本上是无故障的。

4 结语:用Verilog硬件描述语言的形式进行数字系统的设计方便灵活,利用EDA 软件进行编译优化仿真极大地减少了电路设计时间和可能发生的错误。

降低了开发成本,这中设计方法必将在未来的数字系统设计中发挥越来越重的作用。

本设计采用的正式FPGA来控制电梯的逻辑运行,具有编程灵活,性能可靠等优点,而且FPGA在去电后配置数据自动消失,用户可以控制加载进程,在现场修改器件的逻辑功能。

相关文档
最新文档