资源描述
武汉理工大学课程设计课程设计任务书学生姓名: 郑义 专业班级: 通信1103 指导教师: 陈适 工作单位: 信息学院 题 目: 频分复用 初始条件:Quartus II软件、PC机要求完成的主要任务: (包括课程设计工作量及其技术要求,以及说明书撰写等具体要求)设计任务:根据自动电梯工作原理,用quartus ii软件设计一个自动升降电梯控制器。该系统主要由四个模块构成:外部数据高速采集模块设计、信号存储模块、基于FPGA的中央处理模块和信号的输出、显示模块。设计要求:(1) 设计一个6层楼的电梯控制器;(2) 该控制器可控制电梯完成6层楼的载客服而且遵循方向优先原则,并能响应提前关门延时关门,并具有超载报警和故障报警;(3) 同时指示电梯运行情况和电梯内外请求信息。时间安排: 序号设 计 内 容所 用 时 间1根据课题的技术指标,确定整体方案,并进行参数设计计算2天2根据实验条件进行全部或部分程序的编写与调试,并完成基本功能7天3总结编写课程设计报告1天合 计2周指导教师签名: 2014年 6 月 18 日系主任(或责任教师)签名: 2014 年 6 月 18 日目录摘 要1ABSTRAC2第一章 绪论3第二章 EDA技术的介绍42.1 EDA技术的基本特征42.2 EDA技术的基本设计方法62.3 QuartusII软件介绍9第三章 总体方案设计103.1设计的目的103.2 设计要求103.3设计的基础依据113.3.1VHDL语言介绍113.3.2 VHDL的特点113.3.3 VHDL的设计步骤123.3.4 VHDL语言编程格式12第四章 电梯控制设计方案144.1 电梯控制器的总体设计方案144.2电梯运行控制流程图如下154.3 六层电梯控制器的设计思路16第五章 程序设计及调试175.1 程序流程分析175.2 程序设计说明185.2.1端口、寄存器设计说明185.2.2模块设计说明195.2.3具体语句设计说明205.3 程序调试及引脚锁定24第六章 程序仿真276.1建立波形输入276.2电梯功能的实现与仿真286.2.1 仿真步骤286.2.2 电梯功能实现与仿真结果分析30第七章 设计总结347.1 可行性分析347.2 芯片选型分析34参考文献36附录37摘 要 电梯作为垂直方向的交通工具,在高层建筑和公共场所已成为不可或缺的设备。中国是全球最大的电梯市场,也具有最强的电梯生产能力,但由于缺乏自主知识产权和核心技术,自主品牌占市场的份额很少。随着社会需求的变化,电梯朝着节能、环保及智能化方向发展。EDA技术打破了软件和硬件间的壁垒,是计算机的软件技术与硬件实现、设计效率与产品能合二为一,它代表了电子技术和应用技术的发展方向。VHDL主要用于描述数字系统的接口,结构和功能,它的语法简单易懂,移植性好。本设计采用VHDL,源程序Altera公司的Quartus II软件仿真。运用有限状态机的设计方法,设计了两个进程相互配合,状态机进程作为主要进程,信号灯控制进程作为辅助进程。在主进程中定义了7个状态,分别是“stopon1”“dooropen”“doorclose”“doorwait4”“up”“down”和“stop”,在电梯时钟的触发下,通过当前状态和信号灯信号判定下一状态。信号灯控制进程中,信号灯存储按键请求情况,它的熄灭是由状态机进程中传出的信号来控制。关键字:电梯控制器;VHDL;状态机;CPLDABSTRAC Elevator has become an indispensable device as a vertical transport in high-rise buildings and public places. China is the worlds largest elevator market ,and also has the highest lift capacity. But the lack of independent intellectual property rights and core technologies, the market share of own brands account for very little. With the changing of the communitys needs, elevator develop towards energy saving, environmental protection and intelligent.EDA breaks the barriers between hardware and software. Not only the computer software technology and hardware but also the design efficiency and product performance are combined. EDA represents the electronic design technology and application technologys development. VHDL digital system is mainly used to describe the interface, structure and function. Its syntax is easy and transplantable.This design which uses VHDL simulated by Alteras Quartus II software. I use method named finite state machine which two processes complement each other. The state machine process act as the main process, and the signal control process act as a assistant. Seven states were defined in the main process, namely “stopon1” “dooropen” “doorclose” “doorwait4” “up”“down” and “stop”. Triggered by the lifts clock, the next state is determined by the current state and the signal. In signal control process, registers keep input value, and lamps black out when the control process, registers keep input value, and lamps black out when the control signal in the main process is high value.Key words: Elevator Controller;VHDL State Machine;CPLD第一章 绪论 随着社会的发展,电梯的使用越来越普遍,已经从原来只在商业大厦,宾馆使用,过度到在办公楼,居民楼等场所使用,并且对电梯功能的要求也不断提高,相应地其控制方式也在不停地发生变化.对于电梯的控制,传统的方法是使用继电器接触器控制系统进行控制,随着技术的 不断发展,微型计算机在电梯控制上的 应用日益广泛,现在已进入全微化控制的时代。VHDL主要用于描述数字系统的结构,行为,功能和接口。除了含有许多具有硬件特征的语句外,VHDL的语言形式、描述风格以及语法是十分类似于一般的计算机高级语言。VHDL的程序结构特点是将一项工程设计,或称设计实体(可以是一个元件,一个电路模块或一个系统)分成外部(或称可视部分,及端口)和内部(或称不可视部分),既涉及实体的内部功能和算法完成部分。在对一个设计实体定义了外部界面后,一旦其内部开发完成后,其他的设计就可以直接调用这个实体。这种将设计实体分成内外部分的概念是VHDL系统设计的基本点。VHDL具有功能强大的语言结构,可以用简洁明确的源代码来描述复杂的逻辑控制。它具有多层次的设计描述功能,层层细化,最后可直接生成电路级描述。VHDL支持同步电路、异步电路和随机电路的设计,这是其他硬件描述语言所不能比拟的。VHDL还支持各种设计方法,既支持自底向上的设计,又支持自顶向下的设计;既支持模块化设计,又支持层次化设计。电梯的微机化控制主要有以下几种形式;1、PLC控制,2、单片机控制 ,3、单板机控制,4、单微机控制,5、多微机控制,6、人工智能控制。随着EDA技术的快速发展 ,VHDL已广泛应用于电子设计与控制的各个方面 本文采用VHDL语言来设计实用六层电梯控制器,其代码具有良好的可读性和易理解性,源程序经A1tera公司的 Quartus II软件仿真,目标器件选用CPLD器件。通过对六层电梯控制器的设计,可以发现本设计有一定的扩展性,而且可以作为更多层电梯控制器实现的基础。第二章 EDA技术的介绍 电子设计技术的核心就是EDA技术,EDA是指以计算机为工作平台,融合应用电子技术、计算机技术、智能化技术最新成果而研制成的电子CAD通用软件包,主要能辅助进行三方面的设计工作,即IC设计、电子电路设计和PCB设计。EDA技术已有30年的发展历程,大致可分为三个阶段。70年代为计算机辅助设计(CAD)阶段,人们开始用计算机辅助进行IC版图编辑、PCB布局布线,取代了手工操作。80年代为计算机辅助工程(CAE)阶段。与CAD相比,CAE除了有纯粹的图形绘制功能外,又增加了电路功能设计和结构设计,并且通过电气连接网络表将两者结合在一起,实现了工程设计。CAE的主要功能是:原理图输入,逻辑仿真,电路分析,自动布局布线,PCB后分析。90年代为电子系统设计自动化(EDA)阶段。2.1 EDA技术的基本特征EDA代表了当今电子设计技术的最新发展方向,它的基本特征是:设计人员按照“自顶向下”的设计方法,对整个系统进行方案设计和功能划分,系统的关键电路用一片或几片专用集成电路(ASIC)实现,然后采用硬件描述语言(HDL)完成系统行为级设计,最后通过综合器和适配器生成最终的目标器件,这样的设计方法被称为高层次的电子设计方法。下面介绍与EDA基本特征有关的几个概念。1“自顶向下”的设计方法10年前,电子设计的基本思路还是选用标准集成电路“自底向上”地构造出一个新的系统,这样的设计方法就如同一砖一瓦建造金字塔,不仅效率低、成本高而且容易出错。高层次设计是一种“自顶向下”的全新设计方法,这种设计方法首先从系统设计入手,在顶层进行功能方框图的划分和结构设计。在方框图一级进行仿真、纠错,并用硬件描述语言对高层次的系统行为进行描述,在系统一级进行验证。然后,用综合优化工具生成具体门电路的网络表,其对应的物理实现级可以是印刷电路板或专用集成电路。由于设计的主要仿真和调试过程是在高层次上完成的,这既有利于早期发现结构设计上的错误,避免设计工作的浪费,又减少了逻辑功能仿真的工作量,提高了设计的一次成功率。2ASIC设计现代电子产品的复杂度日益提高,一个电子系统可能由数万个中小规模集成电路构成,这就带来了体积大、功耗大、可靠性差的问题。解决这一问题的有效方法就是采用ASIC芯片进行设计。ASIC按照设计方法的不同可分为全定制ASIC、半定制ASIC和可编程ASIC(也称为可编程逻辑器件)。设计全定制ASIC芯片时,设计师要定义芯片上所有晶体管的几何图形和工艺规则,最后将设计结果交由IC厂家去进行掩模制造,做出产品。这种设计方法的优点是芯片可以获得最优的性能,即面积利用率高、速度快、功耗低,而缺点是开发周期长,费用高,只适合大批量产品开发。半定制ASIC芯片的版图设计方法分为门阵列设计法和标准单元设计法,这两种方法都是约束性的设计方法,其主要目的就是简化设计,以牺牲芯片性能为代价来缩短开发时间可编程逻辑芯片与上述掩模ASIC的不同之处在于:设计人员完成版图设计后,在实验室内就可以烧制出自己的芯片,无须IC厂家的参与,大大缩短了开发周期。可编程逻辑器件自70年代以来,经历了PAL、GAL、CPLD、FPGA几个发展阶段,其中CPLD/FPGA属高密度可编程逻辑器件,目前集成度已高达200万门/片,它将掩模ASIC集成度高的优点和可编程逻辑器件设计生产方便的特点结合在一起,特别适合于样品研制或小批量产品开发,使产品能以最快的速度上市,而当市场扩大时,它可以很容易地转由掩模ASIC实现,因此开发风险也大为降低。上述ASIC芯片,尤其是CPLD/FPGA器件,已成为现代高层次电子设计方法的实现载体。3.硬件描述语言硬件描述语言(HDL)是一种用于设计硬件电子系统的计算机语言,它用软件编程的方式来描述电子系统的逻辑功能、电路结构和连接形式,与传统的门级描述方式相比,它更适合大规模系统的设计。例如一个32位的加法器,利用图形输入软件需要输入500至1000个门,而利用VHDL语言只需要书写一行“A=BC”即可。而且VHDL语言可读性强,易于修改和发现错误。早期的硬件描述语言,如ABEL、HDL、AHDL,由不同的EDA厂商开发,互不兼容,而且不支持多层次设计,层次间翻译工作要由人工完成。为了克服以上不足,1985年美国国防部正式推出了高速集成电路硬件描述语言VHDL,1987年IEEE采纳VHDL为硬件描述语言标准(IEEESTD1076)。VHDL是一种全方位的硬件描述语言,包括系统行为级、寄存器传输级和逻辑门级多个设计层次,支持结构、数据流和行为三种描述形式的混合描述,因此VHDL几乎覆盖了以往各种硬件描述语言的功能,整个自顶向下或自底向上的电路设计过程都可以用VHDL来完成。VHDL还具有以下优点:(1)VHDL的宽范围描述能力使它成为高层次设计的核心,将设计人员的工作重心提高到了系统功能的实现与调试,而花较少的精力于物理实现。(2)VHDL可以用简洁明确的代码描述来进行复杂控制逻辑的设计,灵活且方便,而且也便于设计结果的交流、保存和重用。(3)VHDL的设计不依赖于特定的器件,方便了工艺的转换。(4)VHDL是一个标准语言,为众多的EDA厂商支持,因此移植性好。4EDA系统框架结构EDA系统框架结构(Framework)是一套配置和使用EDA软件包的规范。目前主要的EDA系统都建立了框架结构,如Cadence公司的DesignFramework,Mentor公司的FalconFramework,而且这些框架结构都遵守国际CFI组织制定的统一技术标准。框架结构能将来自不同EDA厂商的工具软件进行优化组合,集成在一个易于管理的统一的环境之下,而且还支持任务之间、设计师之间以及整个产品开发过程中的信息传输与共享,是并行工程和自顶向下设计方法的实现基础。2.2 EDA技术的基本设计方法1电路级设计电路级设计工作流程如图2.1所示。电子工程师接受系统设计任务 后,首先确定设计方案,并选择能实现该方案的合适元器件,然后根据具体的元器件设计电路原理图。接着进行第一次仿真,其中包括数字电路的逻辑模拟、故障分析,模拟电路的交直流分析、瞬态分析。在进行系统仿真时,必须要有元件模型库的支持,计算机上模拟的输入输出波形代替了实际电路调试中的信号源和示波器。这一次仿真主要是检验设计方案在功能方面的正确性。图2.1电路级设计工作流程仿真通过后,根据原理图产生的电气连接网络表进行PCB板的自动布局布线。在制作PCB板之前还可以进行PCB后分析,其中包括热分析、噪声及窜扰分析、电磁兼容分析、可靠性分析等,并可将分析后的结果参数反标回电路图,进行第二次仿真,也称为后仿真。后仿真主要是检验PCB板在实际工作环境中的可行性。由此可见,电路级的EDA技术使电子工程师在实际的电子系统产生前,就可以全面地了解系统的功能特性和物理特性,从而将开发风险消灭在设计阶段,缩短了开发时间,降低了开发成本。2系统级设计进入90年代以来,电子信息类产品的开发明显呈现两个特点:一是产品复杂程度提高;二是产品上市时限紧迫。然而,电路级设计本质上是基于门级描述的单层次设计,设计的所有工作(包括设计输入、仿真和分析、设计修改等)都是在基本逻辑门这一层次上进行的,显然这种设计方法不能适应新的形势,一种高层次的电子设计方法,也即系统级设计方法,应运而生。高层次设计是一种“概念驱动式”设计,设计人员无须通过门级原理图描述电路,而是针对设计目标进行功能描述。由于摆脱了电路细节的束缚,设计人员可以把精力集中于创造性的方案与概念的构思上,一旦这些概念构思以高层次描述的形式输入计算机,EDA系统就能以规则驱动的方式自动完成整个设计。这样,新的概念就能迅速有效地成为产品,大大缩短了产品的研制周期。不仅如此,高层次设计只是定义系统的行为特性,可以不涉及实现工艺,因此还可以在厂家综合库的支持下,利用综合优化工具将高层次描述转换成针对某种工艺优化的网络表,使工艺转化变得轻而易举。系统级设计的工作流程图2.2。首先,工程师按照“自顶向下”的设计方法进行系统划分。其次,输入VHDL代码,这是高层次设计中最为普遍的输入方式。此外,还可以采用图形输入方式(框图,状态图等),这种输入方式具有直观、容易理解的优点。第三步是,将以上的设计输入编译成标准的VHDL文件。第四步是进行代码级的功能仿真,主要是检验系统功能设计的正确性。这一步骤适用大型设计,因为对于大型设计来说,在综合前对源代码仿真,就可以大大减少设计重复的次数和时间。一般情况下,这一仿真步骤可略去。第五步是,利用综合器对VHDL源代码进行综合优化处理,生成门级描述的网络表文件,这是将高层次描述转化为硬件电路的关键步骤。综合优化是针对ASIC芯片供应商的某一产品系列进行的,所以综合的过程要在相应的厂家综合库支持下才能完成。第六步是,利用产生的网络表文件进行适配前的时序仿真,仿真过程不涉及具体器件的硬件特性,是较为粗略的。一般的设计,也可略去这一仿真步骤。第七步是利用适配器将综合后的网络表文件针对某一具体的目标器件进行逻辑映射操作,包括底层器件配置、逻辑分割、逻辑优化、布局布线。第八步是在适配完成后,产生多项设计结果:(1)适配报告,包括芯片内部资源利用情况,设计的布尔方程描述情况等;(2)适配后的仿真模型;(3)器件编程文件。根据适配后的仿真模型,可以进行适配后的时序仿真,因为已经得到器件的实际硬件特性(如时延特性),所以仿真结果能比较精确地预期未来芯片的实际性能。如果仿真结果达不到设计要求,就需要修改VHDL源代码或选择不同速度和品质的器件,直至满足设计要求;最后一步是将适配器产生的器件编程文件通过编程器或下载电缆载入到目标芯片FPGA或CPLD中。如果是大批量产品开发,则通过更换相应的厂家综合库,轻易地转由ASIC形式实现。图2.2系统级设计的工作流程综上所述,EDA技术是电子设计领域的一场革命,目前正处于高速发展阶段,每年都有新的EDA工具问世。广大电子工程人员掌握这一先进技术,这不仅是提高设计效率的需要,更是我国电子工业在世界市场上生存、竞争与发展的需要,正因EDA在设计控制系统中的这些特点,在电梯控制电路上采用EDA技术进行开发,越来越受到人们的重视。2.3 QuartusII软件介绍 Altera公司的QuartusII软件提供了可编程片上系统(SOPC)设计的一个综合开发环境。Quartus II 开发工具人机界面友好、易于使用、性能优良,并自带编译、仿真功能。QuartusII软件支持VHDL和Verilog硬件描述语言的设计输入、基于图形的设计输入方式以及集成系统级设计工具。QuartusII软件可以将设计、综合、布局和布线以及系统的验证全部都整合到一个无缝的环境之中,其中也包括和第三方EDA工具的接口。QuartusII设计软件根据设计者需要提供了一个完整的多平台开发环境,它包含整个FPGA和CPLD设计阶段的解决方案。在实际应用设计中,对程序原理性及可执行性的验证主要集中在程序修改阶段,尤其在处理的数据复杂、繁多时,Quartus II自带的波形输入仿真就很难实现程序的验证,而且输出的数据不能方便的以波形图示直观的呈现,给程序设计者在校验程序阶段带来了很多的不便。再有,在很多数字电路设计中,考虑成本的问题,FPGA实现的往往是设计的核心部分,而很多的外围电路如A/D转换器、D/A转换器等仍然使用传统的接口芯片来实现。而QuartusII 设计只是针对数字信号,并不支持模拟量的输入。而仅仅为了便于程序的验证而用FPGA实现这些外围电路,会大大延长程序的开发周期,更会增大开发的成本。而MATLAB具有强大的运算功能,可以容易的实现A/D、D/A转换等外围电路功能,并能以波形形式将结果直观地呈现,极大地方便了程序设计人员设计应用系统。第三章 总体方案设计3.1设计的目的针对我国楼层层数的基本水平,本着“一理通,百理明”的原则,本设计希望通过简单的六层电梯控制器的设计,为广大电梯设计者提供一个基础。针对目前中小型电梯所能实现的功能,本控制器虚拟实现以下功能:指示电梯所在楼层电梯基本运行关门延时设置提前关门设置超载报警故障报警3.2 设计要求六层电梯控制器将实现的功能:(1)每层电梯入口处设有上下请求开关,电梯内设有顾客到达层次的停站请求开关。(2)设有电梯入口处位置指示装置及电梯运行模式(上升或下降)指示装置。(3)电梯每秒升(降)一层楼。(4)电梯到达有停站请求的楼层,经过1秒电梯门打开,开门指示灯亮,开门4秒后,电梯门关闭(开门指示灯灭),电梯继续进行,直至执行完最后一个请求信号后停留在当前层。(5)能记忆电梯内外所有请求,并按照电梯运行规则按顺序响应,每个请求信号保留至执行后消除。(6)电梯运行规则:当电梯处于上升模式时,只响应比电梯所在位置高的上楼请求信号,由下而上逐个执行,直到最后一个上楼请求执行完毕;如果高层有下楼请求,则直接升到由下楼请求的最高层,然后进入下降模式。当电梯处于下降模式时则与上升模式相反。(7)电梯初始状态为一层开门状态。3.3设计的基础依据现代电子设计技术的核心是EDA技术。基于EDA技术开发的实现六层电梯自动控制与目前主流的利用可编程逻辑控制器实现电梯控制紧密相连。硬件描述语言是EDA技术的重要组成部分,VHDL是作为电子设计主流硬件的描述语言。使用VHDL语言进行程序设计,在QuartusII软件上对程序进行编译、仿真。在MAX2win平台上开发具有易学易懂、控制灵活方便、抗干扰能力强、运行稳定可靠等优点。3.3.1VHDL语言介绍VHDL(Very High Speed Integrated Circuit Hardware Description Language)语言于1983年由美国国防部发起创建,由电工和电子工程师协会(the institute of electrical and electronics engineer)进一步发展并在1987年作为“IEEE1076”发布。从此,VHDL成为硬件描述语言的业界标准之一。VHDL作为一个规范语言和建模语言,具有很强的电路描述和建模能力,能从多个层次对数字系统进行建模和描述,从而大大简化了硬件设计任务,提高了设计效率和可靠性。VHDL具有与具体硬件电路无关和设计平台无关的特性,并且具有良好的电路行为描述和系统描述的能力,并在语言易读性和层次化结构化设计方面,表现了强大的生命力和应用潜力。3.3.2 VHDL的特点 应用VHDL进行系统设计,有以下几方面的特点:功能强大:VHDL具有功能强大的语言结构。它可以用明确的代码描述复杂的控制逻辑设计。并且具有多层次的设计描述功能,支持设计库和可重复使用的元件生成。VHDL是一种设计、仿真和综合的标准硬件描述语言。可移植性:VHDL语言是一个标准语言,其设计描述可以为不同的EDA工具支持。它可以从一个仿真工具移植到另一个仿真工具,从一个综合工具移植到另一个综合工具,从一个工作平台移植到另一个工作平台。此外,通过更换库再重新综合很容易移植为ASIC设计。独立性:VHDL的硬件描述与具体的工艺技术和硬件结构无关。设计者可以不懂硬件的结构,也不必管最终设计实现的目标器件是什么,而进行独立的设计。程序设计的硬件目标器件有广阔的选择范围,可以是各系列的CPLD、FPGA及各种门阵列器件。可操作性:由于VHDL具有类属描述语句和子程序调用等功能,对于已完成的设计,在不改变源程序的条件下,只需改变端口类属参量或函数,就能轻易地改变设计的规模和结构。灵活性:VHDL最初是作为一种仿真标准格式出现的,有着丰富的仿真语句和库函数。使其在任何大系统的设计中,随时可对设计进行仿真模拟。所以,即使在远离门级的高层次(即使设计尚未完成时),设计者就能够对整个工程设计的结构和功能的可行性进行查验,并做出决策。3.3.3 VHDL的设计步骤采用VHDL的系统设计,一般有以下6个步骤。(1)要求的功能模块划分;(2)VHDL的设计描述(设计输入);(3)代码仿真模拟(前仿真);(4)计综合、优化和布局布线;(5)布局布线后的仿真模拟(后仿真);(6)设计的实现(下载到目标器件)。3.3.4 VHDL语言编程格式 (1)一个完整的VHDL程序是以下五部分组成的: 库(LIBRARY):储存预先已经写好的程序和数据的集合。 程序包(PACKAGE):声明在设计中将用到的常数、数据类型、元件及子程序。 实体(ENTITY):声明到其他实体或其他设计的接口,即定义本定义的输入输出端口。 构造体(ARCHITECTUR):定义实体的实现。 电路的具体描述配置(CONFIGURATION):一个实体可以有多个构造体,可以通过配置来为实体选择其中一个构造体。(2)实体实体(ENTITY)是VHDL设计中最其本的组成部分之一(另一个是结构体),VHDL表达的所有设计均与实体有关。实体类似于原理图中的一个部件符号,它并不描述设计的具体功能,只是定义所需的全部输入/输出信号。实体格式如下:ENTITY实体名ISGENERIC(常数名:数据类型:设定值)类属说明PORT端口说明(端口信号名1;模式 类型;端口信号名2:模式 类型;端口信号名3:模式类型;端口信号名4:模式类型语句或常量定义申明实体语句END实体名;(3)结构体所有能被仿真的实体都由结构体(ARCHITECTURE)描述,即结构体描述实体的结构或行为,一个实体可以有多个结构体,每个结构体分别代表该实体功能的不同实现方案。结构体格式:ARCHITECTURE结构体名OF实体名IS定义语句(元件例化);BEGIN并行处理语句;END结构体名; 第四章 电梯控制设计方案4.1 电梯控制器的总体设计方案控制器的功能模块如图4.1所示,包括主控制器、楼层选择器、状态显示器、译码器和楼层显示器。乘客在电梯中选择所要到达的楼层,通过主控制器的处理,电梯开始运行,状态显示器显示电梯的运行状态,电梯所在楼层数通过译码器译码从而在楼层显示器中显示。由于其他模块相对简单很多,所以主控制器是核心部分。 图4.1电梯控制流程图4.2电梯运行控制流程图如下电梯运行控制流程图如下图4.2电梯运行控制流程图4.3 六层电梯控制器的设计思路电梯控制器运用状态机的设计方法,思路比较清晰。可以将电梯等待的每秒钟以及开门、关门都看成一个独立的状态2。由于电梯又是每秒上升或下降一层,所以就可以通过一个统一的1秒为周期的时钟来触发状态机。根据电梯的实际工作情况,可以把状态机设置7个状态,分别是“电梯停留在第1层”、“开门”、“关门”、 “开门等待4秒”、“上升”、“下降”和“停止状态”。各个状态之间的转换条件可由上面的设计要求所决定。各状态机之间转换图如图4.3:图4.3 状态机转换图第5章 程序设计及调试5.1 程序流程分析电梯的运行规则确立后,需对整个控制程序的设计作一个流程规范。对程序进行模块化构思。根据VHDL语言的规则,程序必须由最基本的实体和结构体构成。实体对控制器的端口进行定义,结构体对各端口的行为进行描述。因此程序运行需经过以下流程:VHDL库调用;确立控制器的端口及相关的寄存器;根据电梯运行规则,设计相关运行描述;对电梯内外信号进行处理。具体流程图如图5.1所示。图5.1流程图5.2 程序设计说明5.2.1端口、寄存器设计说明(1)由功能要求得到本程序设计的端口必须包括:输入端口:时钟(clk,频率为2Hz)、超载(full)、关门中断(deng)、提前关门(quick)、清除报警(clr)、电梯外人的上升请求信号(c_u1,c_u2,c_u3, ,c_u4,c_u5)、电梯外人的下降请求信号(c_d2,c_d3,c_d4,c_d5,c_d6)、电梯内人的请求信号(d1,d2,d3,d4,d5,d6)、到达楼层信号(g1,g2,g3,g4,g5,g6)。输出端口:电梯门控制信号(door)、电梯所在楼层显示(led)电梯外人上升请求信号显示(led_c_u)、电梯外人下降请求信号显示(led_c_d)、电梯内请求信号显示(led_d)、看门狗报警信号(wahaha)、电梯运动方向显示(ud)、超载警告信号(alarm)、电机控制信号(up,down)。其分布如图所示。图5.2 电梯端口分布图(2)程序要求的寄存器(中间信号)包括:电梯内人请求信号寄存信号(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)。5.2.2模块设计说明本程序由三个基本模块组成,包括调用VHDL库模块、实体设计模块和结构体设计模块。而在结构体模块中又内嵌有进程执行单元。调用VHDL库使用library语句,本程序应用了VHDL库中的“通用ieee库”和“标准std库” 。library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;use ieee.std_logic_arith.all;entity实体设计模块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 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 downto 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;(3)archi结构体设计模块和process进程执行单元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;-电梯外人上升请求信号寄存信号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:std_logic;-电梯运动方向信号寄存器signal en_up,en_dw:std_logic;-预备上升、预备下降预操作使能信号beginprocess(clk)begin。(进程语句具体看附录)end behav;5.2.3具体语句设计说明上文已说明了构成VHDL程序的两大部分实体和结构体的相关语句。在这些语句里,赋值语句占了相当一部分。在VHDL语言里,赋值符号一般都是“=”符号,具体形式如下: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 door=10; else door=00; end if;。VHDL语言也具有与一般编程语言相同的一些语句逻辑结构,如上述中的“ifthenelsifthen;”等。这是VHDL中的顺序语句,与我们常见的C语言中的if作为条件语句不同。在结构体中对电梯的运行行为作出描述,其中电梯处于二楼五楼情况复杂些,以下给出二楼情况的具体说明。elsif g2=1 then led=0010010; -电梯到达2楼,数码管显示2if updown=1 then -电梯前一运动状态位上升 if d22=1 or c_u22=1 thend22=0; c_u22=0; opendoor00000011 then en_up=1;en_dw=0; opendoor=0; -有上升请求,则电梯进入预备上升状态 elsif dd_cc00000010 then en_dw=1;en_up=0; opendoor=0;-有下降请求,则电梯进入预备下降状态 end if; -电梯前一运动状态为下降 elsif d22=1 or c_d22=1 thend22=0; c_d22=0;opendoor=1; -有当前层的请求,则电梯进入开门状态elsif dd_cc00000010 then en_dw=1;en_up=0; opendoor00000011 thenen_up=1;en_dw=0; opendoor=0; -有上升请求,则电梯进入预备上升状态 end if;在上述语句中的“elsif g2=1then led=“0010010;”,led的赋值之所以为“0010010”是根据共阳极七段数字显示器的发光段排列的。 可发光段a、b、c、e、g形成一个2字。以此类推,在一楼时led赋值为“100111”,三楼时为“0000110”,四楼时为在进程执行单元里,对电梯在楼层时的操作情况作出了描述,例如:开门、关门延时、超载报警、故障报警以及电梯内的请求信号处理,具体说明给出如下: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 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;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;。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; -对电梯外人上升请求信号进行检测和寄存 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&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; 5.3 程序调试及引脚锁定(1)建立好工作目录,以便设计工程项目的存储,打开QuartusII软件,(2)在工具栏中选择“新建”按钮。选择“Text Editor file”,如图5.3所示。图5.3(3) 在文本输入界面内进行程序输入,5.4所示图5.4(4)输入完毕后,需要对程序进行保存。注意文件名和实体定义名必须保持一致,即dianti,文件后缀名为vhd。(5)保存以后,对程序进行编译。在编译前,需要把文件设置为顶层文件或工程文件 Project。选择菜单“Project”中的“Set as Top-Level Entity”。(6)在“QuartusII”里选择“Processing”下拉菜单中的“Start Compilation”, 此时,QuartusII软件会对程序进行纠错等处理。 (7)然后开始锁引脚,参考附录二图2,引脚锁定如图5.5。图5.5到此程序调式及引脚锁定完成。第六章 程序仿真6.1建立波形输入 (1) 编译完成后,新建波形编辑器进行设计仿真。选择菜单“File” 中的“New”项,在New窗口中选择“Vector Waveform File”,单击OK按钮,即出现空白的波形编译器如图6.1所示。(2)设置仿真时间区域,在“Edit”菜单中选择“End Time”项,在弹出窗口中设置,设置完后对文件进行保存。同样使用文件名dianti,后缀名则改为vwf。(3)将工程dianti的端口信号名选入波形编辑器中。方法是在编辑器左边Name下的空白处右击选择“Insert Node Or Bus”项,弹出对话框,在Node Filter框中选“Pins:all”,单击List按钮,下方的Nodes Found 窗口中出现设计工程的所有端口引脚名。(4) 创立输入波形。对程序进行仿真,观察输出信号,得出结论。如对时钟信赋于周期如下图7.1所示。设置好的输入波形如图6.2所示。图6.1设置时钟clk的周期图6.2设计好的输入波形6.2电梯功能的实现与仿真6.2.1 仿真步骤 (1)仿真器参数设置。选择菜单“Assignment”中的“Settings”,在“Settings” 窗口下选择“Category”下的“Simulator”,右侧设置如下图6.3所示 图6.3选择仿真控制 (2) 启动仿真器。现在所有设置进行完毕,在菜单Processing项下选择Start Simulation,直到出现Simulation was successful,仿真结束。仿真结果如下图6.4和图6.5。图6.4电梯控制程序仿真图图6.5电梯控制程序仿真局部放大图16.2.2 电梯功能实现与仿真结果分析以下将以“电梯停在
展开阅读全文