基于FPGA的三层电梯设计.docx
- 文档编号:12662856
- 上传时间:2023-04-21
- 格式:DOCX
- 页数:23
- 大小:1.37MB
基于FPGA的三层电梯设计.docx
《基于FPGA的三层电梯设计.docx》由会员分享,可在线阅读,更多相关《基于FPGA的三层电梯设计.docx(23页珍藏版)》请在冰豆网上搜索。
基于FPGA的三层电梯设计
《数字电子技术》课程设计
题目:
基于FPGA的三层电梯设计
学院:
工学院
专业班级:
通信工程11秋2班
学生姓名:
学号:
11032202
小组成员:
指导教师:
完成日期2013年12月
目录
1课题背景1
1.1课题的作用和意义1
1.2国内外的现状和发展趋势等情况1
2QuartusII软件、FPGA硬件介绍2
2.1QuartusII软件介绍2
2.1.1Quartus II对器件的支持2
2.2FPGA硬件介绍3
2.2.1FPGA基本简介3
2.2.2FPGA的优点3
3设计思路及运行流程4
3.1电梯主要功能4
3.2电梯运行设计思路4
3.3电梯的运行流程4
3.4模块介绍5
3.4.1电梯控制模块介绍5
3.4.2译码器模块介绍6
3.4.3总模块介绍7
4各模块功能仿真图8
4.1电梯控制模块功能仿真8
4.2译码模块功能仿真9
5实物展示10
6心得体会12
7谢辞13
参考文献14
附录一15
附录二23
1课题背景
1.1课题的作用和意义
电梯作为高层大厦的主要垂直交通工具,电梯系统服务质量和效率的提高对建筑的有效利用和性能发挥将产生极为重要的影响。
信息化时代的到来,推动了电梯的发展,电梯控制器已成为当今世界性开发的热点,也是各国综合实力的表现。
电梯系统作为建筑楼宇自动化的重要组成部分,也要求向满足大厦中大量人流、物流的垂直输送需要,电梯制造商利用先进的技术,开发出各种高性能的电梯系统以满足乘客生理和心理要求,实现高效的垂直输送。
1.2国内外的现状和发展趋势等情况
随着科学技术的发展,近年来我国的电梯生产技术得到了迅速发展.一些电梯厂也在不断改进设计、修改工艺。
更新换代生产更新型的电梯,电梯主要分为机械系统与控制系统两大部份,随着自动控制理论与微电子技术的发展,电梯的拖动方式与控制手段均发生了很大的变化,交流调速是当前电梯拖动的主要发展方向。
目前电梯控制系统主要有三种控制方式:
继电路控制系统、FPGA控制系统、微机控制系统。
继电器控制系统由于故障率高、可靠性差、控制方式不灵活以及消耗功率大等缺点,目前已逐渐被淘汰。
微机控制系统虽在智能控制方面有较强的功能,但也存在抗扰性差,系统设计复杂,一般维修人员难以掌握其维修技术等缺陷。
而FPGA/CPLD控制系统由于运行可靠性高,使用维修方便,抗干扰性强,设计和调试周期较短等优点,倍受人们重视等优点,已成为目前在电梯控制系统中使用最多的控制方式,目前也广泛用于传统继电器控制系统的技术改造。
2QuartusII软件、FPGA硬件介绍
2.1QuartusII软件介绍
QuartusII是Altera公司继Max+plusII之后开发的一种针对其公司生产的系列CPLD/PGFA器件的综合性开发软件,它的版本不断升级,从4.0版到10.0版,这里介绍的是QuartusII8.0版。
QuartusII软件的设计流程为:
设计输入、综合和编译、适配器、仿真、下载。
Max+plusII作为Altera的上一代PLD设计软件,由于其出色的易用性而得到了广泛的应用。
目前Altera已经停止了对Max+plus II 的更新支持。
QuartusII支持Altera的IP核,包含了LPM/MegaFunction宏功能模块库,使用户可以充分利用成熟的模块,简化了设计的复杂性、加快了设计速度。
2.1.1Quartus II对器件的支持
QuartusII支持Altera公司的MAX 3000A系列、MAX 7000系列、MAX 9000系列、ACEX 1K系列、APEX 20K系列、APEX II系列、FLEX 6000系列、FLEX 10K系列,支持MAX7000/MAX3000等乘积项器件。
支持MAX II CPLD系列、Cyclone系列、CycloneII、StratixII系列、StratixGX系列等。
支持IP核,包含了LPM/MegaFunction宏功能模块库,用户可以充分利用成熟的模块,简化了设计的复杂性、加快了设计速度。
此外,QuartusII通过和DSP Builder工具与Matlab/Simulink相结合,可以方便地实现各种DSP应用系统;支持Altera的片上可编程系统(SOPC)开发,集系统级设计、嵌入式软件开发、可编程逻辑设计于一体,是一种综合性的开发平台。
软件具有开放性、与结构无关、多平台、完全集成化、丰富的设计库、模块化工具等特点,支持原理图、VHDL、VerilogHDL以及AHDL(Altera Hardware Description Language)等多种设计输入形式,内嵌自有的综合器以及仿真器,可完成从设计输入到硬件配置的完整PLD设计流程。
2.2FPGA硬件介绍
2.2.1FPGA基本简介
FPGA(Field-ProgrammableGateArray),即现场可编程门阵列,它是在PAL、GAL、CPLD等可编程器件的基础上进一步发展的产物。
它是专用集成电路中一种半定制电路。
具克服了传统可编程器件数有限的缺点,又具有可编程的特点。
FPGA是由存放在片内RAM中的程序来设置其工作状态的,因此,工作时需要对片内的RAM进行编程。
用户可以根据不同的配置模式,采用不同的编程方式。
2.2.2FPGA的优点
目前的FPGA已远超出先前产品的基本功能,并且整合了许多常用功能(如RAM、时钟管理和DSP),在新型的的系统级可编程逻辑器件中还可以以IP核的形式来进行功能设计,或许只需要一块FPGA芯片就可以实现所有功能,成为片上系统。
FPGA运行速度快,内部集成锁项环,可以把外部时钟倍频,核心频率可以到几百M,克服了单片机在高速场合中运行速度低的缺点。
3设计思路及运行流程
3.1电梯主要功能
(1)每层电梯处设有上下请求开关,电梯内设有乘客到达层次的停站请求开关。
(2)设有电梯所处位置指示装置及电梯运行情况指示。
(3)电梯的初始状态为第一楼层。
3.2电梯运行设计思路
实现此系统分为三个模块,分别为总控制模块、电梯位置显示的译码模块,及电梯运行状态显示的译码模块。
我们通过开发板中的开关模拟电梯外部和内部的楼层上升及下降请求,由数码管显示电梯的位置状态及所在楼层层数。
通过LED灯的亮与灭表示电梯的开门状态。
例:
从1楼上至2楼,即需要将开发板中代表1楼上升请求及3楼停止请求的开关拨上,则数码管显示01→02。
3.3电梯的运行流程
电梯的请求信号划分为上升信号和下降信号。
电梯收到请求信号后,都必需做预操作。
使电梯进入预上升状态的请求信号就是上升,得到上升和下降及所到楼层的请求后作出相应的动作实现。
以下为电梯在各楼层时的状态:
当电梯在一楼时,不管电梯内部还是外部,电梯只能收到上升请求信号,此时电梯进入预上升状态,准备上升,如果没有收到上升请求,则电梯待在一楼。
当电梯在二楼时,如电梯外部内部均没有收到任何请求,电梯将返回一楼待机;如电梯接收到上升请求信号,则进入预上升状态;如电梯接收到下降请求信号,电梯进入预下降状态。
当电梯在三楼时,电梯只能接收到下降请求信号,此时电梯进入预下降状态,准备下降。
流程图如(图3.1)所示
图3.1电梯运行流程图
3.4模块介绍
3.4.1电梯控制模块介绍
控制模块代码见(附录一),原理图如(图3.2)
具体引脚分配见(附录二)
图3.2电梯顶层模块
开关输入引脚:
“REST”是复位开关,实现电梯无请求时手动复位至1楼的功能;
“LIFTCLK”是时钟脉冲;
“F1UPBUTTON”是1楼上升的请求开关,实现产生1楼有上升请求;
“F2UPBUTTON”是2楼上升的请求开关,实现产生2楼有上升请求;
“F2DNBUTTON”是2楼下降的请求开关,实现产生2楼有下降请求;
“F3DNBUTTON”是3楼下降的请求开关,实现产生3楼有下降请求;
“STOP1~3BUTTON”是1~3楼停止的请求开关,实现产生到1~3楼时停止的请求;
数码管输出引脚:
“jm[6..0]”是电梯所在位置显示引脚;
“led[6..0]”是电梯上升下降状态显示。
LED灯输出引脚:
“DOORLIGHT”时开门灯显示引脚。
3.4.2译码器模块介绍
(1)楼层上升及下降状态译码器模块,楼层上升及下降状态显示如(图3.3):
图3.3上升及下降状态显示译码模块
“SEG”表示输入一个1位二进制数0或1;
“Q3[6..0]”引脚分别输出7位二进制:
0000001和1001111即显示为0和1。
(2)楼层楼层位置显示译码器模块原理图如(图3.4):
图3.4楼层楼层位置显示译码器模块
SEG[2..1]表示输入一个2位二进制数01、10、11;
“Q3[6..0]”引脚分别输出7位二进制:
1001111显示为1,0010010显示为2,0000110显示为3。
3.4.3总模块介绍
图3.5电梯主控系统和译码器模块连接图
控制模块的下降信号输出作为运行状态译码模块的输入,控制模块的位置输出作为电梯位置显示译码模块的输入。
4各模块功能仿真图
4.1电梯控制模块功能仿真
图4.1电梯控制模块功能仿真
上图表示:
电梯从1楼上至3楼再下至2楼的情况
波形说明:
步骤1:
给予2楼上升请求一个脉冲
步骤2:
给予3楼停一个脉冲
步骤3:
给予2楼上升请求一个脉冲
步骤4:
下降输出信号UDSIG在电梯响应下降至2楼时为1表示下降其余为0上升;
开门灯DOORLIGHT在1楼和到3楼及2楼时为1表示亮;
电梯位置显示POSITION相应显示1→2→3→2。
以上仿真与所要求情况一致。
4.2译码模块功能仿真
图4.2译码器功能仿真
上图表示:
(译码显示的是数码管的引脚,低电平为亮,高电平为不亮)
Jm分别为:
1001111→0010010→0000110→0010010即1→2→3→2符合电梯所在位置显示。
Led分别为:
0000000→0000001即0→1上升到下降符合电梯运行状态。
5实物展示
1电梯初始状态如图(5.1)
图5.1电梯初始状态
说明:
上图显示01,即电梯处于1楼待上升状态。
当没有任何请求时电梯则自动复位至此状态
2电梯1楼上升至3楼模拟如图(5.2)
图5.2电梯1楼上至3楼
说明:
要实现电梯从1楼上升至3楼则需要F1UPBUTTON即开关SW3为高电平,STOP3BUTTON即开关SW9为高电平,同时BUTTONCLK即开关SW2为高电平,手动拨动LIFTCLK即开关SW1一次上升一层楼。
图示为电梯已经上至三楼的状态。
DOORLIGHT为高电平即LED灯亮表示电梯开门。
3电梯3楼下降至1楼模拟如图(5.3a)、图(5.2b)
图5.3(a)电梯处于3楼待下降状态
说明:
电梯要实现从3楼下降至1楼则需要3DNBUTTON即SW6为高电平,STOP1BUTTON为高电平,同时BUTTONCLK即开关SW2为高电平,手动拨动LIFTCLK即开关SW1一次下降一层楼。
图示为电梯在3楼待下降的状态。
图5.3(b)电梯已下降至1楼的状态
说明:
拨LIFTCLK两次电梯已下降至1楼的状态。
DOORLIGHT为高电平即LED灯亮表示电梯开门。
6心得体会
两周的课程设计实际的操作了整套电梯控制的设计,从刚开始的开题报告,到着手编写代码、连接模块原理图、仿真、分配引脚到最后下载到开发板验证。
在课程设计前都是进行某个部分的操作,经过此次整套程序下来对FPGA及VHDL语言都有了更深的认识。
开始面对着书上的大段大段代码感到恐惧,但通过之后的一点一点输入修改,特别是在代码修改中体会到了耐心及细心的重要性,例如一个标题不吻合或少个引号在句末少个分号这些看似简单甚至不起眼的符号都足以让我们头疼找半天,但是随着这些错误的逐个排解也会产生极大的喜悦感。
从刚开始的看着代码什么都不懂,到最后能够看懂一点,真的有很大的收获。
刚开始还算比较顺利,但在译码模块出现了许多问题,不断的仿真失败、下载失败,不断的尝试最后能够成功的实现电梯控制的基本功能是这两周来和我的队友共同努力的结果。
同时还学到了再完成一项任务时应该如何与自己的队友合作完成,要有自己的想法但也要善于尝试队友的建议。
不论最后的成绩如何,都是自己努力来的成果。
7谢辞
在取得这些成果的同时当然少不了两位老师的辛苦指导,两位老师在进行其他班级正常授课的同时还要过来指导我们完成课程设计,要较于平时辛苦很多。
有几次同学的代码总是修改不成功,周老师在下班的时间依旧帮助他查找错误帮忙修改。
上课时不停的有人喊“老师””老师这边”,你们依旧可以耐心的为我们一一解释错误的原因并指导我们解决那些问题。
在这里衷心的感谢两位老师为我们的付出。
参考文献
[1]朱正伟,王其红,韩学超.EDA技术及应用(第二版)[M].北京:
清华大学出版社,2013.3:
p315-323
附录一
总程序模块:
LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164.ALL;
USEIEEE.STD_LOGIC_ARITH.ALL;
USEIEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITYTHREEFLIFTIS
PORT(BUTTONCLK:
INSTD_LOGIC;
LIFTCLK:
INSTD_LOGIC;
RESET:
INSTD_LOGIC;
F1UPBUTTON:
INSTD_LOGIC;
F2UPBUTTON:
INSTD_LOGIC;
F2DNBUTTON:
INSTD_LOGIC;
F3DNBUTTON:
INSTD_LOGIC;
FUPLIGHT:
BUFFERSTD_LOGIC_VECTOR(3DOWNTO1);
FDNLIGHT:
BUFFERSTD_LOGIC_VECTOR(3DOWNTO1);
STOP1BUTTON,STOP2BUTTON,STOP3BUTTON:
INSTD_LOGIC;
STOPLIGHT:
BUFFERSTD_LOGIC_VECTOR(3DOWNTO1);
POSITION:
BUFFERINTEGERRANGE1TO3;
DOORLIGHT:
OUTSTD_LOGIC;
UDSIG:
BUFFERSTD_LOGIC);
ENDTHREEFLIFT;
ARCHITECTUREaOFTHREEFLIFTIS
TYPELIFT_STATEIS
(STOPON1,DOOROPEN,DOORCLOSE,DOORWAIT1,DOORWAIT2,DOORWAIT3,DOORWAIT4,UP,DOWN,STOP);
SIGNALMYLIFT:
LIFT_STATE;
SIGNALCLEARUP:
STD_LOGIC;
SIGNALCLEARDN:
STD_LOGIC;
BEGIN
CTRLIFT:
PROCESS(RESET,LIFTCLK)
VARIABLEPOS:
INTEGERRANGE3DOWNTO1;
BEGIN
IFRESET='1'THEN
MYLIFT<=STOPON1;
CLEARUP<='0';
CLEARDN<='0';
ELSE
IFLIFTCLK'EVENTANDLIFTCLK='1'THEN
CASEMYLIFTIS
WHENSTOPON1=>
DOORLIGHT<='1';
POSITION<=1;POS:
=1;
MYLIFT<=DOORWAIT1;
WHENDOORWAIT1=>
MYLIFT<=DOORWAIT2;
WHENDOORWAIT2=>
CLEARUP<='0';
CLEARDN<='0';
MYLIFT<=DOORWAIT3;
WHENDOORWAIT3=>
MYLIFT<=DOORWAIT4;
WHENDOORWAIT4=>
MYLIFT<=DOORCLOSE;
WHENDOORCLOSE=>
DOORLIGHT<='0';
IFUDSIG='0'THEN
IFPOSITION=3THEN
IF
STOPLIGHT="000"ANDFUPLIGHT="000"ANDFDNLIGHT="000"THEN
UDSIG<='1';
MYLIFT<=DOORCLOSE;
ELSEUDSIG<='1';MYLIFT<=DOWN;
ENDIF;
ELSIFPOSITION=2THEN
IFSTOPLIGHT="000"ANDFUPLIGHT="000"ANDFDNLIGHT="000"THEN
UDSIG<='0';
MYLIFT<=DOORCLOSE;
ELSIF
STOPLIGHT(3)='1'OR(STOPLIGHT(3)='0'ANDFDNLIGHT(3)='1')THEN
UDSIG<='0';
MYLIFT<=UP;
ELSEUDSIG<='1';MYLIFT<=DOWN;
ENDIF;
ELSIFPOSITION=1THEN
IF
STOPLIGHT="000"ANDFUPLIGHT="000"ANDFDNLIGHT="000"THEN
UDSIG<='0';
MYLIFT<=DOORCLOSE;
ELSEUDSIG<='0';MYLIFT<=UP;
ENDIF;
ENDIF;
ELSIFUDSIG='1'THEN
IFPOSITION=1THEN
IF
STOPLIGHT="000"ANDFUPLIGHT="000"ANDFDNLIGHT="000"THEN
UDSIG<='0';
MYLIFT<=DOORCLOSE;
ELSEUDSIG<='0';MYLIFT<=UP;
ENDIF;
ELSIFPOSITION=2THEN
IF
STOPLIGHT="000"ANDFUPLIGHT="000"ANDFDNLIGHT="000"THEN
UDSIG<='1';
MYLIFT<=DOORCLOSE;
ELSIF
STOPLIGHT
(1)='1'OR(STOPLIGHT
(1)='0'ANDFDNLIGHT
(1)='1')THEN
UDSIG<='1';
MYLIFT<=DOWN;
ELSEUDSIG<='0';MYLIFT<=UP;
ENDIF;
ELSIFPOSITION=3THEN
IF
STOPLIGHT="000"ANDFUPLIGHT="000"ANDFDNLIGHT="000"THEN
UDSIG<='1';
MYLIFT<=DOORCLOSE;
ELSEUDSIG<='1';MYLIFT<=DOWN;
ENDIF;
ENDIF;
ENDIF;
WHENUP=>
POSITION<=POSITION+1;
POS:
=POS+1;
IFPOS<3AND(STOPLIGHT(POS)='1'ORFDNLIGHT(POS)='1')
THENMYLIFT<=STOP;
ELSIFPOS=3AND(STOPLIGHT(POS)='1'ORFDNLIGHT(POS)='1')
THENMYLIFT<=STOP;
ELSE
MYLIFT<=DOORCLOSE;
ENDIF;
WHENDOWN=>
POSITION<=POSITION-1;
POS:
=POS-1;
IFPOS>1AND(STOPLIGHT(POS)='1'ORFUPLIGHT(POS)='1')
THENMYLIFT<=STOP;
ELSIFPOS=1AND(STOPLIGHT(POS)='1'ORFDNLIGHT(POS)='1')
THENMYLIFT<=STOP;
ELSEMYLIFT<=DOORCLOSE;
ENDIF;
WHENSTOP=>
MYLIFT<=DOOROPEN;
WHENDOOROPEN=>
DOORLIGHT<='1';
IFUDSIG='0'THEN
IF
POSITION<=2AND(STOPLIGHT(POSITION)='1'ORFUPLIGHT(POSITION)='1')THEN
CLEARUP<='1';
ELSECLEARUP<='1';CLEARDN<='1';
ENDIF;
ELSIFUDSIG='1'THEN
IF
POSITION>=2AND(STOPLIGHT(POSITION)='1'ORfDNLIGHT(POSITION)='1')THEN
CLEARDN<='1';
ELSECLEARUP<='1';CLEARDN<='1';
ENDIF;
ENDIF;
MYLIFT<=DOORWAIT1;
ENDCASE;
ENDIF;
ENDIF;
ENDPROCESSCTRLIFT;
CTRLIGHT:
PROCESS(RESET,BUTTONCLK)
BEGIN
IFRESET='1'THEN
STOPLIGHT<="000";FUPLIGHT<="000";FDNLIGHT<="000";
ELSE
IFBUTTONCLK'EVENTANDBUTTONCLK='1'THEN
IFCLEARUP='1'THEN
STOPLIGHT(POSITION)<='0';FUPLIGHT(POSITION)<='0';
ELSE
IFF1UPBUTTON='1'THENFUPLIGHT
(1)<='1';
ELSIFF2UPBUTTON='1'THENFUPLIGHT
(2)<='1';
ENDIF;
ENDIF;
IFCLEARDN='1'THEN
STOPLIGHT(POSITION)<='0';FDNLIGHT(POSITION)<='0';
ELSE
IFF2DNBUTTON='1'THENFDNLIGHT
(2)<='1';
ELSIFF3DNBUTTON='1'THENFDNLIGHT(3)<='1';
ENDIF;
ENDIF;
IFSTOP1BUTTON='1'THENSTOPLIGHT
(1)<='1';
ELSIFSTOP2BUTTON='1'THENSTOPLIGHT
(2)<='1';
ELSIFSTOP3BUTTON='1'THENSTOPLIGHT(3)<='1';
ENDIF;
ENDIF;
ENDIF;
ENDPROCES
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 FPGA 三层 电梯 设计