课程设计--基于VHDL的三层电梯控制器的设计

更新时间:2024-03-07 20:55:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

成都理工大学

计算机辅助电路分析与设计

课程设计

题目名称 基于VHDL的三层电梯控制器的设计 学院名称 信息科学与技术学院 所属专业 通信与信息系统 学生姓名 苟孟洛 学 号 2011020796 班 级 通信

邮箱地址:2724135@qq.com

13881746072 tangying@cdut.cn

1 / 10

一、设计的题目及其要求

(1)设计题目

基于VHDL的三层电梯控制器的设计

(2)课程设计的目标、基本要求及其功能:

本设计运用有限状态机的方法,在结构体最前端首先定义了十个状态;然后在结构体中设计了两个进程,状态机进程作为主要进程,信号灯控制进程作辅助进程。在状态机进程中,电梯关门后根据信号灯的情况,来决定下一个状态是上升、下降还是停止;在信号灯控制进程中,而信号灯的熄灭是由状态机进程中传出clearup和cleardn信号来控制。

(3)设计要求的最终指标

实现了三层电梯的基本功能,电梯的的运行情况完全符合它的运行规则,电

梯的位置变化合情合理。

二、设计的基本思路及其设计出发点

本设计采用VHDL,源程序经A1tera公司的MAX+plus II软件仿真。运用有限状态机的设计方法,设计了两个进程相互配合,状态机进程作为主要进程,信号灯控制进程作为辅助进程。

电梯作为垂直方向的交通工具,在高层建筑和公共场所已成为不可或缺的设备。中国是全球最大的电梯市场,也具有最强的电梯生产能力,但由于缺乏自主知识产权和核心技术,自主品牌占市场的份额很少。随着社会需求的变化,电梯朝着节能、环保及智能化方向发展。

2 / 10

三、方案原理论述

3.1 电梯控制器原

电梯控制器的功能模块如图3.1所示,包括主控制器、分控制器、楼层选择器、状态显示器、译码器和楼层显示器。乘客在电梯中选择所要到达的楼层,通过主控制器的处理,电梯开始运行,状态显示器显示电梯的运行状态,电梯所在楼层数通过译码器译码从而在楼层显示器中显示。分控制器把有效的请求传给主控制器进行处理,同时显示电梯的运行状态和电梯所在楼层数。由于分控制器相对简单很多,所以主控制器是核心部分。

状态显示器 分控制器 主控制器 译码器 楼层显示器 楼层选择器 图3.1 电梯控制器原理图

3.2三层电梯控制器的设计思路

电梯控制器设计两个进程相互配合,状态机进程作为主要进程,信号灯控制进程作为辅助进程。根据电梯的实际工作情况,可以为状态机设置十个状态,它们分别是“电梯停在一层”“开门”“关门”“开门等待第一秒”“开门等待第二秒”“开门等待第三秒”“开门等待第四秒”“上升”“下降”和“停止”。由于电梯每秒上升或下降一层,则可以用周期为1s的信号来作为电梯状态转换的触发时钟。状态机进程中的很多判断条件是以信号灯控制进程产生的信号灯信号为依据,而信号灯控制进程中信号灯的熄灭又是由状态机进程中传出的信号来

3 / 10

控制。

三层电梯控制器的设计主要是对实体和结构体的设计,它的VHDL描述模块流程如图3.2所示:

元件库的说明 定义实体 端口 状态机进程 结构体 信号灯控制进程 结束 图3.2 三层电梯控制器的VHDL描述模块流程

按键信号灯

3.3结构体设计

在结构体中,首先说明了状态机设置的十个状态,分别是:电梯停在1层(stopon1)、开门(dooropen)、关门(doorclose)、开门等待第1秒(doorwait1)、开门等待第2秒(doorwait2)、开门等待第3秒(doorwait3)、开门等待第4秒(doorwait4)、上升(up)、下降(down)和停止(stop)。在结构体最前端用如下的定义语句,来定义状态机。 type lift_state is

(stopon1,dooropen,doorclose,doorwait1,doorwait2,doorwait3,doorwait4,up,down,stop);

接着描述电梯内部功能实现,在结构体中设计了两个进程,一个状态机进程(ctrlift),它是以reset和liftclk作为敏感信号,控制电梯的状态转移;另外一个是信号灯控制进程(ctrlight),它是以reset和buttonclk作为敏感信号,控制寄存信号的逻辑值。在状态机进程中,电梯关门后根据信号灯的情况,来决定下一个状态是上升、下降还是停止;在信号灯控制进程中,由于使用了专

4 / 10

门的频率较高的按键时钟,所以使得按键的灵敏度大,但是时钟频率不能过高,否则容易使按键过于灵敏,而信号灯的熄灭是由状态机进程中传出clearup和cleardn信号来控制。

四、仿真设计分析

4.1 VHDL源代码语法的简单说明

(1)本程序设计调用了ieee库,ieee库是VHDL设计中最为常用的库,它包含有ieee标准的程序包和其他一些支持工业标准的程序包。本设计采用std-logic-1164、std-logic-unsigned、std-logic-arith程序包。

(2)以关键词entity引导,end entity threelift结尾的部分是程序的实体部分。VHDL的实体描述了电路器件的外部情况,本设计定义了关于三层电梯控制器用到的各类时钟、异步复位按键、信号灯指示端口、电梯的请求端口。它描述了端口模式主要有in、buffer、out,以及各端口信号的数据类型主要有std-logic、std-logic-vector、integer。

(3)以关键词architecture引导,end architecture one结尾的语句部分是结构体部分,结构体描述电路器件的内部逻辑功能。

4.2 波形仿真

在波形仿真中,根据实际,我们有必要做一些假设,即是:

