基于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作为硬件平台,利用其可编程性和并行性的特点,完成电梯控制系统的设计。
具体的步骤如下:1. 首先,进行电梯控制系统的需求分析,确定系统所需要的功能和性能指标;2. 然后,设计相应的算法和逻辑电路,包括电梯调度算法、楼层按钮输入处理、状态机设计等;3. 接下来,使用FPGA开发平台进行硬件设计和验证,实现电梯控制系统的功能;4. 最后,进行系统性能测试和调优,确保系统的稳定性和高效性。
结果经过实验和测试,我们成功地实现了基于FPGA的电梯控制系统。
该系统具有以下特点:- 响应时间短:通过合理的调度算法和状态机设计,实现了快速响应用户操作的功能;- 稳定性高:通过FPGA的可编程性,能够灵活地根据需求进行调整和优化,提升系统的稳定性;- 高效性好:利用FPGA的并行处理能力,实现了多任务并行处理,提高了系统的处理效率。
结论本毕设论文通过设计一个基于FPGA的电梯控制系统,成功地解决了传统电梯控制系统存在的一些问题。
该系统具有响应时间短、稳定性高和高效性好的优点,能够为用户提供更好的电梯使用体验。
未来可以进一步优化和扩展该系统,使其更加智能化和智能化。
基于FPGA的电梯控制系统

操纵 盘 和每 层 的呼 叫 信 号 、轿 厢 和 厅 门 系 统 的 功 能 信 号 以 及 井 道 和 变频 器 的状 态 信 号 .经 程 序 判 断 与 运 算 实 现 电 梯 的 集 选 控 制 。F G P A在 输 出显 示 信 号 的 同 时 . 据 随机 逻 辑 控 制 的 要 求 , 根 向变 频 器 发 出 运 行 方 向 、 动 、 减 速 运 行 和 制 动 停 梯 等 信 号 。 启 加, 由变 频 器 根 据 一 定 的 控 制 规 律来 控 制 电 机 .完 成 电 梯 的 工 作 全
【 关键词】 电梯控制 系统 ;P A; ei g : F G V ro l
1 言 引
信 号输 入
电 梯 控 制 系 统 是一 个相 当复 杂 的 逻 辑 控 制 系 统 .系 统 要 同 时 对几 百 个 信 号 进 行 接 收 、 理 。 处 由于 用 户 对 电 梯功 能 的要 求 不 断 提 高 . 相 应 控 制 方 式 也 在 不 断 发 生 变 化 。随 着 E A 技术 的 其 D 快 速 发 展 .基 于 F G 的 微 机 化 控 制 已广 泛 应 用 于 电 梯 电路 设 PA 计 与 控 制 的各 个 方 面
过程 。
号, 自动 定 向 . 自动平 层并 保持最
远 召 唤 层 站 的 方 向和 自动 换 向 . 能 够 延 时 自动 关 门 . 站 自动 平 层 开 到 门 。 时 指 示 电 梯 运 行 情 况 、 层 同 楼
_
U T P以 A 。该 电梯 控 制 系统 软 件 采 用 模 新一代 的 F G P A甚 至 集 成 了 中央 处 理 器 ( P 和 数 字 处 理 R N S O , 及 输 出 信 号 L MP C U) 器( S 内核 。 一 片 FG D P) 在 P A上 进 行 软 硬 件 协 同设 计 , 实 现 片 块 化 多进 程 的 控制 原 理 来 实 现 . 程序 主要 分为 四个 模 块 . 个 为 该 一 模块 用 于 分频 及 楼 选 信 号 的 产 生 :一 个 模 块 用 于 请 求 寄 存 器 的 上 可 编 程 系 统 (O C.yt n S P Ss m O e P ga mal C i) 供 了强 大 的 o r rm b h 提 e p 硬件 支 持 。未来 的 F G P A将 朝 着 混 合信 号 及更 大 规 模 . 高 性 能 的 方 更 向继 续 发展 。此 外 , D 领 域 的 进 EA 展也 有 利 于 F G 的 开 发 。 PA 3F G 、P A控 制 系 统 总 体 结构 该 系统 采 用 C coe芯 片 实 现 yln 电梯 的控 制 . 循 电 梯 各 种 控 制 的 遵 逻 辑 关 系 . 现 轿 内 外 召 唤 指 令 信 实 置 位 与 复位 : 个用 于 电梯 运 行 的 次 态 控 制 : 个 用 于 电 梯 运 行 一 一 楼层 计数 及 提 前, 迟 关 门控 制 。 合 拖 动 系 统 ,P 计 周期 。 少 了 设 计 成 本 。 低 了设 计 风 险 。所 进 行 编 译 、 真 、 载 。用 该 软 件 设 计 的实 体 部 分 源 程 序 根 据 图 减 降 仿 下 . 输 实 以 当 F G : D芯 片及 其 开 发 系 统 一 问 世 . 在 数 字 系 统 设 计 3 设 定 具 体 的输 入 、 出 接 口来 描 述 系 统 的 外 部 接 口特 征 。 体 P M ̄ L P 就 领 域 占据 了 重 要地 位 名 为 , 输 入 信 号 C K、 P、O L U D WN、T CH OSE DEL 和 S 、 CL 、 Y
基于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主要用于描述数字系统的结构,行为,功能和接口。
fpga电梯控制器课程设计

