基于FPGA的6层自动升降电梯控制系统的设计.doc

上传人:文库蛋蛋多 文档编号:4144786 上传时间:2023-04-07 格式:DOC 页数:30 大小:742.50KB
返回 下载 相关 举报
基于FPGA的6层自动升降电梯控制系统的设计.doc_第1页
第1页 / 共30页
基于FPGA的6层自动升降电梯控制系统的设计.doc_第2页
第2页 / 共30页
基于FPGA的6层自动升降电梯控制系统的设计.doc_第3页
第3页 / 共30页
基于FPGA的6层自动升降电梯控制系统的设计.doc_第4页
第4页 / 共30页
基于FPGA的6层自动升降电梯控制系统的设计.doc_第5页
第5页 / 共30页
点击查看更多>>
资源描述

《基于FPGA的6层自动升降电梯控制系统的设计.doc》由会员分享,可在线阅读,更多相关《基于FPGA的6层自动升降电梯控制系统的设计.doc(30页珍藏版)》请在三一办公上搜索。

1、引言随着经济和科学技术的发展,电梯在高层建筑物的作用越来越凸出。目前电梯主要分为机械系统与控制系统两大部份,而电梯的控制系统主要有三种控制方式分别是:继电路控制系统(“早期安装的电梯多位继电器控制系统)、基于FPGA控制系统、微机控制系统。实现继电路控制系统方法很多,可以用标准逻辑器件、可编程序控制器PLC、单片机等方案来实现。但是这些方法的功能修改及调试都需要硬件电路的支持,在一定程度上增加了功能修改及系统调试的困难,且该系统由于故障率高、可靠性差、控制方式不灵活以及消耗功率大等缺点,已渐渐被人民淘汰。微机控制系统虽在智能控制方面有较强的功能,但也存在抗扰性差,系统设计复杂,一般维修人员难以

2、掌握其维修技术等缺陷,没能广泛应用电梯中。而基于FPGA的电梯控制系统由于可靠性高,使用维修方便,抗干扰性强,设计和调试周期较短等优点,在电梯控制中得到广泛应用,从而使电梯由传统的继电器控制方式发展为计算机控制的一个重要方向,成为当前电梯控制和技术改造的热点之一。本文给出一个基于FPGA的6层自动升降电梯控制系统的设计方案。它的设计是采用通俗易懂的Verilog HDL硬件描述语言使用EDA技术在Quartus II软件平台上设计完成,程序设计、编译以及时序仿真通过后再下载到开发板配合外围电路(模拟电梯的电路)来验证该系统的可行性。这个系统分主要有6个模块,分别是键盘响应寄存处理模块、上升/下

3、降请求寄存处理模块、电梯运行和停止处理模块、开门/关门与延时处理模块、电梯运行方向判断模块和电梯运行状态显示模块。通过模块化设计不仅提高了程序编程错误的排查能力还提高了系统的可靠性。1 概论1.1 电梯国内外现状1.1.1国内现状电梯作为中国对外最早的行业经过多年的发展,电梯产品无论在数量和质量都有了显著的提高,和国外产品差距越来越小。考虑到经济性,现有国内的电梯控制系统,通常采用微机或可编程逻辑控制器对变频器进行多段速控制。在电梯传动系统方面,对于新装客梯及旧梯改造项目,大多数采用了交流变压变频VVVF)调速电梯。在电梯反馈系统方面,采用闭环速度反馈,利用套在电机轴上的增量编码器产生脉冲信号

4、反馈给控制系统。在井道信号采集方面,目前国内电梯一般都采用增量编码器记数方式配合双稳态磁开关或光电开关来识别轿厢位置。尽管国内电梯市场需求因多方面需求得到迅速增长,但中国加入WTO后,外资品牌电梯进入中国并在中国电梯市场份额中占有的比重大,因此自主品牌企业的发展还任重道远。1.1.2国外现状由于国外电梯技术发展早,因此国外电梯技术一直走在世界的前头。目前在电梯控制系统方面国外发达国家的电梯正在推广32位微机控制系统。他们都采用闭环反馈单微处理机控制系统或多微处理机协调控制系统。在电梯传动系统方面,采用交流变压变频(VVVF)调速技术,实现电梯从超低速到高速无级调速的高精度运行,具有节能、对电网

