毕业设计(论文)基于FPGA的电梯控制器的研究.doc
分类号 密级 U D C 编号 本科毕业论文(设计)题目 基于FPGA的电梯控制器的研究 系 别 物理与电子信息学院 专 业 名 称 电子信息科学与技术 年 级 08级 学 生 姓 名 学 号 指 导 教 师 二一二年五月学位论文原创性声明本人郑重声明:所呈交的学位论文 基于FPGA的电梯控制器的研究 ,是本人在导师的指导下,独立进行研究所取得的成果。除文中已经注明引用的内容外,本论文不包含任何其他个人或集体已经发表或撰写过的科研成果。对本文的研究作出重要贡献的个人和集体,均已在文中以明确方式标明。本人完全意识到本声明的法律责任由本人承担. 作者签名: 日期:文献综述1概述随着大规模集成电路和计算机技术的不断发展,可编程逻辑技术已经发展成一门关键的学科技术,在逻辑电路设计和嵌入式系统设计方面,FPGA/CPLD技术在工业中已经得到广泛应用;目前,在硬件实现方面主要有Altera公司推出的MAX系列、XIlinx公司推出的XC系列的芯片,在软件编程方面主要运用VHDL/Verilog HDL硬件描述语言进行相关设计,主要的开发平台有Max+Plus、Quartus等。FPGA(Field Programmable Gate Arry)即现场可编程门阵列,它是在PAL、GAL、CPLD等可编程器件的基础上进一步发展的产物。它是作为专用集成电路(ASIC)领域中的一种半定制电路而出现的,既解决了定制电路的不足,又克服了原有可编程器件门电路数有限的缺点;FPGA采用了逻辑单元阵列LCA(Logic Cell Array)这样一个概念,内部包括可配置逻辑模块CLB(Configurable Logic Block)、输入输出模块IOB(Input Output Block)和内部连线(Interconnect)三个部分。本次论文是基于FPGA的电梯控制器的研究,是电梯控制的核心技术,通过电梯控制器可以对电梯运行模式和状态进行全面的控制,电梯的层数为6层,本次论文采用模块化设计方法,主要分为四大模块:时钟分频模块、按键处理模块、电梯运行控制模块、数码管显示模块。2设计原理与思路本次论文是实现6层电梯的运行控制,当在某一楼层按下上升或者下降请求按钮时,控制器响应该请求并控制电梯前往该楼层,当到达该楼层时电梯开门,当进入电梯后,电梯关门,此时按下要到达的楼层按钮,控制器响应该请求并控制电梯前往该楼层,当到达前往楼层后,电梯开门,走出电梯,然后关门.,就这样往复的实现电梯的控制功能。电梯运行时遵循如下规则:当电梯处于上升模式时,只响应比电梯所在位置高的上楼信号,由下至上依次执行;直到最后一个上楼请求执行完毕,如有更高层有下楼请求时,则直接升到有下降请求的最高楼,然后进入下降模式,电梯处于下降模式时,则与上升相反。电梯的输入信号主要包括外部输入信号和内部输入信号;对于电梯外部输入信号:每一层电梯门外都有上升请求和下降请求按钮,其中一楼电梯门外只有上升请求按钮,六楼电梯门外只有下降请求按钮。对于电梯内部输入信号主要有:6个前往楼层的按钮、提前关门按钮、延时关门按钮、电梯异常按钮。电梯输出信号也主要包括外部输出信号和内部输出信号;对于电梯外部输出信号包括上升请求按钮和下降按钮指示信号、电梯当前所在楼层指示信号、电梯运行方向指示信号。电梯内部输出信号包括6个前往楼层按钮指示信号、超重等警告指示信号、电梯当前所在楼层指示信号、电梯运行方面指示信号。3 硬件设计本次论文主要是通过Altera公司生产的Cyclone这一款芯片进行功能的实现,CycloneII器件采用TSMC90nm低K绝缘材料工艺技术,这种技术结合Altera低成本的设计方式,使之能够在更低的成本下制造出更大容量的器件。这种新的器件比第一代Cyclone产品具有两倍多的I/O引脚,且对可编程逻辑的存储块和其它特性进行了最优的组合,具有许多新的增强特性。CycloneII器件包含了许多新的特性,如嵌入存储器、嵌入乘法器、PLL和低成本的封装,这些都为诸如视频显示、数字电视(DTV)、机顶盒(STB)、DVD播放器、DSL调制解调器、家用网关和中低端路由器等批量应用进行了优化。在EDA设计的开发板上面,支持SOPC片上可编程,在CycloneII芯片旁边外围有按键模块、液晶显示模块、LED指示灯等,通过Quartus平台将硬件描述语言下载至该芯片中,然后进行程序的调试、运行并进行功能的实现。4 软件设计Altera的FPGA设计主要采用两种标准语言:VHDL/Verilog HDL。其中Verilog HDL出现早,运用广泛,而且比较简单,在NIOS项目里运用较多;而VHDL语言功能强大,语句相对要复杂一些,所以对于现在一些复杂的可编程项目多采用VHDL语言编写。VHDL(Very-High-Speed Integrated Circuit Hardware Description Language)主要用于描述数字系统的结构、行为、功能和接口。除了含有许多具有硬件特征的语句外,VHDL的语言形式和描述风格与句法是十分类似于一般的计算机高级语言。VHDL的程序结构特点是将一项工程设计,或称设计实体(可以是一个元件,一个电路模块或一个系统)分成外部(或称可视部分、端口)和内部(或称不可视部分),涉及实体的内部功能和算法完成部分。在对一个设计实体定义了外部界面,一旦其内部开发完成后,其他的设计就可以直接调用这个实体。如下图4-1是VHDL的层次模型:器件实体结构体功能构造体行为构造体结构构造体图4-1 具有不同构造体的VHDL模型VHDL 语言具有强大的语言结构,只需采用简单明确的VHDL语言程序就可以描述十分复杂的硬件电路。同时,它还具有多层次的电路设计描述功能:既支持自顶向下的设计方式,也支持自底向上的设计方法;既支持模块化设计方法, 也支持层次化设计方法;既可描述系统级电路,也可以描述门级电路;描述方式既可以采用行为描述、寄存器传输描述或者结构描述,也可以采用三者的混合描述方式。 VHDL 语言具有很强的移植能力,对于同一个硬件电路的VHDL 语言描述,它可以从一个模拟器移植到另一个模拟器上、从一个综合器移植到另一个综合器上或者从一个工作平台移植到另一个工作平台上去执行。VHDL 语言采用基于库 ( library) 的设计方法。在设计过程中,设计人员可以建立各种可再次利用的模块,一个大规模的硬件电路的设计不可能从门级电路开始一步步地进行设计,而是一些模块的累加,这些模块可以预先设计或者使用以前设计中的存档模块,将这些模块存放在库中,就可以在以后的设计中进行复用。本次论文主要是运用VHDL语言进行程序的编写,采用自顶向下、模块化设计方法。按照要求可以分为:时钟分频模块、按键处理模块、电梯运行控制模块、数码管显示模块;分别设计出这四个模块之后,进行调试、运行、功能仿真和时序分析,然后将生产的模块图在原理图编辑器中连接起来,组成完整的电梯控制器。5总结 可编程逻辑器件FPGA/CPLD技术在工业上得到广泛应用,是一门发展的很成熟的学科技术,它是作为专用集成电路(ASIC)领域中的一种半定制电路出现的,既解决了定制电路的不足,又克服了原有可编程器件门电路数不足的缺点。本次论文是基于FPGA的电梯控制器的研究,克服了传统的PAL设计的不足,实现了对电梯控制器的低功耗、实时性响应、高集成度设计;其创新点在于通过状态机进行电梯运行状态和模式的控制以及传感器技术对电梯超重运行的控制。参考文献1 卢毅,赖杰.VHDL与数字电路设计.科学出版社,2001.42 刘建清,刘汉文,高广海.从零开始学CPLD和Verilog HDL编程技术.国防工业出版社,2006.83 刘福奇.FPGA嵌入式项目开发实战.电子工业出版社,2009.44 张丕状,李兆光.基于VHDL的CPLD/FPGA开发与应用.国防工业出版社,2009.65 葛亚明,彭永丰,薛冰.零基础学FPGA.机械工业出版社,2010.76 余孟尝.数字电子技术基础简明教程.高等教育出版社,2006.77 谢自美.电子线路设计·实验·测试.华中科技大学出版社,2006.88 江国强.EDA技术与应用.电子工业出版社,2010.49 聂小燕,鲁才.数字电路EDA设计与应用.人民邮电出版社,2010.410 华清远见嵌入式培训中心.FPGA应用开发入门与典型实例.人民邮电出版社,2008.711 潘松,黄继业.EDA技术实用教程VHDL版(第四版).科学出版社,2010.612 英Peter Wilson,杜生海译.FPGA设计实践.人民邮电出版社,2009.713 侯伯亭,顾新.VHDL硬件描述语言与数字逻辑电路设计.西安电子科技大学,1997.514 杨春玲,朱敏.EDA技术与实验.哈尔滨工业大学出版社,2009.315 焦素敏.EDA应用技术.清华大学出版社,2005.416 李洪伟,袁斯华.基于Quartus 的FPGA/CPLD设计.电子工业出版社,2006.717 邢建平,曾繁泰.VHDL程序教程(第3版).清华大学出版社,2007.418 潘松,黄继业.EDA技术与VHDL(第2版).清华大学出版社,2007.1019 李广军,孟宪元.可编程ASIC设计及应用.成都电子科技大学出版社,2003.220 杨恒,卢飞成.FPGA/CPLD快速工程实践入门与提高.北京航空航天大学出版社,2003.821 雷伏容,李俊,尹霞.EDA技术与VHDL开发基础教程.清华大学出版社,2010.5摘要: 随着时代的进步、科技的发展,各大城市高楼大厦平地起,这是城市建设蓬勃发展的标志,我们就是在这喧哗的城市中生活、工作着,每天都会上下班,每天都会进出电梯;从此,电梯与我们的生活形影不离,并让我们上下高楼变得方便、安全、快捷。从奥的斯发明的历史上第一部安全升降梯到现在的电梯,历经一个多世纪,在这个过程中,电梯不论从外观、结构还是控制方式都发生了巨大的变化,随着数字技术EDA、嵌入式技术的发展,电梯的控制变得微型化、智能化;目前载人电梯都是微机控制的智能化、自动化设备,不需要专门的人员来操作驾驶,普通乘客只需按下上下按钮和到达楼层的按钮就可以进行电梯的乘坐。本次论文是基于FPGA的电梯控制器的研究,是电梯控制的核心技术,通过电梯控制器可以对电梯运行模式和状态进行全面的控制,这也是此次论文研究的重要性;由于FPGA技术近些年来蓬勃发展,而且在很多领域已经应用的十分成熟,所以用FPGA可以实现对电梯精确、稳定、实时性控制,同时用于FPGA开发的芯片都是一些微处理器芯片,便于集成和智能化设计。关键词: FPGA VHDL 电梯 状态机 Abstract: With the increasing progress of science and technology, many cites appaer high-rise buildings,this is a sign of urban construction booming. We are working and living in the city, every day to work , and every day out of the elevator. Since then, the elevator and our lives inseparable, and so that life becomes convenient. After more than a century from Otis invented the first one safety elevator lift to the present. In this process, elevator has undergone tremendous changes from the appearance, structure or control. With the development of digital technology, EDA, embedded technology, the elevator control become miniaturized and intelligent. Manned elevators are intelligent computer control, automation equipment, does not require specialized personnel to operate the driving, Ordinary passenger just press the up and down buttons and reach the floor button on the elevator ride. This design is the design of FPGA-based elevator controller, that is the core technology of the elevator control. It controls its operation mode and status accurately from elevator controller which is also the sub-thesis importance. Because of FPGA technology has developed rapidly in recent years, and has been applied very mature in many areas, we can achieve right elevator accurate, real-time control with FPGA. At the same time, For FPGA development chip are a number of microprocessor chips, which is easy integration and intelligent to design.Key words: FPGA, VHDL, Elevator, State machine目 录1 绪论11.1 电梯控制器的发展现状11.2 论文研究的主要内容22 CPLD/FPGA硬件结构知识22.1 CPLD/FPGA概述22.2 CPLD和FPGA性能比较32.3 FPGA体系结构32.3 FPGA常用芯片介绍43 VHDL硬件描述语言43.1 VHDL语言特点43.2 状态机的VHDL实现54 电梯控制器的工作原理65 电梯控制系统的设计内容75.1 时钟分频模块75.2 按键处理模块85.3 电梯运行控制模块115.4 数码管显示模块215.5 电梯超重控制可行性分析236 仿真效果及结论246.1 仿真效果246.2 结论36参考文献36致 谢37附录381 绪论1.1 电梯控制器的发展现状国家规定超过六楼以上的楼层必须按要求安装电梯,而且随着超高层建筑的出现,电梯的应用越来越来广泛了,与此同时,对电梯的要求也越来越高了。目前,电梯的设计、工艺不断提高,电梯的品种也逐渐增多,电梯的材质由黑白到彩色,样式由直式到斜式,在操纵控制方面更是步步出新:手柄开关操纵、按钮控制、信号控制、集选控制、人机对话等;多台电梯还出现了并联控制、智能群控;双层轿箱电梯展示出节省井道空间,提升运输能力的优势,变速式自动人行道扶梯大大节省了行人的时间;不同外形的电梯则使身处其中的乘客的视线不再封闭。电梯的结构分为:四大空间,八大系统;四大空间:机房部分、井道及地坑部分、轿厢部分、层站部分;八大系统:曳引系统、导向系统、轿厢、门系统、重量平衡系统、电力拖动系统、电气控制系统、安全保护系统;电梯的功能结构决定电梯的八大应用技术:1) 全数字识别乘客技术(所有乘客进入电梯前进行识别,其中包括眼球识别、指纹识别)2) 数字智能型安全控制技术(通过乘客识别系统或者IC卡以及数码监控设备,拒绝外来人员进入)3) 第四代无机房电梯技术(主机必须与导轨和轿厢分离,完全没有共振共鸣,速度可以达到2.0M/S以上,最高可以使用在30层以上。)4) 双向安全保护技术(双向安全钳、双向限速器,在欧洲必须使用,中国正在被普遍使用)5) 快速安装技术(改变过去的电梯安装方法,能够快速组装)6) 节能技术(采用节能技术,使电梯更节约能源) 7) 数字监控技术(完全采用计算机进行电梯监控与控制)8) 无线远程控制及报警装置(当电梯产生故障时,电梯可以通过无线装置给手机发送故障信息,并通过手机发送信号对电梯进行简单控制。)本次论文主要是控制电梯的运行模式和状态,对信号进行处理的模块,重点在对响应的信号进行处理,并将处理结果反馈给对应功能的控制端口,实现对电梯运行的全面控制。1.2 论文研究的主要内容随着可编程逻辑电路和EDA技术的发展,在逻辑电路设计和嵌入式系统设计方面,以CPLD/FPGA为代表的可编程逻辑器件已经逐步代替了传统的标准逻辑器件;本次论文的电梯控制器所有的程序可以集成在一个FPGA开发芯片上面,不用在用其他功能的分立逻辑元件,达到集成度高、响应快、功耗低的特点。本次论文是基于FPGA的电梯控制器的研究,是电梯控制的核心技术,通过电梯控制器可以对电梯运行模式和状态进行全面的控制,这也是次论文的研究重要性;电梯的层数为6层,本次论文采用模块化设计,主要分为四大模块:时钟分频模块、按键处理模块、电梯运行控制模块、数码管显示模块。由于FPGA技术近些年来蓬勃发展,而且在很多领域已经应用的十分成熟,用FPGA可以实现对电梯精确、实时性控制,而且用于FPGA开发的芯片都是一些微处理器芯片,便于集成和智能化设计,而且大大缩短了开发周期。2 CPLD/FPGA硬件结构知识2.1 CPLD/FPGA概述CPLD(Complex Programmable Logic Device)复杂可编程逻辑器件,主要是由可编程逻辑宏单元(LMC,Logic Macro Cell)围绕中心的可编程互连矩阵单元组成,其中LMC逻辑结构比较复杂,并具有复杂的I/O单元互连结构,可由用户根据需要生成特定的电路构成,完成一定的功能。由于CPLD内部采用固定长度的金属线进行各逻辑块的互连,所以设计的逻辑电路具有时间可预测性,避免了分段式互连结构时序不能完全预测的缺点,20世纪90年代,CPLD迅速发展,不仅具有电擦除特性,而且出现边缘扫描以及在线可编程(ISP,In System Programmable)等高级特性。FPGA(Field Programmable Gate Arry)即现场可编程门阵列,它是在PAL、GAL、CPLD等可编程器件的基础上进一步发展的产物。它是作为专用集成电路(ASIC)领域中的一种半定制电路而出现的,既解决了定制电路的不足,又克服了原有可编程器件门电路数有限的缺点;FPGA采用了逻辑单元阵列LCA(Logic Cell Array)这样一个概念,内部包括可配置逻辑模块CLB(Configurable Logic Block)、输入输出模块IOB(Input Output Block)和内部连线(Interconnect)三个部分。2.2 CPLD和FPGA性能比较尽管FPGA和CPLD都是可编程ASIC器件,有很多共同点,但是由于其结构的不同使得各自又具有不同的特点,具体的有一下区别:1) CPLD内部逻辑单元比较多,而触发器资源较少,适合各种算法和组合逻辑电路的设计;而FPGA内部触发器资源多,而门级单元较少,适合时序逻辑电路的设计。2) CPLD的连续式布线结构决定了其时序延时是均匀的、可预测性的,而FPGA的分段式布线结构决定了其延时是不可预测性的。3) 在编程上,FPGA比CPLD具有更大的灵活性,CPLD通过修改具有固定内部连线电路的逻辑功能来编程,FPGA主要是修改内部连线的布线来编程。4) 相对CPLD而言,FPGA的集成度高,可实现的规模也较大,并具有更负责的布线结构和逻辑实现,同时CPLD的功耗比FPGA的大,并且随着集成度的增加而更明显。5) 相对于FPGA而言,CPLD使用起来更方便;CPLD编程采用或Fast Flash技术,无须外部存储器芯片,使用简单;而FPGA的编程信息必须存放在外部存储器上,使用较复杂;由于存储的信息的方式就决定了两者的保密性,一般情况,CPLD保密性好,FPGA的保密性差。6) CPLD的运行速度比FPGA的快,在编程方式上,CPLD编程采用或Fast Flash存储器编程,编程次数可达1万次,其特点是系统在掉电时编程信息不会丢失;而FPGA大部分是基于SRAM编程,编程信息在掉电时丢失,每次上电时,需从外部存储器将编程数据重新写入SRAM中,其特点是可编程任意次,可在工作中快速编程。2.3 FPGA体系结构FPGA采用逻辑单元阵列(LCA,Logic Cell Array)新概念,内部包括可配置逻辑模块(CLB,Configurable Logic Block)、输入输出模块(IOB,Input Output Block)和内部互连资源(IR,Interconnect Resources)三部分组成。1) 可配置逻辑块(CLB,Configurable Logic Block)是FPGA的主要组成部分,主要是由逻辑函数发生器、触发器、数据选择器等电路组成。2) 输入输出模块(IOB,Input Output Block)提供了器件引脚和内部逻辑阵列之间的连接,主要是由输入触发器、输入缓冲器和输出触发、锁存器、输出缓冲器组成。3) 可编程互连资源(IR,Interconnect Resources)可以将FPGA内部的CLB和CLB之间、CLB和IOB之间连接起来,构成各种具有复杂功能的系统,IR主要由许多金属线段构成,这些金属线段带有可编程开关,通过自动布线实现各种电路的连接。2.3 FPGA常用芯片介绍目前世界上有很多生产FPGA芯片的公司,常用的主要有:Altera、XIlinx、Lattice和Actel,其中Altera和XIlinx占据主流市场。1) Altera的主流FPGA分为两大类:一种是侧重低成本、容量中等、性能可以满足一般逻辑设计要求的,如Cyclone系列;另一种是侧重高性能、容量大、性能可以满足各类高端应用,如Stratix系列。2) XIlinx是FPGA发明者,是老牌PLD,产品的种类较全,主要有:XC9500/4000、Cool Runner(XPLA3)、Spartan、Virtex等系列。3) Lattice是在系统编程(ISP)技术的发明者,主要有:ispLSI2000/5000/8000、MACH4/5、ispMACH4000等系列。4) Actel公司是世界反熔丝技术的FPGA领先供应商,主要有两大系列的反熔丝FPGA产品SX-A和MX高速系列。3 VHDL硬件描述语言3.1 VHDL语言特点VHDL(Very-High-Speed Integrated Circuit Hardware Description Language)是一种标准的硬件描述语言,中文意思是超高速集成电路硬件描述语言;利用VHDL进行系统行为级设计已经成为FPGA与ASIC设计的主流,使用VHDL不仅可以快速的描述和综合FPGA设计,还可以提供一下的一些性能。1) 功能强大且很具有灵活性,VHDL具有很强大的语言结构,可以用简洁明确的代码描述复杂的控制逻辑,语言很灵活,支持设计库和可重复使用的元件生成。2) 不依赖于器件的设计,VHDL允许设计者生成一个设计而不需要首先选择一个用来实现设计的器件,对于同一个设计描述,可以采用多种不同的器件结构来实现其功能。3) 具有可移植性,因为VHDL是一种标准的语言,所以它可以被不同的工具所支持,这意味着同一个VHDL设计描述可以在不同的设计项目中采用4) 可以对其设计性能进行评估,设计者可以进行一个完整的设计描述,并对其进行综合,生产选定的器件结构的逻辑功能,然后评估结果,选用最适合设计需求的器件。5) 上市时间快、成本低、开发周期短,VHDL语言的设计将大大提高数字单片化设计实现的速度,为生产者大大节约开发成本。3.2 状态机的VHDL实现有限状态机以及其设计技术是使用数字系统设计中的重要组成部分,也是实现高效率、高可靠和高速控制逻辑系统的重要途径,广义而论,只要是涉及到触发器的电路,都属于状态机,由此也可以看出其重要性。用VHDL设计的状态机根据不同的标准可以分为不同的形式:1) 从状态机的信号输出方式上分:Mealy型和Moore型;2) 从状态机的描述结构上分:单进程状态机和多进程状态机;3) 从状态机表达形式上分:符号化状态机和确定状态编码状态机;4) 从状态机编码方式上分:顺序编码状态机、一位热编码状态机和其他编码方式状态机。实际设计过程中,接触最多的分类方法就是Mealy型和Moore型;从输出时序上看,前者是异步输出,后者是同步输出。Mealy型状态机的输出是当前状态和所有输入信号的函数,它的输出是输入变化后立即变化的,不依赖时钟的同步。Moore型状态的输出仅为当前状态的函数,但是在输入发生变化时还必须等到时钟的到来,输出才会变化,由此可见,Moore型要多等待一个时钟周期。本次论文中,电梯控制模块部分就利用Moore型状态机的方法实现对电梯运行状态的同步控制,通过将电梯运行过程分解为一些实质性的状态来进行转换,使得电梯的运行变得方便、快捷、稳定。4 电梯控制器的工作原理本次论文是实现6层电梯的运行控制,当在某一楼层按下上升或者下降请求按钮时,控制器响应该请求并控制电梯前往该楼层,当到达该楼层时,电梯开门,当进入电梯后,电梯关门,此时按下要到达的楼层按钮,控制器响应该请求并控制电梯前往该楼层,当到达前往楼层后,电梯开门,走出电梯,然后关门.,就这样往复的实现电梯的控制功能。在电梯运行时遵循如下规则:当电梯处于上升模式时,只响应比电梯所在位置高的上楼信号,由下至上依次执行;直到最后一个上楼请求执行完毕,如有更高层有下楼请求时,则直接升到有下降请求的最高楼,然后进入下降模式,电梯处于下降模式时,则与上升相反。电梯的输入信号主要包括外部输入信号和内部输入信号;对于电梯外部输入信号主要有:每一层电梯门外都有上升请求和下降请求按钮,其中一楼电梯门外只有上升请求按钮,6楼电梯门外只有下降请求按钮。对于电梯内部输入信号主要有:6个前往楼层的按钮、提前关门按钮、延时关门按钮、电梯异常按钮。电梯输出信号也主要包括外部输出信号和内部输出信号;对于电梯外部输出信号包括上升请求按钮和下降按钮指示信号、电梯当前所在楼层指示信号、电梯运行方向指示信号。电梯内部输出信号包括6个前往楼层按钮指示信号、超重等警告指示信号、电梯当前所在楼层指示信号、电梯运行方面指示信号。5 电梯控制系统的设计内容本次论文是基于FPGA的电梯控制器的研究,是电梯控制的核心技术,通过电梯控制器可以对电梯运行模式和状态进行全面的控制,这也是次论文的研究重要性;电梯的层数为6层,本次论文采用模块化设计方法,主要分为四大模块:时钟分频模块、按键处理模块、电梯运行控制模块、数码管显示模块。其方框原理图5-0如下:时钟分频数码管显示按键处理电梯运行控制系统时钟2倍分频8倍分频按键请求按键处理响应显示电梯所在楼层图5-0 电梯控制器原理图5.1 时钟分频模块时钟分频模块功能是将系统频率分频为两种不同的频率,一个是2分频时钟供电梯运行控制模块使用,另一个8分频时钟供其他模块使用,其源代码如下:时钟分频模块:clkdiv.vhdLibrary Ieee;Use Ieee.Std_Logic_1164.All;Use Ieee.Std_Logic_unsigned.All; / 定义所用的标准库Entity clkdiv Is Port( clk: In Std_Logic; /系统时钟频率 clk_2: Out Std_Logic; /2分频脉冲(作为电梯控制时钟) clk_8: Out Std_Logic /8分频脉冲(作为按键处理时钟) ); /定义输入输出变量End clkdiv;Architecture one of clkdiv isSignal cnt: Std_Logic_Vector(7 Downto 0); /定义一个8位的变量Begin Process(clk) /时钟分频进程 Begin If clk'event and clk='1' Then /时钟脉冲上升沿有效 cnt<=cnt+1; clk_2<=cnt(1); /变量cnt的第1位输出2分频 clk_8<=cnt(4); /变量cnt的第3位输出8分频 End If; End Process;End one;源程序编写完成后,进行调试、运行并生成模块文件,确认没有错误之后进行功能仿真、时序分析。其模块原理图5-1如下:图5-1 时钟分频模块原理图5.2 按键处理模块按键处理模块的功能是把电梯外部与内部的按键信号进行处理,把处理好的按键信号送到电梯运行控制模块;根据电梯外部按键信号转化为电梯运行控制模块的外部请求信号,根据电梯内部的按键信号转化为电梯运行控制模块的电梯前往信号,根据电梯楼层信号及时清除电梯外部与内部按键信号。其源代码编写如下:按键处理模块:keypro.vhdLibrary Ieee;Use Ieee.Std_Logic_1164.All;Use Ieee.Std_Logic_Arith.All;Use Ieee.Std_Logic_unsigned.All; / 定义所用的标准库Entity keypro IsPort( clk: In Std_Logic; /按键时钟 rst: In Std_Logic; /异步置位按键 up: In Std_Logic_Vector(5 Downto 1); /上升请求按键(低电平有效) down: In Std_Logic_Vector(6 Downto 2); /下降请求按键(低电平有效) up_light: Out Std_Logic_Vector(6 Downto 1); /电梯外部上升请求指示灯 down_light: Out Std_Logic_Vector(6 Downto 1);/电梯外部下降请求指示灯 inside: in Std_Logic_Vector(6 Downto 1); /电梯内部楼层请求按键(低电平有效) inside_light: Out Std_Logic_Vector(6 Downto 1); /电梯内部楼层请求指示灯 position: in integer range 1 to 6; /电梯位置变量 clear_up: in Std_Logic; /用于清除上升请求指示灯的信号 clear_down: in Std_Logic /用于清除下降请求指示灯的信号 ); /定义输入输出变量End keypro;Architecture one of keypro isBegin Process(clk,rst) Begin If rst='0' Then inside_light<="000000" up_light<="000000" down_light<="000000" Elsif clk'event and clk='1' Then /清除电梯当前外部上升请求信号和电梯内部前往该楼层信号 If clear_up='1' Then inside_light(position)<='0' up_light(position)<='0' Else up_light<='0'& (not up); inside_light<=not inside; End If; /清除电梯当前外部下降请求信号和电梯内部前往该楼层信号 If clear_down='1' Then inside_light(position)<='0' down_light(position)<='0' Else down_light<= (not down) & '0' inside_light<=not inside; End If; End If; End If; End Process;End one;源程序编写完