




免费预览已结束,剩余36页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
数字系统课程设计数字系统设计课程设计 题目: 三层电梯控制器 姓名: 钟玉钊 班级: 计算机052班 学号: 05071232 日期:2008.7.52008.7.12 地点:南山综合楼B805 EDA实验室 一、设计目的: 1熟练利用VHDL语言进行数字系统设计; 2. 掌握数字系统的设计方法自顶向下的设计思想; 3掌握电梯控制器的设计与使用; 4根据电梯控制器的功能要求设计一个电梯控制器;二、实验器材:PC机一台,EDA教学实验系统一台,下载电缆一根(已接好),导线若干。三、 设计要求: 设计一个简单的三层电梯控制器,它的具体功能为:1、每层电梯的入口处设有上下请求开关,电梯内有乘客到达楼层停站请求开关,能够提前关门和延时关门。 2、每层外面入口处有显示当前电梯处在第几层的数码管,电梯内部有显示当前电梯所处位置的数码管,并有上升或下降的指示灯,有开门或关门的状态指示。3、电梯到请求站后,开门时间大概为2.6(200*1/76)秒,每两层之间的运行时间为2.6秒,若当前层没有请求则停留在当前层的关门状态。4、能记忆电梯内外的所有请求信号,并能按照电梯运行规则次序响应,每个信号保留至执行后消除。5 、电梯运行规则:无论电梯当前是处于何种状态,若电梯没有竞争信号请求,则只要有请求则响应,若当前电梯处于第一层,优先响应第一层的开门请求,若其它层任何信号请求,则应当进入运行状态,然后达到第二层,同理处于第三层的时候,也是优先开门请求,然后再响应其他层的请求,必须经过第二层。处于第二层时就需要根据电梯的当前方向来判断。若处于下降模式,且第第三层到第一层的请求还没有响应,此时若二层有请求,只第二层有下降请求,不响应二层的上层请求,到达一层后再回来响应上升请求。同理若为上升状态,则相反。四、实验原理:1功能描述:随着社会的发展,电梯的使用越来越普遍,已从原来只在商业大夏、宾馆使用,过渡到在办公楼、居民楼等场合使用,并且对电梯的功能要求也不断提高。根据系统设计的要求,并考虑到可验证性,整个系统的输入输出接口设计如图1所示:系统工作于305Hz的时钟信号CLK,经过4分频后得到76Hz的采样控制脉冲,楼层上升请求信号UP1、UP2 ;下降请求信号DOWN3、DOWN2;提前关门eary、延时关门delay ;楼层选择信号KEY1、KEY2、KEY3分别与开关相连,低电平有效。电梯上升或下降指示UP_DOWN , 一层上升指示F1_UP,二层上升指示UP2 ,二层下降指示F2_DOWN ,三层下降指示F3_DOWN ,门开或关状态指示gate都与一个LED灯相连指示响应状态。外部可见部分: 图1 整个系统的输入输出 内部: 图2 系统的内部结构原理图2基本原理: 本系统主要分为四个模块,模块fenpin将305Hz的时钟源clk经过4分频作为请求键的采样脉冲,mod80是一个模四计数器作为数码管的位选,decoder7是数码管的段译码,keytest是最主要的模块,完成电梯的请求检测与状态转换,并给出响应,复位后电梯处于第一层关门状态。基本方框图如下:请求信号输入305Hz 时钟源clk Keytest (信号请求检测与电梯状态控制)Fenpin4分频(76hz)Decoder7 译码Mod80 模4计数器数码管显示LED灯位选段选 四、 实验内容:(画出流程图)1、 状态转换图:电梯控制器分为6种状态:C1、C2、C3、CLOSE_D、CLOSE_D1、TIEME3和TIME4 C1:第一层C2:第二层C3:第三层CLOSE_D:关门状态CLOSE_D1:关门状态说明:请示关门状态只要一个就够了的,但是一个的话,里边的共享变量或者逻辑门的数量过多,使得编译的时候器件不够,无法下载。TIME3:运行状态TIME4:开门状态U(1) =1: 表明一楼有人按了上升请求F1_UPU(2)=1 : 二楼有人按了F2_UP D2=1 : 二楼有人按了F2-DOWNU(3)=1 : 三楼有人按了下降请求F3_DOWNTING(1)=1 : 电梯内有人按了一楼停的请求键KEY1TING(2)=1 : 电梯内有人按了二楼停的请求键KEY2TING(3)=1 : 电梯内有人按了三楼停的请求键KEY3UP_DOWN=1 :电梯当前的状态为上升模式,等于0则为下降模式;端口为双向的可读可写F1、F2、F3 分别表示从一楼、二楼和三楼出来,即当到达另一状态时,是根据这三个值是否为1来判断前一种状态是从C1或者C2还是C3过来的,作为下一状态转移的依据。因为运行和关门状态都只有一个,是各层公用的。只能用标志来区别。上电复位后,电梯处于C1,即第一层C1:处于第一层时,先令F1=0、F2=0、F3=0,UP_DOWN=1,表明第一层出来的时候是上升模式。若U(1)=1 或者TING(1)=1 即第一层的任何请求都应该开门,因为已经到了第一层应该优先响应开门,进入TIME4开门状态并且使F1=1状态图中的,表明是从C1到达TIME4状态的,否则若其它层有请求(U(2)、d2、 U(3)、TING(3)、TING(2)中至少有一个值为1),则进入运行状态TIME3 ,并使F1=1,即状态图中的。C2 :第二层的时候需要根据当前的电梯状态来决定下一个状态。优先顺序是: 电梯上升时二楼门外有上升请求,电梯下降时二楼门外的下降请求,电梯下降时电梯内一楼还没响应的停请求,电梯上升时电梯内三楼还没有响应的停请求,上升时三楼门外的下降请求,下降时三楼门外的上升请求,若以上的都没有则随便任何一个请求都响应。进入运行状态经过,二楼的开门请求经过A进入TIME4。并且上升时需要给UP_DOWN=1,下降UP_DOWN=0,一到二楼F1=F2=F3=0,从二楼出来时F2=1. C3 :一到C3则优先响应三楼的下降请求经过E进入TIME4,否则只要一层二层的任意请求存在都经过C进入TIME3运行状态。同样进入C3时 F1=F2=F3=0,出来时F3=1。UP_DOWN=0。TIME3 :一旦计数到的时候如果F1=1 则经过D进入C3,如果F3=1则经过进入C1。如果F2=1,是有优先响应顺序的:上升时则优先响应电梯内还没有响应的停(TING(3)=1)请求,经过D进入C3,下降时优先响应电梯内还没有响应停(ting(1)=1)请求,经过进入C1,上升时三楼门外的下降请求,经过D进入C3,下降时一楼门外的上升请求,经过进入C1,剩下的请求只要有请求则响应。 ( F1、F2、F3是不可能同时为1的,这样就保证了优先原则)TIME4 :只是开门状态计数时间到则进入关门状态经过到达CLOSE_D1CLOSE_D1 :这个状态也是需要根据F1、F2、F3的值来决定下一状态的,当F1=1时,如果一楼有请求则经过进入开门状态。否则经过进入CLOSE_D状态。若F2=1,如二楼门外有请求则经过进入TIME4,否则经过进入CLOSE_D状态。如过F3=1,若三楼门外有请求同样是经过进入TIME4开门状态,否则经过进入CLOSE_D状态。其实CLOSE_D1只是用于检测门外的开门请求,若没有进入另一个关门状态去检测到达其他楼层的请求。没有请求的时候一直在CLOSE_D和CLOSE_D1之间循环。CLOSE_D :如有到达其他层的请求,则经过到达TIME3运行状态。否则进入CLOSE_D1。TIME3CLOSE_DTIME4 C1 C2 C3CLOSE_D1123456789BDCAE开始 ?Clkevent and clk=1Up1=1一层外上升请求?yesY U(1)=1 F1-UP=1 /1楼上升请求灯亮KEY1=0一楼是否有停请求ABYBTing(1)=1UP2=0 AY U(2)=1 F2_UP=1 / 2楼上升请求灯亮DOWN2=02楼门外下降请求 D2=1 F2_DOWN=1 /2楼外下降请求灯亮YCCKEY2=0 /2楼停TING(2)=1DOWN3=0/3楼外下降请求U(3)=1F3_DOWN=1 /3楼外请求下降灯亮Key(3)=0 DEDTING(3)=1 ETIQIAN=0提前关门YANSHI=0 /延时关门 TI:=1 YA=1 CASE STATEC1 C2 C3 CLOSE_D TIME3 TIME4 close_d1C1一层 C2二层 C3三层Close_d关门Time3运行Time4开门Close_d1 C1 CURRENT=”01” /输出到数码管 使其显示1F1=0 ; F2=0 ; F3=0; / 楼层标志清零F1_UP=0 /请求灯灭UP_DOWN=1U(1)or ting(1)=1是否有停或请求 U(1)=0;/响应后请求清零 Ting(1)=0;/响应后请求清零 F1=1/表明是从一楼过到TIME4状态的 STATE=TIME4/进入开门状态U(2)OR TING(2) OR TING(3) OR U(3)=1 OR D2=1 返回 开始 F1=1 STATE=TIME3 /进入运行状态 返回 开始 C2F1=F2=F3=0; CURRENT=”10”F2_DOWN=0F2_UP=0;U(2) AND UP_DOWN=1 F2=1/上升时优先2楼上升请求U(2)=0/表明已响应STATE=TIME4 / 开门状态返回开始处UP_DOWN=0 AND D2=1 F2=1 ; D2=0 STATE=TIME4 /下降时优先响应二楼下降请求 返回开始处KKKKUP_DOWN=1 ANDTING(3)=1 F2=1 STATE=TIME3/先响应还没响应完的 返回开始UP_DOWN=0 AND TING(1)=1 F2=1 ; STATE=TIME3返回开始处U(1)=1 AND UP_DOWN= 0F2=1 ; STATE=TIME3 返回开始处 JJ JJ U(3)=1 AND UP_DOWN=1 F2=1 STATE=TIME3 返回开始处u(1) or ting(1) or u(3) or ting(3)=1 F2=1 ;STATE=1 STATE=TIME3 返回 返回 C3F3_DOWN=0CURRENT=”11”F1=F2=F3=0U(3) OR TING(3)=1U(3)=TING(3)=0F3=1STATE=TIME4/开门返回开始出U(1) or d2 OR U(2) OR TING(1) OR TING(2)=1F3=1STATE=TIME3 /进入运行状态返回开始CLOSE_DDDOOR=0 /开门灯灭F1=1是否在一楼CURRENT=”01”F1_UP=0U(2) OR U(3) OR d2 orTING(2) OR TING(3)=1 UP_DOWN=1/上升模式 STATE=TIME3 返回开始F2=1F GState=Close_d1 FCURRENT=”10”F1_UP=F2_DOWN=0TING(1)=1AND UP_DOWN=0/一楼有请求未响应且处于下降 UP_DOWN=0 STATE=TIME3 返回开始处TING(3)=1)AND UP_DOWN=1 /上升且3楼有请求未响应 STATE=TIME3 返回开始处 H HU(1) =1 AND UP_DOWN=0 STATE=TIME3 返回开始U(3) OR AND UP_DOWN=1 STATE=TIME3 返回开始处 STATE=TIME3 UP_DOWN=0 返回开始u(1) or ting(1) =1U(3) OR TING(3)=1UP_down=1 STATE=TIME3返回开始STATE=CLOSE_D1返回开始 G UP_DOWN=0 CURRENT=”11” F3_DOWN=0U(1) OR TING(1) OR d2 orU(2) OR TING(2)=1 下层是否有请求 STATE=TIME3返回开始处 TIME3 DDOOR=0 /运行时门是关的QCNT2200 J KState=close_d1F3=1返回开始 KQCNT2=QCNT2+1 计数200个脉冲作为运行时间 返回开始处 J QCNT2=0F1=1 STATE=C2/从一楼过来下一状态应该是2楼 返回开始处 F2=1 STATE=C3 /二楼过来且上升,则优先电梯内尚未响应的三楼 返回开始处 L UP_DOWN AND TING(3)=1PO POTING(1)=1 AND UP_DOWN=0 STATE=C1 返回开始处 U(3)=1 AND UP_DOWN=1 STATE=C3 返回开始处U(1) =1 AND UP_DOWN=0 STATE=C1 返回开始U(1) OR TING(1) =1 SATAE=C1 UP_DOWN=0 返回开始LM TIME4 DDOOR=1/开门灯亮TI=1 提前关门请求 QCNT2=200 TI=0/清掉请求N O LMU(3) OR TING(3)=1 UP_DOWN=1 STATE=C3 返回开始 返回开始 LF3=1 STATE=C2 返回开始 N YA=1 YA=0QCNT2=0/延时请求是重新计数QCNT2200QCNT2=QCNT2+1/开门计数延时 O 返回开始处 QCNT2=0STATE=CLOSE_D1/开门时间到 到达关门/状态 返回开始处 CLOSE_D1DDOOR=0F1=1CURRENT=”01”F1_UP=0U(1) =1U(1)=0 ; UP_DOWN=1 STATE=TIME4 STATE=CLOSE_D 返回开始 P P F2=1 F2_UP=0 F2_DOWN=0 CURRENT=”10”U(2) =1 U(2)=0 UP_DOWN=1 STATE=TIME4 返回开始 STATE=CLOSE_D Q D2=1 D2=0 UP_DOWN=0 STATE=TIME4 Q F3=1 CURRENT=”11” F3_DOWN=0U(3)=1 U(3) =0 STATE=TIME4 返回开始STATE=CLOSE_D波形仿真及分析: 首先初始状态是一楼。定义的时候STATE=C1在第一个200US内,三楼们外有人想要下来,按了DOWN3按键,即DOWN3=0, 从而F3_DOWN=1,表明三楼外面的下降请求灯立刻亮;之后二楼又有人想要下来,也是按了DOWN2, 即DOWN=0,F2_DOWN=1,二楼的下降请求灯立刻亮起。GATE=0,即门是关着的,UP_DOWN=1,说明电梯处于上升状态TIME3,OUT7=30(a段是接高位)译码后得到的数码管值为1。到达第二层的时候即400us对下来。Out7的值为6D译码后为2,但是但是并没有停下来开门去响应二楼的下降请求,这点可以从GATE=0看出或者从OUT7的值6D维持的时间段可以看出,一位运行时间和开门时间都是相等的,只维持200个计数脉冲时间。OUT7的值6D过后是79译码后数码管显示的是3,并且此时GATE=1,表明在三楼的开门状态,F3_DOWN也为0 ,门外指示灯灭掉。UP_DOWN=0,说明将要下降。再过200个计数脉冲,开门时间到,进入关门状态GATE=0,由于二楼的下降请求还没有响应,所以进入运行状态,有图可见,79的时间维持在2段200个计数脉冲的时间,回到2楼后开门状态又维持200个计数脉冲之后gate=0并且一直停在二楼,原因是虽然二楼和三楼都有请求,但是都没有在电梯内按键选择到几楼,也就是说只是在门外请求,并没有人走进电梯内。在上面的基础上当到达三楼后按下KEY1键,请求到达一楼。波形图如下: 可见电梯最后是停在一楼的关门状态撤掉二楼的下降请求,而是当电梯到三楼的时候二楼请求上升UP2。得到的波形图如下:可见即使是有竞争存在,电梯仍然是先下一楼再回来响应二楼的上升。若电梯从到达三楼的时候二楼的请求是到一楼的,则电梯下降经过二楼的时候应该在二楼停,把二楼的人一起载下一楼。波形图如下从波形图上可以看出,上升经过二楼的时候,GATE=0,而下降经过二楼的时候GATE显示1再接着变为0. 从OUT7的值6D维持的时间上也可以看出,下降时经过二楼是停下开门的,二上升经过二楼时却没有。说明: 只要在一楼,UP_DOWN=1 即电梯模式都为上升,只要在三楼UP_DOWN=0,其实是应该在电梯开始运行的状态才赋值的。还有一个就是,第二层门外请求信号指示灯亮维持时间的为问题。这里并没有一直维持到响应才让灯灭掉,而是电梯经过的时候就灭掉了。但是这并没有影响到电梯的正常运行和工作。因为这些信号都只是一个让人看的人性化的信号,并不是电梯工作所需的信号。应当知道这个信号改正过来是很容易的,只需在响应的时候才给这个灯所代表的变量赋0就好了。 1. 分频模块:此模块定义一个全局时钟305Hz,然后分频得到一个76Hz采样的脉冲。具体程序:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity fenpin isport(clk305:in std_logic; coo:out std_logic);end;architecture a of fenpin is signal p:integer range 0 to 4; begin process(clk305) begin if clk305event and clk305=1 then if p=4 then p=0; else p=p+1; end if; end if; if p=2 then coo=1; else coo=0; end if; end process; end; - 17 - 2计数器模块 此模块此模块是将305Hz的系统脉冲计数得到一个模4计数器。作为数码管动态扫描为选信号具体程序library ieee;use ieee.std_logic_unsigned.all;use ieee.std_logic_1164.all;entity mod80 isport(clk1:in std_logic; dout:out std_logic_vector(1 downto 0 ) );end ;architecture modba of mod80 is signal qq:std_logic_vector(1 downto 0); begin process(clk1) is begin if(clk1event and clk1=1) then if(qq=11)then qq=00; else qq=qq+1; end if; end if; doutout7out7out7out7=0000000; end case; end process;end architecture; 5 电梯控制器的核心部分: 本模块的是整个电梯控制的关键部分,控制电梯的关键有是在于状态的转换。本模块分为6个状态:C1、C2、C3、TIME3、TIME4、CLOSE_D、CLOSE_D1其实只要5个就够了但是由于5个状态会造成太多的语句嵌套,使得逻辑器件超过了编译器所能接收的范围。 entity keytest is port (clk,up1,up2,down2,down3,key1,key2,key3,tiqian,yanshi: in std_logic; f1_up,f2_down,f2_up,f3_down,ddoor: out std_logic; up_down:buffer std_logic;- ke yi inout? current:out std_logic_vector(1 downto 0); end keytest; architecture test1 of keytest is type state_type is (c1,c2,c3,close_d,close_d1,time3,time4); begin process(clk) variable u,ting: std_logic_vector(3 downto 1):=000; variable state:state_type:=c1; variable qcnt2:integer range 0 to 300; variable f1,f2,f3,ti,ya,d2:std_logic; begin if clkevent and clk=1 then if up1=0 then u(1):=1; f1_up=1; end if;- if up2=0 then u(2):=1; f2_up=1; end if; if down2=0 then d2:=1; f2_down=1; end if; if down3=0 then u(3):=1; f3_down ddoor=1; if ti=1 then qcnt2:=201; ti:=0; elsif ya=1 then qcnt2:=0; ya:=0; end if; if qcnt2 ddoor=0; if qcnt2200 then qcnt2:=qcnt2+1; else qcnt2:=0; if f1=1 then state:=c2; elsif f2=1 then if up_down=1 and ting(3)=1 then state:=c3;elsif up_down=0 and ting(1)=1 then state:=c1; elsif up_down=1 and u(3)=1 then state:=c3;elsif up_down=0 and u(1)=1 then state:=c1; elsif u(1)=1 or ting(1)=1 then state:=c1; UP_DOWN current=01; up_down=1; f2:=0; f3:=0; f1:=0; f1_up f2_up=0; f2_down=0; f1:=0; f2:=0; f3:=0; current=10; if up_down=1 and u(2)=1 then u(2):=0;f2:=1;state:=time4;elsif up_down=0 and d2=1 thend2:=0;f2:=1; state:=time4; elsif ting(1)=1 and up_down=0 then f2:=1 ; state:=time3; elsif ting(3)=1 and up_down=1 then f2:=1;state:=time3; elsif u(1)=1 and up_down=0 thenf2:=1;state:=time3; elsif u(3)=1 and up_down=1 thenf2:=1; state:=time3; elsif u(1)=1 or ting(1)=1 then f2:=1; up_down=0; state:=time3; elsif ting(3)=1 or u(3)=1 then f2:=1 ; up_down current=11; up_down=0; f3_down ddoor=0;if f1=1 then current=01; f1_up=0;if u(1)=1 then u(1):=0; up_down=1; state:=time4; else state:=close_d; end if;elsif f2=1 thencurrent=10;f2_up=0;f2_down=0;if u(2)=1 then u(2):=0;up_down=1
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 依法行使权利教学课件
- 2025年内蒙古煤化工项目申请报告
- 2025年特种作业类危险化学品安全作业胺基化工艺作业-光气及光气化工艺作业参考题库含答案解析
- 货物运输协议书
- 全国卷二新高考数学试卷
- 宁波高考三模数学试卷
- 南侨中学分班考数学试卷
- 攀枝花初二统考数学试卷
- 2025年建筑工程类建筑三类人员专职安全生产管理人员(C3证)-项目负责人(B证)参考题库含答案解析
- 名校测试卷答案数学试卷
- GB/T 24151-2009塑料玻璃纤维增强阻燃聚对苯二甲酸丁二醇酯专用料
- 考研英语5500词汇表讲解
- 混凝土养护方案
- 围手术期质量评价标准(手术室)
- 化学品安全技术说明(胶水)
- 输血法律法规培训PPT
- 海姆立克急救(生命的拥抱)课件
- 越南语基础实践教程1第二版完整版ppt全套教学教程最全电子课件整本书ppt
- 标准化项目部驻地建设方案(五星级)
- 220kv升压站质量评估报告
- C语言程序设计(第三版)全套教学课件
评论
0/150
提交评论