[毕业设计精品]采用VHDL语言来设计实用三层电梯控制器_第1页
[毕业设计精品]采用VHDL语言来设计实用三层电梯控制器_第2页
[毕业设计精品]采用VHDL语言来设计实用三层电梯控制器_第3页
[毕业设计精品]采用VHDL语言来设计实用三层电梯控制器_第4页
[毕业设计精品]采用VHDL语言来设计实用三层电梯控制器_第5页
已阅读5页,还剩14页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、课程设计说明书目 录1 引言12 eda技术介绍22.1 eda概述22.2 max+plus ii软件简介23 电梯控制器设计33.1设计要求33.2电梯运行规则33.3电梯整体设计33.4端口设计说明43.5具体程序设计说明53.5.1 库声明部分53.5.2 实体部分53.5.3 结构体部分54 系统仿真95 硬件测试116 结论12参考文献13附录141 引言当今世界,部分地区人口高度密集,人和土地资源短缺的矛盾日益激化。这就注定了必须合理的利用土地去解决人与土地的矛盾。而兴建高层建筑是其中有效措施之一。因此能使人们快速便捷地到达目的楼层的电梯就应运而生了。 随着电子技术日薪月异的发展

2、,集成电路从20 世纪60年代的小规模到中规模,再到大规模集成电路,伴随着它的高速发展,eda技术、cpld 技术也得到充分发展。电梯的使用越来越普遍,已从原来只在商业大厦、宾馆使用,过度到在办公室、居民楼等场所使用,并且对电梯功能的要求也不断提高,相应地其控制方式也在不停地发生变化。对于电梯的控制,随着技术的不断发展,微型计算机在电梯控制上的应用日益广泛,现在已进入全微机化控制的时代。电梯的微机化控制主要有以下几种形式:plc控制,单片机控制,单板机控制,单微机控制,多微机控制,人工智能控制1。随着eda技术的快速发展,cpld/fpga2已广泛应用于电子设计与控制的各个方面。本设计就是使用

3、一片cpld/fpga来实现对电梯的控制的。三层电梯广泛应用在大型的货运之中。其使用便捷,货运周期短,效率高成本低,对货运事业具有相当的经济价值。电梯作为高层建筑物的重要交通工具与人们的工作日益紧密fpga/cpld作为新一代工业控制器,以其高可靠性和技术先进性,在电梯控制中得到广泛应用,从而使电梯由传统的继电器控制方式发展为计算机控制的一个重要方向,成为当前电梯控制和技术改造的热点之一。电梯控制器是控制电梯按顾客要求自动上下的装置。本文采用vhdl语言来设计实用三层电梯控制器,其代码具有良好的可读性和易理解性,源程序经a1tera公司的max+plus ii软件仿真,目标器件选用cpld器件

4、。通过对三层电梯控制器的设计,可以发现本设计有一定的扩展性,而且可以作为更多层电梯控制器实现的基础。 2 eda技术介绍2.1 eda概述eda技术是20世纪90年代初从计算机辅助设计(computer adied design)、计算机辅助制造(computer adied manufacture)、计算机辅助测试(computer adied testing)和计算机辅助工程(computer adied engineering)的概念发展而来的。随着超大规模集成电路(very large scale integration)规模和技术复杂度的急剧增长,一块芯片内集成门可达几十万甚至几百万

5、门,并且还在迅速增长,电子系统人工设计已十分困难,必须依靠电子设计自动化技术。eda技术的基本特征和基本工具总的来说,现代eda技术的基本特征是采用高级语言描述,具有系统级仿真和综合能力。它主要采用并行工程和“自顶向下”的设计方法,使开发者从一开始就要考虑到产品生成周期的诸多方面,包括质量、成本、开发时间及用户的需求等等,然后从系统设计入手,在顶层进行功能方框图的划分和结构设计,在方框图一级进行仿真、纠错、并用vhdl、verilog-hdl、abel等硬件描述语言对高层次的系统行为进行描述,在系统一级进行验证,然后再用逻辑综合优化工具生成具体的门级逻辑电路的网表3,其对应的物理实现级可以是印

