EDA课程设计(电梯)
- 格式:doc
- 大小:1.16 MB
- 文档页数:7
课程设计(综合实验)报告( 2010 -- 2011 年度第 1 学期)名称:EDA课程设计题目:电梯控制的实现院系:班级:学号:学生姓名:指导教师:设计周数:1周成绩:日期:年月日一、课程设计的目的与要求用Mealy有限状态机设计二个楼层电梯控制程序。
用VHDL语言写出Mealy有限状态机控制模块。
Mealy有限状态机的输出受控于当前的状态和信号输入的变化,一旦这敏感信号被测,输出的信号就依赖于它们得到确定。
电梯控制器的工作原理:当电梯空闲时,其状态等待着其他楼层的请求,一旦有请求输入信号,电梯移动到该请求信号的楼层,这时引起电梯门被关闭。
引起电梯门关闭的条件有如下二个:①必须在地面楼层状态StateGround;②首层有请求输入信号ReqFirst。
电梯开始移动到请求层,在移动过程中State从Ground转变为GoingFirst。
当到达请求层后,电梯门被打开并且请求灯熄灭,此状态转换为First状态。
这时如有其他楼层请求信号输入将引起电梯门的关闭(如地面层有楼层请求信号ReqGround)。
当电梯门正在做关闭动作时,同时又要做重新打开电梯门的动作,其条件必须有当前楼层请求信号ReqFirst输入(其他请求信号均被忽略)。
电梯门关闭以后,电梯可再次响应其他楼层请求,即这时电梯State状态为First状态,并且又从地面层来一个请求信号ReqGround,将会引起电梯State状态从First状态改变为GoingGround状态,电梯开始往下运行。
在未到达目的地之前,其他请求信号均被忽略。
二、设计正文本设计是基于VHDL语言开发的两层电梯控制器。
以Quartus Ⅱ为开发环境,最终在EDA实验箱上实现其演示的基本功能。
其功能包括:显示电梯当前所在楼层,显示有请求发生的楼层,响应楼层请求,关门延时设置,电梯开关门显示。
具体描述为:1、电梯外部有请求开关,一楼一个,二楼一个;电梯内部有乘客到达层次的请求开关。
全自动电梯控制卢维彪020920181.设计要求设计一个4层楼房全自动电梯控制电路,其功能如下:◆每层楼电梯入口处设有上,下请求开关各1,电梯内设有乘客到达层次的停站要求开关。
◆有电梯所处位置指示装置和电梯上行,下行状态批示装置。
◆电梯每秒升(降)一层楼。
到达某一层楼时,指示该层次的灯发光,并一直保持到电梯到达新一层为止。
◆电梯到达有停站请求的楼层后,该层次的指示灯亮,经过0.5S,电梯门自动打开,开门指示灯亮,开门5S后,电梯门自动关闭(开门指示灯灭),电梯继续运行。
◆能记忆电梯内外的所有请求信号,并按照电梯运行规则次第响应,每个请求信号保留至执行后撤除。
◆电梯运行规则,电梯处于上升模式时,只响应比电梯所在位置高的层次的上楼请求信号,由下而上逐个执行,直到最后一个请示执行完毕。
如更高层次有下楼请求,则直接升到有下楼请求的楼层接客,然后便进入下降模式。
电梯处于下降模式时与之相反,仅响应比电梯所在位置低的楼层的下楼请求。
电梯执行完所有的请求后,应停在最后所在的位置不变,等待新的请求。
◆开机(接通电源)时,电梯应停留在一楼,而各种上,下请求皆被清除。
2.设计提示▲用实验板上提供的按键开关作为上楼(3个)下楼(3个)请求,以及乘客进入电梯后,要求停靠楼层的开关。
按键状态用发光二极管显示。
▲电梯所在楼层位置用数码管显示,另用二只发光二极管显示上行状态和下行状态。
▲利用发光二极管(6只)作为开门指示,其时序如下图所示。
▲电梯开门时间可以要求延长,每按一次延长键,自按键时开始延长5秒,可以连续使用。
也可提前关门(按动关门键)。
▲电梯运行过程中,不断判断前进方向是否存在上楼请求或下楼请求信号,如到达某层后,上、下方均无请求,则电梯停在该层,中止运行。
div2Hz模块(1000Hz—2Hz分频器):library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity div2Hz isport(clk:in std_logic;clkout:out std_logic);end div2Hz;architecture one of div2Hz issignal count: std_logic_vector(8 downto 0);beginprocessbeginwait until clk'event and clk='1';if count<500 then count<=count+1; clkout<='0';else count<=(others=>'0'); clkout<='1';end if;end process;end architecture one;Elevator模块(控制器):library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity elevator isport( clk: in std_logic;up1,up2,up3,stop1,stop2,stop3,stop4,down4,down3,down2: in std_logic;ddelay,dclose: in std_logic;upled,downled: out std_logic;floorled,nowfloor: out std_logic_vector(3 downto 0);dopenled: out std_logic_vector(5 downto 0));end elevator;architecture bhv of elevator istype state_type is (start,run,opendoor,dopenwait2,dopenwait3,dopenwait4,dopenwait5,dopenwait6,dopenwait7,dopenwait8, dopenwait9,dopenwait10,dclse,up,down,upwait1,upwait2,downwait1,downwait2,stop); signal state : state_type;signal upm,downm,stopm,dat: std_logic_vector(3 downto 0); ---memmory of orders signal dclosem,ddelaym: std_logic;beginstate_trans: process (clk,up1,up2,up3,down4,down3,down2,stop1,stop2,stop3,stop4,upm,downm,stopm,dat,ddelay,dclose) variable position: integer range 0 to 4;beginif rising_edge(clk) thenif up1='1' then upm(0)<='1'; end if;if up2='1' then upm(1)<='1'; end if;if up3='1' then upm(2)<='1'; end if;upm(3)<='0';if down4='1' then downm(3)<='1'; end if;if down3='1' then downm(2)<='1'; end if;if down2='1' then downm(1)<='1'; end if;downm(0)<='0';if stop1='1' then stopm(0)<='1'; end if;if stop2='1' then stopm(1)<='1'; end if;if stop3='1' then stopm(2)<='1'; end if;if stop4='1' then stopm(3)<='1'; end if;if dclose='1' then dclosem<='1'; end if;if ddelay='1' then ddelaym<='1'; end if;dat<= upm or downm or stopm; ---orders from both inside and outside all savedcase state iswhen start =>if dat="0000" then state <= start; ---no order,no operation elsif position= 0 then position:=position+1; state <= run;end if;when run => ---start working if position=1 thenif stopm(0)='1' or upm(0)='1' thenstopm(0)<='0'; upm(0)<='0'; state<= opendoor;elsif dat> "0001" then state<= up;end if;elsif position=2 thenif stopm(1)='1' or upm(1)='1' or downm(1)='1' thenstopm(1)<='0'; upm(1)<='0'; downm(1)<='0'; state<= opendoor;elsif dat> "0011" then state<= up;elsif dat< "0010" then state<= down;end if;elsif position=3 thenif stopm(2)='1' or upm(2)='1' or downm(2)='1' thenstopm(2)<='0'; upm(2)<='0'; downm(2)<='0'; state<= opendoor;elsif dat> "0111" then state<= up;elsif dat< "0100" then state<= down;end if;elsif position=4 thenif stopm(3)='1' or downm(3)='1' thenstopm(3)<='0'; downm(3)<='0'; state<= opendoor;elsif dat< "1000" then state<= down;end if;end if;when up => upled<='1'; state<=upwait1; ---1 second taken to go upwhen upwait1=> state<= upwait2;when upwait2=>upled<='0'; position:=position+1; ---reach a higher floorif position=2 and (upm>"0011" or stopm>"0011") and stopm(1)='0' and upm(1)='0' then state<= up; elsif position=3 and dat>"0111" and stopm(2)='0' and upm(2)='0' then state<= up; else state<= opendoor;end if;when down=> downled<= '1'; state<= downwait1; ---1 second taken to go down when downwait1=> state<= downwait2;when downwait2=>downled<= '0'; position:=position-1; ---reach a lower floorif position=3 and (downm<"0100" or stopm<"0100") and stopm(2)='0' and downm(2)='0' then state<= down; elsif position=2 and dat<"0010" and stopm(1)='0' and downm(1)='0' then state<= down; else state<= opendoor;end if;when opendoor=> ---open door after 0.5 second if position=1 then stopm(0)<='0'; upm(0)<='0';elsif position=2 then stopm(1)<='0'; upm(1)<='0'; downm(1)<='0'; elsif position=3 then stopm(2)<='0'; upm(2)<='0'; downm(2)<='0'; elsif position=4 then stopm(3)<='0'; downm(3)<='0'; end if; ---orders from the opendoor_floor removed dopenled<="001100";if dclosem='1' then state<= dopenwait9; dclosem<='0'; elsif ddelaym='1' then state<= opendoor; ddelaym<='0'; else state<= dopenwait2;end if;when dopenwait2=>if dclosem='1' then state<= dopenwait9; dclosem<='0'; elsif ddelaym='1' then state<= opendoor; ddelaym<='0'; else state<= dopenwait3;end if;when dopenwait3=> dopenled<="011110"; state<= dopenwait4;when dopenwait4=>if dclosem='1' then state<= dopenwait9; dclosem<='0'; elsif ddelaym='1' then state<= opendoor; ddelaym<='0'; else state<= dopenwait5;end if; when dopenwait5=> dopenled<="111111"; state<= dopenwait6; when dopenwait6=>if dclosem='1' then state<= dopenwait9; dclosem<='0';elsif ddelaym='1' then state<= opendoor; ddelaym<='0';else state<= dopenwait7;end if; when dopenwait7=> dopenled<="011110"; state<= dopenwait8; when dopenwait8=>if dclosem='1' then state<= dopenwait9; dclosem<='0';elsif ddelaym='1' then state<= opendoor; ddelaym<='0';else state<= dopenwait9;end if; when dopenwait9=> dopenled<="001100"; state<= dopenwait10; ---display of the opendoor_leds when dopenwait10=>if dclosem='1' then state<= dopenwait9; dclosem<='0';elsif ddelaym='1' then state<= opendoor; ddelaym<='0';else state<= dclse;end if; when dclse=>dopenled<="000000";if dat>"0000" then state<= run;else state<= stop;end if; when stop => if dat>"0000" then state<= run;elsif ddelaym='1' then state<= opendoor; ddelaym<='0';else state<= stop;end if;end case;end if;if position=1 then nowfloor<="0001"; floorled<="0001"; elsif position=2 then nowfloor<="0010"; floorled<="0010"; elsif position=3 then nowfloor<="0011"; floorled<="0100"; elsif position=4 then nowfloor<="0100"; floorled<="1000"; else nowfloor<="0000"; floorled<="0000"; end if; ---display of floor_leds end process state_trans;end bhv;综合实现模块:library ieee;use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all;entity finalctrol is port( clk: in std_logic; up1,up2,up3,stop1,stop2,stop3,stop4,down4,down3,down2: in std_logic;ddelay,dclose: in std_logic;upled,downled: out std_logic;floorled,nowfloor: out std_logic_vector(3 downto 0);dopenled: out std_logic_vector(5 downto 0)); end finalctrol; architecture arc of finalctrol is component div2Hz port(clk: in std_logic;clkout: out std_logic);end component;component elevator port( clk: in std_logic; up1,up2,up3,stop1,stop2,stop3,stop4,down4,down3,down2: in std_logic;ddelay,dclose: in std_logic;upled,downled: out std_logic;floorled,nowfloor: out std_logic_vector(3 downto 0);dopenled: out std_logic_vector(5 downto 0));end component; signal clkwire: std_logic; beginU1: div2Hz port map(clk,clkwire); U2:elevatorportmap(clkwire,up1,up2,up3,stop1,stop2,stop3,stop4,down4,down3,down2, ddelay,dclose,upled,downled,floorled,nowfloor,dopenled);―――元件例化语句end arc;EDA综合结果:时序仿真波形:心得体会:最后是差不多做出来了,但是这个过程花费了我太多时间、精力!如果我把这些时间分一些出来复习电磁场,或许我的电磁场试卷上就不会有那么多空白、、、EDA,quartusii,是好东西,实用的东西!但是跟其他各种考试一起夹击我,还是觉得有点吃不消,压力太大、、、几乎每一步都不曾顺利,都有各种阻碍,需要我一点点地去探测它,再各种途径认识、了解它,最后克服它,整个过程,遇到的问题就太多太多了,说出来不知道可以写几页,可以说过程十分艰苦,就像在黑夜里徒步穿越一片阴森的树林、、、也怪自己基础、能力太差,不过,最后,总算做出来了,学到不少东西,切实地提高了动手能力,也算值了吧!VHDL,FPGA,真是神奇的东西,就像高级语言一样,只描述电路模块的功能,然后电路生成由软件来完成,甚至都不需要连线,只写好代码就行,切实感觉到了现代电子设计的给力之处!对付errors简单,是语法问题,是普通程序员的活儿;对付warnings难,是逻辑问题,算法问题,是工程师的活儿!对这门课的意见与建议:这是一门好课,非常实用的东西,但是它应该早一点结束!不要等这么久,以为给学生充足的时间去准备,其实大家下去根本没有弄,都是等到要进实验室了才着手准备的!到这几天,各种大作业、各种考试如大军压境,再来个EDA,那大家的压力也太大了、、、、2011、12、16。
eda课课程设计电梯一、教学目标本课程的教学目标是使学生掌握eda课程的基本知识和技能,能够运用所学知识分析和解决实际问题。
具体分为以下三个部分:1.知识目标:学生需要掌握eda课程的基本概念、原理和方法,包括数据的采集、处理、分析和可视化等。
2.技能目标:学生需要能够运用eda课程的知识,进行数据的处理和分析,能够独立完成数据分析的项目。
3.情感态度价值观目标:学生通过学习eda课程,能够培养对数据的敏感性和好奇心,形成积极探究数据背后信息的意识。
二、教学内容本课程的教学内容主要包括eda课程的基本概念、原理和方法。
具体包括以下几个部分:1.数据的采集:介绍数据采集的基本方法,包括问卷、实验设计等。
2.数据的处理:介绍数据处理的基本方法,包括数据的清洗、转换和整合等。
3.数据分析:介绍数据分析的基本方法,包括描述性统计、推断性统计和机器学习等。
4.数据可视化:介绍数据可视化的基本方法,包括图表的绘制和信息的呈现等。
三、教学方法本课程的教学方法主要包括讲授法、案例分析法和实验法。
具体包括以下几个部分:1.讲授法:通过讲解和演示,使学生掌握eda课程的基本概念、原理和方法。
2.案例分析法:通过分析实际案例,使学生能够运用所学知识分析和解决实际问题。
3.实验法:通过实验操作,使学生能够亲手处理和分析数据,提高学生的实践能力。
四、教学资源本课程的教学资源主要包括教材、参考书、多媒体资料和实验设备。
具体包括以下几个部分:1.教材:选用权威、实用的教材,为学生提供基本的学习资料。
2.参考书:推荐一些相关的参考书,丰富学生的知识体系。
3.多媒体资料:制作精美的多媒体课件,提高学生的学习兴趣。
4.实验设备:配置齐全的实验设备,为学生提供实践操作的机会。
五、教学评估本课程的评估方式包括平时表现、作业和考试三个部分,以全面客观地评价学生的学习成果。
1.平时表现:通过观察学生在课堂上的参与程度、提问和回答问题的情况,了解学生的学习态度和理解能力。
eda课程设计电梯一、教学目标本课程的学习目标包括知识目标、技能目标和情感态度价值观目标。
知识目标要求学生掌握电梯的基本原理、结构和工作方式,了解电梯的安全使用和维护知识。
技能目标要求学生能够运用所学知识进行电梯的简单设计和分析,提高学生的工程实践能力。
情感态度价值观目标要求学生培养对电梯工程技术的兴趣和热情,增强对工程技术的敬畏之心。
通过对学生的特点和教学要求的分析,我们将课程目标分解为具体的学习成果。
首先,学生需要理解并能够描述电梯的基本原理和结构,包括电动机、控制系统、电梯门等关键部分的作用。
其次,学生需要掌握电梯的工作方式,能够分析电梯的运行过程和故障原因。
再次,学生需要了解电梯的安全使用和维护知识,能够进行简单的电梯故障排查和修复。
最后,学生需要通过实际操作和案例分析,提高自己的工程实践能力,培养对电梯工程技术的兴趣和热情。
二、教学内容根据课程目标,我们选择和了以下教学内容。
首先,介绍电梯的基本原理,包括电动机的工作原理、控制系统的功能等。
然后,讲解电梯的结构,包括轿厢、对重、导向系统、门系统等部分的作用和设计要求。
接着,讲解电梯的工作方式,包括电梯的启动、运行、停止过程以及故障原因分析。
此外,还讲解电梯的安全使用和维护知识,包括电梯的故障排查、修复方法等。
最后,通过实际操作和案例分析,让学生亲身参与电梯的设计和分析,提高学生的工程实践能力。
三、教学方法为了实现课程目标,我们选择了一系列合适的教学方法。
首先,采用讲授法,由教师讲解电梯的基本原理、结构和工五、教学评估为了全面反映学生的学习成果,我们设计了一系列评估方式。
首先,通过平时表现评估学生的课堂参与度和学习态度。
其次,通过作业评估学生的理解和应用能力,要求学生完成电梯设计、分析等实际任务。
最后,通过考试评估学生的综合运用能力和复习效果。
这些评估方式应客观、公正,能够全面反映学生的学习成果。
六、教学安排教学安排规定了教学进度、教学时间和教学地点等。
【摘要】随着科技的迅速的发展,电梯已经成为生活中不可缺少的交通工具,电梯在国内的需求量也是与日俱增。
然而相比于其他发达国家比如欧美,我国的创新元素还还相对较少。
电梯的出现要追溯到上世纪,在那时电梯就已经融入到生活中并且取得了使用者的青睐.电梯的传统控制系统通常是采用继电器——接触器,而随着超大规模集成电路技术的成熟,FPGA作为一个新的生力军,在电梯的控制中已经取得了广泛的应用。
另外,随着可持续发展理念的深入人心,电梯更是融入了节能的元素。
由于FPGA内部集成了数以万计的逻辑单元,这样的特点使得它在电梯的控制上具有天然的优势。
本设计是基于VHDL硬件描述语言而实现的多层电梯控制与远程监控系统,在程序的设计上,主要采用了有限状态机,程序中设立了两个进程相辅相成,以信号灯控制进程作为辅助进程,状态机作为主要进城.本次设计是采用VHDL硬件描述语言而设计的十层电梯控制系统,以Altera公司的QUARTUS II软件作为开发平台,实现了电梯的基本功能以及远程监控功能。
【关键词】:电梯控制器,VHDL,状态机,远程监控ABSTRACTAlong with the science and technology rapid development, the elevator has become indispensable in life traffic tools, the elevator is also grow with each passing day in domestic demand。
However, compared to other developed countries such as Europe and the United States,innovation elements in China is still relatively small. The elevator can be traced to the last century, when the elevator already into life and made users. The traditional elevator control system uses the relay —contactor is usually, but with very large scale integrated circuit technology matures,FPGA as a new force, extensive application has been made in elevator control. In addition,with the win support among the people of the concept of sustainable development,the elevator is also incorporate energy—saving elements.Because the FPGA internal integration logic unit of tens of thousands of,this character makes it has a natural advantage in elevator control。
注:停车流程图要改,停车后,先延时一,再开门清相应信号灯,再延时二,再关门,最后返回。
延时同样有判断。
整体设计:左侧输入:按键,电源,压力传感器。
中间和右侧输出则与以前相同。
按以前的设计报告,你在画一份吧。
状态装换:附图两张:你自己看。
四层电梯控制器设计思路:采用状态机来实现电梯控制器,思路比较清晰。
根据电梯的实际工作情况,可以把电梯设置为9个状态,分别是“电梯停留在1层”、“开门”、“关门”、“延时一”、“延时二”、“报警”、“上升”、“下降”和“停止”状态。
各个状态的转换条件可有设计要求所决定。
1、四层电梯控制器的实体实际对于输入端口,一个异步复位端reset,用于在系统不正常时回到初始状态,在电梯外部,必须有升降请求端口,一层:上升请求端口,二三层:上升下降请求端口均有,四层:下降请求端口;在电梯内部,应有各层停留的的请求端口;一个时钟输入端口,用于驱动电梯的升降机开关门等动作;另有一个按键时钟输入端口,时钟频率比电梯时钟高。
对于输出端口,有升降请求信号,就得有一个输出端口来指示请求是否被响应,有请求信号后,该输出端口逻辑为‘1’,被响应后则恢复为‘0’,同样,在电梯内部也应该有这样的端口来显示是否被响应;在电梯外部,需要一个端口来显示电梯现在所处的位置;电梯的开关门的状态也能用一个输出端口来指示;电梯的升降状态用一个输出端口来指示。
2、结构体设计状态机设了九个状态,type lift_stata is(stopon1,dooropen,doorclose,delay1,delay2,warning,up,down,stop);signal mylift:lift_stata;--定义为lift_stata类型的信号mylift 在结构体中,有两个进程,状态机进程作为主要进程,信号灯控制进程作为辅助进程。
状态机进程中的很多判断条件是以信号灯控制进程产生的信号灯信号为依据的,而信号灯控制进程中信号灯的熄灭又是由状态机进程中传出的clearup和cleardn信号来控制。
目录1.任务要求---------------------------------------------------------------------------2 2.程序分析---------------------------------------------------------------------------22.1电梯运行规则--------------------------------------------------------------------22.2程序设计说明--------------------------------------------------------------------5 3.程序调试--------------------------------------------------------------------------12 4.程序仿真-------------------------------------------------------------------------144.1波形输入建立------------------------------------------------------------------144.2电梯运行情况仿真--------------------------------------------------------------164.3电梯功能仿真-------------------------------------------------------------------195.实训感想---------------------------------------------------------------------------20 参考文献----------------------------------------------------------------------------201.任务要求在电子技术飞速发展的今天,现代电子产品几乎渗透到了社会的各个领域,有力地推动了社会生产力的发展和社会信息化程度的提高,同时也使现代电子产品性能进一步提高,加速了电子设计技术的普及进程及技术革新。
EDA电梯控制器课程设计EDA电梯控制器课程设计目录1 绪论 (1)1.1 电梯控制系统的发展史 (1)1.2 电梯的发展方向 (2)2 基于EDA技术的四层电梯控制器设计 (3)2.1 系统控制要求 (3)2.1.1 四层电梯控制器的功能 (3)2.1.2 控制方案的制定 (4)3 系统仿真 (8)4 结束语 (8)参考文献 (9)附录: (10)摘要:电梯是机械电器紧密结合的大型机电产品.主要由机房、井道、轿厢、门系统和电气控制系统组成。
伴随建筑业的发展,为建筑内提供上下交通运输的电梯工业也在日新月异地发展着。
电梯已不但是一种生产环节中的重要设备,更是一种工作和生活中的必须设备,完全能够预想到,随着社会的发展,电梯产品在人们物质文化生活中的地位将和汽车一样,成为重要的运输设备之一。
关键字:电梯控制器,CPLD,VHDL状态机,EDA。
1 绪论1.1 电梯控制系统的发展史从1889年出现第一台名副其实的电梯后,电梯控制技术经历了四次大的发展。
1)继电器控制阶段。
在计算机技术还没有广泛应用于工业控制领域时,继电器一直充当着工业控制中的核心部件,电梯控制系统领域也不例外。
上世纪八十年代以前,继电器控制一直是中国电梯控制系统的全部。
到了八十年代,继电器控制依然是电梯控制系统中的主导技术。
(2)PLC控制阶段。
PLC实际上是一种通用的工业控制技术,在进入电梯控制系统以前,已被广泛应用于其它各种工业控制领域。
在中国,从上世纪八十年代末开始,PLC逐渐被各电梯厂家成功应用到电梯控制系统中。
九十年代,国内自己开发、设计的电梯控制系统中,PLC系统占绝对主导地位。
(3)微机控制系统。
实际上,在发达国家的著名电梯生产厂家中,如奥的斯、三菱等,它们根本就没有用过PLC作为电梯控制系统。
早在上世纪七十年代末期或八十年代初,专用的微机电梯控制系统已经投入市场。
早期中国国内生产的专用微机电梯控制系统,基本上都是从国外引进技术的产品。
目录前言 (1)1 绪论 (2)1.1 课程设计题目 (2)1.2 设计目的 (2)1.3 课程设计要求 (2)1.4 课程设计思想 (3)2 软件介绍 (4)3课程设计步骤 (6)3.1 状态机的基本原理 (6)3.2 电梯控制器的功能模块 (6)3.3 电梯控制器的流程图 (7)3.4 电梯控制器的VHDL描述模块流程 (8)3.5 实体设计 (8)3.6 结构体设计 (8)3.7 VHDL源代码语法的简单说明 (9)3.8 电梯输入输出端口图 (10)4 三层电梯控制器的调试及仿真 (11)4.1 程序的调试 (11)4.2 波形仿真 (11)5课程设计的意义 (15)5.1 设计背景 (15)5.2 课程设计的意义 (15)5.2.1 中国电梯的现状 (15)5.2.2 电梯的节能和环保 (16)5.2.3 电梯的智能化 (16)6 总结 (17)参考文献 (18)附录 (19)前言电梯作为垂直方向的交通工具,在高层建筑和公共场所已成为不可或缺的设备。
中国是全球最大的电梯市场,也具有最强的电梯生产能力,但由于缺乏自主知识产权和核心技术,自主品牌占市场的份额很少。
因此要加大对电梯技术的创新和发展,提升电梯的性能,就需要引进更好的技术,电梯控制器就是很好的装置,大力开发控制器是很必要的。
电梯控制器可以有很多实现方式,本设计用了EDA技术进行操作。
EDA 技术打破了软件和硬件间的壁垒,使计算机的软件技术与硬件实现、设计效率与产品性能合二为一,它代表了电子设计技术和应用技术的发展方向。
VHDL主要用于描述数字系统的接口,结构和功能,它的语法简单易懂,移植性好。
我设计的是一个3层电梯控制器。
分为主控制器和分控制器。
主控制器是电梯内部的控制器,每层电梯入口处有一个分控制器。
本设计采用VHDL,源程序Altera公司的Quartus II软件仿真。
运用有限状态机的设计方法,设计了两个进程相互配合,状态机进程作为主要进程,信号灯控制进程作为辅助进程。
课程设计(综合实验)报告( 2010 -- 2011 年度第 1 学期)名称:EDA课程设计题目:电梯控制的实现院系:班级:学号:学生姓名:指导教师:设计周数:1周成绩:日期:年月日一、课程设计的目的与要求用Mealy有限状态机设计二个楼层电梯控制程序。
用VHDL语言写出Mealy有限状态机控制模块。
Mealy有限状态机的输出受控于当前的状态和信号输入的变化,一旦这敏感信号被测,输出的信号就依赖于它们得到确定。
电梯控制器的工作原理:当电梯空闲时,其状态等待着其他楼层的请求,一旦有请求输入信号,电梯移动到该请求信号的楼层,这时引起电梯门被关闭。
引起电梯门关闭的条件有如下二个:①必须在地面楼层状态StateGround;②首层有请求输入信号ReqFirst。
电梯开始移动到请求层,在移动过程中State从Ground转变为GoingFirst。
当到达请求层后,电梯门被打开并且请求灯熄灭,此状态转换为First状态。
这时如有其他楼层请求信号输入将引起电梯门的关闭(如地面层有楼层请求信号ReqGround)。
当电梯门正在做关闭动作时,同时又要做重新打开电梯门的动作,其条件必须有当前楼层请求信号ReqFirst输入(其他请求信号均被忽略)。
电梯门关闭以后,电梯可再次响应其他楼层请求,即这时电梯State状态为First状态,并且又从地面层来一个请求信号ReqGround,将会引起电梯State状态从First状态改变为GoingGround状态,电梯开始往下运行。
在未到达目的地之前,其他请求信号均被忽略。
二、设计正文本设计是基于VHDL语言开发的两层电梯控制器。
以Quartus Ⅱ为开发环境,最终在EDA实验箱上实现其演示的基本功能。
其功能包括:显示电梯当前所在楼层,显示有请求发生的楼层,响应楼层请求,关门延时设置,电梯开关门显示。
具体描述为:1、电梯外部有请求开关,一楼一个,二楼一个;电梯内部有乘客到达层次的请求开关。
2、设有电梯所处位置指示装置和电梯运行模式(上升或下降)指示装置。
3、电梯到达请求楼层后,电梯门开启(电梯门指示灯亮),开门四秒后,电梯门关闭(电梯门指示灯灭),电梯继续响应请求或回到初始状态。
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 ISPORT(clk,reset,up1,down2,stop1,stop2:IN STD_LOGIC;--按键共有4个,其中电梯内部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);--门灯,开门灯亮,关门灯灭END dianti;ARCHITECTURE behav OF dianti ISTYPE state_type is(stopon1,dooropen,doorclose,wait1,wait2,wait3,wait4,up,down, stop);--十个状态,初始,开门,关门,延时1~4,上升,下降,停SIGNAL state:state_type:=stopon1;SIGNAL clearup,cleardn,anjianclk,dianticlk:STD_LOGIC;--上升清零,下降清零,按键时钟,电梯时钟SIGNAL q:STD_LOGIC_VECTOR(3 DOWNTO 0);BEGINPROCESS(clk) --设定按键时钟和电梯时钟,外部时钟周期设为50msBEGINIF(reset='1') THENq<="0000";ELSIF RISING_EDGE(clk) thenq<=q+1;END IF;anjianclk<=q(0); --二分频dianticlk<=q(3); --十六分频END PROCESS;cont:PROCESS(reset,dianticlk)V ARIABLE POS:INTEGER RANGE 3 DOWNTO 1;BEGINIF reset='1' thenstate<=stopon1;clearup<='0';cleardn<='0'; --复位elsif rising_edge(dianticlk) THENCASE state IS --设定状态机的各个状态WHEN stopon1=>doorlight<='1'; position<=1;pos:=1; state<=wait1;WHEN wait1=>state<=wait2; --延时WHEN wait2=>clearup<='0'; cleardn<='0'; state<=wait3;WHEN wait3=>state<=wait4;WHEN wait4=>state<=doorclose;WHEN doorclose =>doorlight<='0'; --从开门到关门经历5个电梯时钟周期IF udsig='0' THEN --(预)上升状态时IF position=2 THEN--电梯在二楼时IF stoplight="00" and uplight='0' and downlight='0' THENudsig<='1'; state<=doorclose;ELSIF stoplight="10" THEN state<=dooropen;ELSIF downlight='1' THEN state<=dooropen;ELSEudsig<='1'; state<=down;END IF;ELSIF position=1 THEN --电梯在一楼时IF stoplight="00" and uplight='0' and downlight='0' THENudsig<='0'; state<=doorclose;ELSIF stoplight="01" THEN state<=dooropen;ELSIF uplight='1' THEN state<=dooropen;ELSEudsig<='0'; state<=up;END IF;END IF;ELSIF udsig='1' THEN --(预)下降状态时IF position=1 THEN --电梯在一楼IF stoplight="00" and uplight='0' and downlight='0' THENudsig<='0'; state<=doorclose;ELSIF stoplight="01" THEN state<=dooropen;ELSIF uplight='1' THEN state<=dooropen;ELSEudsig<='0'; state<=up;END IF;ELSIF position=2 THEN--电梯在二楼时IF stoplight="00" and uplight='0' and downlight='0' THENudsig<='1'; state<=doorclose;ELSIF stoplight="10" THEN state<=dooropen;ELSIF downlight='1' THEN state<=dooropen;ELSEudsig<='1'; state<=down;END IF;END IF;END IF;WHEN up=>position<=position+1; pos:=pos+1;IF (pos=2) THENstate<=stop;END IF;WHEN down=>position<=position-1; pos:=pos-1;IF (POS=1) THENstate<=stop;END IF;WHEN stop=>state<=dooropen;WHEN dooropen=>doorlight<='1'; clearup<='1'; cleardn<='1'; state<=wait1;when others=>state<=stopon1;end case;end if;end process cont;butt:PROCESS(reset,anjianclk)--设定按键BEGINif reset='1' thenstoplight<="00"; uplight<='0'; downlight<='0';elsif rising_edge(anjianclk) thenif clearup='1' thenstoplight(position)<='0'; uplight<='0';elseif up1='1' then uplight<='1';END IF;END IF;if cleardn='1' thenstoplight(position)<='0'; downlight<='0';elseif down2='1'then 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):时钟设定,状态机设定,按键设定。