




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、2013-2014 学年度第二学期电子技术基础课程设计智能电梯控制器设计院系:自动化学院专业:自动化1104班级:姓名:周家新学号:U201113604指导教师:汪小燕一、课题3二、内容要求3三、系统设计4a)系统框图与说明4b)状态转换图6四、系统·····························&
2、#183;······································12五、实验总结15附录:源程序18一、课程设计名称智能电梯控制器设计二、设计内容及要求楼层的高度大于等于 6,根据降低运行成本的原则
3、,设计并实现一个以方向优先电梯调度算法。要求能够使用按键模拟对电梯的控制,为了便于观察,将电梯所在的楼层(16)用数码管显示出来,将电梯的上下楼状态(上,下,开门,关门,静止)用发光管或数码管显示出来,并且能够实现对电梯实现锁定运行。画出电梯控制器的状态机,写出状态编码方案用 Verilog 语言对设计进行描述,并较符合现实的控制限制。到实验板上调试成功,适当增加比写出设计性实验报告,并打印各层次的源文件和波形,然后作简要说明。并谈谈此次实验的收获、感想及建议三、系统设计根据设计要求,可以将系统分为以下几个模块:分频模块:将 50MHz 分频为 1Hz 和 20Hz,给其他个模块提供时钟信号。
4、其中 20Hz信号用于外部选择模块,1Hz 信号用于其他模块。电梯外部选择模块:读入电梯外部请求,包括楼层和上下等信息,将请求信息存入相应寄存器中。同时在电梯到达时将相应寄存器中该层对应的位置清零。电梯内部选择模块:读入电梯内部请求,并将请求存入相应寄存器中,并在电梯到达时将该层请求清零。数码管模块:数码管译码和显示,显示内容包括电梯当前楼层、电梯内部选择楼层和当前电梯状态。开门模块:完成开门计时功能,同时完成处理延迟关门请求、提前关门请求和超重警告等功能,提前关门时门直接关上,延迟关门时门延迟关闭,超重时门不关闭。楼层状态机模块:此模块包含状态机,完成状态转换的判断和执行,在相应状态对 楼层
5、进行加计数或者减计数,同时通过数码管显示当前楼层。状态显示模块:将需要数码管显示的状态读入、译码并显示在数码管上顶层模块:整合各个子模块,同时完成急停的判断和急停状态显示。由以上设计,可以得系统框图如下:电梯系统基本框图系统框图说明:1.设定智能电梯控制器的使用楼层总数为 7 层。2.系统时钟周期为电梯控制器检测输入输出信号的最小间隔。3.电梯内外的操作面板提供了楼层输入,电梯内操作面板还提供了开关门输入。4.电梯控制器提供锁定输入,可锁定电梯运行。5.电梯内外面板显示电梯当前楼层,及上行还是下行。6.当按下楼层请求时,对应的请求灯亮。7.为了便于观察,将电梯的运动、静止、开门、关门状态用发光
6、管显示出来。开始初始化电梯状态本层有请求?NoNo本层以下有本层以上有请求?NoYesYesYes本层为目的层?NoYes本层以上有请求?No电梯关门电梯系统流程图请求?YesYes本层为目的层?NoYesNo本层以下有请求?电梯关门等待乘客上下电梯电梯停止开门更新状态信息向下运行楼层-1更新状态信息等待乘客上下电梯电梯停止开门更新状态信息向上运行楼层+1更新状态信息等待系统流程图说明:1.2.当电梯启动时,当前楼层为 1 楼,电梯为停止状态,方向向上,电梯关门,等待输入请求。电梯启动后,判断当前楼层是否有请求,若有则电梯开门,乘客上下电梯,电梯关门;若没有判断当前楼层以上是否有请求,若有则向
7、上运行;若没有判断当前楼层以下是否有请求,若有则向下运行。若判断为向上运行,电梯状态为运动状态,方向向上,电梯关门,楼层数加 1;判断新的当前层是否有请求,若有则电梯停止,电梯开门,乘客上下电梯,电梯关门;若没有则重复 3 操作。若判断为向下运行,电梯状态为运动状态,方向向下,电梯关门,楼层数减 1;判断新的当前层是否有请求,若有则电梯停止,电梯开门,乘客上下电梯,电梯关门;若没有则重复 4 操作。当所有请求处理完后,回到状态 2。3.4.5.b)状态转换图RSTS0S24S23BAresultS15S18S22S19resultresultopen_but &&consign
8、alopen_but &&consignallockconsignalconsignalS1S2resultS16S20consignalconsignalresultresultclose_but|consignalclose_but|consignalS3S9S8S17S21S14ABclose_but &&consignalclose_but &&consignalconsignalS7S4S10S13resultresultresultconsignalresultconsignalconsignalresultS6S5S11S12状态编
9、码方案:S0=00000,S1=00001,S2=00010,S3=00011,S4=00100,S5=00101,S6=00110, S7=00111,S8=01000,S9=01001,S10=01010,S11=01011,S12=01100,S13=01101, S14=01110,S15=01111,S16=10000,S17=10001,S18=10010,S19=10011,S20=10100,S21=10101,S22=10110,S23=10111,S24=11000状态说明S0初始化电梯,状态清零,楼层置 1,转换到 S23S1判断当前楼层以上是否有电梯请求,若 resul
10、t=1 转换到 S3,若 result=0转换到 S2S2判断当前楼层以下是否有电梯请求,若 result=1 转换到 S9,若 result=0转换到 S23S3电梯运动状态转变为运动,运动方向转变为向上,转换到 S4S4电梯计数器使能端设为 1,开始计数,若 consignal=1,转换到 S5,否则留在 S4S5电梯控制器发出楼层上升信号,楼层数加 1,转换到 S6S6判断电梯外是否有当前楼层的向上请求,或电梯内是否有当前楼层请求,若 result=1 转换到 S8,若 result=0 转换到 S7S7判断当前楼层以上是否有电梯请求,若 result=1 转换到 S4,若 result
11、=0转换到 S8S8电梯运动状态转变为停止, 电梯开门, 电梯计数器开始计数, 若close_but=0,转换到 S17,若 consignal=1 转换到 S15S9电梯运动状态转变为运动,运动方向转变为向下,转换到 S10S10电梯计数器使能端设为 1,开始计数,若 consignal=1,转换到 S11,否则留在 S10S11电梯控制器发出楼层下降信号,楼层数减 1,转换到 S6S12判断电梯外是否有当前楼层的向下请求,或电梯内是否有当前楼层请求,若 result=1 转换到 S14,若 result=0 转换到 S13S13判断当前楼层以下是否有电梯请求,若 result=1 转换到
12、S10,若 result=0转换到 S14S14电梯运动状态转变为停止, 电梯开门, 电梯计数器开始计数, 若close_but=0,转换到 S21,若 consignal=1 转换到 S19S15电梯门开至最大,乘客上下电梯,重置计数器,转换到 S16S16电梯计数器开始计数, 电梯门维持开放, 等待乘客上下电梯, 若close_but=0 或 consignal=1,转换到 S17S17电梯开门指示灯灭,开始关门,重置计数器,转换到 S18S18电梯计数器开始计数,电梯门在一段时间后关陇,期间若 open_but=0,四、系统a)各工作模式波形1.电梯的楼层请求输入输出转换到 S15,若
13、consignal=1,转换到 S1S19电梯门开至最大,乘客上下电梯,重置计数器,转换到 S20S20电梯计数器开始计数, 电梯门维持开放, 等待乘客上下电梯, 若close_but=0 或 consignal=1,转换到 S21S21电梯开门指示灯灭,开始关门,重置计数器,转换到 S22S22电梯计数器开始计数,电梯门在一段时间后关陇,期间若 open_but=0, 转换到 S19,若 consignal=1,转换到 S2S23判断电梯外是否有当前楼层的向上请求,或电梯内是否有当前楼层请求,若 result=1 转换到 S8,若 result=0 转换到 S24S24判断电梯外是否有当前楼
14、层的向下请求,或电梯内是否有当前楼层请求,若 result=1 转换到 S14,若 result=0 转换到 S12.电梯锁定运行输入输出1. 电梯开关门输入输出b)实测(现场验收)五、实验总结a)心得体会开学伊始,我们就开始进行电子技术课程设计。在选题目的时候,我怀着自信念,选择了电梯控制器。但拿到题目之后,却发现这个学期是如此的繁忙,计算机四级,院篮球赛,课内学业,这些东西都困扰着我,让我无法抽出完整的一大块时间来进行课程设计,隔几天才蜻蜓点水般的设计一下,使得进度非常缓慢,而电梯复杂的逻辑又很多时候让我无从下手。慢慢时间就到了第四周,许多同学都陆陆续续验收了,而一些没做出来的同学也找到了
15、往届的代码验收而回,我心里非常着急,但是我从来没有想过要拿别人的成果,课程设计就应该要自己完成,何况我是自愿选的一个比较难的题目。上大学就应该学到有价值的知识,不能不劳而获混毕业,不得不承认,上大学以后,学习风气比高中差很多,抄作业,抄报告,小抄的现象也经常看到,但是我一直坚持着所有东西都靠自己的努力认真做好。我大二学习数电的时候,每一次作业都是自己认真做的,但是的成绩却很不理想,我感到很失望,所以我更要借此机会来提高数电水平。我们天天都能接触到的电梯,看起来很简单,但做起来很难,大家对它都太熟悉了,以至于一些细微的差错都能被轻易发现,所以必须做到完美。由于 verilog 我们在学习中接触的
16、很少,只在电测实验中做过一个数字钟,使得我对 verilog 的语法和结构并不熟练,在处理玩基本的语法错误后,我发现了将近 100 条的warning,我从上往下浏览了一遍,却发现没有几条看得懂,我测试了输出的波形,发现输出完全是错误的,我开始怀疑程序有逻辑错误,我一遍又一遍的检查,理顺逻辑,却发现找不到错误的地方。重复检查好几次以后,还是找不到逻辑的错误。我感到非常失落,于是我调整了一下心态,决定扎实一下自己的基本功,重新看了一遍罗老师编写的 verilog。对主循环进行了改进,将一个 always 改成两个 always,后来又改进为三个 always,数码管输出波形终于开始变化了,但是输
17、错仍然是错误的。于是我一个个的检查 warning,并在网上查阅各种资料,搜索其含义和解决方法。查阅了大量的资料以后,我决定把程序中各子模块的组合逻辑改为时序逻辑,经过调试,终于得到了正确的波形。当要把程序烧到 DE2 上面时,我却发现了另一个问题,我需要的按钮太多,而 DE2 上只有 4 个按钮。一开始过用译码器解决这个问题,但考虑到操作过于复杂,我决定退而求其次用开关代替按钮表示电梯内外操作面板的按键。烧到 DE2 上面后,数码管显示和请求指示灯显示正确,但电梯状态灯的显示却有时会,我重新检查了主循环,去掉了几个多余的标志位赋值,终于正常运行。观察一段时间稳定后,我开始对比电梯控制器与现实
18、中的电梯有什么差异,发现了现实中的电梯在停止时本楼层外有请求时电梯将会开门,而电梯只有在异层请求时才有响应,于是我添加了响应本层请求的功能。而后我发现电梯开门后可以通过开关门键控制电梯开关门,我决定给电梯加上开关门的功能,但是却碰到了另一个的难题,开门时间、开门后等待时间、关门时间各是多少?三个状态间如何转换?通过艰苦的逻辑思考我设计出了电梯的开关门循环,并加入了电梯控制器中。在这次课程设计中,我大大的提高了自己的 verilog 编程和调试能力,设计的过程很苦,很累,但是收获却很丰硕。b)待改进的问题1.2.3.4.5.若硬件允许,电梯楼层请求应由开关实现改为按钮实现。电梯开门时间、开门后等
19、待时间、关门时间应根据电梯机械结构和乘客习惯调整。电梯内应设有紧急呼救。应提高电梯控制器兼容性,使楼层并不仅限于 7 层。电梯开关门过程中有可能无法响应其他楼层的请求。c)功能扩展本电梯已具备日常普通 7 层电梯的除紧急呼救外的全部功能:楼层请求、开门、关门、锁定、清零,故未作拓展,若电梯供特殊用途课根据特定要求拓展。附录:源程序/*description:电梯控制器顶层模块函数*input: New_InFloor,New_OutFloor,AimDown,AimUp,InClose,InOpen,CLK,RESET,STOP,参见各模块*output:LED_GetInf-电梯外部输入允许
20、指示灯,LED_UpDown-外部上下行请求按钮灯,* LED_DoorState-门状态灯,LED_InFloor-电梯内部目标楼层申请,LED_OutFloor-电梯外部目标楼层申请*Dis_CurFloor,Dis_CurState电梯状态及楼层数码管显示,test1,test2,test3-调试测试信号灯*intermediate:参见各模块*/module LiftTop(New_InFloor,New_OutFloor,AimDown,AimUp,InClose,InOpen,CLK,RESET,STOP,LED_GetInf,LED_UpDown,LED_DoorState,LE
21、D_InFloor,LED_OutFloor,Dis_CurFloor,Dis_CurState,ResetVai,stopVai,LCD_ON,LCD_BLON,LCD_RW,LCD_EN,LCD_RS,LCD_DATA,test1,test2,test3);input AimDown,AimUp,InClose,InOpen,CLK,RESET,STOP; output test1,test2,test3;input 6:0 New_InFloor,New_OutFloor ;output2:0 LED_DoorState; output1:0 LED_UpDown;output7:0 D
22、is_CurFloor,Dis_CurState;output6:0 LED_InFloor,LED_OutFloor; output LED_GetInf,ResetVai,stopVai;output output output outputoutputLCD_ON; LCD_BLON; LCD_RW; LCD_EN;LCD_RS;/LCD Power ON/OFF LCD Back Light ON/OFFLCD Read/Write Select, 0 = Write, 1 = Read LCD EnableLCD Command/Data Select, 0 = Command, 1
23、 = Datainout7:0 LCD_DATA;/LCD Data bus 8 bitswire warn,LCD_BLON0;/the warning keywire 7:0 LCD_DATA;wire6:0 LED_InFloor,LED_OutFloor; wire2:0 LED_DoorState;wire1:0 LED_UpDown,DoorMode;reg 11:0counter;wire stopVai,ResetVai;wire 6:0 AimFloor;wire 6:0 Aim_InFloor,Aim_OutFloor;wire 6:0 AimFloor_OutDirec;
24、wire1:0 Aim_Direc ; wire 6:0 CurFloor ;wire Cur_Direc,Change_Door,DoorState;wire DCLKS,DCLKMS,DCLKMS4,DCLKMS16;wire Dis_GetInfor; wire2:0 Dis_DoorState;wire7:0 SEG_CurFloor,SEG_CurState; wire1:0MoveMode;wire7:0 data;/分频模块FrequencyDivision D1(CLK,STOP,DCLKS,DCLKMS,DCLKMS4,DCLKMS16,RESET);/原始信号获取及初步处理
25、ReadInformationG1(CurFloor,MoveMode,DoorState,AimFloor,AimFloor_OutDirec,Aim_OutFloor,Aim_InFloor,Dis_GetInfor,Ne w_InFloor,New_OutFloor,AimDown,AimUp,CLK,RESET);/算法决定运行模式及门状态LiftControl E1(AimFloor,Aim_InFloor,Aim_OutFloor,AimFloor_OutDirec,Change_Door,CurFloor,DoorState,MoveMode,C LK,RESET,test1,t
26、est2,test3);/显示并改变门状态DoorDisplay Door1(InClose,InOpen,DoorState,Change_Door,Dis_DoorState,DCLKMS,RESET,DoorMode);/显示当前楼层及电梯运行状态FloorDispaly Floor1(DoorState,MoveMode,CurFloor,DCLKS,RESET,SEG_CurFloor,SEG_CurState);/LCD LcdToplcdTop1(AimFloor,MoveMode,DoorState,DoorMode,data,CLK,warn,LCD_ON,LCD_BLON0
27、,LCD_RW,LCD_EN,LCD_RS,LCD_DATA);assignLCD_BLON=1'b1;assign data6:0=CurFloor6:0;assign data7=0;assign warn=DCLKMS16;assign stopVai=STOP; assign ResetVai=RESET;assign LED_DoorState=Dis_DoorState; assign LED_GetInf=Dis_GetInfor; assign LED_OutFloor=Aim_OutFloor;assign LED_InFloor=Aim_InFloor;assign
28、 LED_UpDown0=AimDown; assign LED_UpDown1=AimUp; assign Dis_CurFloor=SEG_CurFloor;assign Dis_CurState=SEG_CurState;endmodule/*description:自定义数码管*input:in-输入信号*output:out_seg-输出信号*intermediate:null*/ module CustomTube(out_seg,in);input6:0 in;output7:0 out_seg;reg7:0 out_seg;always(in)case(in) /自定制数码管7
29、'b0000001:out_seg=8'b11111001;7'b0000010:out_seg=8'b10100100;7'b0000100:out_seg=8'b10110000;7'b0001000:out_seg=8'b10011001;7'b0010000:out_seg=8'b10010010;7'b0100000:out_seg=8'b10000010;7'b1000000:out_seg=8'b11111000;7'b1000100:out_seg=8'
30、;b00100011;7'b1000010:out_seg=8'b00011100;7'b1000001:out_seg=8'b00111111;default:out_seg=8'b11111111; endcaseendmodule/向下,亮下部/向上,亮上部/静止全灭,亮中间横。/*description:LCD 液晶延迟显示*input: iCLK,warn*output:warn1,warn1,oRESET*/module inputinputResetDelay(iCLK,warn,oRESET,warn1); /复位脉冲只在开始时出现一次i
31、CLK;warn;output reg oRESET;outputreg 29:0warn1;Cont=0;reg warn1;reg 1:0 count2; initialbeginCont <=30'b0; warn1<=1'b1; count2<=2'd0; oRESET<=0;endalways(posedge iCLK) begin/*if(Cont!=30'hFFFFFF)/if(Cont!=20'h08) beginCont <=Cont+30'b1;/分频/oRESET <=oRESET;end
32、elsebegin/oRESET <= oRESET <=Cont <=30'd0; end*/oRESET <=1;1'b1;oRESET;if(warn=0)/if push the button warn,then write new information to the LCDbeginoRESETwarn1=1'b1;<=1'b0;count2=count2+2'd1; endif(count2=2'd2)/push twice then return to normal beginwarn1=1'
33、b1; count2=2'd0;endend endmodule/*description:实现外部输入信息的获取,并整合*给其他模块计算使用*input: MoveMode-电梯当前运行模式(2'b00 静止,2'b01 上升,2'b11 下降)*New_InFloor,New_OutFloor-电梯内部目标楼层输入,电梯外部目标楼层输入*CurFloor-当前楼层,eg:7'b0000100,代表现在处于第三层AimDown,AimUp-电梯外部请求信号上下楼方向选择,同时开启电梯外部目标输入允许CLK-50M 时钟信号,RESET-复位(低电平有效
34、),DoorState-门状态信号*output:AimFloor-电梯内部与电梯外部请求信号(高电平有效)*Aim_InFloor-电梯内部设置目标楼层信号(高电平有效) Aim_OutFloor-电梯外部各楼层请求信号(1 有请求,0 无请求)AimFloor_OutDirec-电梯外部各楼层请求的方向信号(1 向上,0 向下)LED_GetInf-电梯外部输入允许 LED 显示*intermediate:i,j,k-分别循环检测状态 7 个楼层状态*flag-电梯外部请求类型标志(2'b01 下行,2'b10 上行),flag0-电梯外部信息输入有效标志temp-临时寄存
35、检测楼层 i+1 层时的楼层值i=1,temp=7'b0000010(二楼) InFloor,OutFloor-存放最新的按键状态,以实现楼层输入信号的变化监测*/module ReadInformation(CurFloor,MoveMode,DoorState,AimFloor,AimFloor_OutDirec,Aim_OutFloor,Aim_InFloor,LED_GetInf,New_InFloor,New_OutFloor,AimDown,AimUp,CLK,RESET);input AimDown,AimUp,CLK,RESET,DoorState; input 1:0
36、 MoveMode;input 6:0 New_InFloor,New_OutFloor,CurFloor ;output6:0 AimFloor,AimFloor_OutDirec,Aim_OutFloor,Aim_InFloor;output LED_GetInf;reg 6:0 AimFloor,AimFloor_OutDirec,Aim_OutFloor,Aim_InFloor; reg 6:0 InFloor ;reg 6:0 OutFloor ; reg LED_GetInf; reg 2:0 i,j,k;reg 1:0 flag; reg flag0;reg 6:0temp;in
37、itialbeginOutFloor = 0;InFloor = 0; AimFloor=0; AimFloor_OutDirec=0; Aim_InFloor=0;Aim_OutFloor=0;flag0=1;endalways(posedge CLK) begin/*description:下降过程中对已到达楼层,目标数据的清零*request:1、到达内部请求楼层,2、目的请求楼层且方向与当前方向相同-同为向下*该算法与在LiftControl 中判断是否开门的算法一致*/if(CurFloor&Aim_InFloor)|(CurFloor&Aim_OutFloor)&a
38、mp;&(CurFloor)|AimFloor_OutDirec)&&MoveMode!=2' b01)beginAim_InFloor=(CurFloor)&Aim_InFloor); Aim_OutFloor=(CurFloor)&Aim_OutFloor);end/*description:上升过程中对已到达楼层,目标数据的清零*request:1、到达内部请求楼层,2、目的请求楼层且方向与当前方向相同-同为向上*/ elseif(CurFloor&Aim_InFloor)|(CurFloor&Aim_OutFloor)&a
39、mp;&(CurFloor&AimFloor_OutDirec)&&MoveMode!=2'b11) beginAim_InFloor=(CurFloor)&Aim_InFloor); Aim_OutFloor=(CurFloor)&Aim_OutFloor);end/*description:Aim_InFloor 为零,只考虑外部目标楼层,到达时不用考虑方向,直接清零*request:1、到达内部请求楼层,2、目的请求楼层为零*/else if(Aim_InFloor=7'b0000000&&(CurFloor
40、&Aim_OutFloor)Aim_OutFloor=(CurFloor)&Aim_OutFloor);/*description:复位请求*request:低电平有效*/ if(RESET)beginOutFloor = New_OutFloor;InFloor = New_InFloor; AimFloor=7'b0000001; AimFloor_OutDirec=0; Aim_InFloor=7'b0000001; Aim_OutFloor=0;flag0=1;end/*description:电梯内部请求置位*request:高电平有效*/ if( i
41、 < 7 )begintemp=7'b0000001<<i;/电梯内部请求信号检测(变化检测)if(New_InFlooriInFloori&&(MoveMode!=2'b11&&CurFloor<temp)|(MoveMode!=2'b01&&CurFloor>temp) beginAimFloori = 1 ; Aim_InFloori=1; InFloori = New_InFloori;end elseif(New_InFlooriInFloori) beginInFloori = N
42、ew_InFloori;endi = i+3'b001;end elsei=0;/*description:电梯外部上下行请求置位*request:低电平有效*/ if(AimDown)beginflag=2'b01; /电梯外部输入下行信号flag0=0;/外部输入信号允许end if(AimUp)beginflag=2'b10;/电梯外部输入上行信号flag0=0; /外部输入信号允许end/*description:电梯外部输入信号请求允许标识*request:低电平有效*/if(flag0)begin/flag0=1,外部输入信号不允许,无反应LED_GetIn
43、f=0; flag=2'b11; flag0=1;OutFloor=New_OutFloor; /更新最新的按键状态end elsebeginLED_GetInf=1;/外部输入信号允许指示灯亮end/*description:电梯外部上下行信号处理*request:高电平有效*/if(flag=2'b01) beginif( j < 7 )begin/电梯外部输入下行信号if(New_OutFloorjOutFloorj)/电梯信号检测,改为只要有变化那么就使其有效。beginAimFloorj = 1 ;AimFloor_OutDirecj=0; /对变化位对应输入下
44、行信号 0 Aim_OutFloorj=1;OutFloorj = New_OutFloorj; /更新最新的按键状态endj = j+3'b001;end elsebeginj = 0 ;flag=2'b11; /检测完成一轮,置零归位,指示灯灭flag0=1;endendelse if(flag=2'b10)beginif( k < 7 ) begin/电梯外部输入上行信号if(New_OutFloorkOutFloork)/电梯信号检测,改为只要有变化那么就使其有效。beginAimFloork = 1 ; AimFloor_OutDireck=1; Aim
45、_OutFloork=1; OutFloork = New_OutFloork;endk = k+3'b001 ;end elsebegink = 0 ;flag=2'b11; flag0=1;endendendendmodule/*description:实现对电梯的运行模式控制 MoveMode 和电梯门状态的控制*input: AimFloor-电梯内部与电梯外部请求信号(高电平有效)*Aim_InFloor-电梯内部设置目标楼层信号(高电平有效) Aim_OutFloor-电梯外部各楼层请求信号(1 有请求,0 无请求)AimFloor_OutDirec-电梯外部各楼层
46、请求的方向信号(1 向上,0 向下) Change_Door-关门信号(高电平有效),RESET-复位(低电平有效) CurFloor-当前楼层(例 7'b0000100,代表现在处于第三层)CLK-50M 时钟信号*output:test1,test2,test3-三个均为调试用信号灯-当前test1,test2 用于显示模式状态*DoorState-门状态(1 开已门,0 关已门)MoveMode-电梯当前运行模式(2'b00 静止,2'b01 上升,2'b11 下降)*intermediate:Cur_Floor1,Cur_Floor2-电梯处于静止待命状
47、态时,寻找离当前楼层最近的电梯外部目标请求楼层,*用这两个变量存放左右移位后CurFloor 的值*/moduleLiftControl(AimFloor,Aim_InFloor,Aim_OutFloor,AimFloor_OutDirec,Change_Door,CurFloor,DoorState,MoveMode,CLK,RESET,test1,test2,test3);input 6:0AimFloor,Aim_InFloor,Aim_OutFloor,AimFloor_OutDirec; input CLK,Change_Door,RESET;input 6:0CurFloor;ou
48、tput test1,test2,test3; output DoorState; output 1:0MoveMode; reg 1:0MoveMode; reg DoorState;reg test1,test2,test3;reg6:0Cur_Floor1,Cur_Floor2;always(posedge CLK) beginif(RESET) beginDoorState=0; MoveMode=2'b00;endtest1=MoveMode0; /LED 显示当前模式test2=MoveMode1;if(Change_Door)DoorState=0; if(DoorSta
49、te)begin/关门信号作用if(MoveMode=2'b01&&CurFloor=7'b1000000)/已到楼顶,即强制转换为下行模式/既然已改模式,只能在此处开门(此时必有人要到此楼)beginMoveMode=2'b00;DoorState=1;end if(MoveMode=2'b11&&CurFloor=7'b0000001)beginMoveMode=2'b00; DoorState=1;end case(MoveMode)2'b00:/已到楼底,即强制转换为下行模式begin/static
50、 modeif(Aim_InFloor=7'b0000000&&Aim_OutFloor!=7'b0000000) /在没有电梯内部请求时,对于电梯外部请求,依照上下目标离/判断那个目标楼层近决定上下行模式beginCur_Floor1=CurFloor>>1; Cur_Floor2=CurFloor<<1; if(Cur_Floor1&Aim_OutFloor)/将当前楼层分别左右移一位 e.g./如 当 前 楼 层CurFloor=7'b0000100,Aim_OutFloor=7'b0010010,Aim_InFloor=7'b0000000MoveMode=2'b01;Cur_Floor2=7'b0001000else Aim_OutFloor=7'b0010010/ 左右各移一位的结果:Cur_Floor1=7'b0000010/Aim_OutFloor=7'b0010010/ -上下两数与运算分别得& =1 (左移先为 1,选择下行)if(Cur_Floor2&Aim_OutFloor)/& =0MoveMode=2'b11; elseif(Cur_Floor1=7'b0
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 主播劳动合同样本
- 丽水重型吊车租赁合同样本
- 东呈酒店劳务合同样本
- 离婚法律协议离婚程序二零二五年
- 二零二五版员工廉政廉洁自律手册承诺书
- 2007购房合同标准文本
- 青蓝工程培养计划书
- 微商营销方案三篇
- 二零二五版环境保护管理协议模板
- 办公厂房无偿出租协议
- 甘肃省卫生健康委公务员考试招聘112人往年题考
- 数字化赋能护理质量管理研究进展与价值共创视角
- 冲压模具设计与制造工艺考试复习题库(含答案)
- 2025牡丹江辅警考试题库
- 2024年新高考广西高考生物真题试卷及答案
- 2024-2025学年北师大版七年级数学下册期中模拟卷
- 2025部编人教版小学二年级语文下册全册教案
- 电网工程设备材料信息参考价(2024年第四季度)
- 电子产品生产工艺流程手册
- 预防艾滋病、梅毒、乙肝母婴传播实验室检测
- pep小学英语四年级下课文及翻译
评论
0/150
提交评论