用EDA设计电梯控制器.doc

上传人:good****022 文档编号:116469092 上传时间:2022-07-05 格式:DOC 页数:37 大小:10.24MB
收藏 版权申诉 举报 下载
用EDA设计电梯控制器.doc_第1页
第1页 / 共37页
用EDA设计电梯控制器.doc_第2页
第2页 / 共37页
用EDA设计电梯控制器.doc_第3页
第3页 / 共37页
资源描述:

《用EDA设计电梯控制器.doc》由会员分享,可在线阅读,更多相关《用EDA设计电梯控制器.doc(37页珍藏版)》请在装配图网上搜索。

1、目录绪论2第一章 系统总体设计3第二章 设计方案52.1 电梯控制方式的选择52.2 模块的设计7第三章 设计流程图103.1 系统状态流程图103.2 电梯控制器的VHDL描述11第四章 VHDL语言分析124.1 端口的描述124.2 进程的描述144.3 数码管显示描述154.4 电梯信号的请求描述18第五章 系统仿真/硬件测试205.1 系统仿真具体如下205.2 系统仿真结果如下235.3 硬件配置245.4 硬件测试结果25结束语28参考文献29附录30模式5的电路图36绪论20世纪90年代,国际上电子和计算机技术较先进的国家,一直在积极探索新的电子电路设计方法,并在设计方法、工具

2、等方面进行了彻底的变革,取得了巨大成功。在电子技术设计领域,可编程逻辑器件(如CPLD、FPGA)的应用,已得到广泛的普及,这些器件为数字系统的设计带来了极大的灵活性。这些器件可以通过软件编程而对其硬件结构和工作方式进行重构,从而使得硬件的设计可以如同软件设计那样方便快捷。这一切极大地改变了传统的数字系统设计方法、设计过程和设计观念,促进了EDA技术的迅速发展。EDA技术就是以计算机为工具,设计者在EDA软件平台上,用硬件描述语言VHDL完成设计文件,然后由计算机自动地完成逻辑编译、化简、分割、综合、优化、布局、布线和仿真,直至对于特定目标芯片的适配编译、逻辑映射和编程下载等工作。EDA技术的

3、出现,极大地提高了电路设计的效率和可操作性,减轻了设计者的劳动强度。 利用EDA工具,电子设计师可以从概念、算法、协议等开始设计电子系统,大量工作可以通过计算机完成,并可以将电子产品从电路设计、性能分析到设计出IC版图或PCB版图的整个过程的计算机上自动处理完成。现在对EDA的概念或范畴用得很宽。包括在机械、电子、通信、航空航天、化工、矿产、生物、医学、军事等各个领域,都有EDA的应用。目前EDA技术已在各大公司、企事业单位和科研教学部门广泛使用。例如在飞机制造过程中,从设计、性能测试及特性分析直到飞行模拟,都可能涉及到EDA技术。硬件描述语言HDL是EDA技术的重要组成部分,常见的HDL主要

4、有VHDL、Verilog HDL、ABEL、AHDL、System Verilog和SystemC。其中VHDL、Verilog HDL在现在的EDA设计中使用最多,并且我们学习的是VHDL的编程方法和实用技术。VHDL的英文全名是VHSIC(Very High Speed Integrated Circuit)Hardware Description Language,由IEEE(The Institute of Electrical and Electronics Engineers)进一步发展,并在1987年作为“IEEE标准1076”公布。从此VHDL成为硬件描述语言的业界标准之一。

5、 本课程设计使用软件为max+plus、Quartus,设计一个电梯控制器,硬件通过ALTERA公司的ACEX1K系列的EP1K30TC144-3芯片来实现。软件通过VHDL语言来实现。第一章 系统总体设计 随着社会的发展,电梯的使用越来越普遍,已从原来只在商业大厦、宾馆使用,过渡到在办公楼、居民楼等场所使用,并且对电梯功能的要求也不断提高,相应地其控制方式也在不停地发生变化。对于电梯的控制,传统的方法是使用继电器接触器控制系统进行控制,随着技术的不断发展,微型计算机在电梯控制上的应用日益广泛,现在已进入全微机化控制的时代。电梯的微机化控制主要有以下几种形式: PLC控制; 单板机控制; 单片