(1)外部请求上升的乘客,进入电梯后一定是按更高层的停站按钮; (2)外部请求下降的乘客,进入电梯后一定是按更低层的停站按钮; (3)如果有乘客进入电梯,则一定有停站请求;

(4)同一时刻有很多人按键的概率很小,所以我们认为请求信号都有一定的先后顺序。

设定仿真时间长度为60s,liftclk信号为周期1s的时钟信号,buttonclk信号为周期0.1s的时钟信号。doorlight信号逻辑‘1’表示开门,逻辑‘0’表示关门。udsig信号为逻辑‘1’表示电梯处在上升模式,逻辑‘0’表示处在下降模式。fuplight,fdnlight,stoplight是三位二进制向量,波形图中的1代

5 / 10

表“001”,表示一层有请求,2代表“010”,表示二层有请求,4代表“100”,表示三层有请求。

图4.1所示的波形是在一层有上升请求的仿真波形,在reset信号产生一个脉冲时,电梯回复初始状态,即stopon1状态,然后等待4s,关门检测没有请求信号,于是电梯此时停在一层。当电梯时钟上升沿检测到一层上升请求信号fuplight(1)为‘1’时,电梯开门,fuplight(1)清零,等待4s,关门检测到二层停站请求,于是电梯上升到二层停止,开门stoplight(2)清零,position信号由1变为2,电梯最终停在二层。

图4.1 有上升请求的仿真波形

图4.2所示的波形是三层有下降请求的波形,当电梯在一层关门后,检测到fdnlight为“100”,则上升到三层,开门等待4s,关门检测到stoplight为‘1’,于是电梯下降到一层,最终停在一层。

6 / 10

图4.2 有下降请求的仿真波形

图4.3所示的波形是二层和三层都有下降请求的仿真波形,当电梯在一层关门后,检测到fdnlight为“110”,则直接上升到三层,开门后fdnlight(3)清零,等待4s后,关门下降到二层停止,开门后fdnlight(2)和stoplight(2)清零,再下降到一层。

图4.3 有多个下降请求的仿真波形

图4.4所示的波形为有多个停站请求的仿真波形,电梯在一层关门后,检测

7 / 10

到stoplight为“110”,则上升至二层停止开门,stoplight(2)清零,等待4s后关门,继续上升至三层,开门后stoplight(3)清零,乘客下站后电梯最终停在三层。

图4.4 有多个停站请求的仿真波形

图4.5所示,当只有二层有下降请求时,电梯上升至二层,然后下降,显然正确。

图4.5 只有二层有下降请求时的仿真波形

8 / 10

图4.6所示,二层同时有上升和下降请求,电梯上升至二层,门打开等待4s,关门后检测到stoplight(3)和fdnlight(2)都为‘1’,它会先上升至三层,再下降至二层,待有下降请求的乘客上电梯后,最后下降至一层。

4.6 同时有上升和下降请求的仿真波形

从前面所有的仿真波形来看,电梯的的运行情况完全符合它的运行规则,电梯的位置变化合情合理。

五、本电路的实际应用

三层电梯控制器的设计很简单,但在实际应用中,电梯往往不止三层,因此考虑设计的扩展性十分重要。本设计在信号定义时就使用了二进制向量,而非整数,并且使用状态机的设计方法,因此扩展性较好。如果要实现n层电梯的控制,首先要在实体的端口定义中添加相应的增加楼层的上身、下降和停站请求端口,而指示灯只要把其数组宽度由3 downto 1改为n downto 1 就可以了。在电梯的关门状态中,应把position=3改为position=n,关键是修改position=2的部分,如果按照原方法把每层罗列,则随着楼层的增加,程序会非常复杂,所以得寻求各中间层的共性。解决方法是,首先定义一个全局向量abc为

9 / 10

std_logic_vector(n downto 1),abc的赋值为abc<= (pos=>'1',others=>'0')。在电梯的上升模式时,如果有本层请求信号,则电梯开门;如果没有任何请求信号,则电梯停在当前层;否则用stoplight和fuplight与全局变量abc作比较,如果stoplight或fuplight比abc大,则说明更高层还有上升或停站请求,电梯需继续上升;如果abc更大,则用abc与fdnlight作比较,如果fdnlight更大,则说明更高层有下降请求,电梯继续上升,否则电梯下降。电梯处在下降模式时,同原理分析判定下一状态。这样可以大大简化程序,但要注意的是abc向量作为判断依据,需实时更新,可以单独写一个进程,触发时钟周期要设置得很小。在电梯的上升状态和开门状态中,把3改为n,在信号灯控制进程中加入其它按键触发指示灯的语句

六、总结和设计心得体会

在本学期做毕业设计的过程中,我学习了VHDL语言的基本语法,熟悉了MAX+plus II的VHDL文本设计流程全过程,掌握了三层电梯控制器的设计方法,及它的仿真和硬件测试。

经过多次改进,本设计实现了三层电梯的基本功能,电梯的的运行情况完全符合它的运行规则,电梯的位置变化合情合理。本次三层电梯控制器的设计采用VHDL语言,源程序经MAX+plus II软件仿真,目标器件选用CPLD器件。本设计代码具有良好的可读性和可移植性,运用了有限状态机的设计方法,使得它灵活、简单、运算速度快、可靠性高,并且此设计具有良好的扩展性。本文中设计的电梯控制器以CPLD为实现载体,以VHDL为描述语言实现了电梯的升降舒适感和运行的可靠性,相信在以后的智能建筑中会得到广泛的应用和推广

七、 参考文献

[1]EDA技术实用教程/潘松,黄继业编著. –2版. –北京:科学出版社,2005 [2]李军法,Design of the lift operation controller based on CPLD,陕

西西1674-6236(2009)07-0059-03

10 / 10

本文来源:https://www.bwwdw.com/article/vhga.html

Top