5、污染小、乘坐舒适感佳等优点。在电梯反馈系统方面,除了采用旋转编码器获得电梯轿厢位置信号外,还有一些厂家采用绝对值编码器从电梯轿厢上反馈位置信号给系统,对曳引电机进行以距离为原则的控制,以实现直接平层技术,达到优越的电梯运行效果。国外电梯不仅仅在技术上有领先优势,同时在安装调试、售后服务和维修保养方面都下足功夫。在国外己有法规实行电梯制造、安装和维修一体化,实行由各制造企业认可的、法规认证的专业安装队和维修单位,承担安装调试、定期维修和检查试验,从而为电梯运行的可靠性和安全性提供了保证。1.2 EDA技术的概述EDA即电子设计自动化(Electronic Design Automation)的缩

6、写,是在20世纪90年代初从计算机辅助设计(CAD)、计算机辅助制造(CAM)、计算机辅助测试(CAT)和计算机辅助工程(CAE)的概念发展而来。一般把EDA技术的发展分为CDA、CEA、和EDA这三个阶段。EDA技术就是依靠强大的,在EDA软件平台上,以硬件描述语言HDL为系统逻辑描述手段完成的设计文件,然后由计算机自动地完成逻辑编译、化简、分割、综合、优化、布局、布线和仿真,直至对于特定目标芯片的适配编译、逻辑映射和编程下载等工作。经过多年的发展,EDA技术已经成为电子设计的重要工具,无论是设计芯片还是设计系统,如果没有EDA工具的支持,都将是难以完成的。EDA工具已经成为现代电路设计师的

7、重要武器,正在发挥着越来越重要的作用。1.3 FPGA的简介FPGA是英文Field Programmable Gate Arry的缩写,即现场可编程门阵列,它是在PAL、GAL、EPLD等可编程器件的基础上发展起来的。它作为专用集成电路(ASIC)领域中的一种半定制电路而出现的,既解决了定制电路的不足,又克服了原有可编程器件门电路数有限的缺点。1.3.1FPGA的工作原理由于FPGA需要被反复烧写,它实现组合逻辑的基本结构不可能像ASIC那样通过固定的与非门来完成,而只能采用一种易于反复配置的结构。查找表可以很好 地满足这一要求,目前主流FPGA都采用了基于SRAM工艺的查找表结构,也有一些

8、军品和宇航局FPGA采用Flash或者熔丝与反熔丝工艺的查找表结构。它通过烧写文件改变查找表内容的方法来实现对FPGA的重复配置。学过数字电路的人都知道,对于一个n输入的逻辑运算,不管是与或非运算还是异或运算等等,最多只可能存在2n种结果。所以如果事先将相应的结果存放于一个存贮单元,就相当于实现了与非门电路的功能。FPGA的原理也是如此,它通过烧写文件去配置查找表的内容,从而在相同的电路情况下实现了不同的逻辑功能。查找表(Look-Up-Table)简称为LUT,LUT本质上就是一个RAM。目前FPGA中多使用4输入的LUT,所以每一个LUT可以看成一个有 4位地址线的RAM。当用户通过原理图

9、或Verilog HDL语言描述了一个逻辑电路以后,PLD/FPGA开发软件会自动计算逻辑电路的所有可能结果,并把真值表(即结果)事先写入 RAM,这样,每输入一个信号进行逻辑运算就等于输入一个地址进行查表,找出地址对应的内容,然后输出即可。我们可以表1-1来说明LUT实现逻辑功能的原理:表1-1 4输入与门的真值表从表中我们可以看出,LUT具有和逻辑电路相同的功能。实际上,LUT具有更快的执行速度和更大的规模。1.3.2FPGA的配置模式FPGA是由存放在片内的RAM来设置其工作状态的,因此工作时需要对片内RAM进行编程。用户可根据不同的配置模式,采用不同的编程方式。FPGA有下面3种配置模

10、式:(1)主动配置方式(AS)由FPGA器件引导配置操作过程,它控制着外部存储器和初始化过程,EPCS系列。如EPCS1,EPCS4配置器件专供AS模式,目前只支持 Cyclone系列。使用Altera串行配置器件来完成。Cyclone期间处于主动地位,配置期间处于从属地位。配置数据通过DATA0引脚送入 FPGA。配置数据被同步在DCLK输入上,1个时钟周期传送1位数据。(2)被动配置方式(PS)则由外部计算机或控制器控制配置过程。通过加强型配置器件(EPC16,EPC8,EPC4)等配置器件来完成,在PS配置期间,配置数据从外部储存部件,通过DATA0引脚送入FPGA。配置数据在DCLK上