fpga电梯控制器课程设计一、课程目标知识目标:1. 掌握FPGA的基本原理和编程方法;2. 学习并理解电梯控制系统的基本组成和工作原理;3. 了解电梯控制系统中各个模块的功能及相互关系;4. 掌握使用FPGA进行电梯控制程序设计的方法。
技能目标:1. 能够运用Verilog HDL或VHDL语言编写简单的FPGA程序;2. 能够分析电梯控制系统的需求,设计出相应的控制策略;3. 能够运用FPGA实现简单的电梯控制功能,如楼层召唤、运行方向控制等;4. 能够通过课程设计,培养实际操作和解决问题的能力。
情感态度价值观目标:1. 培养学生对电子工程及FPGA技术的兴趣,激发学生主动学习和探索的热情;2. 培养学生的团队协作精神和沟通能力,使他们能够在团队中共同解决问题;3. 培养学生的创新意识,鼓励他们勇于尝试新方法,提高电梯控制系统的性能;4. 培养学生关注社会问题,了解电梯安全运行的重要性,提高他们的社会责任感。
本课程旨在通过FPGA电梯控制器课程设计,使学生掌握FPGA编程和电梯控制系统设计的基本方法,培养他们的实际操作和创新能力。
在教学过程中,注重理论与实践相结合,充分调动学生的主观能动性,提高他们的综合素质。
课程目标具体、可衡量,便于教师进行教学设计和评估,同时有助于学生明确学习成果。
二、教学内容1. FPGA基础知识:- FPGA原理与结构;- Verilog HDL或VHDL语言基础;- FPGA开发环境介绍。
2. 电梯控制系统原理:- 电梯控制系统概述;- 电梯控制系统的主要组成部分;- 电梯控制系统的基本工作原理。
3. 电梯控制策略与算法:- 电梯运行模式及控制策略;- 楼层召唤与运行方向控制算法;- 交通分配与优化方法。
4. FPGA在电梯控制系统中的应用:- 基于FPGA的电梯控制程序设计;- 电梯控制模块的划分与实现;- FPGA程序仿真与调试。
5. 课程设计与实践:- FPGA电梯控制器设计任务与要求;- 设计方案的选择与评估;- 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课程设计一、课程目标知识目标:1. 理解电梯控制系统的基本原理,掌握FPGA在电梯控制系统中的应用。
2. 学习并掌握Verilog HDL语言的基本语法,能够运用Verilog HDL编写简单的电梯控制程序。
3. 了解电梯控制系统的模块划分,掌握模块化设计和模块间通信的方法。
技能目标:1. 培养学生运用FPGA进行数字电路设计的能力,提高学生的实际动手操作能力。
2. 培养学生独立分析和解决实际问题的能力,能够根据电梯控制需求设计相应的控制程序。
3. 培养学生团队协作能力,能够与他人合作完成课程设计任务。
情感态度价值观目标:1. 培养学生对电梯控制技术及其在工程实际中应用的兴趣,激发学生主动探索新技术的热情。
2. 培养学生严谨的科学态度,养成良好的编程和设计习惯。
3. 增强学生的社会责任感,了解电梯控制系统在公共安全中的作用,认识到自己所学知识对社会的重要性。
本课程针对高年级学生,课程性质为实践性较强的专业课程。
结合学生特点和教学要求,课程目标旨在使学生通过本章节学习,将理论知识与实际应用相结合,培养具备实际工程能力的高素质人才。
通过分解课程目标为具体的学习成果,后续教学设计和评估将更有针对性,确保学生达到预期学习效果。
二、教学内容1. 电梯控制系统原理介绍:包括电梯运行原理、控制系统组成、FPGA在电梯控制系统中的应用。
教材章节:第3章“电梯控制系统概述”2. Verilog HDL语言基础:基本语法、数据类型、运算符、控制语句、模块定义等。
教材章节:第4章“Verilog HDL语言基础”3. 电梯控制模块设计:包括电梯运行模块、楼层显示模块、按键模块、门控模块等。
教材章节:第5章“电梯控制模块设计”4. 电梯控制程序编写:根据电梯控制需求,运用Verilog HDL编写相应的控制程序。
教材章节:第6章“电梯控制程序设计”5. FPGA开发流程:设计输入、综合、布局布线、仿真、下载等。
基于FPGA的电梯控制器设计
0 引言
随着高层建筑的飞速发展 , 电梯行业也随之进 入 了新 的发展 时期 。 目前 电梯 控制 主要有继 电器控 制、 单片机控制 、 P L C控制和 F P G A / C P L D控制等几 种控制方式。继电器控制方式是早期的控制方式 , 安装复杂, 通用性较差 。单片机控制方式¨ 虽在 智能控制方面有较强的功能 , 但也存在抗干扰性差 , 系统设计复杂等不足。P L C控制方式 使用梯形 图语言、 控制灵活方便 , 运行稳定可靠, 能较好地取 代继电器控制 。F P G A ( 现场可编程门阵列) 是一种 可由用户 自定 义并进行配 置的高 密度专 用集成电
a c h i e v e d w i h t mo d u l a r d e s i g n m e ho t d , p r o g r a m m e d b y he t v e r i l o g h a r d w re a d e s c i r p i t o n l a n g u a g e ( V H D L )
本文采用 F P G A芯片实现了六层客运电梯 的控 制, 经软件仿真和硬件平 台验证 , 符合设计要求 , 其
一
( 3 ) 电梯到达有停靠请求的楼层后, 经过 1 s 后 电梯门打开 , 开 门5 s 后 电梯门关闭, 电梯继续运行,
( C o mmu n i e a l i o n T r a i n i n g B a s e o f P L A G e n e r a l S t a f H e a d q u a r t e r s , X u a n h u a 0 7 5 1 0 0, He b e i P r o v i n c e , C h i n a )
基于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的电梯控制器设计一、题目要求设计三层电梯控制器,要求能根据用户在电梯内外按下的命令键,实现上升、下降、停止等功能。
电梯内的命令键主要是前往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的编程方法,对状态机也有了更进一步的认识,感谢在程序调试中出现的一系列问题,给了我学习知识的机会,也感谢老师和学长的帮助,最后,对本次作业如此长时间的迟交向老师表示深深的歉意!!。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
基于FPGA 的六层电梯控制系统郑州轻工业学院电子技术课程设计题目基于FPGA的学生姓名专业班级学号院指导教师完成时间郑州轻工业学院课程设计任务书题目基于FPGA 的六层电梯控制系统专业、班级电子信息工程10-01 学号 541001030136 姓名主要内容、基本要求、主要参考资料等:主要内容:要求学生使用硬件描述语言设计六层电梯控制系统的FPGA源程序,实现如下功能:(1)每层电梯入口处设有上下请求开关,电梯内设有顾客到达层次的停站请求开关。
(2)设有电梯入口处位置指示装置及电梯运行模式(上升或下降)指示装置。
(3)电梯到达有停站请求的楼层,开门指示灯亮,开门后,经一段时延后,电梯门关闭电梯继续进行,直至执行完最后一个请求信号后停留在当前层。
(4)电梯运行规则:当处于上升模式时,只响应比所在位置高的请求信号,由下而上逐个执行,直到最后一个上楼请求执行完毕;高层有下楼请求,则直接升到请求层,进入下降模式。
当电梯处于下降模式时则与上升模式相反。
基本要求:1、掌握FPGA 的程序设计方法。
2、掌握硬件描述语言语法。
3、掌握有限状态机的原理与实现方法。
4、程序设计完成后要求在软件中实现功能仿真。
主要参考资料:1、王锁萍.电子设计自动化(EDA)教程[M].成都:成都电子科技大学出版社,2006.2、何立民.EDA应用技术选编[M].北京:北京航空航天大学出版社,2008.完成期限:2013.6.21—2013.6.25指导教师签名:课程负责人签名:2013年6月18摘要 (I)1概述 (1)1.1课题背景及意义 (1)1.2 EDA技术及实现方法概述 (1)1.2.1 EDA技术简介 (2)1.2.2 FPGA简介 (3)1.2.3 VHDL语言介绍 (4)1.3 状态机简介 (5)2 系统方案设计 (6)2.1设计要求 (6)2.2 总体设计方案 (6)2.2.1 控制器模块化概述 (6)2.2.2 电梯上下层运行流程图 (7)2.2.3电梯运行控制流程图 (8)2.2.4 电梯控制器设计思路 (9)2.3 设计的VHDL实现 (10)2.3.1 控制器实体设计 (10)2.3.2 控制器结构体设计 (11)3 器件选型 (11)3.1 FPGA芯片选型 (11)3.2 功能模块 (12)3.2.1 主控器模块 (12)3.2.2 分频器模块 (13)3.2.3 译码器模块 (13)3.2.4 数据选择器模块 (14)4 程序仿真 (15)4.1 电梯控制器仿真分析 (15)4.2 其它模块仿真 (19)5 结论 (19)参考文献 (21)致谢 (22)附录 (23)基于FPGA 的六层电梯控制系统摘要本设计是基于电子设计自动化(EDA)技术中的甚高速集成电路硬件描述语言(VHDL)语言,运用FPGA所开发的四层电梯控制程序,采用Quartus II软件仿真。
运用有限状态机的设计方法,设计了两个进程相互配合,状态机进程作为主要进程,信号灯控制进程作为辅助进程。
在主进程中定义了7个状态,在电梯时钟的触发下,通过当前状态和信号灯信号判定下一状态。
信号灯控制进程中,信号灯存储按键请求情况,它的熄灭是由状态机进程中传出的信号来控制。
通过程序调试及运行仿真,结果表明,本程序可以完成电梯运行所在楼层显示、电梯运行方向指示、关门延时设置等。
关键词:电梯控制器 VHDL 状态机 FPGA1概述1.1课题背景及意义随高层楼宇的增加,电梯越来越多的走进了人们的生活,对人们的生活的影响越来越大。
为了让电梯更好的服务人们,各种电梯新技术不断地发展起来。
随着人们生活水平的不断提高,经济的快速发展和生产生活的需要,城市高层建筑如雨后春笋拔地而起。
与此相应,作为一种可以垂直升降运输的工具一电梯也得到迅猛的发展。
现在,电梯已完全融入我们的生活、工作及学习中,人们越来越离不开它。
因此,它的安全可靠性、迅速准确性、舒适性,对人们来说都是非常重要的。
为了确保电梯正常运行、安全使用,一般电梯都有专业的维修管理人员。
他们必须对电梯原理、性能、特点、控制、运行要全面认识和掌握,才能做到对电梯的正确使用、管理及维护。
根据我国有关部门的规定,电梯作业属于特种作业,其作业人员必须经过专门培训,并经理论考试和实践考核合格后,发给《特种作业操作证》方可上岗操作。
同时,对电梯操作人员定期考核,让他们定期参加安全技术学习,扎扎实实地做好电梯维护和保养工作,才能使人们平安长久的使用电梯。
电梯控制系统是一个相当复杂的逻辑控制系统.系统要同时对几百个信号进行接收、处理。
由于用户对电梯功能的要求不断提高.其相应控制方式也在不断发生变化。
随着EDA技术的快速发展.基于FPGA的微机化控制已广泛应用于电梯电路设计与控制的各个方面。
在经济不断发展,科学技术日新月异的今天,楼的高度已和经济发展同样的速度成长起来。
作为建筑的中枢神经,电梯起着不可或缺的作用,电梯作为建筑物内的主要运输工具,像其他的交通工具一样,已经成为我们日常生活的一个不可缺少的组成部分。
一个国家的电梯需求总量,主要受其经济增长速度、城市化水平、人口密度及数量、国家产业结构等综合因素的影响。
在全球经济持续低迷的情况下,我国国民经济仍然以较高的速度持续增长,城市化水平不断提高。
这从客观上导致了我国电梯行业的空前繁荣景象,我国已经成为全球最大的电梯市场。
上世纪80年代以来,随着经济建设的持续高速发展,我国电梯需求量越来越大。
总趋势是上升的,电梯行业进入了“第三次浪潮”。
如此庞大的市场需求为我国电梯行业的发展创造了广阔的舞台!1.2 EDA技术及实现方法概述1.2.1 EDA技术简介EDA代表了当今电子设计技术的最新发展方向,它的基本特征是:设计人员按照“自顶向下”的设计方法,对整个系统进行方案设计和功能划分,系统的关键电路用一片或几片专用集成电路(ASIC)实现,然后采用硬件描述语言(HDL)完成系统行为级设计,最后通过综合器和适配器生成最终的目标器件,这样的设计方法被称为高层次的电子设计方法。
下面介绍与EDA基本特征有关的几个概念。
1.“自顶向下”的设计方法,10年前,电子设计的基本思路还是选用标准集成电路“自底向上”地构造出一个新的系统,这样的设计方法就如同一砖一瓦建造金字塔,不仅效率低、成本高而且容易出错。
高层次设计是一种“自顶向下”的全新设计方法,这种设计方法首先从系统设计入手,在顶层进行功能方框图的划分和结构设计。
在方框图一级进行仿真、纠错,并用硬件描述语言对高层次的系统行为进行描述,在系统一级进行验证。
然后,用综合优化工具生成具体门电路的网络表,其对应的物理实现级可以是印刷电路板或专用集成电路。
由于设计的主要仿真和调试过程是在高层次上完成的,这既有利于早期发现结构设计上的错误,避免设计工作的浪费,又减少了逻辑功能仿真的工作量,提高了设计的一次成功率。
2.ASIC设计现代电子产品的复杂度日益提高,一个电子系统可能由数万个中小规模集成电路构成,这就带来了体积大、功耗大、可靠性差的问题。
解决这一问题的有效方法就是采用ASIC芯片进行设计。
ASIC按照设计方法的不同可分为全定制ASIC、半定制ASIC和可编程ASIC(也称为可编程逻辑器件)。
设计全定制ASIC芯片时,设计师要定义芯片上所有晶体管的几何图形和工艺规则,最后将设计结果交由IC厂家去进行掩模制造,做出产品。
这种设计方法的优点是芯片可以获得最优的性能,即面积利用率高、速度快、功耗低,而缺点是开发周期长,费用高,只适合大批量产品开发。
半定制ASIC芯片的版图设计方法分为门阵列设计法和标准单元设计法,这两种方法都是约束性的设计方法,其主要目的就是简化设计,以牺牲芯片性能为代价来缩短开发时间可编程逻辑芯片与上述掩模ASIC的不同之处在于:设计人员完成版图设计后,在实验室内就可以烧制出自己的芯片,无须IC厂家的参与,大大缩短了开发周期。
可编程逻辑器件自70年代以来,经历了PAL、GAL、CPLD、FPGA几个发展阶段,其中CPLD/FPGA属高密度可编程逻辑器件,目前集成度已高达200万门/片,它将掩模ASIC集成度高的优点和可编程逻辑器件设计生产方便的特点结合在一起,特别适合于样品研制或小批量产品开发,使产品能以最快的速度上市,而当市场扩大时,它可以很容易地转由掩模ASIC实现,因此开发风险也大为降低。
上述ASIC芯片,尤其是CPLD/FPGA器件,已成为现代高层次电子设计方法的实现载体1.2.2 FPGA简介目前以硬件描述语言(Verilog或 VHDL)所完成的电路设计,可以经过简单的综合与布局,快速的烧录至 FPGA 上进行测试,是现代 IC 设计验证的技术主流。
这些可编辑元件可以被用来实现一些基本的逻辑门电路(比如AND、OR、XOR、NOT)或者更复杂一些的组合功能比如解码器或数学方程式。
在大多数的FPGA里面,这些可编辑的元件里也包含记忆元件例如触发器(Flip-flop)或者其他更加完整的记忆块。
系统设计师可以根据需要通过可编辑的连接把FPGA内部的逻辑块连接起来,就好像一个电路试验板被放在了一个芯片里。
一个出厂后的成品FPGA的逻辑块和连接可以按照设计者而改变,所以FPGA可以完成所需要的逻辑功能。
FPGA一般来说比ASIC(专用集成芯片)的速度要慢,无法完成复杂的设计,而且消耗更多的电能。
但是他们也有很多的优点比如可以快速成品,可以被修改来改正程序中的错误和更便宜的造价。
厂商也可能会提供便宜的但是编辑能力差的FPGA。
因为这些芯片有比较差的可编辑能力,所以这些设计的开发是在普通的FPGA上完成的,然后将设计转移到一个类似于ASIC的芯片上。
另外一种方法是用CPLD(复杂可编程逻辑器件备)。
FPGA是由存放在片内RAM中的程序来设置其工作状态的,因此,工作时需要对片内的RAM进行编程。
用户可以根据不同的配置模式,采用不同的编程方式。
加电时,FPGA芯片将EPROM中数据读入片内编程RAM中,配置完成后,FPGA进入工作状态。
掉电后,FPGA恢复成白片,内部逻辑关系消失,因此,FPGA能够反复使用。
FPGA的编程无须专用的FPGA编程器,只须用通用的EPROM、PROM编程器即可。
当需要修改FPGA功能时,只需换一片EPROM即可。
这样,同一片FPGA,不同的编程1.2.3 VHDL语言介绍VHDL 的英文全名是 Very-High-Speed Integrated Circuit Hardware Description Language,诞生于 1982 年。
1987 年底,VHDL被 IEEE 和美国国防部确认为标准硬件描述语言。
VHDL主要用于描述数字系统的结构,行为,功能和接口。