EDA课设四层电梯控制器.doc_第1页
EDA课设四层电梯控制器.doc_第2页
EDA课设四层电梯控制器.doc_第3页
EDA课设四层电梯控制器.doc_第4页
EDA课设四层电梯控制器.doc_第5页
已阅读5页,还剩7页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、引言1.1 EDA技术的概念随着EDA技术发展和应用领域的扩大与深入,EDA技术在电子信息、通讯、自动控制及计算机应用等领域的重要性突出,随着技术市场与人才市场对EDA的需求不断提高,产品的市场需求和市场的要求也必然会反映到教学领域和科研领域中来,因此学好EDA技术对我们有很大的一处,EDA是指以计算机为工具,在EDA软件平台上,根据设计描述的源文件,自动完成系统的设计,包括编译、仿真、优化、综合、适配以及下载。EDA是电子设计自动化(Electronic Design Automation)的缩写,在20世纪90年代初从计算机辅助设计(CAD)、计算机辅助制造(CAM)、计算机辅助测试(CAT)和计算机辅助工程(CAE)的概念发展而来的。1.2 EDA技术的特点利用EDA技术进行电子系统的设计,具有以下几个特点: 用软件的方式设计硬件; 用软件方式设计的系统到硬件系统的转换是由有关的开发软件自动完成的; 设计过程中可用有关软件进行各种仿真; 系统可现场编程,在线升级; 整个系统可集成在一个芯片上,体积小、功耗低、可靠性高。因此,EDA技术是现代电子设计的发展趋势。1.3 EDA设计流程典型的EDA设计流程如下:(1)、文本/原理图编辑与修改。首先利用EDA工具的文本或图形编辑器将设计者的设计意图用文本或图形方式表达出来。 (2)、编译。完成设计描述后即可通过编译器进行排错编译,变成特定的文本格式,为下一步的综合做准备。 (3)、 综合。将软件设计与硬件的可实现性挂钩,是将软件转化为硬件电路的关键步骤。(4)、 行为仿真和功能仿真。利用产生的网表文件进行功能仿真,以便了解设计描述与设计意图的一致性。(5)、适配。利用FPGA/CPLD布局布线适配器将综合后的网表文件针对某一具体的目标器件进行逻辑映射操作,其中包括底层器件配置、逻辑分割、逻辑优化、布局布线。适配报告指明了芯片内资源的分配与利用、引脚锁定、设计的布尔方程描述情况。 (6)、 功能仿真和时序仿真。(7)、 下载。如果以上的所有过程都没有发现问题,就可以将适配器产生的下载文件通过FPGA/CPLD下载电缆载入目标芯片中。 (8)、 硬件仿真与测试。1.4硬件描述语言(VHDL)VHDL(Very-High-Speed Integrated Circuit Hardware Description Language)主要用于描述数字系统的结构,行为,功能和接口。除了含有许多具有硬件特征的语句外,VHDL的语言形式和描述风格与句法是十分类似于一般的计算机高级语言。2、电梯控制器的设计要求与设计思路2.1 设计目的 通过设计应完成工作内容和具体的设计方法,通过设计也有出于复习,巩固以往的学习内容,达到灵活应用的目的。在设计完成后,还要将设计的电路进行安装,调试及加强我们的动手能力。在此过程中培养从事设计工作的整体观念。本次设计的目的就是通过实践深入理解EDA技术并掌握VHDL硬件描述语言的设计方法和思想。通过学习的VHDL语言结合电子电路的设计知识理论联系实际,掌握所学的课程知识和基本单元电路的综合设计应用。通过对实用电梯控制系统的设计,巩固和综合运用所学知识,提高设计能力,提高分析、解决计算机技术实际问题的独立工作能力。2.2 设计要求电梯控制器是控制电梯按顾客要求自动上下的装置。采用VHDL语言来设计实用四层电梯控制器,而且遵循方向优先的原则,提前关电梯门和延迟关电梯门,对电梯的运行(上升和下降)、停止、等待状态进行控制。同时,能显示电梯的运行情况、电梯所在楼层。3、电梯控制器的综合设计3.1 电梯控制器功能(1)、每层电梯的入口处设有上下请求开关,电梯内设有乘客到达层次的停站请求开关。(2)、设有电梯所处位置指示装置及电梯运行模式(上升或下降)指示装置。(3)、电梯每秒升降一层。(4)、电梯到达有停站请求的楼层后,经过1s电梯打开,开门只是灯亮,开门4s后电梯门关闭(关门指示灯灭),电梯继续运行,直至执行完请求信号后停在当前楼层。(5)、能记忆电梯内外的所以请求信号,并按照电梯运行规则依次响应,每个请求信号保留至执行后消除。(6)、电梯运行规则:当电梯处于上升模式时,只响应比电梯所在位置高的上楼信号,由下至上依次执行,直到最后一个上楼请求执行完毕,如更高层有下楼请求时,则直接升到有下降请求的最高楼接客,然后进入下降模式,但电梯处于下降模式时,则与上升模式相反。(7)、电梯初始状态为一层门开。3.2 电梯控制器设计方案 如图所示,包括主控制器、分控制器、楼层选择器、状态显示器、译码器和楼层显示器。乘客在电梯中选择所要到达的楼层,通过主控制器的处理,电梯开始运行,状态显示器显示电梯的运行状态,电梯所在楼层数通过译码器译码从而在楼层显示器中显示。分控制器把有效的请求传给主控制器进行处理,同时显示电梯的运行状态和电梯所在楼层数。由于分控制器相对简单很多,所以主控制器是核心部分。电梯控制器采用状态机来实现。可以将电梯等待的每秒钟以及开门、关门都看成一个独立的状态。由于电梯又是每秒上升或下降一层,所以就可以通过一个统一的1秒为周期的时钟来触发状态机。根据电梯的实际工作情况,可以把状态机设置10个状态,分别是“电梯停留在第1层”、“开门”、“关门”、“开门等待第1秒”、“开门等待第2秒”、“开门等待第3秒”、“开门等待第4秒”、“上升”、“下降”和“停止状态”。各个状态之间的转换条件可由上面的设计要求所决定3.3 电梯控制器实体设计 首先考虑输入端口,一个异步复位端口reset,用于在系统不正常时回到初始状态;在电梯外部,必须有升降请求端口,一层是最低层,不需要有下降请求,四层是最高层,不需要有上升请求,二层则上升、下降请求端口都有;在电梯的内部,应该设有各层停留的请求端口:一个电梯时钟输入端口,该输入时钟以1秒为周期,用于驱动电梯的升降及开门关门等动作;另有一个按键时钟输入端口,时钟频率比电梯时钟高。 其次是输出端口,有升降请求信号以后,就得有一个输出端口来指示请求是否被响应,有请求信号以后,该输出端口输出逻辑l。被响应以后则恢复逻辑O;同样,在电梯内部也应该有这样的输出端口来显示各层停留是否被响应;在电梯外部,需要一个端口来指示电梯现在所处的位置;电梯开门关门的状态也能用一个输出端口来指示;为了观察电梯的运行是否正确,可以设置一个输出端口来指示电梯的升降状态。3.4各模块设计说明3.4.1调用VHDL库通过library语句,本程序应用了VHDL库中的“通用ieee库”和“标准std库”。library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;3.4.2entity实体设计模块entity dianti is port ()end dianti;3.4.3由功能要求得到本程序设计的端口必须包括:输入端口:时钟(clk,频率为2Hz)、超载(full)、关门中断(deng)、提前关门(quick)、清除报警(clr)、电梯外人的上升请求信号(c_u1,c_u2,c_u3)、电梯外人的下降请求信号(c_d2,c_d3,c_d4)、电梯内人的请求信号(d1,d2,d3,d4)、到达楼层信号(g1,g2,g3,g4)。输出端口:电梯门控制信号(door)、电梯所在楼层显示(led)电梯外人上升请求信号显示(led_c_u)、电梯外人下降请求信号显示(led_c_d)、电梯内请求信号显示(led_d)、看门狗报警信号(wahaha)、电梯运动方向显示(ud)、超载警告信号(alarm)、电机控制信号(up,down)。3.4.4程序要求的寄存器(中间信号)包括:电梯内人请求信号寄存信号(d11,d22,d33,d44,d55,d66)、电梯外人上升请求信号寄存信号(c_u11,c_u22,c_u33,c_u44,c_u55)、电梯外人下降请求信号寄存信号(c_d22,c_d33,c_d44,c_d55,c_d66)、分频信号(q)、关门延时计数器(q1)、看门狗计数器(q2)、电梯内外请求信号寄存器(dd,cc_u,cc_d,dd_cc)、开门使能信号(opendoor)、电梯运动方向信号寄存器(updown)、预备上升、预备下降预操作使能信号(en_up,en_dw)。3、5电梯控制器程序library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;use ieee.std_logic_arith.all;entity dianti isport(clk:in std_logic; full,deng,quick,clr:in std_logic; c_u1,c_u2,c_u3:in std_logic; c_d2,c_d3,c_d4:in std_logic; d1,d2,d3,d4:in std_logic; g1,g2,g3,g4: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(3 downto 0); led_c_d:out std_logic_vector(3 downto 0); led_d:out std_logic_vector(3 downto 0); wahaha:out std_logic; ud,alarm:out std_logic; up,down:out std_logic);end dianti;architecture behave of dianti issignal d11,d22,d33,d44:std_logic;signal c_u11,c_u22,c_u33:std_logic;signal c_d22,c_d33,c_d44: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(3 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)thenif (clr=1)then q1=0;q2=0;wahaha=0;elsif full=1then alarm=1;q=3)then 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=1then 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=1then 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; if d11=1or c_u11=1then d11=0;c_u11=0;opendoor0001then en_up=1;opendoor=0; elsif dd_cc=0000then opendoor=0; end if; elsif g2=1 then led=0010010; if updown=1then if d22=1or c_u22=1then d22=0;c_u22=0;opendoor0011then en_up=1;opendoor=0; elsif dd_cc0010then en_dw=1;opendoor=0; end if; elsif d22=1or c_d22 =1then d22=0;c_d22=0;opendoor0011then en_up=1;opendoor=0; elsif dd_cc0010then en_dw=1;opendoor=0; end if; elsif g3=1 then led=0000110; if updown=1then if d33=1or c_u33 =1then d33=0;c_u33=0;opendoor0111then en_up=1;opendoor=0; elsif dd_cc0100then en_dw=1;opendoor=0; end if; elsif d33=1or c_d33=1then d33=0;c_d33=0;opendoor0111then en_up=1;opendoor=0; elsif dd_cc0100then en_dw=1;opendoor=0; end if; elsif g4=1 then led=1001100; if d44=1or c_d44=1then d44=0;c_d44=0;opendoor=1; elsif dd_cc1000then en_dw=1;opendoor=0; end if; else en_up=0;en_dw=0; end if; end if; else q=1;alarm=0; if (d1=1)then d11=d1; elsif d2=1then d22=d2; elsif d3=1then d33=d3; elsif d4=1then d44=d4; end if; if c_u1=1then c_u11=c_u1; elsif c_u2=1then c_u22=c_u2; elsif c_u3=1then c_u33=c_u3; end if; if c_d2=1then c_d22=c_d2; elsif c_d3=1then c_d33=c_d3; elsif c_d4=1then c_d44=c_d4; end if; dd=d44&d33&d22&d11; cc_u=0&c_u33&c_u22&c_u11; cc_d=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 process;end behave;3、6 电梯控制器仿真图形仿真1:在一楼的电梯内部有一个去向三楼的申请,在二楼有一个电梯向上的外部的申请信号,在四楼有个电梯向下的外部申请信号。电梯先响应二楼外部的申请信号,关门、向上,led显示1、2、3、4,到二楼时执行开门

温馨提示

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

评论

0/150

提交评论