EDA课程设计电梯控制的实现_第1页
EDA课程设计电梯控制的实现_第2页
EDA课程设计电梯控制的实现_第3页
EDA课程设计电梯控制的实现_第4页
EDA课程设计电梯控制的实现_第5页
已阅读5页,还剩2页未读 继续免费阅读

下载本文档

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

文档简介

1、课程设计(综合实验)报告( 2010 - 2011 年度第 1 学期)名 称: eda课程设计 题 目: 电梯控制的实现 院 系: 班 级: 学 号: 学生姓名: 指导教师: 设计周数: 1周 成 绩: 日期: 年 月 日一、课程设计的目的与要求用mealy有限状态机设计二个楼层电梯控制程序。用vhdl语言写出mealy有限状态机控制模块。mealy有限状态机的输出受控于当前的状态和信号输入的变化,一旦这敏感信号被测,输出的信号就依赖于它们得到确定。电梯控制器的工作原理:当电梯空闲时,其状态等待着其他楼层的请求,一旦有请求输入信号,电梯移动到该请求信号的楼层,这时引起电梯门被关闭。引起电梯门关

2、闭的条件有如下二个:必须在地面楼层状态stateground;首层有请求输入信号reqfirst。电梯开始移动到请求层,在移动过程中state从ground转变为goingfirst。当到达请求层后,电梯门被打开并且请求灯熄灭,此状态转换为first状态。这时如有其他楼层请求信号输入将引起电梯门的关闭(如地面层有楼层请求信号reqground)。当电梯门正在做关闭动作时,同时又要做重新打开电梯门的动作,其条件必须有当前楼层请求信号reqfirst输入(其他请求信号均被忽略)。电梯门关闭以后,电梯可再次响应其他楼层请求,即这时电梯state状态为first状态,并且又从地面层来一个请求信号req

3、ground,将会引起电梯state状态从first状态改变为goingground状态,电梯开始往下运行。在未到达目的地之前,其他请求信号均被忽略。二、设计正文本设计是基于vhdl语言开发的两层电梯控制器。以quartus 为开发环境,最终在eda实验箱上实现其演示的基本功能。其功能包括:显示电梯当前所在楼层,显示有请求发生的楼层,响应楼层请求,关门延时设置,电梯开关门显示。具体描述为:1、 电梯外部有请求开关,一楼一个,二楼一个;电梯内部有乘客到达层次的请求开关。2、 设有电梯所处位置指示装置和电梯运行模式(上升或下降)指示装置。3、 电梯到达请求楼层后,电梯门开启(电梯门指示灯亮),开门

4、四秒后,电梯门关闭(电梯门指示灯灭),电梯继续响应请求或回到初始状态。4、 电梯初始状态为停在1楼,关门。5、 电梯上升或下降时,终止其他操作。6、 当电梯关门时,同层有请求,先响应同层请求(开门),再响应其他请求(上升或下降)。具体程序如下:library ieee; use ieee.std_logic_1164.all;use ieee.std_logic_arith.all; use ieee.std_logic_unsigned.all;entity dianti is port(clk,reset,up1,down2,stop1,stop2:in std_logic;-按键共有4个

5、,其中电梯内部2个:stop1,stop2,电梯外部一楼一个up1,二楼一个down2 stoplight:buffer std_logic_vector(2 downto 1);-stoplight对应stop按键 uplight,downlight:buffer std_logic;-uplight,downlight分别对应up1,down2按键 udsig:buffer std_logic; -电梯的状态,0代表(预)上升,1代表(预)下 position:buffer integer range 1 to 2;-电梯的位置 doorlight:buffer std_logic);-门

6、灯,开门灯亮,关门灯灭 end dianti;architecture behav of dianti istype state_type is(stopon1,dooropen,doorclose,wait1,wait2,wait3,wait4,up,down,stop);-十个状态,初始,开门,关门,延时14,上升,下降,停signal state:state_type:=stopon1;signal clearup,cleardn,anjianclk,dianticlk:std_logic;-上升清零,下降清零,按键时钟,电梯时钟 signal q:std_logic_vector(3

7、downto 0);begin process(clk) -设定按键时钟和电梯时钟,外部时钟周期设为50ms begin if(reset=1) then q=0000; elsif rising_edge(clk) then q=q+1; end if; anjianclk=q(0); -二分频 dianticlk=q(3); -十六分频 end process; cont:process(reset,dianticlk) variable pos:integer range 3 downto 1; begin if reset=1 then state=stopon1; clearup=0

