您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 电子设计/PCB > 北邮数电实验报告—简易三层电梯控制器
1北京邮电大学数字电路与逻辑设计实验简简易易三三层层电电梯梯控控制制器器学院:信息与通信工程学院专业:通信工程班级:姓名:学号:2一.设计课题的任务要求(一)、实验目的1.熟练掌握VHDL语言和QuartusII软件的使用;2.理解状态机的工作原理和设计方法;3.掌握利用EDA工具进行自顶向下的电子系统设计方法;(二)、相关知识本实验要利用状态机设计实现一个三层电梯控制系统,与其他控制系统一样,本系统划分为控制器和受控电路两部分。控制器使整个系统按设定的工作方式实现电梯的上升下降和开关门,并接收受控部分即外部按钮以及内部按钮的反馈信号,决定其状态转换方向及输出信号,控制整个系统的工作过程。三层电梯系统的有上升下降LED指示灯,开关门LED指示灯,所有LED灯均为高电平点亮。设置4s的开关门等待电路,用数码管显示电梯楼层,用按钮模拟电梯外部及内部的按钮(BTN)。系统有正常工作和复位两种工作模式。(三)、实验任务模拟真实电梯的运行情况,设计制作一个简易电梯控制器控制二层电梯的运行。基本要求:1.电梯设有一层、二层外部呼叫按钮和内部一层、二层指定按钮(BTN)。2.利用数码管显示电梯所在楼层,用LED显示电梯运行状态如上行、下行、开门、关门等。提高要求:1.点阵显示楼层;2.用点阵显示楼层的上下滚动移出移入表示电梯的上行或下行运行方向3.增加为三层电梯控制器二.系统设计(包括设计思路、总体框图、分块设计)(一)设计思路电梯控制器采用状态机来实现,思路比较清晰。可以将电梯等待的每秒钟以及开门、关门都看成一个独立的状态。由于电梯又是每秒上升或下降一层,所以就可以通过一个统一的1秒为周期的时钟来触发状态机。根据电梯的实际工作情况,可以把状态机设置10个状态,分别是“电梯停留在第1层”、“开门”、“关门”、“开门等待第1秒”、“开门等待第23秒”、“开门等待第3秒”、“开门等待第4秒”、“上升”、“下降”和“停止”状态。各个状态之间的转换条件可由设计要求所决定。对于特殊情况:当复位信号reset为高电平时,则回到最初状态。(二)总体框图1.系统结构框图2.模块划分方框图43.控制模块流程图54.状态转移图6(三)分块设计-------在VHDL设计中,采用自顶向下的设计思路。1.顶层模块中,根据硬件设计,设置如下端口:外部时钟信号:clk异步复位按键:reset各层上升下降请求端口:f1upbutton,f2dnbutton,f2upbutton.f3dnbutton各层停站信号:stop1button,stop2button,stop3button电梯位置信号:position电梯模式(上升/下降)信号:udsig上升、下降、停站请求寄存信号:fuplight,fdnlight,stoplight开关门信号:doorlight数码管共阴极控制:dout1选通信号;choose72.在底层中,把不同功能分模块设计。主分频模块(分频器模块):外部时钟信号CLK的频率为50MHz,而实际需要的内部计时时钟频率为1Hz,需要一个分频电路。输入端口:CLK外部时钟信号输出端口:CLK_OUT分频后信号次分频模块(防抖动模块):按键有效按下方触发上升沿,引起状态变化,防抖防止一些无效的按键抖动影响状态机的状态转移。输入端口:CLK外部时钟信号输出端口:CLK_OUT1分频后信号状态机模块:描述电梯所有十个状态之间详细的状态转移和转移条件。输入端口:CLK时钟信号,RESET复位信号,POSITION信号输出端口:f1upbutton,f2dnbutton,f2upbutton.f3dnbutton,udsigdoorlight数码管显示模块:接收数字信号,进行7位数码管显示译码输出。输入接口:POSITION输入信号输出接口:dou1共阴极控制,choose选通信号灯控制模块:实现状态记忆和清零,保存之前状态机所处状态,消除已过状态输入接口:RESET信号,buttonclk信号输出接口:stop1button,stop2button,stop3button,,fuplight,fdnlight,stoplight三.仿真波形及波形分析1.第二层电梯外部有上升请求,当乘客进入电梯以后,在电梯内部要求上升到第三层,电梯上升到第三层,开门4秒以后关门,停留在第三层。82.当电梯停留在第三层的时候,在电梯外第二层有下降请求,电梯下降到二层,相应下降请求,此后电梯内部没有停留在哪层的请求,所以电梯停留在第二层。3.同时有上升和下降请求信号时,原先电梯停留在第一层,这时电梯外三层有下降请求。电梯上升到第三层,乘客进入电梯后要求下降到一层,与此同时,电梯外二层有上升请求,电梯首先乡音下降请求后再响应这个上升请求,所以电梯线下降到一层再上升到第二层。最后乘客在电梯内要求上升到三层,所以电梯最后停留在三层。94.原先电梯停留在第一层,电梯外第三层有下降请求,电梯上升升到三层,乘客进入电梯后要求下降到一层,此时二层有下降请求,接着又有上升请求,电梯先在二层停留。然后下降到一层,随后又响应二层上升请求,上升到二层,乘客进入电梯后要求上升到三层,电梯最后停留在三层。5.复位状态10四.源程序(注释)libraryieee;--库的说明useieee.std_logic_1164.all;--程序包的说明useieee.std_logic_unsigned.all;useieee.std_logic_arith.all;entitylizhouthreeliftis--实体port(clk:instd_logic;--时钟信号reset:instd_logic;--异步复位端口f1upbutton:instd_logic;--一层上升请求端口f2upbutton:instd_logic;--二层上升请求端口f2dnbutton:instd_logic;--二层下降请求端口f3dnbutton:instd_logic;--三层下降请求端口stop1button:instd_logic;--一层停站请求端口stop2button:instd_logic;--二层停站请求端口stop3button:instd_logic;--三层停站请求端口position:bufferintegerrange1to3;--电梯位置信号udsig:bufferstd_logic;--电梯模式(上升或下降)信号fuplight,fdnlight,stoplight:bufferstd_logic_vector(3downto1);--上升、下降、停站请求寄存信号doorlight:outstd_logic;--开关门信号dout1:outstd_logic_vector(6downto0);choose:outstd_logic_vector(5downto0));endentitylizhouthreelift;architectureoneoflizhouthreeliftis--结构体typelift_stateis--定义十个状态11(stopon1,dooropen,doorclose,doorwait1,doorwait2,doorwait3,doorwait4,up,down,stop);signalmylift:lift_state;signalclearup:std_logic;--上升和停站请求清除信号signalcleardn:std_logic;--下降和停站请求清除信号signalliftclk:std_logic;signalbuttonclk:std_logic;signalCOUNT1:integerrange0to24999999;signalCOUNT2:integerrange0to6499;beginctrlift:process(reset,liftclk)variablepos:integerrange3downto1;beginifreset='1'then--异步复位,电梯的初始状态为一层开门状态mylift=stopon1;clearup='0';cleardn='0';elseifliftclk'eventandliftclk='1'thencasemyliftiswhenstopon1=doorlight='1';position=1;pos:=1;mylift=doorwait1;whendoorwait1=--电梯等待4smylift=doorwait2;whendoorwait2=clearup='0';cleardn='0';mylift=doorwait3;whendoorwait3=mylift=doorwait4;whendoorwait4=mylift=doorclose;whendoorclose=--关门,判定电梯下一个运行方式doorlight='0';ifudsig='1'then--电梯处在上升模式ifposition=3theniffuplight=000andfdnlight=000andstoplight=000then--没有请求信号时,电梯停在当前层udsig='0';mylift=doorclose;12elsiffdnlight(3)='1'orstoplight(3)='1'then--本层有请求信号是,电梯开门udsig='0';mylift=dooropen;else--否则下降udsig='0';mylift=down;endif;elsifposition=2theniffuplight=000andfdnlight=000andstoplight=000thenudsig='1';mylift=doorclose;elsiffuplight(2)='1'orstoplight(2)='1'then--本层有上升或停站请求时时,电梯开门udsig='1';mylift=dooropen;elsiffuplight=000andstoplight=000andfdnlight=010then--只有二层有下降请求时,电梯开门udsig='0';mylift=dooropen;elsifstoplight(3)='1'orfdnlight(3)='1'then--三层有停站请求或下降请求,则上升udsig='1';mylift=up;elseudsig='0';mylift=down;endif;elsifposition=1theniffuplight=000andfdnlight=000andstoplight=000thenudsig='1';mylift=doorclose;elsifstoplight(1)='1'orfuplight(1)='1'thenudsig='1';mylift=dooropen;elseudsig='1';mylift=up;endif;endif;elsifudsig='0'then--电梯处在下降模式ifposition=3theniffuplight=000andfdnlight=000andstoplight=000then13udsig='0';mylift=doorclose;elsiffdnlight(3)='1'orstoplight(3)='1'thenudsig='0';mylift=dooropen;elseudsig='0';mylift=down;endif;elsifposition=2theniffuplight=000andfdnlight=000andstoplight=000thenudsig='0';mylift=doorclose;elsiffdnlight(2)='1'orstoplight(2)='1'thenudsig='0';mylift=dooropen;els
本文标题:北邮数电实验报告—简易三层电梯控制器
链接地址:https://www.777doc.com/doc-1962787 .html