6、刷电路板或专用集成电路。利用eda技术进行电子系统的设计,具有以下几个特点:用软件的方式设计硬件;用软件方式设计的系统到硬件系统的转换是由相关的开发软件自动完成;设计过程中可用相关软件进行各种仿真;系统可现场编程,在线升级;整个系统可集成在一个芯片上,具有体积小、功耗低及可靠性高的特点。因此,eda技术是现代电子设计的发展趋势。电子设计自动化(eda)是一种实现电子系统或电子产品自动化的技术,它与电子技术、微电子技术的发展密切相关,它吸收了计算机科学领域的大多数最新研究成果,以高性能的计算机作为工作平台,促进了工程发展。2.2 max+plus ii软件简介 max+plus是altera公司

7、提供的fpga/cpld开发集成环境,altera是世界上最大可编程逻辑器件4的供应商之一。max+plus界面友好,使用便捷,被誉为业界最易用易学的eda软件。在max+plus上可以完成设计输入、元件适配、时序仿真和功能仿真5、编程下载整个流程,它提供了一种与结构无关的设计环境,使设计者能方便地进行设计输入、快速处理和器件编程6。3 电梯控制器设计3.1设计要求 eda设计实现一个3层电梯的控制系统。系统要求如下: (1)电梯到达楼层时,能发出指示信号(数码管显示楼层号); (2)能指示电梯的运行状态(上行或下行); (3)电梯的门操作具有关门延时设置(当按下梯内关门按钮时立刻响应关门操作

8、,否则延时固定时间后响应关门操作); (4)正确响应各楼层的上行和下行请求(各楼层设置上行和下行选择按钮)。3.2电梯运行规则 电梯运行规则:当电梯处在上升模式时,只响应比电梯所在位置高的上楼请求,由下向上逐个执行,直到最后一个上楼请求执行完毕。如果高层有下楼请求,直接升到有下楼请求的最高楼层,然后进入下降模式。当电梯在一楼时,不管是梯内梯外,电梯都只可能接收到上升的请求信号。此时,电梯就进入预上升状态,准备作上升运行。如果电梯没有接收到请求信号,电梯则在一楼待机。当电梯在二楼时,电梯则可能出现三种情况:电梯并没有接收到梯内梯外的任何请求信号时,电梯停在二楼待机;电梯接收到上升请求信号,进入预

9、上升状态;电梯接收到下降请求信号,进入预下降状态。 当电梯在三楼时,不管是梯内梯外,电梯都只可能接收到下降的请求信号。此时,电梯就进入预下降状态,准备作下降运行。如果电梯没有接收到请求信号,电梯则停在二楼待机。3.3电梯整体设计电梯控制器采用状态机来实现,思路比较清晰。可以将电梯等待的每秒钟以及开门、关门都看成一个独立的状态。由于电梯又是每秒上升或下降一层,所以就可以通过一个统一的1秒为周期的时钟来触发状态机。根据电梯的实际工作情况,可以把状态机设置10个状态,分别是“电梯停留在第1层”、“开门”、“关门”、“开门等待第1秒”、“开门等待第2秒”、“开门等待第3秒”、“开门等待第4秒”、“上升

10、”、“下降”和“停止状态”。各个状态之间的转换条件可由上面的设计要求所决定。电梯初始状态为一层,处在开门状态,开门指示灯亮。一层电梯入口处设有上楼请求开关,二层电梯入口设有上、下楼请求开关,三层电梯入口处设有下楼请求开关,电梯内部设有乘客到达楼层的停站请求开关及其显示,电梯内部还设有乘客关门请求。设置电梯所处位置指示(用数码管表示)及电梯上升或下降指示。电梯到达有停站请求的楼层后,电梯门打开,开门指示灯亮。当按下梯内关门按钮时立刻响应关门操作,否则,开门4秒后,电梯门关闭,开门指示灯灭,电梯继续运行,直至执行完最后一个请求信号后停在当前层。电梯控制系统能记忆电梯内外的请求信号,并按照电梯运行规

