1、电梯控制器课设报告目录第一章 设计的性质与目的 2第二章 设计任务与要求 3第三章 方案选择与论证 4第四章 设计原理 54.1 原理图 54.2 流程图 64.3 结构框图 74.4 程序描述 8第五章 部分时序仿真图 145.1 电梯上锁 155.2 电梯报警 155.3 电梯超载 165.4 电梯运行模拟 175.5 电梯开门延时模拟 195.6 电梯紧急开门 19第七章 调试过程中出现的问题及解决措施 20第八章 设计总结 228.1 设计方案的优缺点比较 228.2 心得体会 22第一章 设计的性质与目的 SOPC/EDA综合课程设计是继EDA技术及应用和数字电子技术课程之后开出的实
2、践环节教学。目的是训练学生综合运用学过的数字电子技术和EDA技术及应用的基本知识,培养独立设计比较复杂的数字逻辑系统的能力。设计工作建立在硬件和软件两个平台的基础上。硬件平台是可编程逻辑器件,所选的器件可保证在一片芯片上设计出题目要求的数字电路系统。软件平台是ALTERA公司的Quartus II。通过课程设计,学生要掌握使用EDA(电子设计自动化)工具设计数字逻辑的方法,包括设计输入、编译、软件仿真、下载和硬件仿真等全过程。第二章 设计任务与要求1.设计一个4层电梯全自动控制电路。2.电梯运行锁用一按钮代替(开锁上电),低电平可以运行,高电平不能运行。3.每层电梯入口处设有上行、下行请求按钮
3、,电梯内设有乘客到达层次的停站要求开关,高电平有效。4.有电梯所处楼层指示灯和电梯上行、下行状态指示灯。5.电梯到达某一层时,该层指示灯亮,并一直保持到电梯到达另一层为止。电梯上行或下行时,相应状态指示灯亮。6.电梯接收到停站请求后,每层运行2秒,到达停站层,停留2秒后门自动打开,开门指示灯亮,开门6秒后电梯自动关门。7.能记忆电梯内、外的请求信号,并按照电梯的运行规则依次响应,请求信号保留至响应后撤除。8.人数超载或超重用一按钮代替,高电平有效,超载时电梯不能运行,并有相应指示。9.事故报警按钮高电平有效,事故报警不能运行,并有指示灯,信号保留至事故消除。10.增加手动开门、关门控制,并可调
4、整开、关门时间。第三章 方案选择与论证电梯共有上升、下降、开门、关门、停止、一楼、二楼、三楼、四楼等几个状态,设计电梯就是要弄清楚这几个状态之间的相互转化关系,可以假设电梯开始时在一楼,如果二三四楼有请求(包括电梯要停在二楼或二楼有上升或下降请求或停在三楼或三楼有上升或下降请求或停在四楼、或四楼有下降请求),则电梯要上升,否则就停在一楼。当电梯在二楼时,如果三楼或四楼有请求(包括电梯停在三楼或三楼有上升或下降请求或停在四楼或四楼有下降请求),则电梯要上升,如果一楼有请求(包括停在一楼或一楼有上升请求),则电梯下降。当电梯在三楼时,如果四楼有请求(包括停在四楼或四楼有下降请求),则电梯要上升,如
5、果一楼二楼有请求(包括停在一楼或二楼或一楼二楼有上升请求或二楼有下降请求),则电梯要下降,否则电梯就停在三楼。当电梯在四楼,如果一二三楼有请求(包括停在一二三楼或一二三楼有上升请求或二三楼有下降请求),则电梯下降,否则电梯停在四楼。当电梯上锁时,电梯处于非工作状态,所有指示灯全灭,当电梯超载时,超载灯亮,等电梯遇到紧急情况时,报警灯亮。因为电梯上升或下降是一个过程,这个过程持续两秒,电梯开关门要持续六秒,所以还必须设计一个计数器,计数器和主控制器共同组成电路的原理方案图,这是主控制器和计数器可以不用同一个时钟脉冲驱动,但要处理好两个元件的连接。当然如果主控制器是用秒脉冲驱动,可以把两个模块集成
6、一个模块。第四章 设计原理4.1 原理图 图4.1 电梯控制器的原理图4.2 流程图图4.2 电梯控制器流程图4.3 结构框图图4.3 电梯控制器结构图4.4 程序描述library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_arith.all;use ieee.std_logic_unsigned.all;entity contrl is port(clk1,lock,alarm,overweight,It1,It2,It3,It4,up1,up2,up3,down2,down3,down4:in std_logic;-lock为
7、电梯锁开关 alarm为警报器开关 overweight为超重开关 It1、It2、It3、It4分别表示电梯停在一二三四楼 up1表示一楼有向上请求 Up2表示二楼有向上请求 up3表示三楼有向上请求 down2表示二楼有向下的请求-down3表示三楼有向下请求 down4表示四楼有向下请求 quick,delay,dengwo:in std_logic;-分别表示快速关门 延长一段时间关门 不马上关门 led1,led2,led3,led4:out std_logic;-一二三四楼层的指示灯 alarmled,overweightled,upled,downled,dooropenled:
8、out std_logic);-报警灯 超重灯 上行状态灯 下降状态灯 开门灯 end contrl;architecture xin of contrl istype state_type is(start,rukou,up,down,dooropen,stop,wait1,wait2,wait3,wait4,wait5,wait6,wait7,wait8,wait9,upwait1,upwait2,dnwait1,dnwait2);-start表示初始化状态 rukou表示程序执行状态 up上行状态 down下降状态 dooropen开门状态 stop停止运行状态-后面几个状态用来延时si
9、gnal state:state_type:=start;signal stopcun: std_logic_vector(3 downto 0);-电梯停止楼层存储器signal upcun,downcun: std_logic_vector(2 downto 0);-上升请求存储器 下降请求存储器signal dd1,dd2,dd3: std_logic_vector(3 downto 0);-信号用来交换数据beginp1:process(clk1,lock,alarm,overweight)variable position: integer range 0 to 4;beginif
10、lock=1 then led1=0;led2=0;led3=0;led4=0;alarmled=0;overweightled=0;dooropenled=0;upled=0;downled=0;-电梯上锁elsif alarm=1 then alarmled=1;-警报灯亮elsif overweight=1 then overweightled=1;-超重灯亮elsif rising_edge(clk1) then if up1=1 then upcun(0)=1; end if; if up2=1 then upcun(1)=1; end if; if up3=1 then upcun
11、(2)=1; end if; if down4=1 then downcun(2)=1; end if; if down3=1 then downcun(1)=1; end if; if down2=1 then downcun(0)=1; end if; if It1=1 then stopcun(0)=1; end if; if It2=1 then stopcun(1)=1; end if; if It3=1 then stopcun(2)=1; end if; if It4=1 then stopcun(3)=1; end if;-将各种请求存入存储器 dd1=0& upcun;-将上
12、升请求存储器扩展成四位 dd2=downcun & 0;-将下降请求扩展成四位 dd3 if dd3=0000 then state=start; elsif position=0 then led1=1;position:=position+1; state if position=1 then if stopcun(0)=1 or upcun(0)=1 then stopcun(0)=0;upcun(0)=0; state=dooropen; else state=up; end if;-电梯在一楼,如果当前层有请求,进入开门状态,同时清除请求,否则电梯上升 elsif position=
13、2 then if stopcun(1)=1 or upcun(1)=1 or downcun(0)=1 then stopcun(1)=0 ; upcun(1)=0;downcun(0)=0;state0011 then state=up; elsif dd30010 then state=down; end if;-电梯在二楼,如果当前层有请求,进入开门状态,同时将请求清除,如果三四楼有请求,电梯上升,否则下降 elsif position=3 then if stopcun(2)=1 or upcun(2)=1 or downcun(1)=1 then stopcun(2)=0;upcu
14、n(2)=0 ;downcun(1)=0; state0111 then state=up; elsif dd30100 then state=down; end if;-电梯在三楼,如果当前层有请求,进入开门状态,同时将请求清除,如果四楼有请求,电梯上升,否则下降 elsif position=4 then if stopcun(3)=1 or downcun(2)=1 then stopcun(3)=0;downcun(2)=0;state=dooropen; else stateupled=1;statestateupled=0;position:=position+1;-到达新的楼层,
15、上行指示灯灭 if position=1 then led1=1;led2=0;led3=0;led4=0;-一楼指示灯亮 elsif position=2 then led2=1;led1=0;led3=0;led4=0;-二楼指示灯亮 elsif position=3 then led3=1;led2=0;led1=0;led4=0;-三楼指示灯亮 elsif position=4 then led4=1;led1=0;led2=0;led3=0;-四楼指示灯亮 else led1=0;led2=0;led3=0;led40011 and stopcun(1)=0 and upcun(1)
16、=0 and downcun(0)=0 then state0111 and stopcun(2)=0 and upcun(2)=0 and downcun(1)=0 then state=up;-如果在三楼且当前层没有请求,电梯继续上升 else state=dooropen;if position=4 then if downcun(2)=1 then downcun(2)=0;end if; if stopcun(3)=1 then stopcun(3)=0;end if; elsif position=3 then if downcun(1)=1 then downcun(1)=0;
17、end if; if upcun(2)=1 then upcun(2)=0; end if; if stopcun(2)=1 then stopcun(2)=0;end if; elsif position=2 then if downcun(0)=1 then downcun(0)=0; end if; if upcun(1)=1 then upcun(1)=0; end if; if stopcun(1)=1 then stopcun(1)downled=1;statestatedownled=0;position:=position-1;-到达新的楼层,下降指示灯灭 if positio
18、n=1 then led1=1;led2=0;led3=0;led4=0; elsif position=2 then led2=1;led1=0;led3=0;led4=0; elsif position=3 then led3=1;led2=0;led1=0;led4=0; elsif position=4 then led4=1;led2=0;led3=0;led1=0; else led1=0;led2=0;led3=0;led4=0; end if; if position=3 and dd30100 and stopcun(2)=0 and upcun(2)=0 and downc
19、un(1)=0 then state=down;-电梯在三楼且当前层没有请求,电梯继续下降 elsif position=2 and dd30010 and stopcun(1)=0 and upcun(1)=0 and downcun(0)=0 then state=down;-电梯在二楼且当前层没有请求,电梯继续下降 else state=dooropen;if position=1 then if upcun(0)=1 then upcun(0)=0;end if; if stopcun(0)=1 then stopcun(0)=0;end if; elsif position=2 th
20、en if upcun(1)=1 then upcun(1)=0; end if; if downcun(0)=1 then downcun(0)=0; end if; if stopcun(1)=1 then stopcun(1)=0;end if; elsif position=3 then if upcun(2)=1 then upcun(2)=0;end if; if downcun(1)=1 then downcun(1)=0; end if; if stopcun(2)=1 then stopcun(2)statedooropenled=1; state if quick=1 th
21、en state=wait7;-快速关门,电梯开门后过三秒关门 elsif delay=1 then state=wait3;-延时关门,电梯开门后过九秒关门 else statestatestatestatestatestatestate dooropenled=0; if dengwo=1 then state0000 then state=rukou;-请求没有执行完毕,继续执行程序 else stateif position1 then stopcun(0)=1; state=rukou;-如果电梯不是停在一楼,将电梯返回到一楼 else led1=0;led2=0;led3=0;le
22、d4=0;alarmled=0; overweightled=0;dooropenled=0;upled=0;downled=0; position:=0;-电梯停止运行,进入上锁状态 end if;end case;end if;end process p1;end xin;第五章 部分时序仿真图5.1 电梯上锁电梯上锁,有请求也不执行;5.2 电梯报警当有紧急情况时,报警灯亮,有请求不会执行;5.3 电梯超载当电梯超载时,超载警报灯亮,有请求不执行5.4 电梯运行模拟这个图模拟的是多个请求时,电梯的运行情况。先是一楼有向上请求想到二楼去同时二楼有向上请求到四楼去,接着四楼有下降请求回到一楼
23、,电梯运行情况是:电梯在一楼(一楼指示灯led1亮)时开门持续6秒(波形上可以看到开门灯亮),关门后,电梯向上运行(上行指示灯亮2秒),到二楼后(二楼指示灯led2亮),电梯开门(同样开门灯持续亮六秒),接着电梯继续上升,上行指示灯亮2秒,到三楼时,三楼指示灯led3亮,电梯继续向上运行,上行指示灯亮2秒,到达四楼时四楼指示灯亮,同时电梯门打开(开门灯亮6秒),关门后,电梯向下运行(下降指示灯亮2秒),到达三楼时三楼指示灯亮,电梯继续向下运行(下降指示灯亮2秒),到达2楼时二楼指示灯亮,电梯继续向下运行(下降指示灯亮两秒),到达一楼时,电梯门打开(开门灯亮),关门后没有其它请求,电梯停止运行。
24、四楼有个向下的请求要到三楼去,二楼有个向下的请求要到一楼,电梯运行情况为:电梯开始时在一楼,一楼指示灯亮,电梯向上运行(上升指示灯亮2秒),到达二楼,二楼指示灯亮,电梯继续向上运行(上升指示灯亮2秒),到达三楼,三楼指示灯亮,电梯仍向上运行(上升指示灯亮2秒),到达四楼,四楼指示灯亮,电梯门打开(开门灯亮6秒),电梯关门后,电梯向下运行(下降指示灯亮2秒),到达三楼(三楼指示灯亮),电梯开门(开门指示灯亮6秒),电梯继续下降(下降指示灯亮2秒),到达二楼(二楼指示灯亮),电梯开门(开门指示灯亮6秒),电梯继续下降(下降指示灯亮2秒),到达一楼,电梯门打开,电梯运行结束。5.5 电梯开门延时模拟
25、电梯受到一个不马上关门信号(dengwo=1),电梯关上的门重新打开,并延长一段时间门。5.6 电梯紧急开门在这幅波形图上,当第二次开门时有一个快速关门信号(quick=1)开门灯亮了四秒就灭了(电梯关门了),当第三次开门时收到一个延时信号(delay=1),开门灯亮了8秒才灭。注释:由于有的信号名字太长无法全部显示出来,现特意标示(每幅图都一样),信号的名称依次为:alarm alarmled clk1 delay dengwo dooropenled down2 down3 down4 downled It1 It2 It3 It4 led1 led2 led3 led4 lock ove
26、rweight overweightled quick up1 up2 up3 upled 第七章 调试过程中出现的问题及解决措施Error:VHDL syntax error at contrl vhd(11)near text “if”:expecting “end”,or “(”or an identifier (“if” is a reserved keyword),or a parallel statement 这通常是警告你你写的程序在11行附近的if在后面没有end if 与之呼应。由于程序中用到判断条件的语句非常多,所以这个错误会经常出现。Error: VHDL error at haha.vhd(16): type of identifier haha does not agree with its usage as void type这是在警告你程序16行定义的haha的类型与其使用形式不对应,很可能是haha为变量,
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1