6、机控制; 单微机控制; 多微机控制; 人工智能控制。随着EDA技术的快速发展,CPLD/FPGA已广泛应用于电子设计与控制的各个方面。本设计就是使用一片CPLD/FPGA来实现对电梯的控制的。课设要求如下:(1)设计一个三层楼房自动电梯控制器,用八个 LED显示电梯行进过程;(2)并有数码管显示电梯当前所在楼层位置;(3)每层电梯入口处设有请求按钮开关,请求按钮按下则相应楼层的LED 亮;(4)能把设计文件进行仿真并下载到实验箱实现功能验证。我现在设计的电梯满足如下几点:(1)设计一个6层楼的电梯控制器。(2)该控制器可控制电梯完成6层楼的载客服而且遵循方向优先原则,并能响应提前关门延时关门,

7、并具有超载报警和故障报警;(3)同时指示电梯运行情况和电梯内外请求信息。第二章 设计方案2.1 电梯控制方式的选择 我们从电梯的控制方式中选择用哪种控制方式更方便,具体如下:电梯的控制方式: (1)内部请求优先控制方式。(2)单向层层停控制方式。(3)方向优先控制方式。1.内部请求优先控制方式 内部请求优先控制方式类似于出租车的工作方式,先将车上的人送至目的地,再去载客。作为通用型电梯应该服务于大多数人,必须考虑电梯对内、外请求的响应率P: Pin = 100%; Pout = 0100%;在内部请求优先控制方式中,当电梯外部人的请求和电梯内部人的请求冲突时,外部人的请求信号可能被长时间忽略,

8、因而它不能作为通用型电梯的设计方案。2. 单向层层停控制方式单向层层停控制方式等同于火车的运行方式,遇站即停止、开门。这种方案的优点在于“面面俱到”,可以保证所有人的请求都能得到响应。然而这样对电梯的效率产生消极影响:不必要的等待消耗了大量时间,而且电梯的运作与用户的请求无关,当无请求时电梯也照常跑空车,就浪费了大量电能。对用户而言,此种控制方式的请求响应时间也不是很快。因而这不是理想的方案。3. 方向优先控制方式 方向优先控制是指电梯运行到某一楼层时先考虑这一楼层是否有请求:有,则停止;无,则继续前进。停下后再启动时,考虑前方上方、或下方是否有请求:有,则继续前进;无,则停止;检测后方是否有

9、请求, 有请求则转向运行, 无请求则维持停止状态。这种运作方式下,电梯对用户的请求响应率为100%,且响应的时间较短。假设:电梯每两层间的运行时间为T ,楼层数为6, 在每层楼的停止时间为t, 如果每层楼都有请求,则这种控制方式的效率和上面的单向每层停等控制方式的效率一样, 然而, 当不是每层楼都有请求 (假定为只有第6层有请求输入) 时,上面的方式2(设为A方式)的响应时间:T=5*(T + t ) 而方向优先控制方式(设为B方式)对同一请求的响应时间T1=5*T即效率比 b/a = 1 + t /T 方向优先控制方式的效率远大于单向层层停等控制方式的效率。 而且,方向优先控制方式下,电梯在

10、维持停止状态的时候可以进入省电模式,又能节省大量电能,综合比较,本设计选择方向优先控制方式。2.2 系统的组成框图如下FPGA 系统时钟 楼层请求 关门中断 分频器中央处理器 超载 故障清除 信号 存储 电梯升、降、停 门开、关、停 楼层显示 请求信号显示 超载、故障报警 状态存储 提前关门2.2 模块的设计我们设计系统中包括如下几个模块:(1)外部数据高速采集模块。(2)信号存储模块。 (3)基于FPGA的中央处理模块。(4)信号的输出、显示模块。1、外部数据高速采集模块对外部信号采集、处理要求电梯控制器: (1) 外部请求信号的实时、准确采集。(2) 准确、实时的捕捉楼层到达信号。(3)有