11、升沿锁存,1个时钟周期传送1位数据。(3)JTAG配置方式,JTAG接口是一个业界标准,主要用于芯片测试等功能,使用IEEE Std 1149.1联合边界扫描接口引脚,支持JAM STAPL标准,可以使用Altera下载电缆或主控器来完成。 1.3.3FPGA的芯片结构FPGA芯片主要由6部分完成,分别为:可编程输入输出单元、基本可编程逻辑单元、完整的时钟管理、嵌入块式RAM、丰富的布线资源、内嵌的底层功能单元和内嵌专业硬件模块。以下是FPGA芯片主要模块功能说明:(1)可编程输入/输出单元简称I/O单元,是芯片与外界电路的接口部分,完成不同电气特性下对输入/输出信号的驱动与匹配要求。FPGA

12、内的I/O按组分类,每组都能够独立地支持不同的I/O标准。通过软件的灵活配置,可适配不同的电气标准与I/O物理特性,可以调整驱动电流的大 小,可以改变上、下拉电阻。外部输入信号可以通过IOB模块的存储单元输入到FPGA的内部,也可以直接输入FPGA 内部。当外部输入信号经过IOB模块的存储单元输入到FPGA内部时,其保持时间(Hold Time)的要求可以降低,通常默认为0。为了便于管理和适应多种电器标准,FPGA的IOB被划分为若干个组(bank),每个bank的接口标准由其接口电压VCCO决定,一个bank只能有一种VCCO,但不同bank的VCCO可以不同。只有相同电气标准的端口才能连接

13、在一起,VCCO电压相同是接口标准的基本条件。(2)FPGA内的基本逻辑单元为CLB(可配置逻辑块),CLB的实际数量和特性会依器件的不同而不同,但是每个CLB都包含一个可配置开关矩阵,此矩阵由4或6个输入、一些 选型电路(多路复用器等)和触发器组成。开关矩阵是高度灵活的,可以对其进行配置以便处理组合逻辑、移位寄存器或RAM。(3)目前市场上的FPGA都提供数字时钟管理和相位环路锁定。相位环路锁定能够提供精确的时钟综合,且能够降低抖动,并实现过滤功能。(4)大多数FPGA都具有内嵌的块RAM,这大大拓展了FPGA的应用范围和灵活性。块RAM可被配置为单端口RAM、双端口RAM、内容地址存储器

14、(CAM)以及FIFO等常用存储结构。RAM、FIFO是比较普及的概念,在此就不冗述。CAM存储器在其内部的每个存储单元中都有一个比较逻辑,写入 CAM中的数据会和内部的每一个数据进行比较,并返回与端口数据相同的所有数据的地址,因而在路由的地址交换器中有广泛的应用。除了块RAM,还可以将 FPGA中的LUT灵活地配置成RAM、ROM和FIFO等结构。在实际应用中,芯片内部模块RAM的数量也是选择芯片的一个重要因素。(5)FPGA芯片内部有着丰富的布线资源,根据工艺、长 度、宽度和分布位置的不同而划分为类不同的类别。第一类是全局布线资源,用于芯片内部全局时钟和全局复位/置位的布线;第二类是长线资

15、源,用以完成芯片 Bank间的高速信号和第二全局时钟信号的布线;第三类是短线资源,用于完成基本逻辑单元之间的逻辑互连和布线;第四类是分布式的布线资源,用于专有时 钟、复位等控制信号线。 (6)内嵌功能模块主要指DLL(Delay Locked Loop)、PLL(Phase Locked Loop)、DSP和CPU等软处理核(Soft Core)。现在越来越丰富的内嵌功能单元,使得单片FPGA成为了系统级的设计工具,使其具备了软硬件联合设计的能力,逐步向SOC平台过渡。 (7)内嵌专用硬核是相对底层嵌入的软核而言的,指FPGA处理能力强大的硬核(Hard Core),等效于ASIC电路。为了提

16、高FPGA性能,芯片生产商在芯片内部集成了一些专用的硬核。例如:为了提高FPGA的乘法速度,主流的FPGA 中都集成了专用乘法器;为了适用通信总线与接口标准,很多高端的FPGA内部都集成了串并收发器(SERDES),可以达到数十Gbps的收发速度。1.4 硬件描述语言硬件描述语言HDL是EDA技术中的重要组成部分,常用的硬件描述语言有AHDL、VHDL和Verilog HDL,而VHDL和Verilog HDL是当前最流行并成为IEEE标准的硬件描述语1.4.1Verilog HDLVerilog HDL是目前应用最广泛的硬件描述语言,并被IEEE采纳为IEEE#1364-1995标准(Ver

