




已阅读5页,还剩11页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
课程设计说明书目 录前言11电梯控制器的设计方案21.1电梯控制器的设计原理21.2三层电梯控制器的设计思路22三层电梯控制器的综合设计32.1三层电梯控制器的实体设计32.2三层电梯控制器的结构体设计33三层电梯控制器VHDL设计44三层电梯控制的仿真54.1Quartus II软件的介绍54.2电梯控制器的仿真64.3硬件测试75设计的扩展性86总结9参考文献10附录1115前言电梯控制器是控制电梯按顾客要求自动上下的装置。本文采用VHDL语言来设计实用三层电梯控制器,其代码具有良好的可读性和易理解性,源程序经A1tera公司的Quartus II软件仿真。通过对三层电梯控制器的设计,可以发现本设计有一定的扩展性,而且可以作为更多层电梯控制器实现的基础。此次课设的内容与要求如下:(1)设计完成多楼层多用户的电梯载客服务控制系统。电梯运行时,能够显示电梯所在位置和电梯运行状态;(2)电梯每秒升(降)一层楼,当电梯到达选择的楼层时,经过1s电梯门打开,开门指示灯亮,开门4s后,电梯关闭,指示灯灭,电梯继续运行,直至执行完最后一个请求信号停在当前层;(3)能记忆电梯外的所有请求信号,按照电梯运行规则次序响应,每个请求信号保留至执行后消除;(4)电梯处于上升状态时,响应上升请求的楼层大于电梯的所在层;电梯处于下降状态时,响应有下降请求的楼层小于电梯的所在层;执行完上升状态时,若更高层有下楼请求,则直接开到下楼请求的最高层接客,然后进入下降模式。(5)先执行完所有的上楼请求再执行下楼请求,抑或先执行完所有的下楼请求再执行上楼请求。1电梯控制器的设计方案1.1电梯控制器的设计原理电梯控制器的功能模块如下图所示,包括主控制器、分控制器、楼层选择器、状态显示器、译码器和楼层显示器。乘客在电梯中选择所要到达的楼层,通过主控制器的处理,电梯开始运行,状态显示器显示电梯的运行状态,电梯所在楼层数通过译码器译码从而在楼层显示器中显示。分控制器把有效的请求传给主控制器进行处理,同时显示电梯的运行状态和电梯所在楼层数。由于分控制器相对简单很多,所以主控制器是核心部分。状态显示器主控制器楼层选择器分控制器译码器楼层显示器图1-1电梯控制器原理图1.2三层电梯控制器的设计思路电梯控制器设计两个进程相互配合,状态机进程作为主要进程,信号灯控制进程作为辅助进程。根据电梯的实际工作情况,可以为状态机设置十个状态,它们分别是“电梯停在一层”“开门”“关门”“开门等待第一秒”“开门等待第二秒”“开门等待第三秒”“开门等待第四秒”“上升”“下降”和“停止”。由于电梯每秒上升或下降一层,则可以用周期为1s的信号来作为电梯状态转换的触发时钟。状态机进程中的很多判断条件是以信号灯控制进程产生的信号灯信号为依据,而信号灯控制进程中信号灯的熄灭又是由状态机进程中传出的信号来控制。2三层电梯控制器的综合设计2.1三层电梯控制器的实体设计 首先考虑输入端口,一个异步复位端口reset,用于在系统不正常时回到初始状态;在电梯外部,必须有升降请求端口,一层是最低层,不需要有下降请求,三层是最高层,不需要有上升请求,二层则上升、下降请求端口都有;在电梯的内部,应该设有各层停留的请求端口:一个电梯时钟输入端口,该输入时钟以1秒为周 期,用于驱动电梯的升降及开门关门等动作;另有一个按键时钟输入端口,时钟频率比电梯时钟高。其次是输出端口,有升降请求信号以后,就得有一个输出端口来指示请求是否被响应,有请求信号以后,该输出端口输出逻辑l。被响应以后则恢复逻辑 0;同样,在电梯内部也应该有这样的输出端口来显示各层停留是否被响应;在电梯外部,需要一个端口来指示电梯现在所处的位置;电梯开门关门的状态也能 用一个输出端口来指示;为了观察电梯的运行是否正确,可以设置一个输出端口来指示电梯的升降状态。2.2三层电梯控制器的结构体设计 首先说明一下状态。状态机设置10了个状态,分别是电梯停留在l层(stoponl)、开门(dooropen)、关门(doorclose)、开门等待 第1秒(doorwaitl)、开门等待第2秒(doorwait2)、开门等待第3秒(doorwait3)、开门等待第4秒(doorwait4)、 上升(up)、下降(down)和停止(stop)。在实体说明定义完端口之后,在结构体architecture和begin之间需要有如下的定义语 句,来定义状态机。 在结构体中,设计了俩个进程互相配合,一个是状态机进程作为主要进程,另外一个是信号灯控制进程作为辅助进程。状态机进程中的很多判断条件是以信号灯进程产生的信号灯信号为依据的,而信号灯进程中信号灯的熄灭又是由状态机进程中传出的clearup和cleardn信号来控制。在状态机进程中,在电梯的上升状态中,通过对信号灯的判断,决定下一个状态是继续上升还是停止;在电梯下降状态中,也是通过对信号灯的判断,决定下一个状态是继续下降还是停止;在电梯停止状态中,判断是最复杂的,通过对信号的判断,决定电梯是上升、下降还是停止。在信号灯控制进程中,由于使用了专门的频率较高的按键时钟,所以使得按键的灵敏度增大,但是时钟频率不能过高,否则容易使按键过于灵敏。按键后产生的点亮的信号灯(逻辑值为1)用于作为状态机进程中的判断条件,而clearup和cleardn信号为逻辑l使得相应的信号灯熄灭。3三层电梯控制器VHDL设计三层电梯控制器的设计主要是对实体和结构体的设计,三层电梯控制器的源代码(见附录),它的VHDL描述模块流程如图所示:元件库的说明定义实体结构体端口状态机进程信号灯控制进程结束按键信号灯图3-1 三层电梯控制器的VHDL描述模块流程本程序设计调用了ieee库,ieee库是VHDL设计中最为常用的库,它包含有ieee标准的程序包和其他一些支持工业标准的程序包。本设计采用了std_logic_1164、std_logic_arith、std_logic_unsigned程序包。 以关键词entity引导,end entity lift结尾的语句部分,称为实体。VHDL的实体描述了电路器件的外部情况及各信号端口的基本性质。本设计定义了关于三层电梯控制器用到的 各类时钟、异步复位按键、信号灯指示、电梯的请求。端口模式主要就是in、buffer、out端口。及定义了各端口信号的数据类型,主要是 std_logic(标准逻辑位数据类型)、integer(整数类型)、std_logic_vector(标准逻辑矢量数据类型)。这些都满足上面调 用的ieee库中的程序包。 以关键词architecture引导,end architecture lift结尾的语句部分,称为结构体。结构体负责描述电路器件的内部逻辑功能或电路结构。本设计定义了10个状态。描述了在三层电梯中 出现的各种可能的情况作为控制电梯的主要进程。信号灯控制作为辅助进程。4三层电梯控制的仿真4.1Quartus II软件的介绍Quartus II 是Altera公司的综合性PLD/FPGA开发软件,支持原理图、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)开发,集系统级设计、嵌入式软件开发、可编程逻辑设计于一体,是一种综合性的开发平台。Quartus II的主要功能有:Quartus II提供了完全集成且与电路结构无关的开发包环境,具有数字逻辑设计的全部特性,包括:可利用原理图、结构框图、VerilogHDL、AHDL和VHDL完成电路描述,并将其保存为设计实体文件;芯片(电路)平面布局连线编辑。 LogicLock增量设计方法,用户可建立并优化系统,然后添加对原始系统的性能影响较小或无影响的后续模块;可读入标准的EDIF网表文件、VHDL网表文件和Verilog网表文件;能生成第三方EDA软件使用的VHDL网表文件和Verilog网表文件;功能强大的逻辑综合工具;完备的电路功能仿真与时序逻辑仿真工具;定时/时序分析与关键路径延时分析;可使用SignalTap II逻辑分析工具进行嵌入式的逻辑分析;支持软件源文件的添加和创建,并将它们链接起来生成编程文件;使用组合编译方式可一次完成整体设计流程;自动定位编译错误;高效的期间编程与验证工具。4.2电梯控制器的仿真仿真(一)下图所示仿真的是在第一层电梯外部有上升请求,也就是f1upbuttton信号的一个脉冲,可以看到电梯从一层上升到二层再到三层,position信号由1变到2再到3,doorlight信号1表示开门,0示关门。当乘客进入电梯以后,在电梯内部要求上升到第三层,也就是stop3button产生一个 脉冲,电梯上升到第3层,开门4秒以后关门,停留在第三层,position最后的值为3。图4-2-1从一楼上升到三楼的仿真图仿真(二):下图是有下降请求的情况,当电梯停留在第三层的时候,在电梯外第三层有下降请求,这时候fdnlight信号灯由0变为1,当乘客进入电梯以后,在电梯内部要求下降到第一层,也就是stop1button产生一个 。电梯下降到第一层,响应了下降请求,所以fdnlight信号灯清0。,所以电梯就停留在第一层,position信号的值保持在1。图4-2-2从三楼下降到一楼的仿真图仿真(三):同时有上升和下降请求信号时,电梯的运行情况如下图所示。图中仿真的情况是,原先电梯停留在第一层,这时候电梯外第二层有上升请求,电梯上升到第三层,乘客进入电梯以后要求下降到一层,电梯首先要响应上升请求,然后再响应这个下降请求。从仿真的波形看,电梯的位置变化和想象是一致的。电梯的运行情况完全正确。最后乘客在电梯内部要求上升到三层,所以电梯最后的停留位置为三层。图4-2-3从二楼上升到三楼再从三楼下降到一楼的仿真图4.3硬件测试将编译好的程序下载到芯片上,进行硬件测试以验证实验结果是否正确。图4-3-1管脚锁定图当模拟从三楼下降到一楼时,从控制楼的灯可以看出,一开始电梯处于上升模式,电梯先从一楼到二楼再到三楼,然后开门再关门,电梯改变为下降模式,再从三楼下降到二楼再到一楼,然后开门。5设计的扩展性在本设计中,因为考虑了扩展性,所以在信号定义的时候就使用了二进制的向量,而不是整数。在设计方法上也做了特殊的设计,所以使得扩展性较好。如果要实现 n层电梯的控制,首先在端口的地方就要加入所有的按键,而指示灯只要把向量中的3改成n就可以了。同时需要在按键控制进程里加入其他按键触发指示灯的语 句。在电梯的升降状态将3改成n,在电梯的开门状态中将2改成n-1,在关门状态,将position=3改成position=n,关键是修改 position=2的部分,如果按照每层罗列,将十分烦琐,所以得寻求各层判断条件的共性,解决方法之一就是,新建一个全局向量one为std_logic_vector(n downto 3)应改写成0,然后和stoplight与fuplight向量比较,如果有更高层次的请求,那么stoplight或fuplight向量,如果 stoplight和fuplight向量都小于one向量,表示没有更高层次的内部上升请求,此时将fdnlight向量和one向量比较,如果大于,则表示高层有下降要求,电梯得上升。如果没有任何请求信号,则电梯停止,否则电梯下降。如此就可以大大简化程序,但是要注意的是one向量必须实时更新, 以作为判断依据,可以另外写一个进程,用buttonclk来触发。6总结这次课程设计历时一个星期的时间,通过这一个星期的课程设计,我发现自己的很多不足之处,自己知识的很多漏洞,看到了自己的实践试验还是比较缺乏,理论联系实际的能力还急需提高。在课程设计过程中,光有理论知识是不够的,还必须懂一些实践中的知识。在设计的过程中,首先设计思路是重中之重,只有你的设计思路是正确的,那你的设计才有可能成功。因此我们在课设前要做好充分的准备,认真查找详细的资料,为我们的设计成功打下坚实的基础。其次,我们应该分部分设计,保证每一部分都能正常工作后在进行总电路的连接,而且当一个功能的实现有多个方法时,我们要经过认真的分析,从中找出最合理最有效的方法路径,从而简化程序。通过这次EDA课程设计实验,我们更加理解了VHDL语言语言在日常生活中的应用。由于近段时间段考试较多,故不能对此程序进行进一步改进,代码还是有较多的缺陷,例如缺少提前关门按键等,实验过程中,总会出现一些问题,例如编译错误,波形仿真跟理论值不符,这些都是由于代码编写中出现的小问题,由于不够仔细而缺少一些必要部分,经过仔细检查后都逐一改正过来了。最后在硬件下载的时候,因为此程序应用的是LED管而不是数码管,在实验箱中难以直观地体会到电梯实际运行的步骤,该VHDL代码还有待进一步改正。参考文献1.Voknei A.Pedroni.VHDL数字电路设计教程.电子工业出版社,2008.52.潘松,黄继业.EDA技术实用教程(第二版).科学出版社,2005.23.焦素敏.EDA应用技术.清华大学出版社,2002.44.曹昕燕,周凤臣,聂春燕.EDA技术实验与课程设计.清华大学出版社.,20065. 张原等.可编程逻辑器件设计及应用,机械工业出版社,2005.4。6. 刘洪喜,陆颖. VHDL电路设计实用教程,清华大学出版社,2007.6。附录library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_artih.allL;use ieee.std_logic_unsigned.all;entity lift is port(buttonclk:in std_logic; liftclk:in std_logic; reset:in std_logic; f1upbutton:in std_logic; f2upbutton:in std_logic; f2dnbutton:in std_logic; f3dnbutton:in std_logic; fuplight:buffer std_logic_vector(3 downto 1); fdnlight:buffer std_logic_vector(3 downto 1); stop1button,stop2button,stop3button:in std_logic; stoplight:buffer std_logic_vector(3 downto 1); position:buffer integer range 1 to 3; doorlight:out std_logic; udsig:buffer std_logic);end lift;architeture lift of lift istype lift_state is(stopon1,dooropen,doorclose,doorwait1,doorwait2,doorwait3,doorwait4,up,down,stop);singal mylift:lift_state;singal clearup:std_logic;singal cleardn:std_logic;beginctrlift:process(reset,liftclk)variable pos:integer range 3 downto 1; begin if reset=1thenmylift=stopon1;clearup=0;cleardndoorlight=1;position=1;pos:=1;myliftmyliftclearup=0;cleardn=0;myliftmyliftmyliftdoorlight=0;if udsig=0 then if position=3 thenif stoplight=000 and fuplight=000 and fdnlight=000 thenudsig=1; mylift=doorclose;else udsig=1;mylift=down;end if; elsif position=2 thenif stoplight=000 and fuplight=000 and fdnlight=000 then udsig=0;mylift=doorclose;elsif stoplight(3)=1or (stoplight(3)=0 and fdnlight(3)=1) then udsig=0; mylift=up; else udsig=1;mylift=down;end if;elsif position=1 thenif stoplight=000 and fuplight=000 and fdnlight=000 then udsig=0; mylift=doorclose;else udsig=0;mylift=up;end if;end if;elsif udsig=1 then if position=1 thenif stoplight=000 and fuplight=000 and fdnlight=000 then udsig=0; mylift=doorclose;else udsig=0; mylift=up;end if; elsif position=2 thenif stoplight=000 and fuplight=000and fdnlight=000 then udsig=1; mylift=doorclose;elsif stoplight(1)=1or (stoplight(1)=0 andfuplight(1)=1) then udsig=1; mylift=down;else udsig=0;mylift=up;end if;elsif position=3 then if stoplight=000 and fuplight=000 and fdnlight=000 then udsig=1; mylift=doorclose; else udsig=1;myliftposition=position+1;pos:=pos+1;if pos3 and(stoplight(pos)=1 or fuplight(pos)=1) thenmylift=stop;elsif pos=3 and (stoplight(pos)=1 or fdnlight (pos)=1) thenmylift=stop;else myliftposition1 and (stoplight(pos)=1 or fdnlight(pos)=1)THEN mylift=stop;elsif pos=1 and (stoplight(pos)=1 or fuplight(pos)=1)THEN mylift=stop;else myliftmyliftdoorlig
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025-2030年防水材料行业市场现状供需分析及投资评估规划分析研究报告
- 2025-2030年车床产业发展分析及行业市场现状供需分析及投资评估规划分析研究报告
- 2025-2030年虚拟现实行业市场发展现状及竞争格局与投资价值研究报告
- 2025-2030年网上生活产业行业市场现状供需分析及投资评估规划分析研究报告
- 2025-2030年移动存储设备产业市场发展分析及前景趋势与投资管理研究报告
- 2025-2030年皮革帽市场前景分析及投资策略与风险管理研究报告
- 深化公共关系学理解的试题及答案
- 2025-2030年牛胆酸行业市场现状供需分析及投资评估规划分析研究报告
- 2025-2030年洗衣皂行业风险投资态势及投融资策略指引报告
- 2025-2030年水族馆行业发展分析及投资战略研究报告
- 完整,沪教版小学四年级英语上册单词表
- 初中常见化合价、化学式及化学方程式
- GB/T 20933-2021热轧钢板桩
- GB/T 18601-2009天然花岗石建筑板材
- 1-059-职业技能鉴定指导书-继电保护(第二版)11-059职业技能鉴定指导书职业标准试题库
- 【宁波年报】2022年宁波房地产市场年报
- 《野蜂飞舞》阅读测试题及答案
- 2023年海南省财金集团有限公司招聘笔试题库及答案解析
- 2017各科普通高中课程标准(电子版)
- HDI盲孔的可靠性设计分析
- 2022年四川绵竹高发投资有限公司招聘笔试题库及答案解析
评论
0/150
提交评论