1、四层电梯控制器课程设计任务书学 院信息科学与项目学院专 业学 生 姓 名学 号设 计 题 目四层电梯控制器设计目的:1.掌握电子系统设计方法2.学会使用PLD和硬件描述语言设计数字电路,掌握MAXPLUSII等开发工具的使用方法3.培养学生自主学习、正确分析和解决问题的能力设计要求:1、 设计一个4层电梯全自动控制电路。2、 每层电梯的入口处设有上下请求开关,电梯内设有乘客到达层次的停站请求开关。3、 设有电梯所处位置指示装置及电梯运行模式上升或下降)指示装置。4、 电梯每秒升降一层。5、 电梯到达有停站请求的楼层后,经过1s电梯打开,开门只是灯亮,开门4s后,电梯门关闭关门指示灯灭),电梯继
2、续运行,直至执行完请求信号后停在当前楼层。6、 能记忆电梯内外的所以请求信号,并按照电梯运行规则依次响应,每个请求信号保留至执行后消除。7、 电梯运行规则:当电梯处于上升模式时,只响应比电梯所在位置高的上楼信号,由下至上依次执行,直到最后一个上楼请求执行完毕,如更高层有下楼请求时,则直接升到有下降请求的最高楼接客,然后进入下降模式,但电梯处于下降模式时,则与上升模式相反。8、 电梯初始状态为一层门开。进度安排:周一:根据设计要求查阅相关资料;周二:源代码设计;周三、四:程序设计及程序调试;周五:写课程设计报告和验收准备。指导教师签字):年 月 日学院院长签字):年 月 日目录第1章 引言21.
3、1 EDA技术的概念21.2 EDA技术的特点21.3 EDA设计流程21.4 VHDL介绍3第2章 电梯控制器的设计要求与设计思路42.1 设计目的42.2 设计要求4第3章 电梯控制器的综合设计53.1 电梯控制器功能53.2 电梯控制器设计方案53.3 电梯控制器实体设计63.4 电梯控制器结构体设计63.5 电梯控制器VHDL设计73.6 电梯控制器仿真图形10小结11参考文献12一、引言1.1 EDA技术的概念EDA是电子设计自动化Electronic Design Automation)的缩写,在20世纪90年代初从计算机辅助设计CAD)、计算机辅助制造CAM)、计算机辅助测试CA
4、T)和计算机辅助项目CAE)的概念发展而来的。EDA技术就是以计算机为工具,设计者在EDA软件平台上,用硬件描述语言HDL完成设计文件,然后由计算机自动地完成逻辑编译、化简、分割、综合、优化、布局、布线和仿真,直至对于特定目标芯片的适配编译、逻辑映射和编程下载等工作。1.2 EDA技术的特点利用EDA技术进行电子系统的设计,具有以下几个特点: 用软件的方式设计硬件; 用软件方式设计的系统到硬件系统的转换是由有关的开发软件自动完成的; 设计过程中可用有关软件进行各种仿真; 系统可现场编程,在线升级; 整个系统可集成在一个芯片上,体积小、功耗低、可靠性高。因此,EDA技术是现代电子设计的发展趋势。
5、1.3 EDA设计流程典型的EDA设计流程如下:1、文本/原理图编辑与修改。首先利用EDA工具的文本或图形编辑器将设计者的设计意图用文本或图形方式表达出来。 2、编译。完成设计描述后即可通过编译器进行排错编译,变成特定的文本格式,为下一步的综合做准备。 3、 综合。将软件设计与硬件的可实现性挂钩,是将软件转化为硬件电路的关键步骤。4、 行为仿真和功能仿真。利用产生的网表文件进行功能仿真,以便了解设计描述与设计意图的一致性。5、适配。利用FPGA/CPLD布局布线适配器将综合后的网表文件针对某一具体的目标器件进行逻辑映射操作,其中包括底层器件配置、逻辑分割、逻辑优化、布局布线。适配报告指明了芯片
6、内资源的分配与利用、引脚锁定、设计的布尔方程描述情况。 6、 功能仿真和时序仿真。7、 下载。如果以上的所有过程都没有发现问题,就可以将适配器产生的下载文件通过FPGA/CPLD下载电缆载入目标芯片中。8、 硬件仿真与测试。1.4硬件描述语言主要用于描述数字系统的结构,行为,功能和接口。除了含有许多具有硬件特征的语句外,VHDL的语言形式和描述风格与句法是十分类似于一般的计算机高级语言。VHDL的程序结构特点是将一项项目设计,或称设计实体可以是一个元件,一个电路模块或一个系统)分成外部和内部或称不可视部分),既涉及实体的内部功能和算法完成部分。在对一个设计实体定义了外部界面后,一旦其内部开发完
7、成后,其他的设计就可以直接调用这个实体。这种将设计实体分成内外部分的概念是VHDL系统设计的基本。1.用VHDL代码而不是用原理图进行设计,意味着整个电路板的模型及性能可用计算机模拟进行验证。2.VHDL元件的设计与工艺无关,与工艺独立,方便工艺转换。3.VHDL支持各种设计方法,自顶向下、自底向上或者混合的都可以。4.可以进行从系统级到逻辑级的描述,即混合描述。5.VHDL区别于其他的HDL,已形成标准,其代码在不同的系统中可交换建模。二、电梯控制器的设计要求与设计思路2.1 设计目的 本次设计的目的就是通过实践深入理解EDA技术并掌握VHDL硬件描述语言的设计方法和思想。通过学习的VHDL
8、语言结合电子电路的设计知识理论联系实际,掌握所学的课程知识和基本单元电路的综合设计应用。通过对实用电梯控制系统的设计,巩固和综合运用所学知识,提高设计能力,提高分析、解决计算机技术实际问题的独立工作能力。2.2 设计要求电梯控制器是控制电梯按顾客要求自动上下的装置。本文采用VHDL语言来设计实用六层电梯控制器,其代码具有良好的可读性和易理解性,源程序经A1tera公司的MAX+plus II软件仿真。通过对四层电梯控制器的设计,可以发现本设计有一定的扩展性,而且可以作为更多层电梯控制器实现的基础。通过独立的设计,能够完整的完成老师分配的课程设计任务。通过对电梯控制系统的设计,掌握所学EDA课程
9、的基本知识和对VHDL语言的综合设计应用。通过课程设计,提高设计能力,提高分析解决实际问题的能力,并在设计中了解硬件编程的流程和思路,为以后工作和发挥技术打下基础。三、电梯控制器的综合设计3.1 电梯控制器功能1、 每层电梯的入口处设有上下请求开关,电梯内设有乘客到达层次的停站请求开关。2、 设有电梯所处位置指示装置及电梯运行模式上升或下降)指示装置。3、 电梯每秒升降一层。4、 电梯到达有停站请求的楼层后,经过1s电梯打开,开门只是灯亮,开门4s后,电梯门关闭、开门(dooropen、关门(doorclose、开门等待第1秒(doorwaitl、开门等待第2秒(doorwait2、开门等待第
10、3秒(doorwait3、开门等待第4秒(doorwait4、上升(up、下降(down和停止(stop。在实体说明定义完端口之后,在结构体architecture和begin之间需要有如下的定义语句,来定义状态机。TYPE lift_state IS(stoponl,dooropen,doorclose,doorwaitl,doorwait2,doorwai t3,door。wai t4,up,down,s top:SIGNAL mylift:lift_state:在结构体中,设计了俩个进程互相配合,一个是状态机进程作为主要进程,另外一个是信号灯控制进程作为辅助进程。状态机进程中的很多判断条
11、件是以信号灯进程产生的信号灯信号为依据的,而信号灯进程中信号灯的熄灭又是由状态机进程中传出的clearup和cleardn信号来控制。在状态机进程中,在电梯的上升状态中,通过对信号灯的判断,决定下一个状态是继续上升还是停止;在电梯下降状态中,也是通过对信号灯的判断,决定下一个状态是继续下降还是停止;在电梯停止状态中,判断是最复杂的,通过对信号的判断,决定电梯是上升、下降还是停止。在信号灯控制进程中,因为使用了专门的频率较高的按键时钟,所以使得按键的灵敏度增大,但是时钟频率不能过高,否则容易使按键过于灵敏。按键后产生的点亮的信号灯(逻辑值为1用于作为状态机进程中的判断条件,而clearup和cl
12、eardn信号为逻辑l使得相应的信号灯熄灭。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,g
13、3,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。archit
14、ecture 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
15、。signal updown:std_logic。signal en_up,en_dw:std_logic。begincom:process(clkbeginif(clkevent and clk=1thenif (clr=1then q1=0。q2=0。wahaha=0。elsif full=1then alarm=1。q=3then door=10。 else door=00。 end if。 elsif q=1 then q=0。alarm=0。 if q2=3 then wahahathen door=10。 q1=0。q2=0。up=0。downthen door=10。q1=0。q
16、2=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。doorthen 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。doorthen led=1001111。 if d11=1or c_u11=1then d11=0。c_u11=0。open
17、door0001then 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 e
18、n_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。
19、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。alarmthen d11=d1。 elsif d2=1then d22=d2。 elsif d3=1then d33=d3。 els
20、if 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应改写成0,然后和stoplight与fuplight向量比较,如果有更高层次的请求,那么stoplight或fuplight向量,如果stoplight和fuplight向量都小于one向量,表示没有更高层次的内部上升请求,此时将fdnlight向量和one向量比较,如果大于,则表示高层有下降要求,电梯得上升。如果没有任何请求信号,则电梯停止,否则电梯下降。如此就可以大大简化程序,但是要注意的是one向量必须实时更新,以作为判断依据,可
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1