基于veriloghdl的电梯控制设计内容摘要:

的技术指标。 电梯在运转时先响应同方向上的请求,只有当同 方向上的请求响应完后,才能转而响应不同方向上的请求。 (2)初始化状态为 1 楼等待门是关闭的。 这个就不用多解释了。 除了我对电梯的运行规律做出如上的分析外,我的另一个选择开发智能电梯控制器的原因是我想锻炼一下自己的逻辑思维和分析复杂问题的能力。 电梯的设计 概要 电梯的管脚 图 31 是电梯自动 控制的元器件模块符号。 图中左边的是电梯中输入输出的管脚。 其中: clk 时钟信号; reset 清零信号,高电平清 零, led 用于楼层的静态数码管的显示, ud_f 电梯的上下标志, count用于开门状态 是的计数器 ; up1, up2, up3, up4, up5 电梯外部的除六楼以外的 其他楼层的上请求按钮; dn2, dn3, dn4, dn5, dn6 电梯外部的除一楼以外的其他楼层的下 请求按钮; d1, d2, d3, d4, d5, d6 电梯内部的一楼到楼的请求按钮。 图中右边的图是,程序应用中设置的一些变量和一些状态的参量。 其中:up_f=239。 b01, dn_f=239。 b10, idle=239。 b00, 设置上下标志的参数 idle_state=339。 b001, up_state=339。 b010, down_state=339。 b011, open_state=739。 b100, close_state=739。 b10 设置电梯的各种运行状态的参 f1=639。 b000001, f2=639。 b000010; f3=639。 b000100;f4=639。 b001000, f5=639。 b010000, f6=639。 b100000, 设置各个楼层的参数。 南京师范大学泰州学院本科生毕业设计(论文) 7 图 31 元器件模块符号 图 电梯的状态转换 电梯的状态有 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,当 count5 时,电梯有 open_state 转换第三章 系统总体设计 8 open_state, count=5 时,电梯有 open_state 转换 close_state。 ( 5) 当电梯处于 close_state,根据上下标志转换,进入其他状态。 图 32 状态转换图 down_state open_state close_state up_state idle_state 南京师范大学泰州学院本科生毕业设计(论文) 9 第四章 系统应用程序设计 程序各个模块详解 有限状态表机的三段式 时序电路的状态是一个状态变量集合,这些状态变量在任意时刻的值都包含了为确定电路的未来行为而必需考虑的所有历史信息。 状态机采用 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: begin if(count5) next_state=open_state。 else next_state=close_state。 end idle_state: begin if(d0) begin if((damp。 now_f)0) next_state=open_state。 else if(dnow_f) next_state=up_state。 else next_state=down_state。 end 第四章 系统应用程序设计 10 else if((upamp。 now_f)||(dnamp。 now_f)) next_state=open_state。 else if((upnow_f)||(dnnow_f)) next_state=up_state。 else if(up||dn) next_state=down_state。 else next_state=idle_state。 end up_state: begin if((damp。 now_f)||(upamp。 now_f)) next_state=open_state。 else if((dnow_f)||(upnow_f)) next_state=up_state。 else if(d||up) next_state=down_state。 else if(dn0)。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。