17、ilog-1995版本),并于2001年升级为Verilog-2001版本,Verilog HDL可以用来进行各种层次的逻辑设计,也可以进行数字系统的逻辑综合、仿真验证和时序分析。Verilog HDL适合算法级(Alogorithm)、寄存器传输级(RTL)、逻辑级(Logic) 、门级(Gate)和版图级(Layout)等各个层次的电路设计和描述。采用Verilog HDL进行电路设计的最大优点是其与工艺无关性,这使得设计者在进行电路设计时可以不必过多考虑工艺实现的具体细节,只需要根据系统设计的要求施加不痛的约束条件,即可设计出实际电路。实际上,利用计算机的强大功能,在EDA工具的支持下,

18、吧逻辑验证与具体工艺库相匹配,将布线及延时计算分成不同的阶段来实现,可以减少设计者的繁重劳动。Verilog HDL和VHDL都是用于电路设计的硬件描述语言,并且都已经成为IEEE标准。Verilog HDL也具有VHDL类似的特点,稍有不同的是,Verilog HDL早在1983年就已经推出,应用历史较长,拥有广泛的设计群体,设计资源比VHDL丰富。另外,Verilog HDL是在C语言的基础上演化而来的,因此只要具有C语言的程序基础,设计者就很容易学会并掌握这种语言。1.4.2VHDLVHDL是超高速集成电路硬件描述语言(Very High Speed Integrated Circuit

19、 Hardware Description Language),是现代电子系统设计的首选硬件设计计算机语言,它主要是应用在数字电路的设计中。目前,它在中国的应用多数是用在FPGA/CPLD/EPLD的设计中。当然在一些实力较为雄厚的单位,它也被用来设计ASIC。VHDL有如下几个特点:(1)VHDL具有强大的功能,覆盖面广,描述能力强。VHDL支持门级电路的描述,也支持以寄存器、储存器、总线及单元等构成的寄存器传输级电路的描述,还支持以行为算法和结构的混合描述为对象的系统级电路的描述。(2)VHDL有良好的可读性。它可以被计算机接受,也容易被读者了解。用VHDL书写的源文件,既是程序又是文档,

20、既可作为工程技术人员之间交换信息的文件,又可作为合同签约者之间的文件。(3)VHDL具有良好的可移植性。作为一种已被IEEE承认的工业标准,VHDL事实上已成为通用的硬件描述语言,可以在各种不痛的设计环境和系统平台中使用。(4)使用VHDL可以延长设计生命周期。用VHDL描述的硬件电路与工艺无关,不会因工艺变化而使描述过时。与工艺有关的参数可以通过VHDL提供的属性加以描述,工艺改变时,只需要修改相应程序中的参数即可。(5)VHDL支持对打规模设计的分解和已有设计的再利用。VHDL可以描述复杂的电路系统,支持对大规模设计的分解,由多人、多项目组来共同承担和完成。标准化的规则和风格,为设计的再利

21、用提供了有力的支持。(6)VHDL有利于保护知识产权。用VHDL设计的专用集成电路(ASIC),在设计文件下载到集成电路时可以采用一定的保密措施,使其不易被破译和盗取。1.4.3AHDLAHDL(Analog Hardware Description Language)是Altera公司根据自己公司生产的MAX系列器件和FLEX系列器件的特点专门设计的一套完整的硬件描述语言。AHDL是一种模块化的硬件描述语言,他完全集成Altera公司的MAX+PLUSS和Quartus的软件开发系统中。AHDL特别适合于描述复杂的组合电路、组(group)运算及状态机、真值表和参数化的逻辑。用户可以通过MA

22、X+PLUSS的软件开发系统对AHDL源程序进行编辑,并通过源程序文件的编译建立仿真、时域分析和器件程序的输出文件。AHDL的语句和元素种类齐全、功能强大,而且易于应用。用户可以使用AHDL建立完整层次的工程设计项目,或者在一个层次的设计中混合其他类型的设计文件,如VHDL设计文件或Verilog HDL文件。2 设计方案论证及核心芯片介绍电梯控制系统的选择是否的当对电梯的效率、性能都有很大的影响。因此在设计电梯控制系统时要充分了解每个系统的优缺点,通过对比选择较为合理的方案进行设计。2.1 系统设计任务 运用所学的数字逻辑电路、硬件描述语言、EDA技术和可编程逻辑器件(PLD)的基本知识,设