11、效的防止楼层到达信号、外部请求信号的误判。控制器采用FPGA作为系统控制的核心,系统时钟频率是32.0000MHz,完全可以满足实时采集数据的要求。由于电路中毛刺现象的存在,信号的纯净度降低,单个的毛刺往往被误作为系统状态转换的触发信号,严重影响电梯的正常工作。可以采用多次检测的方法解决这个问题,对一个信号进行多次采样以保证信号的可信度。外部请求信号的输入形式为按键输入,到达楼层信号来自光敏传感器,关门中断信号及超载信号则产生于压力传感器。 键盘、光敏外部输入接口电路未设计。2、 信号存储模块设计电梯控制器的请求输入信号有18个(电梯外有6个上升请求和6个下降请求的用户输入断口,电梯内有6个请

12、求用户输入断口),由于系统对内、外请求没有设置优先级,各楼层的内、外请求信号被采集后可先进行运算,再存到存储器内。电梯运行过程中,由于用户的请求信号的输入是离散的,而且系统对请求的响应也是离散的,因此请求信号的存储要求新的请求信号不能覆盖原来的请求信号,只有响应动作完成后才能清除存储器内对应的请求信号位。3、 基于FPGA的中央处理模块 中央数据处理模块是系统的核心,通过对存储的数据(含请求、到达楼层等信号)进行比较、判断以驱动系统状态的流转。电梯工作过程中共有种状态:等待、上升、下降、开门、关门、停止、休眠、超载报警以及故障报警状态。一般情况下,电梯工作起始点是第一层,起始状态是等待状态,启

13、动条件是收到上升请求。超载状态时电梯关门动作取消,同时发出警报,直到警报被清除; 故障时电梯不执行关门动作,同时发出警报,直到警报被清除(看门狗信号有效的条件是一层楼连续发生关门中断情况超过3次)。本系统由请求信号启动,运行中每检测到一个到达楼层信号,就将信号存储器的请求信号和楼层状态信号进行比较,再参考原方向信号来决定是否停止,转向等动作。4、 信号的输出、显示模块本系统的输出信号有两种: 一种是电机的升降控制信号(两位)和开门/关门控制信号;另一种是面向用户的提示信号(含楼层显示、方向显示、已接受请求显示等)。电机的控制信号一般需要两位,本系统中电机有3种工作状态: 正转、反转和停转状态。

14、 两位控制信号作为一个三路开关的选通信号,此三路开关选用模拟电子开关。系统的显示输出包括数码管楼层显示、数码管请求信号显示和表征运动方向的箭头形指示灯的开关信号。第三章 设计流程图3.1 系统状态流程图图1 系统状态流程图上图的流程图主要是介绍了电梯工作过程中的种状态:等待、上升、下降、开门、关门、停止、休眠、超载报警以及故障报警状态,相互之间的关系和转换。3.2 电梯控制器的VHDL描述 定义元件库 输入端口 定义dianti实体 输出端口状态机进程(主要进程)信号灯控制进程(辅助进程) 结构体按键信号灯进程 结束图2 电梯控制器的VHDL描述框图其实体设计如下:(1)输入端口的设计,定义一

15、个异步复位端口reset,用于在系统不正常时回到初始状态;在电梯外部,必须有升降请求端口,一层是最低层,不需要有下降请求,三层是最高层,不需要有上升请求,二层则上升、下降请求端口都有;在电梯的内部,应该设有各层停留的请求端口;一个电梯时钟输入端口,该输入时钟以1秒为周期,用于驱动电梯的是升降及开门关门等动作;另有一个按键时钟输入端口,时钟频率比电梯时钟高。(2)输出端口的设计,有升降请求信号以后,就得有一个输出端口来指示请求是否被响应。有请求响应后,该输出端口输出逻辑1,被响应以后则恢复逻辑0;同样,在电梯内部也应该有这样的输出端口来显示各层停留是否被响应;在电梯外部,需要一个端口来指示电梯现

