基于VHDL语言的3层电梯控制器-毕业论文.doc_第1页
基于VHDL语言的3层电梯控制器-毕业论文.doc_第2页
基于VHDL语言的3层电梯控制器-毕业论文.doc_第3页
基于VHDL语言的3层电梯控制器-毕业论文.doc_第4页
基于VHDL语言的3层电梯控制器-毕业论文.doc_第5页
已阅读5页,还剩18页未读 继续免费阅读

下载本文档

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

文档简介

更多论文/fanteral前 言 第1章 电梯控制器的设计思路1.1 设计要求. 1.1 总体设计思路1.2 具体设计思路第2章 电梯控制器的综合设计2.1 电梯控制器功能2.2 电梯控制器设计2.3 电梯控制器实体设计 2.4 电梯控制器结构体设计2.5电梯控制器源程序2.6 电梯控制器仿真波形第3章 n层电梯控制器的设计技巧分析第4章 设计的扩展性第5章 设计创新和心得体会第6章 结束语附 录 参考文献前 言现代电子设计技术的核心已趋向基于计算机的电子设计自动化技术,即eda(electronic design automation)技术。eda技术就是依赖功能强大的计算机,在eda工具软件平台上,对以硬件描述语言hdl(hardware description language)为系统逻辑描述手段的设计文件,自动完成逻辑编译,化简,分割,综合,布局布线以及逻辑优化和仿真测试,直至既定的电子线路系统功能。eda技术使得设计者的工作仅限于利用软件的方式,即利用硬件描述语言和eda软件来完成对系统硬件功能的实现,这是电子设计技术的一个巨大进步。20世纪70年代,在信息通信领域.要优先发展高速宽带信息网.深亚微米集成电路.新型元器件.计算机及软件技术.第三代移动通信技术.信息管理.信息安全技术.积极开拓以数字技术.网络技术为基础的新一代信息产品.发展新兴产业.培育新的经济增长点.要大力推进制造业信息化.积极开展计算机辅助设计(cad).计算机辅助工程(cae).计算机辅助工艺(capp).计算机机辅助制造(cam).产品数据管理(pdm).制造资源计划(mrpii)及企业资源管理(erp)等.有条件的企业可开展网络制造.便于合作设计.合作制造.参与国内和国际竞争.开展数控化工程和数字化工程.自动化仪表的技术发展趋势的测试技术.控制技术与计算机技术.通信技术进一步融合.形成测量.控制.通信与计算机(m3c)结构.在asic和pld设计方面.向超高速.高密度.低功耗.低电压方面发展.本课程设计使用软件为quartus 2,设计一个电梯控制器,硬件通过altera公司的cyclone系列的ep1c12q240c8芯片来实现。软件通过vhdl语言来实现。编者2010年1月第1章 电梯控制器的设计要求与设计思路电梯的使用越来越普遍,已从原来只在商业大厦,宾馆使用,过渡到在办公楼,居民楼等场所使用,并且对电梯功能的要求也不断提高,相应的器控制方式也在不停的发生变化。对于电梯的控制,传统的方式是使用继电器接触器控制系统进行控制,随着技术的不断发展,微型计算机在电梯控制器的应用日益广泛,现在已进入全微机化控制的时代。 电梯的微机化只要有以下几种方式:1.plc控制;2.单板机控制;3.单片机控制;4.单微机控制;5.多微机控制;6.人工智能控制。随着eda技术的快速发展,cpld/fpda已广泛应用于电子设计与控制的各个方面。本设计就是使用一片cpld/fpga来实现对电梯的控制。1.1 设计要求整个系统的输入输出接口设计如下图所示:系统工作用2 hz基准时钟信号clkin,楼层上升请求键up,楼层下降请求键down,楼层选择键入键st_ch,提前关门输入键close,延迟关门输入键delay,电梯运行的开关键run_stop,电梯运行或停止指示键lamp,电梯运行或等待时间指示键run_wait,电梯所在楼层指示数码管st_out,楼层选择指示数码管direct。 clkinupindowninst_ch2.0closedelayrun_stoplamprun_wait3.0st_out3.0direct3.0 dtkzq图1.1.1 电梯控制器dtkzq的输入输出接口图 电梯的控制状态包括运行状态、停止状态及等待状态,其中运行状态又包含向上状态和向下状态。主要动作有开、关门,停靠和启动。乘客可通过键入开、关门按钮,呼唤按钮,指定楼层按钮等来控制电梯的行与停。据此,整个电梯控制器dtkzq应包括如下几个组成部分: 时序输出及楼选计数器; 电梯服务梯升降控制请求处理器; 电器; 上升及下降寄存器; 电梯次态生成器。该电梯控制器设计的关键是确定上升及下降寄存器的置位与复位。整个系统的内部组成结构图如下图所示。图1.1.2 电梯控制器的内部组成结构图1.2 总体设计思路控制器的功能模块如图1所示,包括主控制器、分控制器、楼层选择器、状态显示器、译码器和楼层显示器。乘客在电梯中选择所要到达的楼层,通过主控制器的处理,电梯开始运行,状态显示器显示电梯的运行状态,电梯所在楼层数通过译码器译码从而在楼层显示器中显示。分控制器把有效的请求传给主控制器进行处理,同时显示电梯的运行状态和电梯所在楼层数。由于分控制器相对简单很多,所以主控制器是核心部分。1.3 具体设计思路 电梯控制器采用状态机来实现,思路比较清晰。可以将电梯等待的每秒钟以及开门、关门都看成一个独立的状态。由于电梯又是每秒上升或下降一层,所以就可以通过一个统一的1秒为周期的时钟来触发状态机。根据电梯的实际工作情况,可以把状态机设置10个状态,分别是“电梯停留在第1层”、“开门”、“关门”、“开门等待第1秒”、“开门等待第2秒”、“开门等待第3秒”、“开门等待第4秒”、“上升”、“下降”和“停止状态”。各个状态之间的转换条件可由上面的设计要求所决定。第2章 电梯控制器的综合设计2.1 电梯控制器功能电梯控制器是控制电梯按顾客的要求自动上下的装置。三层电梯控制器的功能如下: (1)每层电梯入口处设有上下请求开关,电梯内设有顾客到达层次的停站请求开关。 (2)设有电梯入口处位置指示装置及电梯运行模式(上升或下降)指示装置。 (3)电梯每秒升(降)一层楼。 (4)电梯到达有停站请求的楼层,经过1秒电梯门打开,开门指示灯亮,开门4秒后,电梯门关闭(开门指示灯灭),电梯继续进行,直至执行完最后一个请求信号后停留在当前层。 (5)能记忆电梯内外所有请求,并按照电梯运行规则按顺序响应,每个请求信号保留至执行后消除。 (6)电梯运行规则:当电梯处于上升模式时,只响应比电梯所在位置高的上楼请求信号,由下而上逐个执行,直到最后一个上楼请求执行完毕;如果高层有下楼请求,则直接升到由下楼请求的最高层,然后进入下降模式。当电梯处于下降模式时则与上升模式相反。 (7)电梯初始状态为一层开门状态。2.2 电梯控制器设计 三层电梯控制器的vhdl描述模块流程如图2所示。三层电梯控制器的源代码(见附录)可知: (1)本程序设计调用了ieee库,ieee库是vhdl设计中最为常用的库,它包含有ieee标准的程序包和其他一些支持工业标准的程序包。本设计采用了std_logic_1164、std_logic_arith、std_logic_unsigned程序包。 (2)以关键词entity引导,end entity threeflift结尾的语句部分,称为实体。vhdl的实体描述了电路器件的外部情况及各信号端口的基本性质。本设计定义了关于三层电梯控制器用到的各类时钟、异步复位按键、信号灯指示、电梯的请求。端口模式主要就是in、buffer、out端口。及定义了各端口信号的数据类型,主要是std_logic(标准逻辑位数据类型)、integer(整数类型)、std_logic_vector(标准逻辑矢量数据类型)。这些都满足上面调用的ieee库中的程序包。 (3)以关键词architecture引导,end architecture art结尾的语句部分,称为结构体。结构体负责描述电路器件的内部逻辑功能或电路结构。本设计定义了10个状态。描述了在三层电梯中出现的各种可能的情况作为控制电梯的主要进程。信号灯控制作为辅助进程。(4) 三层电梯控制器的模块2.3 电梯控制器实体设计 首先考虑输入端口,一个异步复位端口reset,用于在系统不正常时回到初始状态;在电梯外部,必须有升降请求端口,一层是最低层,不需要有下降请求,三层是最高层,不需要有上升请求,二层则上升、下降请求端口都有;在电梯的内部,应该设有各层停留的请求端口:一个电梯时钟输入端口,该输入时钟以1秒为周期,用于驱动电梯的升降及开门关门等动作;另有一个按键时钟输入端口,时钟频率比电梯时钟频率高。 其次是输出端口,有升降请求信号以后,就得有一个输出端口来指示请求是否被响应,有请求信号以后,该输出端口输出逻辑l。被响应以后则恢复逻辑o;同样,在电梯内部也应该有这样的输出端口来显示各层停留是否被响应;在电梯外部,需要一个端口来指示电梯现在所处的位置;电梯开门关门的状态也能用一个输出端口来指示;为了观察电梯的运行是否正确,可以设置一个输出端口来指示电梯的升降状态。2.4 电梯控制器结构体设计 首先说明一下状态。状态机设置了10个状态,分别是电梯停留在l层 (stoponl)、开门(dooropen)、关门(doorclose)、开门等待第1秒(doorwaitl)、开门等待第2秒(doorwait2)、开门等待第3秒(doorwait3)、开门等待第4秒(doorwait4)、上升(up)、下降(down)和停止(stop)。在实体说明定义完端口之后,在结构体architecture和begin之间需要有如下的定义语句,来定义状态机。 type lift_state is (stoponl,dooropen,doorclose,doorwaitl,doorwait2,doorwai t3,door。wai t4,up,down,s top): signal mylift:lift_state: 在结构体中,设计了俩个进程互相配合,一个是状态机进程作为主要进程,另外一个是信号灯控制进程作为辅助进程。状态机进程中的很多判断条件是以信号灯进程产生的信号灯信号为依据的,而信号灯进程中信号灯的熄灭又是由状态机进程中传出的clearup和cleardn信号来控制。 在状态机进程中,在电梯的上升状态中,通过对信号灯的判断,决定下一个状态是继续上升还是停止;在电梯下降状态中,也是通过对信号灯的判断,决定下一个状态是继续下降还是停止;在电梯停止状态中,判断是最复杂的,通过对信号的判断,决定电梯是上升、下降还是停止。 在信号灯控制进程中,由于使用了专门的频率较高的按键时钟,所以使得按键的灵敏度增大,但是时钟频率不能过高,否则容易使按键过于灵敏。按键后产生的点亮的信号灯(逻辑值为1)用于作为状态机进程中的判断条件,而clearup和cleardn信号为逻辑l使得相应的信号灯熄灭。2.5电梯控制器源程序 library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;use ieee.std_logic_arith.all;entity ethreeflift is port(buttonclk: in std_logic; -按键时钟 liftclk: in std_logic; -电梯时钟 reset: in std_logic; -异步复位按键 f1upbutton: in std_logic; -第1层上升请求按钮 f2upbutton: in std_logic; -第2层上升请求按钮 f2dnbutton: in std_logic; -第2层下降请求按钮 f3dnbutton: in std_logic; -第3层下降请求按钮 fuplight:buffer std_logic_vector(3downto1);-电梯外部上升请求指示灯 fdnlight:buffer std_logic_vector(3downto1);-电梯外部下降请求指示灯 stop1button,stop2button,stop3button:in std_logic;-电梯内部请求按键 stoplight: buffer std_logic_vector(3downto1); position: buffer integer range1 to 3; -电梯位置指示 doorlight: out std_logic; -电梯门开关指示 udsig: buffer std_logic; -电梯升降指示end threeflift;architecture art of threeflift istype lift_state is(stopon1,dooropen,doorclose,doorwait1, doorwait2, doorwait3, doorwait4,up,down,stop);signal mylift: lift_state; signal clearup:std_logic; - 用于清除上升请求指示灯的信号signal cleardn:std_logic; -用于清除下降请求指示灯的信号 beginctrlift: process(reset,liftclk) -控制电梯状态的进程variable pos: integer range 3 downto 1;-变量pos用于表示电梯的位置 begin if reset=1then -异步复位信号如果为1时电梯的状态 mylift=stopon1; clearup=0; cleardn -处于电梯停留在一层的状态 doorlift=1; -开门指示灯亮,便是开门 position=1;pos:=1; -电梯位置为1 mylifgt -处于开门等待第1秒的状态mylift -处于开门等待第2秒状态clearup=0;cleardn=0;mylift -处于开门等待第3秒状态mylift -处于开门等待第4秒状态mylift=doorclose; -状态转移到开门状态doorlight=0; -开门指示灯灭,表示关门if udsig=0 then -udsig=0表示上升模式if position=3 then -如果电梯在第3层if stoplight=000and fuplight=000and fdnlight=000thenudsig=1 -没有任何请求信号,那么将udsig置1mylift=doorclose; -电梯处于关门状态else udsig=1mylift=down; -无论什么请求电梯都的下降end if;elsif position=2 then -如果电梯在第2层if stoplight=000and fuplight=000and fdnlight=000thenudsig=0 -没有任何请求信号,电梯仍处于上升模式mylift=doorclose; -状态置回关门状态等待升降请求elsifstoplight(3)=1 or(stoplight(3)=0 and fdnlight(3)=1)then-如果内部有三层停站请求或有三层下降请求udsig=0 -udsig=0,仍处于上升状态mylift=up;else udsig=1;mylift=down; -其他情况电梯都的下降,此时udsig置1end if;elsif position=1 then -如果电梯在第1层if stoplight=000and fuplight=000and fdnlight=000thenudsig=0; -没有任何请求信号,由于电梯仍处于1层,肯定要上升,udsig置0mylift=doorclose;-状态置回关门状态等待升降请求否则,无论怎样电梯都要上升else udsig=0;mylift=up;end if;end if;elsif udsig=1then -udsig=1表示下降模式if position=1 then -如果电梯在第1层if stoplight=000and fuplight=000and fdnlight=000thenudsig=0; -没有任何请求信号mylift=doorclose; -状态置回关门状态,等待升降请求else udsig=0;mylift=up; -其他情况电梯都的上升end if;elsif position=2 then -如果电梯在第2层if stoplight=000and fuplight=000and fdnlight=000thenudsig=1; -没有任何请求信号,电梯仍处于下降模式mylift=doorclose; -状态置回关门状态,等待升降请求elsifstoplight=(1)=1or(stoplight(1)=0and fdnlight(1)=1)then-如果内部有1层停站请求或有1层上升请求udsig=1;mylift=down; -状态转移到下降状态else udsig=0;mylift=up; -其他情况电梯都的上升end if;elsif position=3 then -如果电梯在第3层if stoplight=000and fuplight=000and fdnlight=000then -没有任何请求信号,由于电梯处于最高层,所以肯定要下降udsig=1;mylift=doorclose;else udsig=1;mylift -电梯处于上升状态时position=position+1; -信号position加1表示上升1层pos: =pos+1; -变量pos加1表示上升1层if pos3 and(stoplight(pos)=1or fdnlight(pos)=1)-如果即将到达的层不是最高层并且内部有该层停站请求或者该层外部有上升请求下一状态电梯停止then mylift=stop;elsif pos=3 and(stoplight(pos)=1or fdnlight(pos)=1) -如果即将到达的层是最高层并且内部有该层停站请求或者该层外部有下降请求下一状态电梯停止then mylift=stop;else mylift -电梯处于下降的状态position1and(stoplight(pos)=1or fdnlight(pos)=1) -如果即将到达的层不是1层并且内部有该层停站请求或者该层外部有下降请求下一状态电梯停止then mylift=stop;elsif pos=1 and(stoplight(pos)=1or fdnlight(pos)=1) -如果即将到达的层是1层并且内部有该层停站请求或者该层外部有上升请求下一状态电梯停止then mylift=stop;else mylift -电梯处于停止状态mylift -电梯处于开门状态时doorlight=1;if udsig=0 then -如果电梯处于上升模式if position=2and(stoplight(position)=1or dnlight(position)=1)then-如果电梯位于2层或2层以下,且内部停站等于1或外部请求上升信号等于1,此时只需清除上升请求指示灯clearup=1;else clearup=1;cleardn=1;-其他情况需同时清除上升和下降指示灯end if;elsif udsig=1 then -如果电梯处于下降模式if position=2 and(stoplight(position)=1or fdnlight(position)=1)then -如果电梯位于2层或2层以上,且内部停站等于1或外部请求下降信号等于1,此时只需清除下降请求指示灯cleardn=1;else clearup=1;cleardn=1;-其他情况需同时清除上升和下降指示灯end if;end if;mylift=doorwait1;end case;end if;end if;end process ctrlift;ctrlift: process(reset,buttonclk) -控制按键信号灯的进程beginif reset=1then -异步复位信号为1时stoplight=000;fuplight=000fdnlight=000;elseif buttonclkevent and buttonclk=1thenif clearup=1then -当清除上升请求指示灯信号为1时stoplight(position)=0;fuplight(position)=0;-该层电梯内部停站信号灯和外部上升请求信号灯灭elseif f1upbutton=1then fuplight(1)=1;elsif f2upbutton=1then fuplight(2)=1;end if; -如果按按键,那么指示灯亮end if;if cleardn=1then -当清除下降请求指示灯信号为1时stoplight(position)=0;fuplight(position)=0; -该层电梯内部停站信号灯和外部上升请求信号灯灭elseif f2dnbutton=1then fdnlight(2)=1;elsif f3 dnbutton=1then fdnlight(3)=1;end if; -如果按按键,那么指示灯亮end if;if stop1button=1then stoplight(1)=1;elsif stop2 button=1then stoplight(2)=1;elsif stop3 button=1then stoplight(3)=1;end if; -如果按按键,那么指示灯亮end if;end if;end if;end process ctrlight;end art;2.6 电梯控制器仿真波形三层电梯控制器的仿真模块模块(一): 图4所示仿真的是在第二层电梯外部有上升请求,也就是f2upbuttton信号的一个脉冲,可以看到电梯从一层上升到二层,position信号由1变到2,doorlight信号1表示开门,0表示关门。当乘客进入电梯以后,在电梯内部要求上升到第三层,也就是stop3button产生一个脉冲,电梯上升到第3层,开门4秒以后关门,停留在第三层,position最后的值为3。在仿真图中看不到buttonclk,只显示为一条黑色的线,是因为采用了频率较大的时钟。 再看fuplight信号灯,当二层有上升请求的时候,它的值由0变到2。(注意fuplight和fdnlight是3位的二进制向量,这里的2代表“010”,表示二层有请求;“100”也就是4,表示三层有请求)。当电梯停留到第二层以后,表明该请求被响应,所以它的值变为0,由于没有下降请求信号,所以fdnlight信号灯的值一盲都为o。 模块(二):图5是有下降请求的情况,它是图4的继续,当电梯停留在第三层的时候,在电梯外第二层有下降请求,这时候fdnlight信号灯由0变为2,说明第二层有下降请求。电梯下降到第二层,响应了下降请求,所以fdnlight信号灯清0。这时候,在电梯内部没有停留在哪层的请求,所以电梯就停留在第二层,position信号的值保持在2。模块(三):同时有上升和下降请求信号时,电梯的运行情况如图6所示。图6仿真的情况是,原先电梯停留在第一层,这时候电梯外第三层有下降请求,电梯上升到第三层,乘客进入电梯以后要求下降到一层,与此同时,在电梯外第二层有上升请求,电梯首先要响应下降请求然后再响应这个上升请求,所以电梯得先下降到一层,然后再上升到第二层来,这是符合常理的。从仿真的波形看,电梯的位置变化和想象是一致的。电梯的运行情况完全正确。最后乘客在电梯内部要求上升到三层,所以电梯最后的停留位置为三层。模块(四):图7所示的仿真,原先电梯停留在第一层,电梯外第三层有下降请求,电梯上升到三层,乘客进入电梯以后要求下降到一层,此时,二层有下降请求,接着又有上升请求,电梯首先在二层停留。然后下降到一层。随后要响应二层上升请求,上升到二层,乘客进入电梯以后要求上升到三层,所以电梯最后的停留位置在三层。第3章 n层电梯控制器的设计技巧分析 在本设计中,因为考虑了扩展性,所以在信号定义的时候就使用了二进制的向量,而不是整数。在设计方法上也做了特殊的设计,所以使得扩展性较好。如果要实现n层电梯的控制,首先在端口的地方就要加入所有的按键,而指示灯只要把向量中的3改成n就可以了。同时需要在按键控制进程里加入其他按键触发指示灯的语句。在电梯的升降状态将3改成n,在电梯的开门状态中将2改成n一1,在关门状态,将position=3改成position=n,关键是修改position=2的部分,如果按照每层罗列,将十分烦琐,所以得寻求各层判断条件的共性,解决方法之一就是,新建一个全局向量one为stdlogicveoter(n downto 3)应改写成0,然后和stoplight与fuplight向量比较,如果有更高层次的请求,那么stoplight或fuplight向量,如果stoplight和fuplight向量都小于one向量,表示没有更高层次的内部上升请求,此时将fdnlight向量和one向量比较,如果大于,则表示高层有下降要求,电梯得上升。如果没有任何请求信号,则电梯停止,否则电梯下降。如此就可以大大简化程序,但是要注意的是one向量必须实时更新,以作为判断依据,可以另外写一个进程,用buttonclk来触发。第4章 设计的扩展性 在本设计中,因为考虑了扩展性,所以在信号定义的时候就使用了二进制的向量,而不是整数。在设计方法上也做了特殊的设计,所以使得扩展性较好。如果要实现n层电梯的控制,首先在端口的地方就要加入所有的按键,而指示灯只要把向量中的3改成n就可以了。同时需要在按键控制进程里加入其他按键触发指示灯的语句。在电梯的升降状态将3改成n,在电梯的开门状态中将2改成n一1,在关门状态,将position=3改成position=n,关键是修改

温馨提示

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

评论

0/150

提交评论