8、; cleardndoorlight=1; position=1;pos:=1; statestateclearup=0; cleardn=0; statestatestatedoorlight=0; -从开门到关门经历5个电梯时钟周期 if udsig=0 then -(预)上升状态时 if position=2 then-电梯在二楼时 if stoplight=00 and uplight=0 and downlight=0 then udsig=1; state=doorclose; elsif stoplight=10 then state=dooropen; elsif downli

9、ght=1 then state=dooropen; else udsig=1; state=down; end if; elsif position=1 then -电梯在一楼时 if stoplight=00 and uplight=0 and downlight=0 then udsig=0; state=doorclose; elsif stoplight=01 then state=dooropen; elsif uplight=1 then state=dooropen; else udsig=0; state=up; end if; end if; elsif udsig=1 t

10、hen -(预)下降状态时 if position=1 then -电梯在一楼 if stoplight=00 and uplight=0 and downlight=0 then udsig=0; state=doorclose; elsif stoplight=01 then state=dooropen; elsif uplight=1 then state=dooropen; else udsig=0; state=up; end if; elsif position=2 then-电梯在二楼时 if stoplight=00 and uplight=0 and downlight=0

11、 then udsig=1; state=doorclose; elsif stoplight=10 then state=dooropen; elsif downlight=1 then state=dooropen; else udsig=1; stateposition=position+1; pos:=pos+1; if (pos=2) then stateposition=position-1; pos:=pos-1; if (pos=1) then statestatedoorlight=1; clearup=1; cleardn=1; statestate=stopon1; en

12、d case; end if;end process cont; butt:process(reset,anjianclk) -设定按键begin if reset=1 then stoplight=00; uplight=0; downlight=0; elsif rising_edge(anjianclk) then if clearup=1 then stoplight(position)=0; uplight=0; else if up1=1 then uplight=1; end if; end if; if cleardn=1 then stoplight(position)=0;

13、 downlight=0; else if down2=1then downlight=1; end if; end if; if stop1=1 then stoplight(1)=1; end if; if stop2=1 then stoplight(2)=1; end if; end if; end process butt; end behav; 功能分析:此程序一共有三个进程(process):时钟设定,状态机设定,按键设定。状态机进程的运行基于电梯时钟dianticlk,此时钟为外部时钟的周期是外部时钟周期的十六倍;按键设定进程基于按键时钟anjianclk,此时钟的周期为外部时

14、钟周期的两倍。按键时钟周期比电梯时钟周期短,这就意味着按键设定进程比状态机进程快,这就保证了每一次按键都能扫描并保留而不会被状态机进程中的清零程序消除。一共有7个灯显示电梯的状况:stoplight12、uplight,downlight、udsig、position12、doorlight。电梯的初始状态是停在一楼,门关。复位键reset可实现电梯的初始功能。电梯在一楼时,position1=1,其灯亮,并且电梯一直保持预上升状态,udsig=1,其灯亮。当接到一楼外部请求信号(up1)时,uplight亮,电梯门打开,doorlight亮。四秒后,电梯门关,doorlight灭。这时,只有

15、收到去二楼的请求(stop2)时,才会上二楼,此时stoplight2亮,直到门开为止。若门关时接收到的是stop1的请求,则电梯不上二楼,门开,四秒后门再关闭。当电梯停在二楼是,情况类似。仿真结果如下图:电梯在一楼,乘客在外部按up1请求进入,进入电梯后按stop2请求上二楼电梯在一楼,乘客在外部按up1请求进入,进入电梯后按stop1请求出电梯电梯在二楼,乘客在外部按down2请求进入,进入电梯后按stop1请求下一楼三、课程设计总结本设计是基于vhdl语言开发的两层电梯控制器。以quartus 为开发环境,最终在eda实验箱上实现其演示的基本功能。其功能包括:显示电梯当前所在楼层,显示有请求发生的楼层,响应楼层请求,关门延时设置,电梯开关门显示。这个课程设计还有很多不足之处:1、电梯各个进程依赖于3个不同的时钟,这样做虽然比较精确但是显得有些多余,经老师的指导后发现其实除了开关门过程时需要时钟以外其他地方不用时钟也没有关系。2、没有考虑到消抖问题。3、电梯控制程序只实现了两层楼电梯的控制,这种电梯在现实生活中应用很少,而且此程序不方便向更多层电梯控制器程序扩展。本课程设计遇到了不少困难,主要原因是由于平时学习没有特别系统认真,所以对vhdl语言没有熟练掌握,很多语句的具体含义和应用都不是很了解,编程时遇到一定的困难。我是第一次接触这种eda实验箱,第一次设计一个完整的程序然

温馨提示

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

评论

0/150

提交评论