电梯的控制器电路设计__eda技术课程设计(编辑修改稿)内容摘要:
b0010000, OPENDOOR=739。 b0100000, CLOSEDOOR=739。 b1000000。 //定义楼层的符号常量 parameter FLOOR1=639。 b000001, FLOOR2=639。 b000010, FLOOR3=639。 b000100, FLOOR4=639。 b001000, FLOOR5=639。 b010000, FLOOR6=639。 b100000。 parameter TRUE=139。 b1, FALSE=139。 b0。 //定义门打开和门关 闭的符号常量 parameter OPEN=139。 b1, CLOSED=139。 b0。 //定义电梯上升,下降和静止的符号常量 parameter UPFLAG=239。 b01,DNFLAG=239。 b10,STATIC=239。 b00。 assign real_clk=(clkamp。 (~forbid))。 //采用屏蔽时钟的方法来实现“电梯强制禁止运行”。 方法虽然违反了“同步电路最好 //没有时钟门控”的要求,但是在此只要“负面影响”不是很大还是可以接受的。 //将各上升请求信号实时地合 并 (6 楼为顶层 ,无上升请求,考虑到通用性,将第 4 位填零 ) always @(call_up_1 or call_up_2 or call_up_3 or call_up_4 or call_up_5) up_all={139。 b0, call_up_5, call_up_4, call_up_3, call_up_2, call_up_1}。 //将各下降请求信号实时地合并 (1 楼为底层 ,无下降请求 ,考虑到通用性 ,将第 1 位填零 ) always @(call_down_2 or call_down_3 or call_down_4 or call_down_5 or call_down_6) down_all={call_down_6, call_down_5, call_down_4, call_down_3, call_down_2, 139。 b0}。 //将各停靠请求信号实时地合并 always @(request_1 or request_2 or request_3 or request_4 or request_5 or request_6) 山东建筑大学信息与电气工程学院学院课程设计说明书 17 request_all={request_6, request_5, request_4, request_3, request_2, request_1}。 always @(posedge real_clk or posedge reset) if(reset) count=0。 else if((NextState==OPENDOOR)amp。 amp。 (count5))//or else if(NextState==OPENDOOR) count=count+1。 //如果计数不到 5 且下一状态为 OPENDOOR 的话 ,继续计数 else count=0。 //清零 ,以备下次计数 //display which floor the elevator is.... display_decode h1(cp_50M,PosOut,out,over_alarm)。 display_decode_count h2(cp_50M,count,count_out)。 // finite state machine in the style of three segments ,三段式 //1st StateShift always block,sequential state transition,有限状态机第一段 always @(posedge real_clk or posedge reset) if(reset) begin LiftState=WAIT。 end else LiftState=NextState。 //2nd StateShift always block,binational condition judgement,有限状态机第二段 always @(LiftState or up_all or down_all or request_all or pos or count or UpDnFlag) case(LiftState) WAIT: begin if(request_all0)//有停靠请求否 begin if((request_allamp。 pos)0)//停靠请求中有当前楼层停靠请求否 NextState=OPENDOOR。 //有当前楼层请求,则下一状态转开门 else if(request_allpos)//有当前楼层之上的停靠请求否(优先向上的请求) NextState=UP。 //有则,下一状态转上升 else NextState=DOWN。 //只有当前楼层之下的停靠请求,下一状态转下降 end else if((up_allamp。 pos)||(down_allamp。 pos))//上下请求中有当前楼层请求否 begin NextState=OPENDOOR。 end 山东建筑大学信息与电气工程学院学院课程设计说明书 18 else if((up_allpos)||(down_allpos))//上下请求中有当前楼层之上的请求否 NextState=UP。 else if(up_all||down_all)//上下请求中有当前楼层之下的请求否 NextState=DOWN。 else NextState=WAIT。 //无任何请求,继续处于 WAIT 模式 end UP: begin if((request_allamp。 pos)||(up_allamp。 pos))//停靠或上升请求中有当前楼层的请求否 NextState=UPSTOP。 //有,下一状态转为 UPSTOP(停靠后要 1s 才开门 ,UPSTOP即为这 1s 的过渡期 ) else if((request_allpos)||(up_allpos))//停靠或上升请求中有当前楼层之上的请求否 NextState=UP。 else if(down_all0)//有下降请求否 begin if((down_allpos)amp。 amp。 ((down_all^pos)pos))//下降请求中有当前楼层的请求否 NextState=UP。 else if((down_allamp。 pos)||(posFLOOR6)) //其实这样做意义不大,只是使上下标志提前变化 NextState=UPSTOP。 else if((down_allamp。 pos)amp。 amp。 (pos==FLOOR6))//事实上不满足第一条件的话,电梯根本不会到达第四层 NextState=DOWNSTOP。 else//下降请求中只有当前楼层之下的请求 NextState=DOWN。 end else if(request_all||up_all)//只有当前楼层之上的停靠或上升请求否 NextState=DOWN。 else NextState=WAIT。 //无任何请求,转为 WAIT 模式 end //DOWN 的状态转移请参见 UP 的状态转移 DOWN: begin if((request_allamp。 pos)||(down_allamp。 pos)) NextState=DOWNSTOP。 else if(((request_allamp。 FLOOR1)posamp。 amp。 (request_allamp。 FLOOR1))||((request_allamp。 FLOOR2)posamp。 amp。 (request_allamp。 FLOOR2))||((request_allamp。 FLOOR3)posamp。 amp。 (r。电梯的控制器电路设计__eda技术课程设计(编辑修改稿)
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。
用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。