EDA三层电梯控制设计.doc_第1页
EDA三层电梯控制设计.doc_第2页
EDA三层电梯控制设计.doc_第3页
EDA三层电梯控制设计.doc_第4页
EDA三层电梯控制设计.doc_第5页
已阅读5页,还剩14页未读 继续免费阅读

下载本文档

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

文档简介

eda三层电梯控制设计目 录1课程设计的目的和要求-12 供料单元的硬件掌握- 12.1 供料单元的功能简介-12.2供料单元的硬件结构-13 供料单元的控制流程-34 程序的编写和调试-45 wincc控制界面制作-46心得体会-5附件1-7附件2-121 前言由于高密度现场可编程逻辑器件和专用集成电路的飞速发展,传统设计技术已经不合适大规模及超大规模集成电路,以往分立的数字电路已经可编程逻辑器件所取代。电子设计自动化eda技术正是为了适应现代电子产品设计的要求,吸收多学科最新成果而形成的一门技术。现代电子设计技术的核心是eda技术。eda技术就是依靠功能强大的电子计算机,在eda工具软件平台上,对以硬件描述语言hdl为系统逻辑描述手段完成的设计文件,自动地完成逻辑编译、化简、分割、综合、优化和仿真,直至下载到可编程逻辑器件cpld/fpga或专用集成电路asic芯片中,实现既定的电子电路设计功能。eda技术极大地提高了电子电路设计效率,缩短了设计周期,节省了设计成本。eda技术包括硬件描述语言hdl、eda工具软件、可编程逻辑器件和实验开发系统等方面内容。目前,国际上流行的硬件描述语言主要有vhdl、verilog hdl和ahdl。eda工具在eda技术应用中占据极其重要的位置,利用eda技术进行电路设计的大部分工作是在eda软件工作平台上进行的。eda工具软件主要包括设计输入编辑器、仿真器、hdl综合器、适配器(或布局布线器)及下载器等5个模块。今天,eda技术已经成为电子设计的重要工具,无论是设计芯片还是设计系统,如果没有eda工具的支持,都将是难以完成的。eda工具已经成为现代电路设计师的重要武器,正在发挥越来越重要的作用。 2 设计目的通过eda课程设计,巩固所学的理论知识,并加深我们对eda知识的理解。通过使用quartus2软件进行程序编写和调试,逐步掌握使用quartus2软件,并可以熟练的掌握编程和调试技巧。通过使用gw48系eda实验箱进行实物仿真验证,使我们对fpga实物有进一步的了解,并掌握quartus2的下载技巧,还有gw48实验箱的使用方法。3 设计要求要求用fpga设计实现一个3层电梯的控制系统。系统的要求如下:(1)电梯运行规则:当电梯处在上升模式时,只响应比电梯所在位置高的上楼请求,由下向上逐个执行,直到最后一个上楼请求执行完毕。如果高层有下楼请求,直接升到有下楼请求的最高楼层,然后进入下降模式。电梯处在下降模式时,工作方式与上升模式相反。设电梯共有3层,每秒上升或下降一层。(2)电梯初始状态为一层,处在开门状态,开门指示灯亮。(3)每层电梯入口处均设有上下请求开关,电梯内部设有乘客到达楼层的停站请求开关及其显示。(4)设置电梯所处位置的指示及电梯上升或下降的指示。(5)电梯到达有停站请求的楼层后,电梯门打开,开门指示灯亮。开门4妙后,电梯门关闭,开门指示灯灭,电梯继续运行,直至执行完最后一个请求信号后停在当前层。(6)电梯控制系统能记忆电梯内外的请求信号,并按照电梯运行规则工作,每个请求信号执行完毕后清除。 附加功能:1.显示开门时间 2.当电梯在5秒内无任何请求时电梯自动下降到一楼并停在一楼。根据电梯控制系统的设计要求,除了具备两个时钟信号clk,一个是电梯时钟信号,另一个是按键时钟信号。以外,还应该定义输入信号和输出信号。输入信号定义如下:系统复位信号:reset,高电平有效;电梯入口处一层、二层的上楼请求开关:f1upbuttion、f2upbuttion;电梯入口处二层、三层的下楼请求开关:f2dnbuttion、f3dnbuttion;电梯内部到达楼层的停站请求开关:stoplbuttion、stop2buttion、stop3buttion。所有输入信号的规定为:输入信号等于1,表示有请求,信号等于0,表示无请求。输出信号定义如下:电梯外部上升和下降请求指示灯:uplight和downlight,这些信号与f1upbuttion、f2upbuttion、f2dnbuttion、f3dnbuttion信号相对应;电梯内部乘客到达楼层的停站请求灯:stoplight,该信号与stoplbuttion、stop2buttion、stop3buttion信号相对应;电梯运行模式指示:udsig,1代表下降模式,0代表上升模式;电梯所在楼层指示:position,表示电梯在对应楼层;电梯门状态指示:doorlight,1表示开门,0表示关门。 4 程序设计4.1 三层电梯控制器的实体设计首先考虑输入端口,一个复位端口reset,用于系统不正常时回到初始状态;在电梯外部必须有升降请求端口,一层不需要有下降请求,三层不需要有上升请求,二层则上升下降请求端口都有;在电梯内部应该有各层的停止请求按钮;一个电梯时钟输入端口,以1秒为周期,用于驱动电梯的上升,下降。开门以及关门动作;另外一个按键时钟输入端口,频率要比电梯的高得多在这里要64hz。其次是输出端口,有升降请求信号以后,就得有一个输出端口指示是否被响应,同样,在电梯内部也应该有输出端口来显示各层停留是否响应。在电梯外部需要一个端口来显示电梯所在的位置,电梯开门,关门状态也要用一个端口来显示;为了观察电梯的升降状态,也要有一个端口来指示电梯的升降状态。最后还要显示开门时间,就要有一个端口来输出。4.2 三层电梯的控制器设计首先说明一下状态。状态机设计了10个状态,分别是电梯停留在一层(stopon1),开门(dooropen),关门(doorclose),开门等待1秒(doorwait1),开门等待2秒(doorwait2),开门等待3秒(doorwait3),开门等待4秒(doorwait4),上升(up),下降(down),和停止(stop)。在结构体中,设计两个进程互相配合,一个是状态机进程的主要进程,另一个是信号灯控制进程作为补助的进程。状态机进程中的很多判断条件是以信号灯进程产生的信号为依据的,而信号灯进程中信号的熄灭又是以状态机进程中传出的clearup,cleardn 信号来控制的。在状态机进程中,在电梯上升状态中,通过对信号灯的判断,决定下一个状态是继续还是停止;在电梯下降状态中,也是通过对信号灯的判断,决定下一个状态是继续下降还是停止。在信号灯控制进程中,由于使用了专门的频率比较高的按键时钟,所以按键灵敏度增大,但是时钟频率不能太高,否则容易按键过于灵敏。按下按键后产生的点亮的信号灯用于作为状态机进程中判断条件,而clearup和cleardn信号为逻辑1时相应的信号灯熄灭。根据电梯的状态变化画出它的状态流程图如附件14.3 程序的编写和调试通过4.1和4.2详细分析,已经清楚的弄清程序的基本结构,输入输出端口,还有最重要的状态机变化。所以就可以编写程序了,通过多次的排错和纠正错误,调出最终的程序。详细的源程序和相应的注释在附件25 下载程序到gw48实验箱验证附件2:源程序library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;use ieee.std_logic_arith.all;-输入输出口定义entity threeflift isport(buttonclk: in std_logic;liftclk: in std_logic;qzsbutton: in std_logic;reset: in std_logic;f1upbutton:in std_logic; -一楼上升请求f2upbutton:in std_logic; -二楼上升请求f2dnbutton:in std_logic; -二楼下降请求f3dnbutton:in std_logic; -三楼下降请求fuplight: buffer std_logic_vector(3 downto 1); -上升指示灯fdnlight:buffer std_logic_vector(3 downto 1); -下降指示灯stop1button,stop2button,stop3button:in std_logic;stoplight: buffer std_logic_vector(3 downto 1);position: buffer integer range 1 to 3;timelight:buffer integer range 0 to 4; -开门时间显示灯doorlight:out std_logic;udsig: buffer std_logic); - 下降指示灯end threeflift;- -architecture art of threeflift istype lift_state is -十个状态的定义(stopon1,dooropon,doorclose,doorwait1,doorwait2,doorwait3,doorwait4,up,down,stop);signal mylift: lift_state;signal clearup: std_logic; -用于清除上升请求信号signal cleardn: std_logic; -用于清除下降请求信号signal stop1: std_logic; - 用于电梯自动下到一楼begin ctrlift: process(reset,liftclk)variable pos: integer range 3 downto 1;variable tim: integer range 5 downto 0; -用于检测电梯5秒内无任何请求beginif reset=1 then -初始化时mylift=stopon1;clearup=0;cleardndoorlight=1;position=1; pos:=1;mylifttimelight=1;myliftclearup=0;cleardn=0;timelight=2;myliftmylift=doorwait4;timelightmylift=doorclose;timelightdoorlight=0;timelight=0;-电梯在关门状态下执行if udsig=0 then if position=3 thenif stoplight=000 and fdnlight=000 and fuplight=000thenudsig=1; mylift=doorclose;else udsig=1;tim:=0;mylift=down;end if;elsif position=2 thenif stoplight=000 and fdnlight=000 and fuplight=000thenudsig=0;tim:=tim+1;mylift=doorclose;if tim=5 then stop1=1;tim:=0; -若5秒内无任何请求电梯下到一楼else stop1=0;end if;elsifstoplight(3)=1 or (stoplight(3)=0 and fdnlight(3)=1)thenudsig=0;mylift=up;tim:=0;else udsig=1;mylift=down;tim:=0;end if;-elsif position=1 then tim:=0;stop1=0;if stoplight=000 and fdnlight=000 and fuplight=000then udsig=0;mylift=doorclose;else udsig=0;mylift=up;end if;end if;-elsif udsig=1 then if position=1 then tim:=0;stop1=0;if stoplight=000 and fuplight=000 and fdnlight=000 thenudsig=0;mylift=doorclose;else udsig=0;tim:=0;mylift=up;end if;elsif position=2 thenifstoplight=000 and fuplight=000 and fdnlight=000 thenudsig=1;tim:=tim+1;mylift=doorclose; if tim=5 then stop1=1; tim:=0;else stop1=0; -若5秒内无任何请求电梯下到一楼end if;elsif stoplight(1)=1or(stoplight(1)=0 and fuplight(1)=1) thenudsig=1;mylift=down;tim:=0;else udsig=0;mylift=up;tim:=0;end if;elsif position=3 then if stoplight=000 and fuplight=000 and fdnlight=000 then udsig=1;tim:=tim+1;mylift=doorclose;if tim=5 then stop1=1;tim:=0; -若5秒内无任何请求电梯下到一楼else stop1=0;end if;else udsig=1;tim:=0;mylift=down;end if;end if;if stoplight=000 and fuplight=000 and fdnlight=000 thentim:=tim+1;else tim:=0;if tim=2 then if position=1 thentim:=0;else tim:=0;stop1position=position+1;pos:=pos+1;if pos3 and(stoplight(pos)=1 or fuplight(pos)=1)then mylift1 and(stoplight(pos)=1or fdnlight(pos)=1)then mylift=stop;else myliftposition1 and(stoplight(pos)=1 or fdnlight(pos)=1)then mylift=stop;elsif pos=1 and(stoplight(pos)=1or fuplight(pos)=1)then mylift=stop;else myliftmyliftdoorlight=1;if udsig=0 thenif position=2 and (stoplight(position)=1 or fuplight(position)=1) thenclearup=1;else clearup=1; cleardn=2 and (stoplight(position)=1 or fdnlight(position)=1) thencleardn=1;else clearup=1;cleardn=1;end if;end if;mylift=doorwait1;

温馨提示

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

评论

0/150

提交评论