16、在所处的位置;电梯开门关门的状态也能用一个输出端口来指示;为了观察电梯的运行是否正确,可以设置一个输出端口来指示电梯的升降状态。第四章 VHDL语言分析4.1 端口的描述port ( clk : in std_logic; -时钟信号(频率为2Hz) full,deng,quick,clr : in std_logic; -超载、关门中断、提前关门清除报警信号c_u1,c_u2,c_u3,c_u4,c_u5: in std_logic; -电梯外人的上升请求信号c_d2,c_d3,c_d4,c_d5,c_d6 : in std_logic; -电梯外人的下降请求信号d1,d2,d3,d4,d5

17、,d6 : in std_logic; -电梯内人的请求信号g1,g2,g3,g4,g5,g6 : in std_logic; -到达楼层信号door : out std_logic_vector(1 downto 0); -电梯门控制信号led : out std_logic_vector(6 downto 0); -电梯所在楼层显示led_c_u:out std_logic_vector(5 downto 0); -电梯外人上升请求信号显示led_c_d:out std_logic_vector(5 downto 0); -电梯外人下降请求信号显示led_d : out std_logic

18、_vector(5 downto 0); -电梯内请求信号显示wahaha : out std_logic; -看门狗报警信号ud,alarm : out std_logic;-电梯运动方向显示,超载警告信号up,down : out std_logic ); -电机控制信号和电梯运动end dianti;architecture behav of dianti issignal d11,d22,d33,d44,d55,d66:std_logic; -电梯内人请求信号寄存信号signal c_u11,c_u22,c_u33,c_u44,c_u55:std_logic; -电梯外人上升请求信号寄

19、存信号signal c_d22,c_d33,c_d44,c_d55,c_d66:std_logic; -电梯外人下降请求信号寄存信号signal q:integer range 0 to 1; -分频信号signal q1:integer range 0 to 6; -关门延时计数器 signal q2:integer range 0 to 9; -看门狗计数器signal dd,cc_u,cc_d,dd_cc:std_logic_vector(5 downto 0); -电梯内外请求信号寄存器signal opendoor:std_logic; -开门使能信号signal updown:st

20、d_logic; -电梯运动方向信号寄存器signal en_up,en_dw:std_logic; -预备上升、预备下降预操作使能信号4.2 进程的描述 if clkevent and clk=1 then if clr=1then q1=0;q2=0;wahaha=0; -清除故障报警 elsif full=1 then alarm=1; q1=3 then door=10; else door=00;end if; elsif q=1 then q=0;alarm=0;if q2=3 then wahaha=1; -故障报警if opendoor=1then door= 10;q1=0;

21、q2=0;up=0; 开门操作Elsif en_up=1 then -上升预操作 if deng=1 then door=10;q1=0;q2=q2+1; -关门中断elsif quick=1 then q1=3; -提前关门elsif q1=6 then door=00;updown=1;up=3 then door=01;q1=q1+1; -电梯进入关门状态else q1=q1+1;door=00; -电梯进入等待状态end if;elsif en_dw=1 then -下降预操作if deng=1 then door=10;q1=0;q2=q2+1; elsif quick=1 then

22、 q1=3; elsif q1=6 then door=00;updown=0;down=3 then door=01;q1=q1+1; else q1=q1+1;door=00; 4.3 数码管显示描述 if g1=1 then led=1001111; -电梯到达1楼,数码管显示1 if d11=1 or c_u11=1 then d11=0; c_u11=0;opendoor000001 then en_up=1; opendoor=0; -有上升请求,则电梯进入预备上升状态elsif dd_cc=000000 then opendoor=1; -无请求时,电梯停在1楼待机 elsif

23、g2=1 then led=0010010;-电梯到达2楼,数码管显示2if updown=1 then -电梯前一运动状态位上升 if d22=1 or c_u22=1 then d22=0; c_u22=0; opendoor000011 then en_up=1; opendoor=0; -有上升请求,则电梯进入预备上升状态 elsif dd_cc000010 then en_dw=1; opendoor=0; -有下降请求,则电梯进入预备下降状态 end if; -电梯前一运动状态为下降 elsif d22=1 or c_d22=1 then d22=0; c_d22=0;opendo

24、or=1; -有当前层的请求,则电梯进入开门状态elsif dd_cc000010 then en_dw=1; opendoor000011 then en_up=1; opendoor=0; -有上升请求,则电梯进入预备上升状态elsif g3=1 then led=0000110; -电梯到达3楼,数码管显示3 if updown=1 then if d33=1 or c_u33=1 then d33=0; c_u33=0;opendoor000111 then en_up=1; opendoor=0; elsif dd_cc000100 then en_dw=1; opendoor=0;