23、计基于CPLD的电梯控制器电路。设计的电路每层楼都应该有请求开关,电梯内有请求开关和电梯上、下状态显示。2.2 系统设计要求(1)设计一个6层楼的电梯控制系统,每层楼都应该有请求开关,电梯内有请求开关和电梯上、下状态显示,用LED灯显示电梯门的开关状态,用数码管显示电梯所在楼层。(2)在EP2C8T144C8-FPGA开发板上完成电路的设计与验证后,根据设计电路的输入和输出设备的需要设计并制作PCB板,完成基于PLD的电梯控制器电路。2.3 系统设计方案比较方案一: 图1-1内部请求系统设计的模块化流程图主控模块位移寄存、楼层计数模块键盘输入、显示模块当前楼层显示开、关门如图1所示在该设计中每

24、层楼都没有外部上下请求,只有楼内外的键盘按键请求, 主控模块根据键盘的输入楼层请求来对电梯的状态做出判断,再将判断的结果反馈给相应的模块进行处理。虽然这种方案可以保证所有人的请求都能得到响应,减轻了程序的编程难度,但这样对于电梯的效率产生消极影响。方案二:运行方向判断主控模块位移寄存、楼层计数模块键盘输入、显示模块当前楼层显示开、关门图1-2 方向优先系统设计模块流程图在此方案中采用了方向优先控制方式方案即当电梯处于上升模式时,只响应电梯所在楼层以上的请求信号,由下而上逐个执行,直到最后一个上楼请求执行完毕,当电梯处于下降模式,电梯的运行模式与上升模式相反。这样设计使电梯的效率大大提高,节省了

25、人民的出行时间,但是这样提高了程序设计的难度,需要有一定的编程能力才能完成,其设计的模块流程如图1-2所示。2.4 方案论证与选择方案一中,键盘输入、显示模块设置6个按键,对应1楼2楼6楼,以及6个相应的LED。当有按键按下,相应的LED灯亮,表示该楼层有请求,同时将按键信息传递给主控模块。主控模块根据按键请求,驱动位移寄存、楼层计数模块。在位移寄存、楼层计数模块中,用一个6位数组,赋初始值为000001,对其进行位移操作,左移表示电梯上升,右移表示电梯下降,变量fl根据左右移进行加减计数(每上升一楼fl加1,每下降一楼fl减1)。数组中1的位置,表示当前处在的楼层,然后将这个信息反馈给主控模

26、块,主控模块判断是否达到键盘请求的相应楼层,如果已经到达相应楼层,表示该楼层的LED灭,并输出一个信号开门,门开4s后自动关门。位移寄存、楼层计数模块将当前楼层的信息送到显示模块,显示模块显示当前楼层。如果键盘无请求,那么电梯停留在当前楼层。该方案基本虽然完成了一个6层楼的电梯控制系统,但是还没有能够实现自动控制。方案中少了电梯运行方向判断的模块,所以电梯只能上升到6楼(最高层)后才能下降,下降到1楼(最底层)后才能上升。假如电梯处于上升状态,到达4楼之后,5楼6楼均无请求,但是2楼有请求,这时电梯只能上升到6楼之后,再下降到2楼,这样的电梯就明显不能满足人民出行的需要,而且耗电电大,没有实现

27、自动控制。方案二中,加入了运行方向判断模块,若电梯处于上升状态,当前楼层以上无请求,但是当前楼层以下有请求,该模块可做出判断,改变电梯的运行状态,使电梯进入下降模式,从而达到智能化的自动控制。方案二是在方案一得基础上加多了方向判断模块,这样不仅实现了电梯的智能化自动控制,大大提高了电梯的利用率,为方便人民的出行提供了很好的方案。在该系统中当电梯在4楼的时候,有人在三楼想下到二楼,这时如果四楼以上的楼层没有请求的话,电梯就下到三楼载客到二楼。这种方案设计大大满足了人民出行的需要。综上所述本设计采用方案二,虽然在程序设计上增加了难度,使程序更复杂,但实现了电梯的自动控制。2.5 核心开发板简介EP

28、2C8T144C8-FPGA开发板采用Altera公司推出的CYCLONG系列芯片EP2C8T144C8芯片作为核心处理进行设计, CYCLONG系列芯片可以说是目前市场上性价比最高的芯片。比第一代的EP1C6或EP1C12等芯片设计上,内部逻辑资源上都有很大的改进。同时价格也被广大顾客接受;虽然Altera公司推出了CYCLONG 基于代的芯片,但是目前市场上价格走势偏高,尤其是针对广大出学者的定位,目前还不是适合采用。EP2C8T144C8开发板功能描述:(1)板载EP2C8T144C8 FPGA核心芯片;(2)50MHz有源贴片晶振,提供系统工作主时钟,通过22欧姆匹配电阻连接CLK0和

