欢迎来到三一办公! | 帮助中心 三一办公31ppt.com(应用文档模板下载平台)
三一办公
全部分类
  • 办公文档>
  • PPT模板>
  • 建筑/施工/环境>
  • 毕业设计>
  • 工程图纸>
  • 教育教学>
  • 素材源码>
  • 生活休闲>
  • 临时分类>
  • ImageVerifierCode 换一换
    首页 三一办公 > 资源分类 > DOC文档下载  

    基于Verilog HDL的电梯控制设计.doc

    • 资源ID:4144962       资源大小:821KB        全文页数:28页
    • 资源格式: DOC        下载积分:8金币
    快捷下载 游客一键下载
    会员登录下载
    三方登录下载: 微信开放平台登录 QQ登录  
    下载资源需要8金币
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    基于Verilog HDL的电梯控制设计.doc

       南京XX大学XX学院 毕 业 论 文 题 目基于Verilog HDL的电梯控制设计  2011 年 4 月基于Verilog HDL的电梯控制设计摘  要 Verilog HDL就是在用途最广泛的C语言的基础上发展起来的一种硬件描述语言,Verilog HDL用于从算法级、门级到开关级的多种抽象设计层次的数字系统建模。Verilog HDL 语言不仅定义了语法,而且对每个语法结构都定义了清晰的模拟、仿真语义,从C 编程语言中继承了多种操作符和结构。 在学习Verilog HDL过程中,我也只是掌握了一些基本的知识。但当我首先我拿到毕业课题时,我就准备用的是有限状态机来写这段程序,一开始时我准备把电梯的六个楼层作为状态的转换,但是我发现这个不太容易实现,因为即使状态转换好了,我发现我还需要开门,关门,还有停靠,这样以六个楼层为状态的书写不是很方便。后来我换了一个思路,我把电梯在整个运行中分为五个状态.,分别是等待状态,下降状态,上升状态,开门状态,关门状态。关于电梯的按钮选择,我用了五个按钮来表是一楼到五楼的电梯外部的上键,也用了五个按钮来表示二楼到六楼的电梯外部的下键,我使用了六个按钮来表示电梯内部一楼到六楼的选择。当一切准备好了时,我准备用三段式有限状态机来描述整个程序。在写程序过程中,我又增加了,控制开门的计算器和楼层的显示以及电梯的上下标志。但在写程序的过程中,我又遇到新的问题,我发现由于我用了十六个按钮,在程序反复用到这些按钮,降低了程序的可阅读性,使程序看起来十分的复杂,所以我借鉴了参考书中关于信号并置的算法。把所有的上楼的信号并置在一起,把所有的下楼的信号并置在一起,也把所有的请求信号也并置在一起。使的程序在书写过程中简单,提高了可阅读性。在解决了一切的问题之后我的书写也顺利的进行,写完了也能在仿真软件Quartus II仿真出电梯的基本运行。相对于现实中的电梯还是缺少很多功能的,比如提前关门,重复开门等等。关键词:Verilog HDL Quartus II 电梯的自动控制 状态转换Based on the design of Verilog HDLAbstractVerilog HDL is in use is the most extensive C language developed on the basis of a hardware description language, Verilog HDL used for from algorithm level, door level to switch the design level of abstraction level of digital system modeling. Verilog HDL language not only defines the grammar, but also for every grammatical structure defines clear modeling, simulation semantics, from C programming language inherited various operators and structure. In the study Verilog HDL process, I also just learned some basic knowledge. But when I first when I get my graduation topic, I am going to use is finite state machine to write this program segment, started I plan to take the elevator six floors as state conversion, but I found this not too easy to implement, because even if the state transition ok, I found that I still need to open the door, close the door, and with six floors dock, such as state of writing is not very convenient. Later I changed a mentality, I put the elevator in the whole operation of divided into five state., respectively is wait states, descend state, increasing, open, the state. About elevator button options, I spent five button to watch is the first floor to the fifth floor of the elevator external on the bond.Keywords: Verilog HDL  Quartus II Elevator control State transition目  录摘  要IAbstractII第一章 引言11.1 课题意义11.2 开发工具的选择1第二章 所用开发工具简介32.1 Verilog HDL简介32.2 Quartus II简介32.3 Verilog HDL语言在Quartus II中的应用4第三章 系统总体设计63.1 电梯的需求分析63.2 电梯的设计概要63.2.1 电梯的管脚63.2.2 电梯的状态转换7第四章 系统应用程序设计94.1 程序各个模块详解94.1.1 有限状态表机的三段式94.1.2 信号的并置144.1.3 开门状态的实现144.2 程序仿真的实现144.3 程序在硬件的实现16结束语20参考文献21致   谢22第一章 引言1.1 课题意义随着经济的快速发展,城市建设的不断深入,高层建筑如雨后春笋拔地而起。现在的楼房越来越高,与此相应,作为一种可以垂直升降运输的工具电梯也得到迅猛的发展。电梯在人们生活中有着广泛的应用。它拓展了人们的生存空间,为高层建筑事业的发展做出了不可磨灭的贡献。现在,电梯已经完全融入我们的生活、工作及学习中,人们越来越离不开它。为了让电梯更好的服务人们,各种电梯新技术不断地发展起来。电梯关乎着人们的生命,它的安全可靠性、迅速准确性、舒适性,对人们来说都是非常重要的。为了确保电梯正常运行、安全使用,一般电梯都有专业的维修管理人员。目前,我国已经成为世界最大的新装电梯市场和最大的电梯生产国。并且还有着巨大市场和发展潜力空间。2002年,中国电梯行业电梯年产量首次突破6万台。今后几年,我国将年建住宅3.5亿平方米,公建项目1.2亿平方米。随着城市向大型化、高层化的发展,我国每年将需要电梯在40000台以上。如此大的市场需求,将是电梯业再创辉煌的最好契机。电梯控制系统是一个相当复杂的逻辑控制系统。系统要同时对几百个信号进行接收、处理。由于用户对电梯功能的要求不断提高其相应控制方式也在不断发生变化。随着EDA技术的快速发展。基于FPGA的微机化控制已广泛应用于电梯电路设计与控制的各个方面。电梯控制是属于机电一体化研究领域,它涉及到多个方面,包括:机械工程、电子技术、电力电子技术、电机与拖动理论、自动控制理论、电力拖动自动控制系统、微机技术和土建工程等多个科学领域。1.2 开发工具的选择Verilog HDL语言不仅定义了语法,而且对每个语法结构都定义了清晰的模拟、仿真语义。因此,用这种语言编写的模型能够使用Verilog仿真器进行验证。语言从C 编程语言中继承了多种操作符和结构。Verilog HDL 提供了扩展的建模能力,其中许多扩展最初很难理解。但是,Verilog HDL 语言的核心子集非常易于学习和使用,这对大多数建模应用来说已经足够。当然,完整的硬件描述语言足以对从最复杂的芯片到完整的电子系统进行描述。对于硬件设计,它具有许多有点:(1)Verilog HDL是一种通用的硬件描述语言,易学易用。由于它的语法与C语言类似,因此对于具有C语言编程经验的设计者来说,很容易学习和掌握。(2)Verilog HDL允许在同一个电路模型内进行不同抽象层次的描述。(3)绝大数流行的综合工具都支持Verilog HDL,这是Verilog HDL成为设计者的首选语言的重要原因之一(4)所有的制造厂商都提供用于Verilog HDL综合之后的逻辑仿真的元件库,因此使用Verilog HDL进行设计,即可在更广泛的范围内选择委托制造的厂商。(5)编程语言接口是Verilog 语言最重要的特性之一,它使得设计者通过自己编写的C代码来访问Verilog 内部的数据结构。 Quartus II具有完全集成且与电路结构无关的开发包环境,功能的逻辑综合工具,完备的电路仿真与时序逻辑仿真的工具,能进行的时序分析与关键路径延时分析。其内部嵌有Verilog HDL、AHDL和VHDL等逻辑综合器,另外还具有编译器和下载功能,并可利用第三方仿真工具Modelsim进行仿真,利用综合工具Synplify进行综合,来完成数字电路系统设计。其内部还有嵌入式的SignalTap II逻辑分析工具,可用来进行系统的逻辑测试和分析。另外,它还支持软件源文件的添加和创建,能自动定位编译错误,带有高效的编程与验证工具,可读入标准的EDIF网表文件,VHDL网表文件和Verilog网表文件,能生成可供第三方EDA软件使用的VHDL网表文件和Verilog网表文件。 第二章 所用开发工具简介2.1 Verilog HDL简介我选择了用Verilog HDL语言来写电梯的自动控制。Verilog HDL是一种硬件描述语言(HDL:Hardware Discription Language),是一种以文本形式来描述数字系统硬件的结果和行为的语言。Verilog HDL就是在用途最广泛的C语言的基础上发展起来的一种描述语言。Verilog HDL的最大特点就是易学易用。Verilog HDL既是一种行为描述语言,也是一种结构描述语言。如果按照一定的规则和风格编写代码,就可以将功能行为模块通过工具自动转化为门级互连的结构模块。这意味着利用Verilog语言所提供的功能,就可以构造一个模块间的清晰结构来描述语言在电子设计自动化中扮演重要的角色。 下面列出的是Verilog语言的主要功能: (1)可描述顺序执行或并行执行的程序结构 (2)用延迟表示式或事件表达式来明确地控制过程的启动时间 (3)通过命名的事件来触发其他过程里的激活行为或停止行为 (4)提供了条件和循环等程序结构 (5)提供了可带参数且非零延续时间的任务程序结构 (6)提供了可定义新的操作符的函数结构 (7)提供了用于建立表达式的算术运算符、逻辑运算符和位运算符 (8)提供了一套完整的表示组合逻辑基本元件的原语 (9)提供了双向通路和电阻器件的描述 (10)可建立MOS器件的电荷分享和衰减模型 (11)可以通过构造性语句精确地建立信号模型2.2 Quartus II简介 这次我用了 Quartus II 作为仿真软件。Quartus II 是Altera公司的综合性PLD开发软件,支持原理图、VHDL、VerilogHDL以及AHDL(Altera Hardware Description Language)等多种设计输入形式,内嵌自有的综合器以及仿真器,可以完成从设计输入到硬件配置的完整PLD设计流程。Quartus II可以在XP、Linux以及Unix上使用,除了可以使用Tcl脚本完成设计流程外,提供了完善的用户图形界面设计方式。具有运行速度快,界面统一,功能集中,易学易用等特点。Quartus II支持Altera的IP核,包含了LPM/MegaFunction宏功能模块库,使用户可以充分利用成熟的模块,简化了设计的复杂性、加快了设计速度。对第三方EDA工具的良好支持也使用户可以在设计流程的各个阶段使用熟悉的第三方EDA工具。Quartus II 通过和DSP Builder工具Matlab/Simulink相结合,可以方便地实现各种DSP应用系统;支持Altera的片上可编程系统(SOPC)开发,集系统级设计、嵌入式软件开发、可编程逻辑设计于一体,是一种综合性的开发平台。Maxplus II 作为Altera的上一代PLD设计软件,由于其出色的易用性而得到了广泛的应用。目前Altera已经停止了对Maxplus II 的更新支持,Quartus II 与之相比不仅仅是支持器件类型的丰富和图形界面的改变。Altera 在Quartus II 中包含了许多诸如SignalTap II、Chip Editor和RTL Viewer的设计辅助工具,集成了SOPC和HardCopy设计流程,并且继承了Maxplus II 友好的图形界面及简便的使用方法。Altera Quartus II 作为一种可编程逻辑的设计环境, 由于其强大的设计能力和直观易用的接口,越来越受到数字系统设计者的欢迎。2.3 Verilog HDL语言在Quartus II中的应用Verilog HDL在Quartus II的应用流程如图2-1 综合 功能仿真原理图/文本编辑 编程下载 时序仿真 适配 器件图2-1 应用流程图Quartus II的设计输入主要包括:原理图设计输入,文本输入,层次化设计输入。 图2-2 Quartus II的主窗口界面 图2-3编写源代码第三章 系统总体设计3.1 电梯的需求分析 平时我们坐电梯,对它的基本工作原理我们有知道多少了,我这次设计的电梯控制应该可以实现接受各楼层的上下请求信号及电梯内部的停靠请求,然后根据这些请求实现对电梯正确的控制: (1)除了顶层和底层外,各楼层均设有上下请求开关,顶层和底层分别设有下降和上升请求开关,这一点应该不难理解,电梯内设有乘客到达层次的请求开关。 (2)电梯可以接受各楼层的上下请求,电梯到达有停站请求的楼层后,电梯门打开,开门五个周期后电梯关门,电梯继续运行,直至运行完最后一个请求后停靠在当前层。以上是我们所应实现的基本功能。电梯正常运行的五个状态:上升、下降、开门、关门、等待状态。电梯在上述五个状态间的转移是通过三段式状态机来实现的,各状态间的转移大体与生活中的电梯运转一致 电梯在运行时基本原则: (1)方向为第一优先准则,这就是老师给我们的技术指标。电梯在运转时先响应同方向上的请求,只有当同方向上的请求响应完后,才能转而响应不同方向上的请求。 (2)初始化状态为1楼等待门是关闭的。这个就不用多解释了。除了我对电梯的运行规律做出如上的分析外,我的另一个选择开发智能电梯控制器的原因是我想锻炼一下自己的逻辑思维和分析复杂问题的能力。3.2 电梯的设计概要3.2.1 电梯的管脚 图3-1是电梯自动控制的元器件模块符号。 图中左边的是电梯中输入输出的管脚。其中:clk时钟信号;reset清零信号,高电平清零,led用于楼层的静态数码管的显示,ud_f电梯的上下标志,count用于开门状态是的计数器;up1,up2,up3,up4,up5电梯外部的除六楼以外的其他楼层的上请求按钮;dn2,dn3,dn4,dn5,dn6电梯外部的除一楼以外的其他楼层的下请求按钮;d1,d2,d3,d4,d5,d6电梯内部的一楼到楼的请求按钮。图中右边的图是,程序应用中设置的一些变量和一些状态的参量。其中:up_f=2'b01,dn_f=2'b10,idle=2'b00,设置上下标志的参数 idle_state=3'b001, up_state=3'b010,down_state=3'b011,open_state=7'b100,close_state=7'b10设置电梯的各种运行状态的参 f1=6'b000001,f2=6'b000010;f3=6'b000100;f4=6'b001000,f5=6'b010000, f6=6'b100000,设置各个楼层的参数。 图 3-1 元器件模块符号图3.2.2 电梯的状态转换 电梯的状态有idle_state,open_state,close_state,up_state,down_state具体的状态转换如下:(1)当reset是高电平是,清零。电梯的初始状态为idle_state。当当前楼层有人请求上下是,电梯有idle_state转换为open_sate。当有比当前楼层高的楼层有请求时,电梯有idle_state转换为up_state。当有比当前楼层低的楼层有请求时,电梯有idle_state转换为down_state。当内部有请求时即d不等于0,当等于当前楼层,电梯有idle_state转换为open_sate,当大于当前楼层,电梯有idle_state转换为up_state,当小于当前楼层,电梯有idle_state转换为down_state。(2)当电梯处于up_state,当请求楼层等于当前楼层或者外部上请求等于当前楼层,电梯有up_state转换为open_state。当请求楼层大于当前楼层或者外部上请求大于当前楼层,电梯有up_state转换up_state。当请求楼层小于当前楼层或者外部上请求小于当前楼层,电梯有up_state转换为down_state。当外部有下请求即dn不等于0,当等于当前楼层,电梯有up_state转换为open_sate,当大于当前楼层,电梯有up_state转换为up_state,当小于当前楼层,电梯有up_state转换为down_state。(3)当电梯处于down_state,当请求楼层等于当前楼层或者外部下请求等于当前楼层,电梯有down_state转换为open_state。当请求楼层大于当前楼层或者外部下请求大于当前楼层,电梯有down_state转换up_state。当请求楼层小于当前楼层或者外部上请求小于当前楼层,电梯有down_state转换为down_state。当外部有下请求即up不等于0,当等于当前楼层,电梯有down_state转换为open_sate,当大于当前楼层,电梯有down_state转换为up_state,当小于当前楼层,电梯有down_state转换为down_state。(4)当电梯处于open_state,当count<5时,电梯有open_state转换open_state,count=5时,电梯有open_state转换close_state;(5)当电梯处于close_state,根据上下标志转换,进入其他状态。idle_stateup_statedown_state close_stateopen_state 图3-2 状态转换图第四章 系统应用程序设计4.1 程序各个模块详解4.1.1 有限状态表机的三段式时序电路的状态是一个状态变量集合,这些状态变量在任意时刻的值都包含了为确定电路的未来行为而必需考虑的所有历史信息。状态机采用VerilogHDL语言编码,建议分为三个always段完成。三段式建模描述FSM的状态机输出时,只需指定case敏感表为次态寄存器, 然后直接在每个次态的case分支中描述该状态的输出即可,不用考虑状态转移条件。三段式描述方法虽然代码结构复杂了一些,但是换来的优势是:使FSM做到了同步寄存器输出,消除了组合逻辑输出的不稳定与毛刺的隐患,而且更利于时序路径分组,一般来说在FPGA/CPLD等可编程逻辑器件上的综合与布局布线效果更佳。always (posedge clk or posedge reset) if(reset) begin state<=idle_state; end else state<=next_state; 这是三段式有限状态机的第一段,当reset为高电平时, state<=idle_state其他 state<=next_statealways (state or up or dn or d or now_f or count or ud_f) case(state) open_state: beginif(count<5) next_state=open_state; else next_state=close_state; end idle_state: begin if(d>0) begin if(d&now_f)>0) next_state=open_state; else if(d>now_f) next_state=up_state; else next_state=down_state; end else if(up&now_f)|(dn&now_f) next_state=open_state; else if(up>now_f)|(dn>now_f) next_state=up_state; else if(up|dn) next_state=down_state; else next_state=idle_state; end up_state: begin if(d&now_f)|(up&now_f)next_state=open_state; else if(d>now_f)|(up>now_f) next_state=up_state; else if(d|up) next_state=down_state; else if(dn>0) begin if(dn>now_f) next_state=up_state; else if(dn&now_f)|(now_f<f6) next_state=open_state; else if(dn&now_f)&&(now_f=f6) next_state=open_state; else next_state=down_state; end else next_state=idle_state; end down_state: begin if(d&now_f)|(dn&now_f) next_state=open_state; else if(d<now_f)&&(d!=6'b000001)|(dn<now_f)&&(dn!=6'b000001) next_state=down_state; else if(d>now_f)|(dn>now_f) next_state=up_state else if(up>0) begin if(up<now_f) next_state=down_state; else if(up&now_f)&&(now_f>f1) next_state=down_state; else if(up&now_f)&&(now_f=f1) next_state=open_state; else next_state=up_state; end else next_state=idle_state; end close_state: begin if(ud_f=up_f) begin if(d&now_f)|(up&now_f) next_state=open_state; else if(d>now_f)|(up>now_f) next_state=up_state; else if(d|up) next_state=down_state; else if(dn>0) begin if(dn>now_f) next_state=up_state; else if(dn&now_f)>0) next_state=open_state; else next_state=down_state; end else next_state=idle_state; end else if(ud_f=dn_f) begin if(d&now_f)|(dn&now_f) next_state=open_state; else if(d<now_f)&&(d!=6'b000000)|(dn<now_f)&&(dn!=6'b000000) next_state=down_state; else if(d|dn) next_state=up_state; else if(up>0) begin if(up<now_f) next_state=down_state; else if(up&now_f)>0) ext_state=open_state; else next_state=up_state; end else next_state=idle_state; end else begin if(d>0) begin if(d&now_f)>0) next_state=open_state; else if(d>now_f) next_state=up_state; else next_state=down_state; end else if(up&now_f)|(dn&now_f) next_state=open_state; else if(up>now_f)|(dn>now_f) next_state=up_state; else if(up|dn) next_state=down_state; else next_state=idle_state; end end default: next_state=idle_state;endcase 这是三段式有限状态机的第二段,状态的转换 always (posedge clk or posedge reset) if(reset) begin now_f<=f1; ud_f<=idle; led<=1; end else begin now_f<=now_f; case(next_state) idle_state: begin now_f<=now_f; ud_f<=idle; led<=led; end up_state: begin now_f<=now_f<<1; ud_f<=up_f; led<=led+1; end down_state: begin now_f<=now_f>>1; ud_f<=dn_f; led<=led-1; end open_state: begin now_f<=now_f; ud_f<=ud_f; led<=led; end close_state: begin now_f<=now_f; ud_f<=ud_f; led<=led; end default: begin now_f<=f1;

    注意事项

    本文(基于Verilog HDL的电梯控制设计.doc)为本站会员(laozhun)主动上传,三一办公仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一办公(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    备案号:宁ICP备20000045号-2

    经营许可证:宁B2-20210002

    宁公网安备 64010402000987号

    三一办公
    收起
    展开