11、则工作,每个请求信号执行完毕后随即清除。3.4端口设计说明由功能要求得到本程序设计的端口必须包括:时钟信号(clk);系统复位信号(reset);一楼电梯外人的上升请求信号(up1);二楼电梯外人的上升请求信号(up2);二楼电梯外人的下降请求信号(down2);三楼电梯外人的下降请求信号(down2);电梯内部人到达楼层的请求信号(stop1、stop2、stop3);电梯内部关门请求信号(close);所有输入信号等于1,表示有请求,等于0,表示无请求;电梯外部上升指示灯(uplight)和下降请求指示灯(downlight),它们与up1、up2、down2、down3信号相对应;电梯内

12、部乘客到达楼层的停站请求灯(stoplight),该信号与stop1、stop2和stop3信号相对应;电梯运行模式指示(udsig),1代表下降模式,0代表上升模式;电梯所在楼层指示(position),表示电梯在对应楼层;电梯所在楼层数码管表示(dout),该信号与position信号相对应;电梯门状态指示(doorlight),1表示开门,0表示关门。3.5具体程序设计说明整段代码由三大部分组成:库声明,实体,结构体。3.5.1 库声明部分调用vhdl库,通过library语句本程序应用了vhdl库中的”通用ieee库”和”标准std库”。 library ieee; use ieee.

13、std_logic_1164.all; use ieee.std_logic_arith.all; use ieee.std_logic_unsigned.all;3.5.2 实体部分实体部分列出了代码所用到的所用输入输出端口。结构体部分共使用了分频进程,电梯状态进程,读按键、控制指示灯进程和信号灯进程4个进程。主控制器系统由vhdl语言实现,其输入输出端口定义如下: entity flift is port(clk:in std_logic; 时钟信号 close :in std_logic; 立即关门 rightlight:buffer std_logic; 门灯信号 up1:in std

14、_logic; 楼上升按钮 up2:in std_logic; 二楼上升按钮 down2:in std_logic; 二楼下将按钮 down3:in std_logic; 三楼下将按钮 uplight:buffer std_logic_vector(3 downto 1); 上升指示灯 dnlight:buffer std_logic_vector(3 downto 1); 下将指示灯 stop1,stop2,stop3:in std_logic; 停止按钮 stoplight:buffer std_logic_vector(3 downto 1); 停止指示灯 position:buffer

15、 integer range 1 to 3; 楼层信号 led: buffer std_logic_vector(3 downto 0); 楼层指示灯 doorlight:out std_logic; 门灯信号 udsig:buffer std_logic); 电梯运行状态3.5.3 结构体部分 使用状态机来实现电梯功能。 在结构体中,设计了俩个进程互相配合,一个是状态机进程作为主要进程,另外一个是信号灯控制进程作为辅助进程。状态机进程中的很多判断条件是以信号灯进程产生的信号灯信号为依据的,而信号灯进程中信号灯的熄灭又是由状态机进程中传出的clearup和cleardn信号来控制。 在状态机进

16、程中,在电梯的上升状态中,通过对信号灯的判断,决定下一个状态是继续上升还是停止;在电梯下降状态中,也是通过对信号灯的判断,决定下一个状态是继续下降还是停止;在电梯停止状态中,判断是最复杂的,通过对信号的判断,决定电梯是上升、下降还是停止。在信号灯控制进程中,由于使用了专门的频率较高的按键时钟,所以使得按键的灵敏度增大,但是时钟频率不能过高,否则容易使按键过于灵敏。按键后产生的点亮的信号灯(逻辑值为1)用于作为状态机进程中的判断条件,而clearup和cleardn信号为逻辑l使得相应的信号灯熄灭。 分频进程:该进程的目的是产生不同频率的两个时钟,电梯控制时钟fliclk和按键控制时钟buttc

17、lk。 process(clk) 产生电梯控制时钟fliclk和按键控制时钟buttclk begin if (clkevent and clk=1) then q=q+1; end if; buttclk=q(0); fliclkdoorlight=1; position=1; pos:=1;stateclearup=0; cleardn=0; if(close=1) then state=doorclose; else state=wait2; end if;开门等待2秒:如果此时有关门请求,则转入下一状态doorclose;如果没有请求,则下一状态为wait3。开门等待3秒:如果此时有关