25、 end if;elsif d33=1 or c_d33=1 then d33=0; c_d33=0; opendoor=1; elsif dd_cc000100 then en_dw=1; opendoor000111 then en_up=1; opendoor=0; elsif g4=1 then led=1001100; -电梯到达4楼,数码管显示4 if updown=1 then if d44=1 or c_u44=1 then d44=0; c_u44=0; opendoor001111 then en_up=1; opendoor=0; elsif dd_cc001000 th

26、en en_dw=1; opendoor=0; elsif d44=1 or c_d44=1 then d44=0; c_d44=0; opendoor=1; elsif dd_cc001000 then en_dw=1; opendoor001111 then en_up=1; opendoor=0; elsif g5=1 then led=0100100; -电梯到达5楼,数码管显示5 if updown=1 then if d55=1 or c_u55=1 then d55=0; c_u55=0;opendoor011111 then en_up=1; opendoor=0; elsif

27、 dd_cc010000 then en_dw=1; opendoor=0; end if;elsif d55=1 or c_d55=1 then d55=0; c_d55=0;opendoor=1; elsif dd_cc010000 then en_dw=1; opendoor011111 then en_up=1; opendoor=0; elsif g6=1 then led=0100000; -电梯到达6楼,数码管显示6 if d66=1 or c_d66=1 then d66=0; c_d66=0;opendoor=1; elsif dd_cc100000 then en_dw=1

28、; opendoor=0; end if;else en_up=0;en_dw=0; -电梯进入上升或下降状态4.4 电梯信号的请求描述else q=1;alarm=0; -清除超载报警if d1=1 then d11=d1; -对电梯内人请求信号进行检测和寄存 elsif d2=1 then d22=d2;elsif d3=1 then d33=d3;elsif d4=1 then d44=d4;elsif d5=1 then d55=d5;elsif d6=1 then d66=d6;end if;if c_u1=1 then c_u11=c_u1; -对电梯外人上升请求信号进行检测和寄存

29、elsif c_u2=1 then c_u22=c_u2;elsif c_u3=1 then c_u33=c_u3;elsif c_u4=1 then c_u44=c_u4;elsif c_u5=1 then c_u55=c_u5;end if; if c_d2=1 then c_d22=c_d2; -对电梯外人下降请求信号进行检测和寄存elsif c_d3=1 then c_d33=c_d3;elsif c_d4=1 then c_d44=c_d4;elsif c_d5=1 then c_d55=c_d5;elsif c_d6=1 then c_d66=c_d6;end if; dd=d66

30、&d55&d44&d33&d22&d11; -电梯内人请求信号并置 cc_u=0&c_u55&c_u44&c_u33&c_u22&c_u11; -电梯外人上升请求信号并置 cc_d=c_d66&c_d55&c_d44&c_d33&c_d22&0; -电梯外人下降请求信号并置 dd_cc=dd or cc_u or cc_d; -电梯内、外人请求信号进行综合end if; ud=updown; -电梯运动状态显示 led_d=dd; -电梯内人请求信号显示led_c_u=cc_u; -电梯外人上升请求信号显示led_c_d=cc_d; -电梯外人下降请求信号显示end if; end proce

31、ss; end behav;第五章 系统仿真/硬件测试5.1 系统仿真具体如下编辑好VHDL源文件,后保存,如下图所示 保存VHDL文件这里要注意的是我们的保存路径和保存的名字要是英文的不能是中文的,因为这软件是不能识别中文的路径,否则会一直出错的。设置为当前文件这里我们要对程序进行仿真必须把我们编辑的VHDL文件设置为当前文件,否者可能后面仿真的结果不是我们所编辑的程序的结果。 选芯片型号这里要先把下面的里的勾去掉这样才能选到我们所需要的芯片的型号。 时间量程这里我们把时间量程放大点,这样有利于对整体的波形的观测。 时钟设置 管脚的配置 编译程序运行产生波形5.2 系统仿真结果如下5.3 硬

