版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、数字电路课程设计题目:基于fpga的4层电梯控制一、基本原理 设计一个4层楼的电梯控制器。该控制器可控制电梯完成4层楼的载客服而且遵循方向优先原则,并能响应提前关门延时关门;同时指示电梯运行情况、电梯开关门状态和电梯内外请求信息。 可选的电梯控制方式:1.内部请求优先控制方式2.单向层层停控制方式3.方向优先控制方式 1.内部请求优先控制方式方案 内部请求优先控制方式类似于出租车的工作方式,先将车上的人送至目的地,再去载客。作为通用型电梯应该服务于大多数人,必须考虑电梯对内、外请求的响应率p:pin = 100%;pout = 0100%;在内部请求优先控制方式中,当电梯外部人的请求和电梯内部
2、人的请求冲突时,外部人的请求信号可能被长时间忽略,因而它不能作为通用型电梯的设计方案。 2.单向层层停控制方式方案 单向层层停控制方式等同于火车的运行方式,遇站即停止、开门。这种方案的优点在于“面面俱到”,可以保证所有人的请求都能得到响应。然而这样对电梯的效率产生消极影响:不必要的等待消耗了大量时间,而且电梯的运作与用户的请求无关,当无请求时电梯也照常跑空车,就浪费了大量电能。对用户而言,此种控制方式的请求响应时间也不是很快。因而这不是理想的方案。 3.方向优先控制方式方案 方向优先控制是指电梯运行到某一楼层时先考虑这一楼层是否有请求:有,则停止; 无,则继续前进。停下后再启动时,考虑前方上方
3、、或下方是否有请求:有,则继续前进;无,则停止;检测后方是否有请求, 有请求则转向运行, 无请求则维持停止状态。这种运作方式下,电梯对用户的请求响应率为100%,且响应的时间较短。假设: 电梯每两层间的运行时间为t ,楼层数为6, 在每层楼的停止时间为t, 如果每层楼都有请求,则这种控制方式的效率和上面的单向每层停等控制方式的效率一样, 然而, 当不是每层楼都有请求 (假定为只有第6层有请求输入) 时,上面的方式2(设为a方式)的响应时间t=5*(t + t )而方向优先控制方式(设为b方式)对同一请求的响应时间t1=5*t即效率比b/a = 1 + t /t方向优先控制方式的效率远大于单向层
4、层停等控制方式的效率。而且,方向优先控制方式下,电梯在维持停止状态的时候可以进入省电模式,又能节省大量电能,本设计选择方向优先控制方式。 二、模块设计:1.外部数据高速采集模块设计2.信号存储模块3.基于fpga的中央处理模块4.信号的输出、显示模块 1.外部数据高速采集模块设计 对外部信号采集、处理要求电梯控制器:(1)外部请求信号的实时、准确采集。(2)准确、实时的捕捉楼层到达信号。(3)有效的防止楼层到达信号、外部请求信号的误判。控制器采用fpga作为系统控制的核心,系统时钟频率是32.0000mhz,完全可以满足实时采集数据的要求。由于电路中毛刺现象的存在,信号的纯净度降低,单个的毛刺
5、往往被误作为系统状态转换的触发信号,严重影响电梯的正常工作。可以采用多次检测的方法解决这个问题,对一个信号进行多次采样以保证信号的可信度。外部请求信号的输入形式为按键输入,到达楼层信号来自光敏传感器,关门中断信号及超载信号则产生于压力传感器。 键盘、光敏外部输入接口电路未设计。 2.信号存储模块 电梯控制器的请求输入信号有10个(电梯外有3个上升请求和3个下降请求的用户输入断口,电梯内有4个请求用户输入断口),由于系统对内、外请求没有设置优先级,各楼层的内、外请求信号被采集后可先进行运算,再存到存储器内。电梯运行过程中,由于用户的请求信号的输入是离散的,而且系统对请求的响应也是离散的,因此请求
6、信号的存储要求新的请求信号不能覆盖原来的请求信号,只有响应动作完成后才能清除存储器内对应的请求信号位。 3.基于fpga的中央处理模块 中央数据处理模块是系统的核心,通过对存储的数据(含请求、到达楼层等信号)进行比较、判断以驱动系统状态的流转。电梯工作过程中共有6种状态:等待、上升、下降、开门、关门、停止状态。一般情况下,电梯工作起始点是第一层,起始状态是等待状态,启动条件是收到上升请求。本系统由请求信号启动,运行中每检测到一个到达楼层信号,就将信号存储器的请求信号和楼层状态信号进行比较,再参考原方向信号来决定是否停止,转向等动作。4.信号的输出、显示模块 本系统的输出信号有两种:一种是电机的
7、升降控制信号(两位)和开门/关门控制信号;另一种是面向用户的提示信号(含楼层显示、方向显示、已接受请求显示等)。电机的控制信号一般需要两位,本系统中电机有3种工作状态:正转、反转和停转状态。两位控制信号作为一个三路开关的选通信号,此三路开关选用模拟电子开关。系统的显示输出包括数码管楼层显示、数码管请求信号显示和表征运动方向的箭头形指示灯的开关信号。完全可以满足人们的需要,而且效率比较高。由于本次实验的实验条件所限,很多输入与输出的功能无法在实验板上实现,所以本文仅以电梯控制器的主要模块为对象。三、实验过程1、掌握altiumdesigner软件基本使用方法和vhdl编程的初步知识 本次课程设计
8、可以说是从零开始,第一天老师给我们介绍了设计软件的基本使用方法和一个vhdl程序(60进制计数器)。主要任务是掌握软件的基本使用方法,包括项目的新建、编辑、编译、仿真等,同时以60进制计数器为例介绍vhdl编程的基本模式。 由于软件是全英文版,我第一天的时间都花在熟悉软件功能上。通过多遍观看老师的讲解课件与重复操作,终于熟悉了软件的使用方法,并将软件的使用心得总结在一张纸上,从而完成了第一步掌握软件使用方法。意识到本次设计基于vhdl编程,我又在晚上花了点时间学习有关vhdl编程的初步知识。 第二天,老师布置了一个任务:将60进制计数器改编为24进制计数器。通过一上午的努力我成功实现了24进制
9、计数器,看到仿真波形的时候,感觉很好。2、选则设计课题并初步构思 到了第三天,同学们都基本熟悉了软件和vhdl编程,许多同学跃跃欲试。老师给我们介绍了本次课程设计的几个选题,其中要数“电梯控制设计”最难,并且目前的记录是7层电梯。考虑到时间很充裕,我决定挑战一下自我,选定电梯作为自己的设计项目。第三天和第四天我和同样选择了电梯的吴文正同学讨论电梯的实现方法。首先要明确电梯的功能,为此,我们专门到综合楼亲自乘坐电梯来明确电梯的功能;然后我们开始投入到怎样编写程序中,但是感觉没有头绪,电梯的状态实在太多。这几天,我们在实验室到寝室的路上一直在讨论着电梯。第五天上午,我们请教了周老师。周老师给我们的
10、建议是先不要急着编程,而是将精力放在分析电梯的状态。3、电梯主控模块的vhdl实现第六天晚上,通过前一阶段的思考和查阅资料,我开始着手编写电梯主控程序。经过一个晚上的努力,我完成了vhdl编程,这时候我的感觉是电梯没有想象中的难。4、电梯主控模块程序的仿真与排错同所有编程过程一样,难的不是写代码而是。将程序仿真以后,我才发现错误不断,接下来几天我基本在不停的仿真与排错。到了星期四,除电梯外其他项目的同学都已经验收,而我的电梯还停留在主控模块。期间想过换项目,但已经走到这一步了,想放弃都难,于是硬着头皮往下走。5、原理图和下板检测又是对着电脑屏幕的一天,我完成了输入、输出和主控模块的连接,即完成
11、了原理图,并下板测试。结果还是有问题,且问题出在主控模块里面。在验收截止日期前几个小时,我终于获得了重大突破,解决了一系列的问题,4层电梯已经可以“动”起来。电梯控制器的vhdl程序:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_arith.all;use ieee.std_logic_unsigned.all;entity dt isport(clk,r:in std_logic; ilcdn,ilcup,ilcnb: in std_logic_vector(7 downto 0);-各楼层按钮 olcdn,olcup
12、,olcnb: out std_logic_vector(7 downto 0);-各楼上、下请求按钮和电梯内楼层按钮显示 odnup:out std_logic_vector(1 downto 0);-上下运行状态显示 olc:out std_logic_vector(3 downto 0);-电梯当前楼层 odoor:out std_logic);-门状态显示end dt;architecture jgt of dt istype state_type is(stopon1,dooropen,doorclose,wait1,wait2,wait3,wait4,up,down,stop);s
13、ignal state:state_type;signal door:std_logic;signal position :integer range 1 to 4;signal dnup : std_logic_vector(1 downto 0);signal lc: std_logic_vector(3 downto 0);signal lcdn,lcup,lcnb: std_logic_vector(7 downto 0);beginprocess(lc,dnup,door,lcnb,lcdn,lcup)-输出beginolc=lc;odnup=dnup;olcdn=lcdn;olcn
14、b=lcnb;olcup=lcup;odoor=door;end process;process(r,clk)-主 begin if r=1 then state=stopon1; door=0; dnup=01; lc=0001; position=1; lcdn=00000000; lcup=00000000; lcnbdoor=0; -1 楼停,门开(灯亮) position=1; statestate if ilcnb(1)=1 then lcnb(1)=1;end if;-输入读入 if ilcnb(2)=1 then lcnb(2)=1;end if; if ilcnb(3)=1
15、then lcnb(3)=1;end if; if ilcnb(4)=1 then lcnb(4)=1;end if; if ilcup(0)=1 then lcup(0)=1;end if; if ilcup(1)=1 then lcup(1)=1;end if; if ilcup(2)=1 then lcup(2)=1;end if; if ilcdn(1)=1 then lcdn(1)=1;end if; if ilcdn(2)=1 then lcdn(2)=1;end if; if ilcdn(3)=1 then lcdn(3)=1;end if; statestatestatedoo
16、r=0;-门灯灭 -门关时上升状态 if dnup=01 then if position=4 then -电梯在四楼 if lcdn=00000000and lcup=00000000and lcnb=00000000 then dnup=10;state=down;-无请求 elsif lcnb(4)=1or lcdn(3)=1 then dnup=10;state=stop; else dnup=10;state=down; -有请求,转下降状态 end if; elsif position=3 then -电梯在三楼 if lcdn=00000000and lcup=00000000a
17、nd lcnb=00000000 then dnup=01;state=up; -无请求,up elsif lcnb(3)=1 or lcup(2)=1 then -3楼请求上升 dnup=01;state=stop; elsif lcnb(4)=1 or lcdn(3)=1 then -4楼请求下降 dnup=01;state=up; elsif lcnb(3)=1 or lcdn(2)=1 then -3楼请求下降 dnup=10;state=stop; else dnup=10;state=down; -34楼无请求,12楼下降请求,转下降状态 end if; elsif positio
18、n=2 then -电梯在二楼 if lcdn=00000000and lcup=00000000and lcnb=00000000 then dnup=01;state=up;-无请求,上升状态 elsif lcup(1)=1 or lcnb(2)=1 then-2楼请求上 dnup=01;state=stop; elsif lcup(2)=1 or lcup(3)=1 or lcnb(3)=1 or lcnb(4)=1 then dnup=01;state=up; -34楼有请求,上升状态 elsif lcdn(1)=1 then dnup=10;state=stop;-2楼请求下降,停
19、elsif lcup(0)=1 or lcnb(1)=1 then dnup=10;state=down;-1楼请求,转down end if; elsif position=1 then -电梯在一楼 if lcdn=00000000and lcup=00000000and lcnb=00000000 then dnup=01;state=up;-无请求 elsif lcup(0)=1 or lcnb(1)=1 then dnup=01;state=stop;-1楼请求 else dnup=01;state=up; end if; end if; end if; -门关时下降状态 if dn
20、up=10 then if position=1 then -电梯在一楼 if lcdn=00000000and lcup=00000000and lcnb=00000000 then dnup=01;state=up;-无请求 elsif lcup(0)=1 or lcnb(1)=1 then-1楼请求 dnup=01;state=stop; else dnup=01;state=up; -有请求,转上升 end if; elsif position=2 then -电梯在二楼 if lcdn=00000000and lcup=00000000and lcnb=00000000 then d
21、nup=10;state=down; -无请求,门关,down elsif lcdn(1)=1 or lcnb(2)=1 then -2楼请求 dnup=10;state=stop; -stop elsif lcup(0)=1 or lcnb(1)=1 then -1楼请求上 dnup=10;state=down; else dnup=01;state=up; -1楼无请求,转上升状态 end if; elsif position=3 then -电梯在三楼 if lcdn=00000000and lcup=00000000and lcnb=00000000 then dnup=10;stat
22、e=down; -无请求,门关,down elsif lcdn(2)=1 or lcnb(2)=1 then -3楼请求下 dnup=10;state=stop; elsif lcdn(1)=1 or lcup(0)=1 or lcnb(2)=1 or lcnb(1)=1 then -12楼请求 dnup=10;state=down; elsif lcup(2)=1 then -3楼请求上 dnup=01;state=stop; else dnup=01;state=up; end if; elsif position=4 then if lcdn=00000000and lcup=00000
23、000and lcnb=00000000 then dnup=10;state=down; -无请求,门关,down elsif lcdn(3)=1 or lcnb(3)=1 then dnup=10;state=stop;-4楼请求 else dnup=10;state if ilcnb(1)=1 then lcnb(1)=1;end if;-输入读入 if ilcnb(2)=1 then lcnb(2)=1;end if; if ilcnb(3)=1 then lcnb(3)=1;end if; if ilcnb(4)=1 then lcnb(4)=1;end if; if ilcup(0
24、)=1 then lcup(0)=1;end if; if ilcup(1)=1 then lcup(1)=1;end if; if ilcup(2)=1 then lcup(2)=1;end if; if ilcdn(1)=1 then lcdn(1)=1;end if; if ilcdn(2)=1 then lcdn(2)=1;end if; if ilcdn(3)=1 then lcdn(3)=1;end if; if position=4 and (lcnb(4)=1or lcdn(3)=1) then dnup=10;state=stop;-4楼(顶楼)有下降请求,保持状态 elsi
25、f position=4 and (lcnb(4)=0or lcdn(3)=0) then dnup=10;position=position-1;lc=lc-1;state=down; elsif position=3 and (lcnb(3)=1or lcup(2)=1) then dnup=01;state=stop; elsif position=3 and (lcnb(3)=0or lcup(2)=0) then dnup=01;position=position+1;lc=lc+1;state=up; elsif position=2 and (lcnb(2)=1or lcup(1
26、)=1) then dnup=01;state=stop; elsif position=2 and (lcnb(2)=0or lcup(1)=0) then dnup=01;position=position+1;lc=lc+1;state=up; elsif position=1 and (lcnb(1)=1or lcup(0)=1) then dnup=01;state=stop; elsif position=1 and (lcnb(1)=0or lcup(0)=0) then dnup=01;position=position+1;lc=lc+1;state if ilcnb(1)=
27、1 then lcnb(1)=1;end if;-输入读入 if ilcnb(2)=1 then lcnb(2)=1;end if; if ilcnb(3)=1 then lcnb(3)=1;end if; if ilcnb(4)=1 then lcnb(4)=1;end if; if ilcup(0)=1 then lcup(0)=1;end if; if ilcup(1)=1 then lcup(1)=1;end if; if ilcup(2)=1 then lcup(2)=1;end if; if ilcdn(1)=1 then lcdn(1)=1;end if; if ilcdn(2)
28、=1 then lcdn(2)=1;end if; if ilcdn(3)=1 then lcdn(3)=1;end if; if position=1 and (lcnb(1)=1or lcup(0)=1) then dnup=01;state=stop;-底楼有请求,stop elsif position=1 and (lcnb(1)=0or lcup(0)=0) then dnup=01;position=position+1;lc=lc+1;state=up; elsif position=2 and (lcnb(2)=1or lcdn(1)=1) then dnup=10;state
29、=stop; elsif position=2 and (lcnb(2)=0or lcdn(1)=0) then dnup=10;position=position-1;lc=lc-1;state=down; elsif position=3 and (lcnb(3)=1or lcdn(2)=1) then dnup=10;state=stop; elsif position=3 and (lcnb(3)=0or lcdn(2)=0) then dnup=10;position=position-1;lc=lc-1;state=down; elsif position=4 and (lcnb(
30、4)=1or lcdn(3)=1) then dnup=10;state=stop; elsif position=4 and (lcnb(4)=0or lcdn(3)=0) then dnup=10;position=position-1;lc=lc-1;statestatedoor=1; lcnb(position)=0;lcdn(position-1)=0;lcup(position-1)=0; statestate=stopon1; end case; end if;end process;end jgt;仿真波形图管脚芯片图键盘转按键模块的vhdl程序library ieee;use
31、 ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;use ieee.std_logic_arith.all;entity padtokey is port ( cpin,r,validkey :in std_logic; key :in std_logic_vector(3 downto 0); keyout: out std_logic_vector(15 downto 0); clk_1mhz,rst: out std_logic );end entity ;architecture jgt of padtokey is si
32、gnal ctcp: integer range 0 to 5; signal cpo :std_logic; signal ctcpo :integer range 0 to 4999; type states is (s0,s1,s2); signal s: states;beginprocess(cpin)beginif cpin=1 and cpin event then if ctcp=5 then cpo = not cpo; ctcp=0; else ctcp=ctcp+1; end if;end if;end process;process(cpo,r)beginclk_1mh
33、z=cpo;if r=1 then rst=0;s=s0;ctcpo=0; keyout=0000000000000000;elsif cpo=1 and cpo event then if ctcpo /= 4999 then ctcpo=ctcpo+1; else ctcporst=0; if validkey=1 then skeyoutkeyoutkeyoutkeyoutkeyoutkeyoutkeyoutkeyoutkeyoutkeyoutkeyoutkeyoutkeyoutkeyoutkeyoutkeyoutnull; end case; else s=s0;keyoutrst=1
34、;srst=0;s null; end case; end if;end if;end process; end architecture jgt;管脚芯片图lcd显示模块-file name diantilcd- 目的:在lcd上按格式显示电梯各楼层按键(8层)、当前楼层、运行方向、开关门状态-输入:lcdn、lcup、lcnb:分别为楼层外部下、上以及梯内按键,每项8位,对应8层,每位为1表示- 对应按键被按下。其最低位显示在lcd左边-r:复位;door:1/0:开/关门 dnup:运行方向指示,10/01/00:下/上/停止-提示:可将两位bcd码用总线合并的形式连入-注意:每个总线形
35、式的输入均为logic_vector形式,因此,相应电路的输出要定义为logic-vector 形式,整型形式不能使用。 -cpin 时钟脉冲输入 按10mhz设计 ;复位rlibrary ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity dtlcd is port (cpin,r,busy,door :in std_logic; lcdn,lcup,lcnb :in std_logic_vector(7 downto 0); lc : in std_logic_vector(3 downto 0);
36、 dnup:in std_logic_vector(1 downto 0); clk,rst,strobe,outline : out std_logic; data : out std_logic_vector(7 downto 0); addr : out std_logic_vector(3 downto 0) );end entity ;architecture jgt of dtlcd isfunction to_uint (a: std_logic_vector) return integer isalias av: std_logic_vector (1 to alength)
37、is a;variable val: integer := 0;variable b: integer := 1;beginfor i in alength downto 1 loopif (av(i) = 1) then - if lsb is 1,val := val + b; - add value for current bit positionend if;b := b * 2; - shift left 1 bitend loop;return val;end to_uint;- convert an integer to a std_ulogic_vector-function
38、to_vector (size: integer; val: integer) return std_logic_vector isvariable vec: std_logic_vector (1 to size);variable a: integer;begina := val;for i in size downto 1 loopif (a mod 2) = 1) thenvec(i) := 1;elsevec(i) := 0;end if;a := a / 2;end loop;return vec;end to_vector; type states is (s0,s1,s2); signal s: states; signal lcdpt : integer range 0 to 28; signal cpct : integer range 0 to 65535; signal cp: std_logic; -signal ascew,ascsn : std_logic_vector(7 downto 0);beginproc
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024楼顶广告牌制作加工合同样本
- 2024棉花收购合同范文
- 2024年安全员职责履行及待遇约定的合同
- 2024年度租赁物维修保养合同服务内容与责任划分
- 2024年度智能穿戴设备采购供应合同
- 2024企业间就市场营销合作合同
- 2024云计算服务提供商股权转让合同
- 2024年体育赛事赞助合同赞助金额与权益分配
- 2024年北京市影视作品制作委托合同
- 2024年企业碳足迹监测与减排合同
- 北京市第四中学2024-2025学年七年级上学期期中生物学试题(含答案)
- 体育教师先进个人事迹材料
- 2025届江苏省苏州市第一中学物理高三第一学期期末学业水平测试模拟试题含解析
- 2024.11.9全国消防安全日全民消防生命至上消防科普课件
- 企业财务管理数字化转型实施方案
- 2024-2025学年六年级科学上册第二单元《地球的运动》测试卷(教科版)
- 《ISO 55013-2024 资产管理-数据资产管理指南》解读和实施指导材料(雷泽佳编制-2024)
- 人民民主是全过程民主
- 机房验收检测报告
- 线性代数在密码学中的应用
- 电力公司司徽、司歌、企业精神试行方案和电力公司安全倡议书汇编
评论
0/150
提交评论