电梯控制器报告(Verilog实现)
3层电梯VHDL报告
一.实验题目简易二层电梯控制器模拟真实电梯的运行情况,设计制作一个简易电梯控制器控制二层电梯的运行。
基本要求:1、电梯设有一层、二层外部呼叫按钮和内部一层、二层指定按钮(BTN)。
2、利用数码管显示电梯所在楼层,用LED显示电梯运行状态如上行、下行、开门、关门等。
提高要求:1、点阵显示楼层;2、用点阵显示楼层的上下滚动移出移入表示电梯的上行或下行运行方向3、增加为三层电梯控制器二.设计方案及思路设计思路:根据题目要求,我在程序中设计了需要用到的8个外部按钮:f1up,f2up ,f2dn,f3dn,warning,stop1,stop2,stop3,reset,另外还有相应的显示信号,程序利用状态机实现总体的控制,状态中用到了7个状态:(stopon1,dooropen,doorclose,doorwait,up1,down1,stop),状态的主要转换如下:设定复位后初始状态是stopon1,然后状态跳转到doorclose,在接收到相应的请求信号时,做出判断,若请求信号的楼层大于当前所在的楼层,则程序跳转到up1状态,小于则跳转到down1状态,如果请求信号的楼层与当前楼层相同时,则开门进入dooropen 状态,然后到开门延迟状态doorwait,然后再到doorclose状态,上升和下降的过程中判断电梯是否到达指定的楼层,若到达,则程序进入stop状态,然后到开门->延时->关门,进而做判断。
状态转移图如下:各个状态线表示的内容如下: 1初始化2 初始化后电梯进入工作状态,起始是关门状态3 没有任何信号输入时,电梯始终工作在关门状态4 电梯接收到信号,且请求信号大于当前楼层5 电梯上升后到达指定楼层时停止1161092stopon1 dooropenup1stopdoorwait1doorclosedown1 345876 电梯停止后便开门7 延时等待乘客搭乘电梯或者走出电梯 8 等待时间结束后电梯关门9 电梯接收到信号,且请求信号小于当前楼层 10 电梯下降到指定楼层后停止11 电梯接受的信号与当前楼层相同则开门控制原理图:分块设计:程序中主要分了3个模块:分频模块,状态控制,状态显示,其中状态显示分成了信号灯显示部分和点阵显示部分,因为一开始对点阵的显示比较生疏,所以点阵显示模块是后来才在总的程序中加入的。
Verilog~HDL~电梯程序
这个程序不需要你再添加任何的程序,你只需要添加楼层数就可以成功控制6层以上电梯,另外你必须得读懂每一块程序的作用,才能对这个程序有更好的应用module dtsj(clk,reset,up1,up2,up3,up4,up5,dn2,dn3,dn4,dn5,dn6,d1,d2,d3,d4,d5,d6,overw,pro,led,hex,Buzzer1,lig);input clk,reset; //reset键使用keyinput overw,pro,up1,up2,up3,up4,up5,dn2,dn3,dn4,dn5,dn6,d1,d2,d3,d4,d5,d6; //故障警报键output[6:0] hex,lig; //light和led用数码管output[5:0] led;output Buzzer1;reg Buzzer1,door;reg[6:0] hex,lig;reg[2:0]state,next_state,count;reg[5:0] d,up,dn,now_f,curr,led; //d是部按键,up外部上升按键,dn是外部下降按键,//now_f是当前楼层,curr是当前楼层的另外一个变量reg[1:0] ud_f; //上升下降标志位reg light;//reg[29:0] counter;//regclkout;parameteridle_state=3'b001,open_state=3'b010,close_state=3'b011,up_state=3'b100,down_state=3'b101,sleep_state=3'b110,alarm_state=3'b111,f1=6'b000001,f2=6'b000010,f3=6'b000100,f4=6'b001000,f5=6'b010000,f6=6'b100000,up_f=2'b01,dn_f=2'b10,idle=2'b00;//jiuzhongzhuangtai he shang sheng zhuang tai 'shang sheng zhuang tai he xiajiazhuang taiinitialbeginstate<=idle_state;endalways (posedgeclk or posedge reset)if(reset)state<=idle_state;elsestate<=next_state;always (state or up or dn or d or now_f or count or ud_f)case(state)open_state:beginif(count<5)elsenext_state=close_state;endsleep_state:beginif((up||dn||d||ud_f)==0)beginnext_state=close_state;endelsenext_state=idle_state;endidle_state: // 初始状态beginif((up||dn||d||ud_f)==0)next_state=sleep_state;if(!overw||pro==1)next_state=alarm_state;else if(d>0)beginif((d&now_f)>0)next_state=open_state;else if(d>now_f)next_state=up_state;elsenext_state=down_state;endelse 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;elsenext_state=idle_state;endup_state:beginif((up||dn||d||ud_f)==0)next_state=sleep_state;if(!overw||pro==1)next_state=alarm_state;else if((d&now_f)||(up&now_f))else if((d>now_f)||(up>now_f))next_state=up_state;else if((d<now_f)||(up<now_f)) //else if(d||up) wait speak next_state=down_state;else if(dn>0)beginif(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;elsenext_state=down_state;endelsenext_state=idle_state;enddown_state:beginif((up||dn||d||ud_f)==0)next_state=sleep_state;else if(!overw||pro==1)next_state=alarm_state;else if((d&now_f)||(dn&now_f))next_state=open_state;elseif(((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)beginif (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;elsenext_state=up_state;endnext_state=idle_state;endclose_state:beginif((up||dn||d||ud_f)==0)next_state=sleep_state;else if(!overw||pro==1)next_state=alarm_state;else if(ud_f==up_f)beginif((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)beginif(dn>now_f)next_state=up_state;else if((dn&now_f)>0)next_state=open_state;elsenext_state=down_state;endelsenext_state=idle_state;endelse if(ud_f==dn_f)beginif((d&now_f)||(dn&now_f))next_state=open_state;elseif(((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)beginif(up<now_f)next_state=down_state;else if((up&now_f)>0)next_state=open_state;next_state=up_state;endelsenext_state=idle_state;endelsebeginif(d>0)beginif((d&now_f)>0)next_state=open_state;else if(d>now_f)next_state=up_state;elsenext_state=down_state;endelse 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;elsenext_state=idle_state;endendalarm_state:beginif(!overw||pro==1)begin//Buzzer1<=1'b1; next_state=open_state;endelsebegin//Buzzer1<=1'b0; if(d>0)beginif((d&now_f)>0)next_state=open_state;else if(d>now_f)next_state<=up_state;elsenext_state=down_state;endelse 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;elsenext_state=idle_state;endenddefault:next_state<=idle_state;endcasealways (up1 or up2 or up3 or up4 or up5)up ={1'b0,up5,up4,up3,up2,up1};always (dn2 or dn3 or dn4 or dn5 or dn6)dn ={dn6,dn5,dn4,dn3,dn2,1'b0};always (d1 or d2 or d3 or d4 or d5 or d6)d ={d6,d5,d4,d3,d2,d1};always (posedgeclk or posedge reset)beginif(reset)count<=0;else if((next_state==open_state)&&(count<5)) count<=count+1;elsecount<=0;endalways (posedgeclk or posedge reset )//always (reset or next_state)if(reset)beginnow_f<=f1;ud_f<=idle;led<=6'b000001;light<=1'b0;endelsebeginnow_f<=now_f;curr=now_f;case(next_state)idle_state:beginnow_f<=now_f;ud_f<=idle;led<=led;curr<=now_f;Buzzer1<=1'b0; endup_state:beginnow_f<=now_f<<1;ud_f<=up_f;led<=led+1;curr<=now_f;enddown_state:beginnow_f<=now_f>>1;ud_f<=dn_f;led<=led+1;curr<=now_f;endopen_state:beginnow_f<=now_f;ud_f<=ud_f;led<=led;door<=1'b1;light<=door;curr<=now_f;endclose_state:beginnow_f<=now_f;ud_f<=ud_f;led<=led;curr<=now_f;door<=1'b0;light<=door;endalarm_state:beginnow_f<=now_f;。
基于VHDL的电梯控制系统设计
VHDL数字系统设计与测试实验报告基于VHDL的电梯控制系统设计一、设计背景及说明随着高层建筑的不断涌现,对电梯的需求也与日俱增,电梯已经成为我们日常生活中不可缺少的部分,稳定可靠性高的电梯系统成为了电梯领域的新需求。
现在基于VHDL硬件描述语言,用FPGA为控制芯片控制完成一个简单的6层楼的电梯控制系统设计。
我们常见的电梯控制系统功能都包括:上升请求、下降请求、电梯门控、楼层显示灯、电梯运动方向显示、超载、报警、电梯内请求信号等。
根据这些常用的信号设计一个电梯系统,实现所要求的功能。
控制方式的选择:1)内部请求优先控制方式内部请求控制方式类似于出租车的工作方式,先将车上的人送至目地,再去载客。
作为通用型电梯应该服务于大多数人,必须考虑电梯对内外请求的响应。
在内部请求优先控制方式中,当电梯外部人的请求和电梯内部人的请求冲突时,外部人的请求信号可能被长时间忽略,因为它不能作为通用型电梯的设计方案。
2)单层层停控制方案单层层停控制方式等同于火车运行方式,遇到站即停止、开门。
这种方案保证所有的人的请求都能得到响应。
然而这样对电梯的效率产生了消极的影响:不必要的等待消耗了大量时间,而且电梯的运作与用户的请求无关,当无请求时电梯也照常跑空车,浪费了大量的电能。
对于用户而言这种控制方式的请求响应时间也不是很快,因而也不是理想的电梯控制设计方案。
3)方向优先控制式方式方案方向优先控制是指电梯运行到某一层楼时,先考虑这一层楼是否有请求:有则停止;无则继续上升或者下降。
停止后再启动时,考虑上方或者下方是否有请求,有则继续前进,无则停止。
检测后方是否有请求,有请求则转向运行,无请求则维持停止状态。
这种运作方式下,电梯对用户的请求相应率为100%,而且响应的时间较短。
方向优先控制方式的效率远远大于单向层层停等控制方式的效率。
而且,方向控制方式下,电梯在维持停止状态的时候可以进入省电模式,又能节省大量的电能。
在本设计中采用方向优先控制方式。
VHDL项目设计“三层电梯控制系统”
VHDL项目设计“三层电梯控制系统”三层电梯控制系统是一种常见的嵌入式系统,用于控制电梯的运行和停止。
它由三层楼、一台电梯和一组控制器组成,通过控制器对电梯的动作进行控制。
本文将介绍一个基于VHDL的三层电梯控制系统的设计。
首先,我们需要定义系统的输入和输出。
对于一个三层电梯控制系统,输入可以包括三个楼层传感器的信号、电梯内部的按钮信号以及电梯的当前位置。
输出可以包括电梯的运行方向、电梯门的开关状态以及电梯运行的目标楼层。
接下来,我们需要设计电梯运行的逻辑。
电梯可以向上或向下运行,它可以根据当前位置和目标楼层来确定下一步的动作。
例如,如果当前位置在一楼,目标楼层在三楼,电梯应该向上运行。
如果当前位置在三楼,目标楼层在一楼,电梯应该向下运行。
我们可以使用状态机的方法来实现这种逻辑。
在控制器的设计中,我们可以使用三个传感器来检测电梯的位置。
当电梯到达一些楼层时,传感器会发出一个信号,控制器会根据这个信号来更新电梯的当前位置。
控制器还需要检测电梯内部按钮的信号,并根据按钮的输入来确定电梯的目标楼层。
例如,如果电梯内部的按钮被按下,控制器会将目标楼层设置为当前所在楼层。
如果一些楼层的按钮被按下,控制器会将目标楼层设置为该楼层。
最后,我们需要定义电梯门的开关逻辑。
当电梯到达目标楼层时,它的门应该打开,当电梯离开目标楼层时,它的门应该关闭。
可以使用一个门状态变量来跟踪电梯门的状态,并根据电梯的位置和目标楼层来更新该变量。
通过以上的设计,我们可以实现一个基于VHDL的三层电梯控制系统。
这个系统可以根据输入信号来确定电梯的动作,包括电梯的运行方向,电梯门的开关状态以及电梯运行的目标楼层。
这个系统可以实时更新电梯的状态,以实现精确的电梯控制。
综上所述,VHDL项目设计的“三层电梯控制系统”是一个基于嵌入式系统的设计,通过控制器对电梯的运行和停止进行控制。
这个系统的设计包括电梯运行逻辑、控制器的设计以及电梯门的开关逻辑。
电梯控制器的VHDL程序设计与仿真
论文题目:电梯控制器的VHDL程序设计与仿真专业:微电子学本科生:陈伟伟(签名)___________指导教师:岳改丽(签名)___________摘要本设计(改为论文)主要介绍了基于FPGA设计的五层电梯控制器,采用VHDL语言进行编译,并进行了电路综合和仿真。
该控制器具备了FPGA芯片的硬件体积小、实时性好、工作效率高、提高系统的集成度等特点且遵循方向优先的原则,提供五个楼层多个用户的载客服务,并指示电梯的运行情况。
本设计的亮点是使用状态机的方法来完成电梯的几个运行状态。
(改,)将主控制器的状态分为6种,停止、等待、上升、连续上升、下降及连续下降,状态的划分与楼层无关(增加,)因此具有很强的通用性。
本课题试验调试平台是Altera公司的Quartus Ⅱ软件和EDA实验开发系统。
(改,)通过程序的调试和(改、)运行及仿真表明本设计可以完成电梯所在楼层显示和电梯运行方向指示。
关键字:FPGA,VHDL,电梯控制器,状态机大红色要删去,下同Subject: The study and simulation of elevator controller based on VHDL Specialty: MicroeletronicsName: Weiwei Chen (Signature) ___________ Instructor: G aili Yue (Signature) ___________ABSTRCTThis design introduces the five floors elevator controller compiled with VHDL and the synthesis and simulation of the circuit. The controller follows the direction of the principle of priority, to provide the service of multiple users, and indicates the operation of the lift. This controller has FPGA chip compact hardware, good real-time, high efficiency, improve the system integration characteristics .Using state machine is a strong point of this design. The main controller is divided into six states. The state has nothing to do with floors, so it has a strong common use. The debugging platform of this topic is Altera QuartusⅡsoftware and EDA experiment development system. Through the process of debugging、running and the simulation shows that this design can finish the function of the elevator direction and floor’s display.KEY WORDS: FPGA, VHDL, Elevator Controller, State Machine目录1绪论 (1)1.1 选题的背景 (1)1.2 电梯控制器的研究背景 (1)1.3 我国电梯的发展状况 (1)1.4 电梯设计的具体目的及控制要求..................................................................... .2 2设计基础依据(改为工具介绍). (4)2.1EDA技术介绍 (4)2.2FPGA简介 (6)2.2.1EDA实验开发平台 (7)2.2.2 EP2C5核心板(字号?) (7)2.3硬件描述语言 (8)2.3.1VHDL和VerilogHDL比较 (8)2.3.2VHDL语言的基本特点 (8)2.3.3 VHDL的设计流程 (9)2.3.4 VHDL程序的基本结构 (9)2.3.5 状态机的简介 (10)2.4 QuartusII软件介绍 (11)3电梯控制器的设计及仿真 (14)3.1 电梯及电梯控制器的功能简介 (14)3.1.1 电梯的机械组成 (14)3.1.2电梯控制器的工作原理 (15)3.2 电梯控制器的程序设计 (15)3.2.1 电梯的总体控制思想 (16)3.2.2 电梯控制器的程序流程图 (17)3.2.3模块设计与实现 (18)3.3程序调试与下载 (28)3.3.1 程序调试 (28)3.3.2从设计文件到目标器件的下载 (29)3.3.3 加载及显示结果 (29)结论 (33)致谢.................................................................................... 错误!未定义书签。
电梯控制器报告(Verilog实现)
华中科技大学课程设计报告数字电路与逻辑设计课程设计报告题目:电梯控制器的设计与实现专业:计算机科学与技术班级:学号:姓名:电话:邮件:****************分组:完成日期:2015.10.8指导教师:华中科技大学课程设计报告不建议采用本报告所采用的设计方案(异步时序),因为这样的实现过于复杂且难以调试。
建议仅采用统一的CLK作为always语句的更新条件,以实现同步时序的电路。
华中科技大学课程设计报告目录1课程设计概述 (5)1.1课设目的 (5)1.2课设要求 (5)1.3课设任务 (5)1.4实验环境 (5)2基本方案设计 (7)2.1设计需求 (7)2.2总体结构设计 (8)2.2.1时钟分频 (8)2.2.2七段译码器显示模块 (8)2.2.3电梯请求控制模块 (8)2.2.4电梯开关门控制模块 (9)2.2.5电梯运行总控模块 (9)2.2.6电梯单次运行模块 (9)2.2.7LED灯控制模块 (9)2.3详细设计 (10)2.3.1时钟分频 (10)2.3.2七段译码器显示 (10)2.3.3电梯请求控制模块 (10)2.3.4电梯开关门控制模块 (12)2.3.5电梯运行总控模块 (14)2.3.6电梯单次运行模块 (14)2.3.7LED灯控制模块 (14)2.4实验过程与调试 (15)2.4.1仿真结果 (15)2.4.2主要故障与调试 (32)华中科技大学课程设计报告2.4.3模块内部图 (33)2.5功能测试 (42)2.5.1手动开关门测试 (42)2.5.1重置功能测试 (44)2.5.1常规使用测试 (46)3总结与心得 (50)3.1课设总结 (50)3.2课设心得 (50)参考文献 (52)附录(源程序) (53)华中科技大学课程设计报告1课程设计概述1.1课设目的通过硬件描述语言Verilog的编程,深入了解并掌握可编程芯片PLD的设计技术,加强学生对《数字逻辑》课程所学知识综合利用的能力。
用VHDL语言设计电梯控制器
石家庄经济学院数字逻辑课程设计报告题目电梯控制器的设计姓名 meng hao学号班号 3 班指导老师成绩2011年6月目录1. 课程设计目的····························2.········································································································设计任务3.········································································································开发工具选择·································3. 设计方案······························4.模块描述······························5. VHDL实现······························6. 调试仿真······························7. 课程设计回顾总结·························参考文献······························1. 课程设计目的1) 使学生更好地巩固和加深对基础知识的理解,学会设计中小型数字系统的方法,独立完成调试过程,增强学生理论联系实际的能力,提高学生电路设计和分析的能力。
(完整word版)Verilog语言设计电梯控制器文档.docx
1)、需求分析;1、问题描述与要求:用 Verilig 语言设计一个电梯控制器,通过实验板对设计进行演示;要求楼层的高度大于等于6,并且所设计的电梯调度算法满足提高服务质量、降低运行成本的原则。
BACK2)、系统描述;1、设定电梯控制器适用的楼层为8 层.2、在电梯的内部有一个控制面板,它负责按下请求到的楼层,并且显示当前尚未完成的目的地请求 , 当到达该楼层以后自动撤销本楼层的请求,即将面板灯熄灭 .3、除 1 层和 7 层分别只有上 / 下按钮外,每个楼层(电梯门口旁)的召唤面板都有两个按钮,分别指示上楼和下楼请求。
当按下后,对应按钮灯亮。
如果电梯已经到达该楼层,按钮灯熄灭。
4、电梯的外部面板会显示电梯当前所在的楼层 ,及上行还是下行 (暂停显示刚才运行时的状态 ). 当电梯在运行时 ,对应的楼层灯间固定显示一段时间进入下一楼层 ;在暂停时 ,灯一直在该楼层保持亮的状态。
5、电梯调度方案:电梯向一个方向运行时,只对本方向前方的请求进行应答,直到本方向前方无请求时,才对反方向的请求进行应答。
当前内部控制面板上有的请求, 只要经过所在楼层均会立即响应 . 在所有内部外部请求都已完成后,电梯转入等待。
电梯模型:(如下附图)第7 层第6层第5层第4层第3层第2层第1层电梯内部的控制面板,显示信息有:电梯当前的位置和电梯当前的运行方向(上\下),以及请求到达的楼层控制信息有:请求要到达的目的楼层电梯每楼层的召唤按钮面板,显示信息有:当前电梯所在位置(楼层)和电梯的运行方向(上\下)控制信息:使用电梯的请求(向上或向下)BACK************************************************************3)、算法设计;1、电梯基本组成部分及其实现:(1)FLOOR: 记录电梯所处楼层的记数器.用模8计数器实现,由001~111的加减记数来表示电梯所在楼层的变化.(2)RB: 电梯运行状态寄存器组.用一位寄存器来表示电梯当前是运行还是暂停,再用一位寄存器表示当前或刚才的运行方向,这样就可以在电梯停止时也可以判断电梯刚才的状态,从而确定下个时刻电梯的后续方向.对于FLOOR ,我们通过三个 LED 显示 .(3)RC: 电梯目的地信息寄存器,记录电梯还有哪些要去楼层的任务.每个楼层对应一个状态触发器,同时控制一个LED 显示.(4)RD:各个楼层召唤信息寄存器,它记录了各楼层还有哪些向上向下的请求.每个楼层对应两个状态触发器,同时控制两个LED 显示向上向下请求.(5)CALL: 电梯各个楼层的召唤面板,用户通过它发出向上向下的请求;(6)DESTINATION: 电梯目的地指定命令面板,用户通过它申请要去的楼层;(7)CONTRAL: 电梯的集中控制器。
电梯控制器Verilog语言
数字系统设计大作业题目:电梯控制器姓名:温庆学号:031241214班级:0312412指导老师:黄双林摘要 (3)正文 (4)1设计目的及要求 (4)2设计原理 (4)2.1 设计实现原理 (4)2.2项目分块及其实现方案 (6)2.3电梯控制器的流程图 (7)3设计内容 (8)3.1基本状态设计 (8)3.2模块设计 (9)3.3波形仿真 (10)总结与致谢 (14)参考文献 (15)附录 (16)电梯作为垂直方向的交通工具,在高层建筑和公共场所已成为不可或缺的设备。
中国是全球最大的电梯市场,也具有最强的电梯生产能力,但由于缺乏自主知识产权和核心技术,自主品牌占市场的份额很少。
因此要加大对电梯技术的创新和发展,提升电梯的性能,就需要引进更好的技术,电梯控制器就是很好的装置,大力开发控制器是很必要的。
电梯的微机化控制主要有以下几种形式:PLC控制;单片机控制;单板机控制;单微机控制;多微机控制;人工智能控制。
本次课程设计采用了EDA技术进行操作EDA技术打破了软件和硬件间的壁垒,使计算机的软件技术与硬件实现、设计效率与产品性能合二为一,它代表了电子设计技术和应用技术的发展方向。
本设计采用Verilog HDL语言的编程技术,源程序Altera公司的Quartus II 软件仿真。
关键字:EDA技术; Verilog HDL语言; Quartus II软件1设计目的及要求1、进一步巩固理论知识,培养所学理论知识的在实际中的应用能力;掌握EDA设计的一般方法;熟悉一种EDA软件,掌握一般EDA系统的调试方法;利用EDA软件设计一个电子技术综合问题,培养Verilog HDL编程、书写技术报告的能力。
为以后进行工程实际问题的研究打下设计基础。
2、设计一个6层电梯控制器电路,用数码管显示电梯所在楼层号,电梯初始状态为第一楼层;每楼层电梯外都有上、下楼请求开关,电梯内设有乘客到达楼层的请求开关、电梯所处楼层、上升模式及下降模式的指示;电梯每2秒升降一层,到达有停站请求的楼层后,经4秒电梯门打开,开门指示灯亮,开门4秒后,指示灯灭,关门,关门时间3秒,电梯继续运行。
专业综合课程设计基于VHDL的电梯控制器设计
目录一、设计题目 (1)二、设计目的 (1)三、设计要求 (1)四、设计的基础依据 (1)(一)FPGA芯片介绍 (1)(二)VHDL语言介绍 (2)五、电梯控制器的基本设计原理 (3)(一)电梯控制器的工作原理 (3)(二)电梯控制器的设计 (6)七、参考文献 (9)附录1、VHDL源代码 (10)附录2、三层电梯的电路总图 (16)一、设计题目基于VHDL的三层电梯控制器设计二、设计目的掌握电梯控制器的工作原理,对系统进行基于VHDL的设计与实现。
三、设计要求1、阐述电梯控制器系统工作原理2、画出电梯控制器的结构方框图3、基于VHDL的设计实现4、写出详细的设计报告四、设计的基础依据(一)FPGA芯片介绍FPGA是Field-Programmable Gate Array(现场可编程门阵列)的缩写,它是在PAL、GAL、CPLD等可编程器件的基础上进一步发展的产物。
它是专用集成电路中一种半定制电路。
具克服了传统可编程器件数有限的缺点,又具有可编程的特点。
FPGA器件是由美国XILINX公司于1985年首先推出。
一般把FPGA定义为基于查找表技术(LOOK-UP Tablc,LUT)和SRAM工艺的PLD,目前的FPGA已远超出先前产品的基本功能,并且整合了许多常用功能( 如RAM、时钟管理和DSP),在新型的的系统级可编程逻辑器件中还可以以IP核的形式来进行功能设计,或许只需要一块FPGA芯片就可以实现所有功能,成为片上系统。
FPGA芯片的结构如图4-1所示。
图4-1 FPGA芯片结构图近几年来FPGA有了很快的发展,按照传统观点,FPGA仅用于产品原型设计和ASIC的验证,用于大规模的数字系统开发就过于昂贵且功耗巨大。
随着FPGA 的研究突破了低功率、低成本和先进工艺的瓶颈后,FPGA的应用领域日益扩张,随着功能和性能的进一步提高,FPGA应用领域已成可编程逻辑领域扩展到了高性能DSP、高性能嵌入式等领域。
三层电梯控制器实验报告
三层电梯控制器实验报告实验报告:三层电梯控制器一、实验目的本次实验的目的是设计一个能够控制三层电梯的控制器。
通过这个实验,我们可以掌握基本的电梯控制原理,并能够实现电梯的运行、停靠以及乘客上下楼的功能。
同时,通过设计和搭建电梯控制器系统,提升我们的实践操作能力和创新能力。
二、实验原理1.电梯的基本原理电梯的运行基于电动机的驱动和控制,具体来说,电梯的上升和下降是由电动机的旋转方向控制的。
电动机的转向又由控制器控制,控制器通过感应电梯的位置和方向,向电动机发送控制信号,从而实现电梯的运行。
2.电梯控制器的设计电梯控制器是由多个组件组成的系统,包括控制面板、按钮、传感器以及控制器主板等。
控制器主板负责接收传感器信号、处理输入信号、控制电动机运行等功能。
而控制面板和按钮则用于输入电梯运行的指令。
控制器主板的核心是一个单片机,通过编写程序控制电动机的运行、接收输入信号、处理信号等。
其中,传感器用于感应电梯的运动状态和位置,将信号发送给控制器主板。
控制面板和按钮通过线路连接到控制器主板,将输入的指令传递给控制器主板。
三、实验器材和仪器1.模拟电梯2.控制器主板3.控制面板4.按钮5.传感器6.电动机7.电源四、实验步骤和方法1.搭建电梯控制器系统首先,我们需要将控制面板、按钮、传感器和电动机连接到控制器主板上。
具体连线可以参考电梯控制器的电路图进行连接。
2.编写控制器的程序通过编写程序控制电梯的运行、接收输入信号、处理信号等。
程序需要根据传感器的信号来判断电梯的状态和位置,并根据输入的指令来控制电动机的运行。
3.进行实验测试将输入信号输入控制面板和按钮,观察电梯的运行情况,验证电梯控制器的正确性和可靠性。
五、实验结果和分析通过对电梯控制器的搭建和测试,我们成功实现了电梯的正常运行、停靠以及乘客上下楼的功能。
实验结果表明,电梯控制器设计合理,能够准确地根据输入指令来控制电梯的运行。
六、实验总结通过本次实验,我们学习了基本的电梯控制原理,并通过设计和搭建电梯控制器系统,提升了我们的实践操作能力和创新能力。
Verilog-HDL-电梯程序
这个程序不需要你再添加任何的程序,你只需要添加楼层数就可以成功控制6层以上电梯,另外你必须得读懂每一块程序的作用,才能对这个程序有更好的应用module dtsj(clk,reset,up1,up2,up3,up4,up5,dn2,dn3,dn4,dn5,dn6,d1,d2,d3,d4,d5,d6,overw,pro,led,hex,Buzzer1,lig );input clk,reset; //reset键使用keyinputoverw,pro,up1,up2,up3,up4,up5,dn2,dn3,dn4,dn5,dn6,d1,d2,d3, d4,d5,d6; //故障警报键output[6:0] hex,lig; //light和led用数码管output[5:0] led;output Buzzer1;reg Buzzer1,door;reg[6:0] hex,lig;reg[2:0]state,next_state,count;reg[5:0] d,up,dn,now_f,curr,led; //d是内部按键,up外部上升按键,dn是外部下降按键,//now_f是当前楼层,curr是当前楼层的另外一个变量reg[1:0] ud_f; //上升下降标志位reg light;//reg[29:0] counter;//reg clkout;parameteridle_state=3'b001,open_state=3'b010,close_state=3'b011, up_state=3'b100,down_state=3'b101,sleep_state=3'b110,alarm_state=3'b111,f1=6'b000001,f2=6'b000010,f3=6'b000100,f 4=6'b001000,f5=6'b010000,f6=6'b100000,up_f=2'b01,dn_f=2'b10,idle= 2'b00;//jiu zhong zhuang tai he shang sheng zhuang tai 'shang sheng zhuang tai he xia jia zhuang taiinitialbeginstate<=idle_state;endalways @(posedge clk or posedge reset)if(reset)state<=idle_state;elsestate<=next_state;always @(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;elsenext_state=close_state;endsleep_state:beginif((up||dn||d||ud_f)==0)beginnext_state=close_state;endelsenext_state=idle_state;endidle_state: // 初始状态beginif((up||dn||d||ud_f)==0)next_state=sleep_state;if(!overw||pro==1)next_state=alarm_state;else if(d>0)beginif((d&now_f)>0)next_state=open_state;else if(d>now_f)next_state=up_state;elsenext_state=down_state;endelse 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;elsenext_state=idle_state;endup_state:beginif((up||dn||d||ud_f)==0)next_state=sleep_state;if(!overw||pro==1)next_state=alarm_state;else 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<now_f)||(up<now_f)) //else if(d||up) wait speaknext_state=down_state;else if(dn>0)beginif(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;elsenext_state=down_state;endelsenext_state=idle_state;enddown_state:beginif((up||dn||d||ud_f)==0)next_state=sleep_state;else if(!overw||pro==1)next_state=alarm_state;else if((d&now_f)||(dn&now_f))next_state=open_state;elseif(((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)beginif (up<now_f)next_state=down_state;else if((up&now_f)&&(now_f>f1))else if((up&now_f)&&(now_f==f1)) next_state=open_state;elsenext_state=up_state;endelsenext_state=idle_state;endclose_state:beginif((up||dn||d||ud_f)==0)next_state=sleep_state;else if(!overw||pro==1)next_state=alarm_state;else if(ud_f==up_f)beginif((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)else if(dn>0)beginif(dn>now_f)next_state=up_state;else if((dn&now_f)>0)next_state=open_state;elsenext_state=down_state;endelsenext_state=idle_state;endelse if(ud_f==dn_f)beginif((d&now_f)||(dn&now_f))next_state=open_state;elseif(((d<now_f)&&(d!=6'b000000))||((dn<now_f)&&(dn!=6'b000000 )))next_state=down_state;else if(d||dn)else if(up>0)beginif(up<now_f)next_state=down_state;else if((up&now_f)>0)next_state=open_state;elsenext_state=up_state;endelsenext_state=idle_state;endelsebeginif(d>0)beginif((d&now_f)>0)next_state=open_state;else if(d>now_f)next_state=up_state;elsenext_state=down_state;endelseif((up&now_f)&&(dn&now_f))next_state=open_state; elseif((up>now_f)&&(dn>now_f))next_state=up_state;else if(up||dn)next_state=down_state; elsenext_state=idle_state; endendalarm_state:beginif(!overw||pro==1)begin//Buzzer1<=1'b1;next_state=open_state;endelsebegin//Buzzer1<=1'b0;if(d>0)beginif((d&now_f)>0)next_state=open_state;else if(d>now_f)next_state<=up_state;elsenext_state=down_state;endelse 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;elsenext_state=idle_state;endenddefault:next_state<=idle_state;endcasealways @(up1 or up2 or up3 or up4 or up5)up ={1'b0,up5,up4,up3,up2,up1};always @(dn2 or dn3 or dn4 or dn5 or dn6)dn ={dn6,dn5,dn4,dn3,dn2,1'b0};always @(d1 or d2 or d3 or d4 or d5 or d6)d ={d6,d5,d4,d3,d2,d1};always @(posedge clk or posedge reset)beginif(reset)count<=0;else if((next_state==open_state)&&(count<5)) count<=count+1;elsecount<=0;endalways @(posedge clk or posedge reset )//always @ (reset or next_state)if(reset)beginnow_f<=f1;ud_f<=idle;led<=6'b000001;light<=1'b0;endelsebeginnow_f<=now_f;curr=now_f;case(next_state)idle_state:beginnow_f<=now_f;ud_f<=idle;led<=led;curr<=now_f;Buzzer1<=1'b0;endup_state:beginnow_f<=now_f<<1;led<=led+1;curr<=now_f;enddown_state:beginnow_f<=now_f>>1; ud_f<=dn_f;led<=led+1;curr<=now_f;endopen_state:beginnow_f<=now_f;ud_f<=ud_f;led<=led;door<=1'b1;light<=door;curr<=now_f;endclose_state:beginud_f<=ud_f;led<=led;curr<=now_f;door<=1'b0;light<=door;endalarm_state:beginnow_f<=now_f; ud_f<=ud_f;led<=led;Buzzer1<=1'b1; curr<=now_f;door<=1'b1;light<=door;endsleep_state:beginnow_f<=now_f; ud_f<=ud_f;led<=6'b000000;enddefault:beginnow_f<=f1;ud_f<=idle;led<=led;endendcaseendalways @ (curr)begincase(curr)6'b000001: hex=7'b1111001; //数码管共阴共阳 6'b000010: hex=7'b1000100;6'b000100: hex=7'b0110000;6'b001000: hex=7'b0011001;6'b010000: hex=7'b1101101;6'b100000: hex=7'b1111101;default:hex=7'b0000000;endcaseendalways @(light)begincase(light)1'b0: lig=7'b1000000; //1'b1: lig=7'b1000000;1'b1: lig=7'b1111001;default:light=7'b0000000;endcaseend//分频程序/*always @ (posedge clk)beginif( counter[29:0] == 24999999)begin //每计到4个(0~3)上升沿,输出信号翻转一次counter <= 0;clkout <= ~ clkout;endelsecounter[29:0] <= counter[29:0] + 1'b1;end*/ endmodule。
基于Verilog的I 2C控制器的设计与综合
Vo .9 11
No 1 .9
电 子 设 计 工 程
Elc r n c De i n En i e rn e to i sg g n e i g
21 年 1 01 O月
Oc .2 t 011
基 于 V rlg的 I ei o 2 控制 器 的设计 与综合 C
o d r s ,I t h d a d t e n l z e r c ie aa, c o d n aa r c ie o t eb st o to e p e as wn a d e s fi ma c e n h n a ay et e ev d d t a c r ig t d t e ev d f m u oc n r l r h r l. t h o r h pi
(. epe S ieai r yTop , i jn3 0 3 ,C ia 1P ol’ Lbrt nA m ro s Ta i 0 10 hn ; o n 2 N a hn ntueo eop c , aga g0 5 0 , i ) . o hC iaIsi t fa rsae Ln f t n 600 C n h a
Fn l n tepe aaino sb n h i d li s lt ni 2 u os n aat h o fteI lv o t l r ia y.i h rp rt ft ta c n mo esm i ai nIC b st e d d t otetpo h 2 sa ec nr l l o e mu o C oe
De in a d s n h sso c nt o lr b s d o v r l g sg n y t e i fPC o r le a e n e i o
单电梯微控器设计方案FPGA课程设计方案报告
题目:单电梯微控器设计院系:电子工程学院专业班级:微电子0901学生姓名:张宏伟导师姓名:黄海生起止时间:2012/6/18至2012/6/29年月日FPGA课程设计报告提纲1.任务设计一个单电梯微控器,用FPGA开发板的按键作为手动上下设置开关,led指示当前所在楼层,数码管显示当前电梯工作状态(上/下/停)。
2.目的3.使用环境 (软件/硬件环境,设备等)4.FPGA课程设计详细内容4.1 技术规范4.1.1 功能定义(1).异步复位,复位信号与时钟信号不同步(2).分频器把基准时钟(50HZ)分成10HZ,即0.1秒便于人眼观察,设计0.1-0.3秒钟电梯上升或下降一个楼层(3).用三个拨码开关设置选择楼层,三个开关可以实现7层楼的设计,拨001为楼层第1层,以后以此类推,最高可达111第7层(4).用led显示当前选中的楼层,选中某层时,当层的led亮,当电梯降至或升至所选楼层时led灯一直亮(采用独热码)(5).使用数码管显示电梯状态,上升状态显示“U”,下降状态显示“D”,显示“S”为停止状态,停止时间用第二次输入为准(6).手动设置电梯工作状态,key1为上升,key2为下降状态(7).上电复位时电梯初始状态调为第一层(8).当电梯到第1时下降按键key2无效,当电梯到第7层时上升按键key1无效(9).电梯运行时可以选择要去的中间楼层,当电梯没有选择所要去的楼层时,上升/下降按键无效34.1.2 系统结构框图总体设计可以分为以上几个模块,各模块的功能简要介绍:1.div模块:把基准时钟(50MHZ)分成1HZ输出2.elevator_state模块:用于总的实现各种功能,各个模块的输入都有此模块进行分析输出3.display1模块:用于产生拨码开关的输入值,以方便知道所选择的楼层是多少4.display模块:实现电梯的工作状态,上升/下降/停止5.led模块:显示当前所在楼层,采用独热码,方便显示6.floor_time模块:用于改变楼层上升或下降到相邻楼层的时间,由于给的count给的为数较少,故只能实现0.1-0.3秒任意值,如果还想实现更长的时间则需要改变count的位数7.top模块:把所有的模块连在一起4.1.3 应用范围用于控制电梯的运作,可实现上/下/停止等功能。
基于VHDL的四层电梯控制器
四层电梯控制器姓名:***学号:*********指导老师:***实验目的:1、掌握更复杂的VHDL设计。
2、掌握状态机设计方法。
实验环境:EP1C3适配板、装有Quartusii软件的PC机一台。
实验原理:电梯控制器的功能模块如下图所示,包括主控制器、分控制器、楼层选择器、状态显示器、译码器和楼层显示器。
乘客在电梯中选择所要到达的楼层,通过主控制器的处理,电梯开始运行,状态显示器显示电梯的运行状态,电梯所在楼层数通过译码器译码从而在楼层显示器中显示。
分控制器把有效的请求传给主控制器进行处理,同时显示电梯的运行状态和电梯所在楼层数。
由于分控制器相对简单很多,所以主控制器是核心部分。
电梯控制器原理图四层电梯控制器实现的功能及运行规则:○1电梯一层入口处设有上升请求开关,二三层入口处设有上、下请求开关,四层入口处设有下降请求开关,电梯内部设有顾客到达楼层的停站请求开关。
○2每层电梯入口处设有位置指示装置及电梯运行模式 (上升或下降)指示装置。
○3电梯初始状态为一层开门状态。
○4电梯每秒上升(下降)一层楼。
○5电梯到达需要停止的楼层,经过1秒电梯门打开,开门指示灯亮,开门4秒后,电梯门关闭(开门指示灯灭),电梯继续运行,直至执行完最后一个请求信号后停留在当前层。
○6电梯需要寄存器来记忆电梯内外所有请求,并按照电梯运行规则按顺序响应,每个请求信号保留至执行后消除。
○7电梯的运行规则:当电梯处于上升模式时,只响应比电梯所在位置高的上楼请求信号和停站请求信号,由下而上逐个执行,直到最后一个上楼请求执行完毕;如果高层有下楼请求,则直接上升到有下楼请求的最高层,然后进入下降模式。
当电梯处于下降模式时则与上升模式相反。
四层电梯控制器的设计思路:电梯控制器设计两个进程相互配合,状态机进程作为主要进程,信号灯控制进程作为辅助进程。
根据电梯的实际工作情况,可以为状态机设置十个状态,它们分别是“电梯停在一层”“开门”“关门”“开门等待第一秒”“开门等待第二秒”“开门等待第三秒”“开门等待第四秒”“上升”“下降”和“停止”。
转载一个SRAM控制器verilog格式
Sram_State<=WRITE; o_Sram_add<=WADD_Counter; Sram_data_in<={16{1'bz}}; Sram_data_out<=Sram_data_out; o_Sram_CE_n<=0; o_Sram_WE_n<=0; o_Sram_OE_n<=1; o_Sram_UB_n<=0; o_Sram_LB_n<=0; end else begin Sram_State<=READ; o_Sram_add<=RADD_Counter; Sram_data_in<=Sram_data_in; Sram_data_out<={16{1'bz}};
reg
i_StepByStep1;
reg
i_StepByStep2;
reg
i_StepByStep3;
reg
i_StepByStep4;
reg
i_WR_Control1;
reg
i_WR_Control2;
reg
i_WR_Control3;
always @(posedge i_Clock or negedge i_Reset_n) if(~i_Reset_n) Counter_EN<=0; else begin
always @(posedge i_Clock or negedge i_Reset_n) if(~i_Reset_n) RADD_Counter<=15; else begin
if(i_StepByStep4==1 & ~i_WR_Control3) if(RADD_Counter==0) RADD_Counter<=15; else RADD_Counter<=RADD_Counter-1; else RADD_Counter<=RADD_Counter; end
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
华中科技大学课程设计报告数字电路与逻辑设计课程设计报告题目:电梯控制器的设计与实现专业:计算机科学与技术班级:学号:姓名:电话:邮件:****************分组:完成日期:2015.10.8指导教师:华中科技大学课程设计报告不建议采用本报告所采用的设计方案(异步时序),因为这样的实现过于复杂且难以调试。
建议仅采用统一的CLK作为always语句的更新条件,以实现同步时序的电路。
华中科技大学课程设计报告目录1课程设计概述 (5)1.1课设目的 (5)1.2课设要求 (5)1.3课设任务 (5)1.4实验环境 (5)2基本方案设计 (7)2.1设计需求 (7)2.2总体结构设计 (8)2.2.1时钟分频 (8)2.2.2七段译码器显示模块 (8)2.2.3电梯请求控制模块 (8)2.2.4电梯开关门控制模块 (9)2.2.5电梯运行总控模块 (9)2.2.6电梯单次运行模块 (9)2.2.7LED灯控制模块 (9)2.3详细设计 (10)2.3.1时钟分频 (10)2.3.2七段译码器显示 (10)2.3.3电梯请求控制模块 (10)2.3.4电梯开关门控制模块 (12)2.3.5电梯运行总控模块 (14)2.3.6电梯单次运行模块 (14)2.3.7LED灯控制模块 (14)2.4实验过程与调试 (15)2.4.1仿真结果 (15)2.4.2主要故障与调试 (32)华中科技大学课程设计报告2.4.3模块内部图 (33)2.5功能测试 (42)2.5.1手动开关门测试 (42)2.5.1重置功能测试 (44)2.5.1常规使用测试 (46)3总结与心得 (50)3.1课设总结 (50)3.2课设心得 (50)参考文献 (52)附录(源程序) (53)华中科技大学课程设计报告1课程设计概述1.1课设目的通过硬件描述语言Verilog的编程,深入了解并掌握可编程芯片PLD的设计技术,加强学生对《数字逻辑》课程所学知识综合利用的能力。
培养学生创造性思维能力和独立解决实际问题的能力。
1.2课设要求(1)能够全面地应用课程中所学的基本理论和基本方法,完成从设计逻辑电路到设计简单数字系统的过渡。
(2)能力独立思考、独立查阅资料,独立设计规定的系统。
(3)能够独立地完成实施过程,包括安装、布线、测试和排除故障。
1.3课设任务(1)制定出详细设计方案;(2)通过Verilog HDL完成规定的设计任务,然后进行编译和仿真,保证设计的正确性;(3)生成熔丝图文件,下载到Basys2开发板,通过实际线路进行验证;(4)对复杂系统的设计采取模块化、层次化的设计方法;(5)撰写设计报告,并对存在的问题进行分析、提出改进意见。
1.4实验环境(1)开发环境ISE Project NavigatorISE是使用XILINX的FPGA的必备的设计工具。
目前官方提供下载的最新版本是14.4。
它可以完成FPGA开发的全部流程,包括设计输入、仿真、综合、布局布线、生成BIT文件、配华中科技大学课程设计报告置以及在线调试等,功能非常强大。
ISE除了功能完整,使用方便外,它的设计性能也非常好,拿ISE 9.x来说,其设计性能比其他解决方案平均快30%,它集成的时序收敛流程整合了增强性物理综合优化,提供最佳的时钟布局、更好的封装和时序收敛映射,从而获得更高的设计性能。
先进的综合和实现算法将动态功耗降低了10%。
(2)Basys2 开发板Basys2 开发板是一个电路设计实现平台,任何人都可以通过它来搭建一个真正的数字电路。
Basys2是围绕着一个Xilinx Spartan-3E FPGA芯片和一个Atmel AT90USB USB控制器搭建的,它提供了完整、随时可以使用的硬件平台,并且它适合于从基本逻辑器件到复杂控制器件的各种主机电路。
Basys2板上集成了大量的I/O设备和FPGA所需的支持电路,让用户能够构建无数的设计而不需要其他器件。
用户设计可以不局限于Basys2板本身,还可以通过四个标准的扩展连接口延伸到面包板、用户自定义电路或Pmod模板中。
所有6针接口上的信号都受到ESD和短路保护,从而确保在任何环境中的使用寿命。
Basys2开发板兼容所有版本的Xilinx ISE工具。
Basys2附带一个用于供电和编程的USB下载线,所以就不需要其他供电器件或编程下载线。
华中科技大学课程设计报告2基本方案设计2.1设计需求(1)输入:reset(脉冲),电源(总开关),电梯内部楼层按钮(4个,开关),楼层外部的上下按钮(3楼和6楼的用开关,1楼和8楼的用脉冲),开关门(1个,脉冲);(2)输出:楼层显示数码管,计时数码管;电梯运行指示灯(电源),电梯上下指示灯,到达楼层指示灯,开关门状态指示灯(3)电源开关作为电路总清零信号,初始状态为Off;拨动“电源开关”,电梯电路进入工作状态;(4)初态为电梯在1楼;(5)电梯可上可下,如果到达某一层需要停下,则开门后停5s,若停5s期间,按关门键,则立刻关门,否则5s后自动关门。
在楼层数码管显示电梯当前所在的楼层;并用时间数码管显示倒计时;不运行时不显示时间;电梯正在上行或下行时,开关门键失效。
(6)电梯处于某层时,可以选择要到达的楼层,选择本楼层则开门。
选其他层时,点击启动按钮,则电梯开始运行。
(7)每次reset拨到0时,电梯正常运行到1楼停止运行;(8)电源打开,电源指示灯亮;(9)电梯门开时,开关门指示灯亮,否则,灭;(10)电梯上行时,上行指示灯亮,下行指示灯灭;电梯下行时,下行指示灯亮,上行指示灯灭;(11)某一楼层内部有请求时,该楼层led灯亮,当电梯处于该层时,led灯灭,其他情况灭;(12)相邻两层运行时间为9s,并用时间数码管显示倒计时;(13)电梯升降的规律:a.原则1:楼层设置优先。
每个选择的楼层都要停止5秒,然后继续运行。
b.原则2:就近原则。
电梯运行时,按照就近原则来定义电梯的运行方向,例如,电梯在3楼,2楼有乘客要下楼,则电梯下行到2楼,在二楼设置楼层为1楼后,下降到1楼;c.原则3:先上后下。
当上下楼层都有请求时,以及同一楼层既有上又有下请求时,华中科技大学课程设计报告先上后下;2.2总体结构设计本控制器为电梯控制器,主要可分为以下七个模块2.2.1时钟分频本模块根据队友及自己的需求自行分频。
详参队友报告。
2.2.2七段译码器显示模块本模块由队友完成。
详参队友报告。
2.2.3电梯请求控制模块本模块负责生成用户请求链、向LHCM模块发送新一轮活动开始信号和确定系统是否在重置状态。
本模块的输入如下:UserOutsideRequestF1、UserOutsideRequestF8、UserOutsideRequestUpF3、UserOutsideRequestUpF6、UserOutsideRequestDownF3、UserOutsideRequestDownF6、UserInsideRequestF1、UserInsideRequestF3、UserInsideRequestF6、UserInsideRequestF8等负责楼层请求的开关/脉冲;rst,重置按钮信号;CLK_1o20,20HZ的时钟;LiftDirectionUp,电梯运行的方向状态,1表示向上,0表示向下;LiftIsStop,电梯是否处于停止运行状态,1表示停止、0表示运行;LiftCurrentFloor,电梯当前楼层状态,输入共八位,低位到高位的每一位都与低到高楼层一一对应,比如八楼即’b10000000;LFCMRequireNewRound,来自LFCM的请求新一轮的脉华中科技大学课程设计报告冲信号;DoorStateChangedFlag,电梯开关门标志脉冲信号,其中DoorStateChangedFlag[0]是开门脉冲,DoorStateChangedFlag[1]是关门脉冲;DoorStateOpen,电梯是否出于开门状态,1表示开门中,0表示关门中。
本模块的输出如下:LFCMStartNewRound,使LFCM开始新轮活动的脉冲信号;UserOutsideUpSelection_True,用户外部向上请求链,低位到高位与低到高楼层一一对应;UserOutsideDownSelection_True,用户外部向下请求链,低位到高位与低到高楼层一一对应;UserInsideSelection_True,用户内部请求链,低位到高位与低到高楼层一一对应;2.2.4电梯开关门控制模块本模块负责控制电梯门的开关及进行相关动作时输出门的状态和开/关门的标志脉冲信号。
本模块的输入如下:UserOutsideRequestF1、UserOutsideRequestF8、UserOutsideRequestUpF3、UserOutsideRequestUpF6、UserOutsideRequestDownF3、UserOutsideRequestDownF6等外部用户请求开关/脉冲;UserDoorClose,开/关门按钮脉冲信号;CLK_1o20,20HZ的时钟;LiftIsStop,电梯是否处于停止运行状态,1表示停止、0表示运行;LiftCurrentFloor,电梯当前楼层状态,输入共八位,低位到高位的每一位都与低到高楼层一一对应,比如八楼即’b10000000;LERMRequireDoorOpen,来自LERM的请求开门信号。
本模块的输出如下:DoorStateChangedFlag,电梯开关门标志脉冲信号,其中DoorStateChangedFlag[0]是开门脉冲,DoorStateChangedFlag[1]是关门脉冲;DoorStateOpen,电梯是否出于开门状态,1表示开门中,0表示关门中。
2.2.5电梯运行总控模块本模块由队友完成。
详参队友报告。
2.2.6电梯单次运行模块本模块由队友完成。
详参队友报告。
2.2.7LED灯控制模块本模块根据队友及自己各自负责模块的显示需求合作完成。
详参队友报告。
华中科技大学课程设计报告2.3详细设计本电梯控制器由主模块和7个子模块构成,七个子模块是并行的,除了外部输入,其他由网线连接,可以互换传递参数。
图2. 1 系统整体模块框图2.3.1时钟分频流程说明及框图详见队友报告。
2.3.2七段译码器显示流程说明及框图详见队友报告。
2.3.3电梯请求控制模块本模块响应用户的请求控制,根据电梯的实际运行状况决定是否将对应请求加入请求链中,并在电梯门打开时在请求链中清除需要被清除的请求。
此外,当模块接收到来自LHCM的请求新轮活动的信号时,当序列链中加入新的请求后即回馈给LHCM开始新轮活动的信号。