32、件配置因为实验箱的按键有限的原因,我们只能配置出三层电梯的控制设计,其具体配置如下:名称引脚名称引脚号对应元件BUTTONCLKINPUT1126DOORLIGHTI/O820D1FDNLIGHT1I/O921D2FDNLIGHT2I/O1022D3FDNLIGHT3I/O1123D4FUPLIGHT1I/O1226D5FUPLIGHT2I/O1327D6FUPLIGHT3I/O1428D7F1UPBUTTONI/O618键7F2UPBUTTONI/O517键6F2DNBUTTONI/O413键5F3DNBUTTONI/O312键4LIFTCLKINPUT354POST0I/O1630四位译码

33、器的输入POST1I/O1731POST2I/O1832POST3I/O1933RESETI/O719键8STOP1BUTTONI/O210键3STOP2BUTTONI/O19键2STOP3BUTTONI/O08键1UDSIGI/O1529D8这里我们配置时由于灯只有八盏,于是没有配置stoplight管脚。这里是三层电梯的控制器在实验箱上的配置。5.4 硬件测试结果这图是刚开始电梯层数下图是按键图按键图电梯在2楼 电梯在三楼结束语通过编写VHDL 程序,不仅是对程序的编写有了比较深的了解,还对一些时序和电梯的一些状态有了比较深的理解,比如说上升、下降、开门、关门等状态。我觉得在做电梯主要是注

34、意逻辑关系,比如电梯在二楼,它可上、可下,在遇到什么情况下它是下,遇到什么情况它是下,还有在电梯里面的人是要上还是下,门是打开还是关闭,一楼有人要上,三楼有人要下怎么办,所以这个逻辑关系我们要搞清楚。所以这里我们要有个优先就是电梯里面优先电梯外面的,之后根据就近原则来上、下。在这里我们要特别注意的是这里要有信号的存储,所以这里要特别是设计存储器来存储我们还没执行的语句,比如在第二层,如第三层和第一层同时都有人按键,并且电梯内有人要去三楼,而电梯在最优原则下运行,那些还没运行的则要存储,这很重要。所以在编写程序时我们要想清楚它有那些状态,有哪些情况,也就是逻辑关系,当然在这基础上我们可以把层数一

35、直往上加,只是注意在多层情况是不一样的,但所以关系和状态还是一样的。这次课设对一些逻辑的处理能力有所提高。刚开始时虽然对程序有点怕,因为程序还是比较多的,但认真的分析完之后其实挺简单的,在不同的层逻辑是不一样的,比如在第一层只能上,不能下,而如果是只做个三层电梯的哈,在第三层情况,只能下不能上,这些都是我们要考虑的问题。参考文献(1)潘松,黄继业编著 .EDA技术实用教程 ,科学出版社,2005 (2)徐志军,徐光辉编著 . CPLD/FPGA的开发与应用 ,电子工业出版社,2001.1(3)http:/ . CPLD/FPGA常用模块与综合系统设计,电子工业出版社,2007.11(5)刘爱荣

36、,王振成主编,曹瑞,卢印举编著.EDA技术与CPLD/FPGA开发应用简明教程,清华大学出版社,2007.附录library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;use ieee.std_logic_arith.all;entity dianti is port ( clk : in std_logic; -时钟信号(频率为2Hz) full,deng,quick,clr : in std_logic; -超载、关门中断、提前关门清除报警信号 c_u1,c_u2,c_u3,c_u4,c_u5: in

37、std_logic; -电梯外人的上升请求信号 c_d2,c_d3,c_d4,c_d5,c_d6 : in std_logic; -电梯外人的下降请求信号 d1,d2,d3,d4,d5,d6 : in std_logic; -电梯内人的请求信号 g1,g2,g3,g4,g5,g6 : in std_logic; -到达楼层信号 door : out std_logic_vector(1 downto 0); -电梯门控制信号 led : out std_logic_vector(6 downto 0); -电梯所在楼层显示 led_c_u:out std_logic_vector(5 down

38、to 0); -电梯外人上升请求信号显示 led_c_d:out std_logic_vector(5 downto 0); -电梯外人下降请求信号显示 led_d : out std_logic_vector(5 downto 0); -电梯内请求信号显示 wahaha : out std_logic; -看门狗报警信号 ud,alarm : out std_logic; -电梯运动方向显示,超载警告信号up,down : out std_logic ); -电机控制信号和电梯运动end dianti;architecture behav of dianti issignal d11,d22