18、门请求,则转入下一状态doorclose;如果没有请求,则下一状态为wait4。开门等待4秒:该状态的下一状态为doorclose。关门状态:此时电梯开门。该状态要分为2种情况进行分析即电梯处于上升情况或下降情况。当处于上升模式,同时电梯位于三层,如果此时电梯的内部与外部都没有请求,电梯转为下降模式,并进入下一状态doorclose;如果此时电梯内部有在三层下的请求或三层外部有下楼请求,电梯进入下一状态dooropen;否则电梯转为下降模式,并进入下一状态down。 if (position=3) then if (stoplight=000 and uplight=000 and downl

19、ight=000 ) then udsig=1; state=doorclose; elsif(stoplight(3)=1 or downlight(3)=1) then state=dooropen; else udsig=1; state=down; end if;当处于上升模式,同时电梯位于二层,如果此时电梯的内部与外部都没有请求,电梯仍为上升模式,并进入下一状态doorclose;如果此时电梯内部有在二层下的请求或二层外部有下楼请求或上楼请求,电梯进入下一状态dooropen;如果此时电梯内部有在三层下的请求或三层外部有下楼请求,电梯仍为上升模式,并进入下一状态up;否则电梯转为下降

20、模式,并进入下一状态down。 elsif (position=2) then if(stoplight=000 and uplight=000 and downlight=000) then udsig=0; state=doorclose; elsif (stoplight(3)=1 or downlight(3)=1) then udsig=0; state=up; else udsig=1; stateposition=position+1; pos:=pos+1; if (pos=2 and (uplight(2)=1 or downlight(2)=1or stoplight(2)

21、=1 ) then state=stop; elsif(pos=2 and (stoplight(3)=1 or downlight(3)=1) then state=up; else state=stop; end if;下降:电梯所在楼层数减一。如果此时电梯在二层同时二层外部有上升或下降的请求或电梯内部有在二层下的请求,则进入下一状态stop。如果此时电梯在二层同时一层外部有上升的请求或电梯内部有在一层下的请求,则进入下一状态down;否则进入下一状态stop。停止:该状态的下一状态为dooropen。开门状态:电梯开门同时清除上升下降的请求,并转入下一状态wait1,其它的状态都转入下一

22、状态stopup=1。如果清除上升的信号有效,则电梯内部相应楼层停止信号清除,同时电梯外部相应楼层上升信号清除;否则当有上升请求时相应的电梯外部上升指示灯亮。 if(clearup=1) then stoplight(position)=0; uplight(position)=0; else if(up1=1)then uplight(1)=1; elsif(up2=1)then uplight(2)chip=lift;input pin=126; up1chip=lift;input pin=8;按键1 up2chip=lift;input pin=9;按键2 down2chip=lift

23、;input pin=10;按键3 down3chip=lift;input pin=12;按键4 stop1chip=lift;input pin=13;按键5 stop2chip=lift;input pin=17;按键6 stop3chip=lift;input pin=18;按键7 closechip=lift;input pin=19;按键8 doorlightchip=lift;output pin=20 udsig0chip=lift;output pin=21 udsig1chip=lift;output pin=22 led0chip=lift;output pin=30 l

24、ed1chip=lift;output pin=31 led2chip=lift;output pin=32 led3chip=lift;output pin=336 结论分析设计要求可知用状态机实现电梯的控制比较简便,通过各个状态的分析找出关系,逐步分解各个状态,进行设计。电梯到达楼层时,能发出指示信号;能指示电梯的运行状态;电梯的门操作具有关门延时设置;正确响应各楼层的上行和下行请求。虽然本设计能基本实现上述的功能,但是也存在一定的问题:仿真中参数的设置问题。参数的设置对于整个设计可谓至关重要。在程序仿真之初,这个问题就曾一度被忽视。造成在调试的过程中对信号随意设置,导致仿真失败,还以为是

25、程序出错。例如,在程序仿真之初,clk信号的周期设置为100ms,由仿真的效果看到只能实现最基本的楼层显示,其他功能都失效。后来通过对clk信号的周期进行调试,当其减少到25ms时,电梯的上述功能都能基本实现;信号传输延时的问题。通过调试仿真观察,可以看到本系统的信号延时在10ms左右。但当改变仿真时的一些参数时(如仿真时间、时钟信号的周期、分频信号的周期以及器件的选用等),可以发现延时又会发生比较细微的变化。在日常应用中,由于选用的硬件以及使用环境的问题,延时问题可能会进一步显著。如何解决信号的延时,也是本设计未来需解决的主要问题之一。另外endtime的值需要设置的长一点:20us左右,这

26、样就可以观察到完整的仿真结果。 通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。在设计的过程中遇到问题,可以说得是困难重重,第一次课程设计,难免会遇到过各种各样的问题,同时在设计的过程中发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固。参考文献1 潘松,黄继业 eda技术实用教程北京:科学出版社,20022 甘历vhdl应用与开发实际北京:科学出版社,20033 梁勇,王留奎eda技术教程北京:人民邮电出版社,20104

27、柳春锋电子设计自动化(eda)北京:北京理工大学出版社,20055 黄仁欣eda技术实用教程北京:清华大学出版社,2006.6 朱正伟eda技术及应用 北京:清华大学出版社,2005 附录library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_arith.all;use ieee.std_logic_unsigned.all;entity flift isport(clk,up1,up2,down2,down3,stop1,stop2,stop3,close:in std_logic; uplight,downlight,stop

28、light:buffer std_logic_vector(3 downto 1); udsig:buffer std_logic; position:buffer integer range 1 to 3; doorlight:out std_logic; dout:out std_logic_vector(3 downto 0);end flift;architecture behav of flift istype state_type is(stoponl,dooropen,doorclose,wait1,wait2,wait3,wait4,up,down,stop); signal

29、state:state_type:=stoponl; signal clearup,cleardn,buttclk,fliclk:std_logic; signal q:std_logic_vector(3 downto 0);beginprocess(clk) -分频进程,产生电梯控制时钟fliclk和按键控制时钟buttclk begin if (clkevent and clk=1) then q=q+1; end if; buttclk=q(0); fliclkdoorlight=1; position=1; pos:=1;stateclearup=0; cleardn=0; -开门等

30、待1秒 if(close=1) then state=doorclose; else state -开门等待2秒 if(close=1) then state=doorclose; else state -开门等待3秒 if(close=1) then state=doorclose; else statestatedoorlight=0; -关门状态 if (udsig=0) then -上升情况 if (position=3) then -电梯在3层 if (stoplight=000 and uplight=000 and downlight=000 ) then udsig=1; st

31、ate=doorclose; elsif(stoplight(3)=1 or downlight(3)=1) then state=dooropen; else udsig=1; state=down; end if; elsif (position=2) then -电梯在2层 if(stoplight=000 and uplight=000 and downlight=000) then udsig=0; state=doorclose; elsif(stoplight(2)=1 or downlight(2)=1 or uplight(2)=1) then state=dooropen;

32、 elsif (stoplight(3)=1 or downlight(3)=1) then udsig=0; state=up; else udsig=1; state=down; end if; elsif (position=1) then -电梯在1层 if(stoplight=000 and uplight=000 and downlight=000)then udsig=0; state=doorclose; elsif(stoplight(1)=1 or uplight(1)=1) then state=dooropen; else udsig=0; state=up; end

33、if; end if; elsif (udsig=1) then -下降情况 if (position=1) then -电梯在1层 if (stoplight=000and uplight=000 and downlight=000) then udsig=0; state=doorclose; elsif(stoplight(1)=1 or uplight(1)=1) then state=dooropen; else udsig=0; state=up; end if; elsif(position=2) then -电梯在2层 if(stoplight=000 and uplight=

34、000 and downlight=000) then udsig=1; state =doorclose; elsif(stoplight(2)=1 or downlight(2)=1 or uplight(2)=1) then state=dooropen; elsif(stoplight(1)=1 or uplight(1)=1) then udsig=1; state=down; else udsig=0; state=up; end if; elsif(position=3) then -电梯在3层 if(stoplight =000 and uplight=000 and downlight=000)then udsig=1; state=doorclose; elsif(stoplight(3)=1 or downlight(3)=1) then state=dooropen; else udsig=1; stateposition=positio

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论