29、CLK4,均可作为系统时钟使用;(3)IN5822极管防止电流反接,高速肖特基二极管;(4)电源开关,正视开发板,向上接通电源;(5)5V电源接入口,外径5mm,内径3.5mm,内负外正;(6)R_C按键,FPGA的重新配置按键,按下后系统重新从EPCS4配置芯片中读取程序然后工作;(7)电源工作指示灯D2;(8)一个用户LED-D4,当与接口板连接时,改引脚SW1复用;(9)242双排直插2.54间距用户接口;(10)下载指示灯D1,平时熄灭,下载的时候会亮,按下R_C按键的时候也会亮;(11)EST按键,这个用户IO口可以当做用户输入按键使用,也可以分配为系统的复位按键;(12)JTAG下

30、载口,对应于下载的文件是SOF文件,速度很大,JTAG将程序直接下载到FPGA中,但是掉电程序丢失,平时学习推荐使用JTAG方式,最后固化程序的时候在通过ASP方式将程序下载到配置芯片即可;(13)ASP下载接口,对应下载的是POF文件,速度相对于JTAG比较慢,而且需要重新上电并且拔掉下载线才能工作,操作相对麻烦,不推荐学习时候使用,最后需要断电操作的情况下再使用ASP下载模式;(14)螺丝铜柱支撑;(15)4线RS232串口通信接口以及SRAM片选跳线选择;当与接口板连接时,改引脚与复用;(16)1085-3.3V稳压芯片;(17)1117-1.2V稳压芯片,提供FPGA核电压;(18)S

31、RAM芯片IS612V 256K16b(注意是选配件)(19)配置芯片EPCS4(4Mbit);(20)AT24C02-12C存储器件。2.6 CD4511 BCD 码七段码译码器CD4511是一个用于驱动共阴极 LED (数码管)显示器的 BCD 码七段码译码器,具有BCD转换、消隐和锁存控制、七段译码及驱动功能的CMOS电路能提供较大的拉电流,可以直接驱动LED显示器。2.6.1CD4511的引脚及其功能介绍CD4511的引脚图1-3所示图1-3 CD4511引脚图其中7、1、2、6分别表示A、B、C、D都是 BCD 码输入;5、4、3分别表示LE、BI、LT;LE为锁定控制端,当LE=0

32、时,允许译码输出; LE=1时译码器是锁定保持状态,译码器输出被保持在LE=0时的数值;BI为消隐输入控制端,当BI=0 时,不管其它输入端状态如何,七段数码管均处于熄灭(消隐)状态,不显示数字;LT为测试输入端,当BI=1,LT=0 时,译码输出全为1,不管输入 DCBA 状态如何,七段均发亮,显示“8”,它主要用来检测数码管是否损坏;13、12、11、10、9、15、14分别表示a、b、c、d、e、f、g为译码器输出端,输出为高点平1有效;还有两个引脚8、16分别表示的是GND、Vcc芯片供电端。2.6.2CD4511的工作真值表如表1-2所示表格中罗列出了CD4511工作时输入以及相对应

33、输出的各种值,我们可以在表格中很快找到我们需要的参数,大大方便我们编程的需要。表1-2 CD4511的工作真值表输 入输 出LEBILIDCBAabcdefg显示 XX0XXXX11111118X01XXXX0000000消隐 01100001111110001100010110000101100101101101201100111111001301101000110011401101011011011501101100011111601101111110000701110001111111801110011110011901110100000000消隐 01110110000000消隐 01

34、111000000000消隐 01111010000000消隐 01111100000000消隐 0111111000000消隐 3 系统单元模块设计方案中将设计分为六个模块,分别为键盘输入、显示模块、运行方向判断模块、位移寄存、楼层计数显示模块、开门延时、关门模块、主控模块、分频器模块。各个模块间有一定的联系,当各模块之间有一些变量发生变化时都会影响到其他模块,因此为了程序设计及仿真的方便,将所有模块都放在同一个always块中来实现。3.1 键盘输入、显示模块在该模块中又可分为内部请求、外部请求两个小模块。内部请求模块中可设置一个6位输入key6.0以及6位输出lamp6.0,key连接6