39、,d33,d44,d55,d66:std_logic; -电梯内人请求信号寄存信号signal c_u11,c_u22,c_u33,c_u44,c_u55:std_logic; -电梯外人上升请求信号寄存信号signal c_d22,c_d33,c_d44,c_d55,c_d66:std_logic; -电梯外人下降请求信号寄存信号signal q:integer range 0 to 1; -分频信号signal q1:integer range 0 to 6; -关门延时计数器 signal q2:integer range 0 to 9; -看门狗计数器signal dd,cc_u,cc

40、_d,dd_cc:std_logic_vector(5 downto 0); -电梯内外请求信号寄存器signal opendoor:std_logic; -开门使能信号signal updown:std_logic; -电梯运动方向信号寄存器signal en_up,en_dw:std_logic; -预备上升、预备下降预操作使能信号begincom:process(clk)beginif clkevent and clk=1 then if clr=1 then q1=0;q2=0;wahaha=0; -清除故障报警 elsif full=1 then alarm=1; q1=3 then

41、 door=10; else door=00; end if; elsif q=1 then q=0;alarm=0; if q2=3 then wahaha=1; -故障报警 else if opendoor=1 then door=10;q1=0;q2=0;up=0;down=0; -开门操作 elsif en_up=1 then -上升预操作 if deng=1 then door=10;q1=0;q2=q2+1; -关门中断 elsif quick=1 then q1=3; -提前关门 elsif q1=6 then door=00;updown=1;up=3 then door=01

42、;q1=q1+1; -电梯进入关门状态 else q1=q1+1;door=00; -电梯进入等待状态 end if; elsif en_dw=1 then -下降预操作 if deng=1 then door=10;q1=0;q2=q2+1; elsif quick=1 then q1=3; elsif q1=6 then door=00;updown=0;down=3 then door=01;q1=q1+1; else q1=q1+1;door=00; end if; end if; if g1=1 then led=1001111; -电梯到达1楼,数码管显示1 if d11=1 or

43、 c_u11=1 then d11=0; c_u11=0;opendoor000001 then en_up=1; opendoor=0; -有上升请求,则电梯进入预备上升状态 elsif dd_cc=000000 then opendoor=0; -无请求时,电梯停在1楼待机 end if; elsif g2=1 then led=0010010; -电梯到达2楼,数码管显示2 if updown=1 then -电梯前一运动状态位上升 if d22=1 or c_u22=1 then d22=0; c_u22=0; opendoor000011 then en_up=1; opendoor

44、=0; -有上升请求,则电梯进入预备上升状态 elsif dd_cc000010 then en_dw=1; opendoor=0; -有下降请求,则电梯进入预备下降状态 end if; -电梯前一运动状态为下降 elsif d22=1 or c_d22=1 then d22=0; c_d22=0;opendoor=1; -有当前层的请求,则电梯进入开门状态 elsif dd_cc000010 then en_dw=1; opendoor000011 then en_up=1; opendoor=0; -有上升请求,则电梯进入预备上升状态 end if; elsif g3=1 then led

45、=0000110; -电梯到达3楼,数码管显示3 if updown=1 then if d33=1 or c_u33=1 then d33=0; c_u33=0;opendoor000111 then en_up=1; opendoor=0; elsif dd_cc000100 then en_dw=1; opendoor=0; end if; elsif d33=1 or c_d33=1 then d33=0; c_d33=0; opendoor=1; elsif dd_cc000100 then en_dw=1; opendoor000111 then en_up=1; opendoor

46、=0; end if; elsif g4=1 then led=1001100; -电梯到达4楼,数码管显示4 if updown=1 then if d44=1 or c_u44=1 then d44=0; c_u44=0; opendoor001111 then en_up=1; opendoor=0; elsif dd_cc001000 then en_dw=1; opendoor=0; end if; elsif d44=1 or c_d44=1 then d44=0; c_d44=0; opendoor=1; elsif dd_cc001000 then en_dw=1; opendoor001111 then en_up=1; opendoor=0; end if; elsif g5=1 then led=0100100; -电梯到达5楼,数码管显示5 if updown=1 then if d55=1 or c_u55=1 then d55=0; c_u55=0;opendoor=1;

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

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!