基于FPGA的四层电梯控制器设计.doc_第1页
基于FPGA的四层电梯控制器设计.doc_第2页
基于FPGA的四层电梯控制器设计.doc_第3页
基于FPGA的四层电梯控制器设计.doc_第4页
基于FPGA的四层电梯控制器设计.doc_第5页
已阅读5页,还剩6页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

山东大学威 海 分 校课 程 设 计 报 告设计题目: _基于FPGA的四层电梯控制器设计 指导教师: 李素梅 郑亚民 董晓舟 _姓 名:学 号:20058002089院 系: 信息工程学院专 业:电子信息科学与技术年 级: 2005级2008年 7月 15 日9目 录摘 要1关键词11、设计要求12、总体设计13、详细设计23.1 中央处理模块23.2 外部数据采集模块33.3 信号存储模块33.3 显示模块44、仿真45、结语5附 录 :源程序5摘 要: 本文介绍了基于FPGA的电梯控制器的总体设计方案,阐述了其内部功能模块的工作原理,基于状态机的原理,利用VHDL语言对各功能模块进行了编程、编译、仿真,并下载到实验箱上进行了验证。结果表明,该电梯控制器按进循方向优先的原则可为四个楼层提供载客服务,并具有电梯运行情况指示功能。文中使用的设计方法不仅简化了电路设计、节约了设计成本,而且提高了控制器的可靠性、稳定性和灵活性。关键词:VHDL; FPGA; 状态机; 电梯控制1、设计要求(1) 使用VHDL语言与状态机设计思想设计一个4层建筑的电梯控制器;(2) 每层电梯入口设有上下请求开关及电梯内设有到达楼层请求开关;(3) 电梯每5秒钟升(降)一层;(4) 电梯到达有请求的楼层自动开门并定时关门和紧急状态紧急停止运行的功能;(5) 能记忆电梯内外所有请求信号并按照电梯运行规则按顺序响应, 每个请求信号留至执行完后消除;(6) 电梯运行规则当电梯处于上升模式时, 只响应比电梯所在的位置高的上楼请求信号, 由下而上逐个执行, 直到最后一个上楼请求执行完毕,如果高层有下楼请求,则直接升到有下楼请求的最高楼层, 然后进入下降模式,当电梯处于下降模式时,则与上升模式相反。2、总体设计根据上述设计要求,可以得到电梯控制器的总体结构如图1所示。该系统包括外部数据采集模块、信号存储模块、中央处理模块、控制输出与显示模块。外部数据采集模块负责采集用户通过按键输入的请求信号、光敏传感器采集的到达楼层信号和压力传感器采集的超载信号;信号存贮模块负责存储电梯内外及各层用户的请求信号和故障、超载信号;中央处理模块处理电梯运行中的各种状态,在电梯运行过程中,对信号存储模块的用户请求数据进行比对, 从而确定电梯的运行状态;显示模块主要显示电梯所在楼层、电梯运行方向和关门延时等;控制输出主要有电梯的升、降、停和门的开、关、停以及报警等信号。中央处理器计时器时钟楼层请求故障请求超载超载、故障报警楼层、关门延时显示门开、关、停电梯升、降、停信号存储外部数据采集图1 电梯控制器总体结构3、详细设计3.1 中央处理模块中央数据处理模块是系统的核心,通过对存储的数据(含用户请求、到达楼层和故障、超载等信号)进行比较、判断以驱动系统状态的转换。电梯工作过程中共有4种状态:第一层、第二层、第三层、第四层。而每种状态都有等待、上升、下降、开关门、超载报警以及紧急停止动作(第一层无下降动作,第四层无上升动作)。一般情况下,电梯工作起始点是第一层,起始状态是等待状态,启动条件是收到上升请求信号。系统的状态流程图如图2所示。图中超载状态时电梯关门动作取消,本系统由请求信号启动,运行中每检测到一个到达楼层信号,就将信号存储器的请求信号与楼层状态信号进行比较,再参考原方向信号来决定是否停止、转向等动作。第一层第二层第四层第三层上升下降等待、开关门、超载、紧急停止上升下降上升下降等待、开关门、超载、紧急停止等待、开关门、超载、紧急停止等待、开关门、超载、紧急停止图2 系统的状态转换图系统输入输出端口的VHDL语言定义如下:port ( clk : in std_logic; -时钟信号(频率为1Hz) o_u1,o_u2,o_u3: in std_logic; -电梯外人的上升请求信号 o_d2,o_d3,o_d4 : in std_logic; -电梯外乘客的下降请求信号 in1,in2,in3,in4 : in std_logic; -电梯内乘客的请求信号 led : out std_logic_vector(3 downto 0);-电梯所在楼层显示 led_c : out integer range 0 to 15; -开关门延时显示 stop,overload : in std_logic -紧急停止运行及超载信号 ); 3.2 外部数据采集模块外部数据采集模块的功能是实时、准确的采集外部信号,以便准确、实时的捕捉楼层到达信号、用户请求信号和超载信号等,有效防止对楼层到达信号和外部请求信号的误判。由于外界干扰,电路中会出现毛刺现象,使信号的纯净度降低,单个的毛刺往往会被错误的当成系统状态转换的触发信号,从而严重影响电梯的正常工作。为了增强系统的抗干扰能力,提高电梯工作的可靠性,可以采用多次检测的方法,即对一个信号连续进行多次采样,以保证信号的可信度。 本设计实际不包含此模块,而是采用按键输入模拟此模块来完成相应功能的。在实际应用中需包含此功能模块。外部请求信号和紧急停止信号的输入形式为按键输入,电梯自动上升或下降时间为5s,超载信号来自压力传感器。3.3 信号存储模块电梯控制器的输入请求信号有10个(电梯外有 3个上升请求和3个下降请求的用户输入端口,电梯内有4个用户请求输入端口),由于系统对内、外请求没有设置优先级,各楼层的内、外请求信号被采集后可先进行运算,再存到存储器内,但对请求信号的响应有一定的优先级,即:当电梯处于上升模式时, 只响应比电梯所在的位置高的上楼请求信号, 由下而上逐个执行, 直到最后一个上楼请求执行完毕;如果高层有下楼请求则直接升到有下楼请求的最高楼层, 然后进入下降模式。当电梯处于下降模式时则与上升模式相反。电梯运行过程中,由于用户请求信号的输入是离散的,而且系统对请求的响应也是离散的,因此,请求信号的存储要保证新的请求信号不能覆盖原来的请求信号,只有当响应动作完成后才能清除存储器内对应的请求信号位。对应某一楼层的请求信号的存储、清除电路如图3所示。RAM的对应位与与外部某层请求信号内部某层请求信号响应信号(CLR)图3 请求信号操作电路图3.3 显示模块系统的显示输出包括楼层显示及关门延时显示(若需要,还可以增加请求信号显示和电梯运动方向指示)。电梯每到一新楼层时,楼层数码管便会更新显示为新楼层的层数;关门时会有3秒的倒计时显示。4、仿真结果该电梯控制器使用VHDL语言设计,用Atera公司Cyclone系列中的EP1C3T144C8芯片实现,在 Quartus II 7.2 (32-Bit)环境下通过编译和仿真,并下载到实验箱上进行了验证,其中部分仿真结果如图4和图5所示。从图中可以看出,电梯在1楼(led0)时处于等待状态,当有乘客在一楼电梯外请求要上3楼时(o_u1=1,in3=1),电梯开门后延时3秒(3个时钟周期,实际中1个时钟周期就是1秒,仿真时为提高速度时钟周期取10ns)后关门(led_c=3,2,1,0);电梯将要到达二楼时,有乘客在三楼电梯外请求要上四楼(o_u3=1),电梯到达三楼时开门,释放第一批乘客,接入第二批乘客;到达四楼后,进入第三批乘客要去二楼,当关门倒计时器数到1时(led_c=1),发现超载(overload=1),此时关门倒计时器停止,电梯一直处于四楼,对二楼乘客的请求(in2=1)也不响应;超载信号消失后(overload =0),电梯一直下降至二楼,在关门倒计时器数到3时(led_c=3),有人请求紧急停止(stop=1),此时电梯保持不动,紧急停止信号消失后(stop=0),电梯完成关门,在二楼等待。三楼乘客要上四楼超载一楼乘客要上三楼 关门倒计时器值楼层指示图4 仿真图(0400ns)紧急制动图5 续图4(400ns)5、结 语本文设计的基于FPGA的电梯控制器能够很好的控制电梯完成四层楼的载客服务,其硬件电路简单,可靠性高。只要稍微改变程序就可以实现更多层的电梯控制,便于扩展,灵活性好,需用批量足够大时容易做成专用集成电路芯片,设计成本低具有较好的应用前景。参考文献略附 录 :源程序-文件名:dianti.vhd。-功能:4层楼的电梯控制系统。-最后修改日期:2008.7.20。library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;use ieee.std_logic_arith.all;entity dianti is port ( clk : in std_logic; -时钟信号(频率为1Hz) o_u1,o_u2,o_u3: in std_logic; -电梯外乘客的上升请求信号 o_d2,o_d3,o_d4 : in std_logic; -电梯外乘客的下降请求信号 in1,in2,in3,in4 : in std_logic; -电梯内乘客的请求信号 led : out std_logic_vector(3 downto 0); -电梯所在楼层显示 led_c : out integer range 0 to 15; -开关门延时 stop,overload : in std_logic -紧急停止运行,超载 ); end dianti;architecture behav of dianti issignal opendoor:std_logic; -开门使能信号signal updown:std_logic; -电梯运动方向信号寄存器signal en_up,en_dw:std_logic; -预备上升、预备下降预操作使能信号type state is(g1,g2,g3,g4);signal g:state;signal en : std_logic ; - 1 电梯下一步动作使能;0 进行动作上升,下降,开关门beginprocess(clk,en,stop,overload)variable in1_r,in2_r,in3_r,in4_r:std_logic; -电梯内乘客请求信号寄存信号variable o_u1_r,o_u2_r,o_u3_r:std_logic; -电梯外乘客上升请求信号寄存信号variable o_d2_r,o_d3_r,o_d4_r:std_logic; -电梯外乘客下降请求信号寄存信号variable in_all,o_u_all,o_d_all,o_i_all:std_logic_vector(3 downto 0); -电梯内外请求信号寄存器beginif clkevent and clk=1 then -if alarm=1then-in1_r:=1;in2_r:=0;in3_r:=0;in4_r:=0;-o_u1_r:=0;o_u2_r:=0;o_u3_r:=0;-o_d2_r:=0;o_d3_r:=0;o_d4_r:=0; -elseif in1=1 then in1_r:=1; end if; -对电梯内乘客请求信号进行检测和寄存 if in2=1 then in2_r:=1;end if;if in3=1 then in3_r:=1;end if;if in4=1 then in4_r:=1;end if;if o_u1=1 then o_u1_r:=1;end if; -对电梯外乘客上升请求信号进行检测和寄存if o_u2=1 then o_u2_r:=1;end if;if o_u3=1 then o_u3_r:=1;end if; if o_d2=1 then o_d2_r:=1;end if; -对电梯外乘客下降请求信号进行检测和寄存if o_d3=1 then o_d2_r:=1;end if;if o_d4=1 then o_d2_r:=1;end if; -end if;in_all:=in4_r&in3_r&in2_r&in1_r; -电梯内乘客请求信号并置 o_u_all:=0&o_u3_r&o_u2_r&o_u1_r; -电梯外乘客上升请求信号并置 o_d_all:=o_d4_r&o_d3_r&o_d2_r&0; -电梯外乘客下降请求信号并置 o_i_all:=in_all or o_u_all or o_d_all; -电梯内、外乘客请求信号进行综合 end if; if clkevent and clk=1 and en=1 and stop=0and overload=0thencase g iswhen g1 = led=0001; -电梯到达一楼,数码管显示1if in1_r=1 or o_u1_r=1 then -有当前层的请求,则电梯进入开门状态in1_r:=0; o_u1_r:=0;en_up=0;en_dw=0;opendoor=1; g=g1; elsif o_i_all=0000 then-无请求时,电梯停在1楼待机 en_up=0;en_dw=0;opendoor=0; g0001 then -有上升请求,则电梯进入预备上升状态en_up=1;en_dw=0;opendoor=0; g led=0010; -电梯到达二楼,数码管显示2if updown=1 then -电梯前一运动状态位上升 if in2_r=1 or o_u2_r=1 or o_d2_r=1 then -有当前层的请求,则电梯进入开门状态 in2_r:=0; o_u2_r:=0;o_d2_r:=0;en_up=0;en_dw=0;opendoor=1; g=g2; elsif o_i_all=0000 then en_up=0;en_dw=0;opendoor=0; g0011 then -有上升请求,则电梯进入预备上升状态 en_up=1;en_dw=0;opendoor=0;g=g3;-无请求时,电梯停在二楼待机elsif o_i_all0010 then -有下降请求,则电梯进入预备下降状态en_up=0;en_dw=1;opendoor=0;g=g1;end if; else-电梯前一运动状态为下降 if in2_r=1 or o_d2_r=1 or o_u2_r=1 then -有当前层的请求,则电梯进入开门状态in2_r:=0; o_d2_r:=0;o_u2_r:=0;en_up=0;en_dw=0;opendoor=1; g=g2;elsif o_i_all=0000 then en_up=0;en_dw=0;opendoor=0; g=g2;-无请求时,电梯停在二楼待机elsif o_i_all0010 then -有下降请求,则电梯进入预备下降状态en_up=0;en_dw=1;opendoor=0; g0011 then -有上升请求,则电梯进入预备上升状态 en_up=1;en_dw=0;opendoor=0; g led=0011;-电梯到达三楼,数码管显示3if updown=1 then if in3_r=1 or o_u3_r=1 or o_d3_r=1 then in3_r:=0; o_u3_r:=0;o_d3_r:=0;en_up=0;en_dw=0;opendoor=1; g=g3;elsif o_i_all=0000 then en_up=0;en_dw=0;opendoor=0; g0111 then en_up=1;en_dw=0;opendoor=0; g=g4;elsif o_i_all0100 then en_up=0;en_dw=1;opendoor=0; g=g2; end if;elseif in3_r=1 or o_d3_r=1 or o_u3_r=1then in3_r:=0; o_d3_r:=0;o_u3_r:=0;en_up=0;en_dw=0;opendoor=1;g=g3; elsif o_i_all=0000 then en_up=0;en_dw=0;opendoor=0; g=g3; elsif o_i_all0100 then en_up=0;en_dw=1;opendoor=0;g0111 then en_up=1;en_dw=0;opendoor=0; g led=0100; -电梯到达四楼,数码管显示4 if in4_r=1 or o_d4_r=1 then in4_r:=0; o_d4_r:=0;en_up=0;en_dw=0;opendoor=1;g=g4;elsif o_i_all=0000 then en_up=0;en_dw=0;opendoor=0; g=g4; elsif o_i_all1000 then en_up=0;en_dw=1;opendo

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论