35、个按键,分别表示1到6楼楼层的信号请求,当核心开发板上电后就能提供6个按键的初始状态为高电平,按键低电平有效,如果有按键按下,将相应的lamp置1同时相应的LED亮,表示有到达该楼层的请求,当电梯运行到该请求楼层时相对应的LED熄灭以及对应的lamp置0,因此lamp也可以作为键盘请求寄存,在运行方向判断模块和主控模块中判断、控制,所以在该模块中我们可以用判断语句来实现。外部请求的设计思路和内部请求的一样,只不过在设计时要主意外部的向上请求只有五个分别是1到5楼,6楼已经是顶层了已经不能再上升了,外部的向下请求也是只有五个分别是2到6楼,因为1楼已经是最底层了不能在向下运行了。在整个模块中我们

36、可以使用判断语句来实现,如当有按键按下时的程序为if(req_up0) lamp_up0 = 1,然后将lamp_up0 = 1送到主控模块进行处理,当处理完这请求是系统将会把lamp_up0清零以便下次该层请求信号可以发出,使电梯有序的运行。3.2 运行方向判断模块根据当前楼层,当前电梯运行状态(上升或下降)和键盘的请求,判断电梯的运行状态。若电梯处于上升状态(up=1),再根据键盘的请求(lamp、lamp_up、lamp_down)判断当前楼层以上的楼层有没有请求,如果有请求,up=1,down=0,保持上升状态,否则up=0,down=1,进而判断当前楼层以下有没有请求,若当前楼层以下

37、有请求则down=1,up=0,否则up=1,down=1电梯停止在该楼层。这样设计保证了电梯按着这规则有序的运行,大大提高了电梯的工作效率。如果没有这个模块电梯将上升到最高楼才进入下降模式,下降到最底楼电梯才进入上升模式,这样的电梯控制系统显得很死板。3.3 位移寄存、楼层计数显示模块在这个模块中,定义一个6位的数组变量d,赋初始值为000001,根据运行方向判断模块传递过来的运行方向,对d进行移位操作,左移(上升)、右移(下降),数组的6位分别代表6个楼层,1所在的位置就表示当前所在的楼层,并将这一信息反馈给主控模块、运行方向判断模块进行比较、判断。同时设置4位变量fl来记录当前楼层,当进

38、行一次左移操作,fl=fl+1;当进行一次右移操作,fl=fl-1。然后把fl的值通过CD4511译码后在LED数码管上就可以显示对应的楼层。3.4 开门延时、关门模块在该模块中设置两个按键分别为开门延时按键(open)和关门按键(close),两个按键都是低电平有效,初始状态电平为高电平。在电梯门打开的情况下,如果这两个健都没有按下是电梯4s秒后会自动关门,开门延时按键按下时,系统将时间计数变量置count = 1,当时间计数变量count=4时系统将关门,同时将count置0,这就延长了开门时间;同理,在电梯门是打开的情况下,如果关门按键按下时,系统直接把计数变量count置0,将门关闭。

39、由其可知在该模块中是对这两个按键进行判断,因此我们可以使用判断语句(if.else)来实现该功能。这两个按键的功能在电梯运行中起到延长开门时间和提前关门的作用,不仅提高了电梯的效率,还为人们节省出行时间。3.5 主控模块电梯的主控制模块,在这个模块中,先对d和fl进行初始化,即d=000001,fl=1,表示电梯一开始处在1楼。定义3位变量count作为开门计数变量,再定义一位输出door作为开门信号。首先判断是否要开门,当count!=0时,count开始计数count=count+1,并且door=1开门,count计数4秒后(count=101),将count置0,且door=0关门。门

40、关闭后就根据键盘输入、显示模块传递过来的lamp、lamp_up、lamp_down和位移寄存、楼层计数显示模块传递过来的d进行比较,lamp、lamp_up、lamp_down和d都是6位数组变量,每一位代表的楼层一一对应,例如,当3楼外部有上升请求,既lamp_up2=1,当d3=1时,表示电梯到达了3楼,这时候主控模块就判断lamp_up2和d3,up是否都为1(lamp2=1 &d3=1&up=1),如果条件满足,count=1,这时候电梯就停下,自动开门4s后关闭,同时lamp_up2=0,表示到3楼的请求已经处理,相应的LED灭。在程序的编写中,主控模块和位移寄存、楼层计数模块用i

41、felse来连接,这样在判断、处理的时候就有有限顺序。总体思想是这样,首先对楼层初始化,判断是否要开门,如果不需要开门,就判断是否有请求的楼层,如果有楼层请求,电梯将运行,运行时进行方向判断和楼层计数,同时也判断是否有请求的楼层,如果到达,电梯停并且开门4s后自动关闭,再运行,如果没有到达,电梯继续运行,即进入位移寄存、楼层计数模块。在进入位移寄存、楼层计数模块之前,还加一个判断,判断其他楼层是否有请求,如果全部的楼层都没有请求,电梯就停在当前楼层,否则电梯继续运行。3.6 分频器模块整个系统用1s的脉冲信号作为控制信号,EP2C5T144C8-FPGA开发板提供的是50MHz的脉冲,所以需要

42、一个分频器,将50MHz脉冲分频成1Hz脉冲,即1s脉冲。在程序的always块中,用1s的脉冲上升沿作为敏感信号参数,即每个楼层之间运行的时间为1s。由于用1s脉冲控制整个系统,按键只有在脉冲上升沿的时候按下才有效,所以按键需要按下一段时间,直到相应的LED亮。4 系统调试调试分为软件调试和硬件调试,软件调试即在Quartus II软件开发环境中对程序进行仿真、调试。硬件调试即将程序下载EP2C5T144C8-FPGA开发板,在硬件上进行调试。4.1 软件调试4.1.1初始化调试在仿真界面中,设置时钟(40ns),键盘无按下(key=3F、req_up=3F、req_down=3F),然后进

43、行功能仿真,这个状态即电梯的初始状态,电梯应停在1楼,且门为关闭状态,各楼层都无请求,仿真结果如图5所以即lamp=0,lamp_up=0,lamp_dowm=0,door=0,fl一直显示为1。若调试没有得到预期结果,检查初始化模块部分的程序,将其改过来,程序仿真结果如图1-4所示。图1-4 初始化仿真结果图4.1.2按键调试在初始化调试的基础上,按下其中一个按键,如按下req_up2,即req_up2在一段clk上升沿处为0,键盘按下,则相应的lamp_up2就会置1。 4.1.3电梯运行调试当有键盘按下之后,相应的LED亮,即有请求,主控模块就会作出判断响应请求,并处理请求,电梯运行到请

44、求的楼层后停止,并开门5s后关门,同时表示该请求的LED灭。如果没有请求,电梯停在当前楼层。如按下key2,表示有请求到3楼,lamp2=1,电梯开始运行(fl计数),当fl计数到3,表示达到3楼,lamp2=0,door=1,4s后door=0。若调试没有得到预期结果,检查键盘输入显示模块,主控模块,位移寄存、楼层计数模块的程序,其程序仿真结果如图1-5所示。图1-5 电梯运行结果仿真图4.1.4运行方向、自动控制调试根据设计,电梯分为上升和下降两种运行状态,当处于上升状态,电梯只响应当前楼层以上的请求,并由下向上逐个响应,直到响应最后一个向上请求,响应完最后一个向上请求时电梯将进入下降模式

45、,若当前楼层以上无请求,电梯就停在当前楼层,若当前楼层以下有请求时,电梯就响应当前楼层以下的请求并又上往下逐个响应,直到最后个向下请求处理完毕,这时电梯将进入上升状态,若最后发出向下请求楼层以上没有请求的话,电梯将停在该楼层。有请求的话就进入上升模式响应楼层以上的请求。在调试中,电梯初始化状态停留在1楼而处于上升模式,当3楼有乘客要上到5楼即按下req_up3,电梯开始运行,这时二楼有乘客要下到一楼事,电梯将上升到3楼载客到5楼才下降到2楼接乘客到一楼。这点体现出电梯的自动化控制,而不像方案一那样电梯要运行到6楼才进入下降模式。程序仿真结果如图1-6所示。图1-6 运行方向、自动控制仿真结果4

46、.1.5开门延时、关门模块调试在调试该模块是要注意按键必须在clk上升沿处为0才有效,如果这两个健都没有按下是电梯4s秒后会自动关门,开门延时按键按下时,系统将时间计数变量置count = 1,当时间计数变量count=4时系统将关门,同时将count置0,这就延长了开门时间;同理,在电梯门是打开的情况下,如果关门按键按下时,系统直接把计数变量count置0,将门关闭。程序仿真结果如图1-7所示。图1-7开门延时、关门模块仿真结果图4.2 硬件调试硬件调试主要分为输入模块和输出模块检测。在输出模块调试中,我犯了个很大的错误,那就是认为EP2C8T144C8芯片也像51芯片那样上电后可用管脚都为高电平,这就导致了输入模块很不稳定。有时碰下板子时,所有按键都有效或者是按键按下时响应完后不能回到初始状态。发现这个问题后我用万用表一一测试EP2C8T144C8芯片的可用管脚,结果发现其可用管脚在芯片上电后的电压是1.2V,达不到我的预想值即每个按键的初始值为高电平,

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 办公文档 > 其他范文


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号