logo资料库

数电电梯实验报告.docx

第1页 / 共8页
第2页 / 共8页
第3页 / 共8页
第4页 / 共8页
第5页 / 共8页
第6页 / 共8页
第7页 / 共8页
第8页 / 共8页
资料共8页,全文预览结束
电梯实验报告 1、 实验目的: 通过硬件描述 vhdl 语言的编程,深入了解并掌握可编程芯片 PLD 的设计技术,加强对《数字逻辑》课程所学知识综合运用的能力,熟 练地掌握 vhdl 语言的基本编程方法与基本的句式,培养自己的逻辑 思维能力与创作能力。 2、 实验内容: 设计一个四层的电梯系统,设计的具体内容如下图所示, 电梯每经过一层的运行时间为 5s,停止时间为 8s。电梯的初态为 一层。并且符合以下原则:楼层设置优先;就近原则;先上后下原则。 上下灯 4 3 2 1 楼层 时间 1 2 3 4 置入 reset 启动
3、 实验环境: 硬件环境 VHDL: VHDL 翻译成中文就是超高速集成电路硬件描述语言, 主要是应用在数字电路的设计中。目前,它在中国的应用多数是用在 FPGA/CPLD/EPLD 的设计中。VHDL 主要用于描述数字系统的结构,行 为,功能和接口。VHDL 的程序结构特点是将一项工程设计,或称设 计实体(可以是一个元件,一个电路模块或一个系统)分成外部(或 称可视部分,及端口)和内部(或称不可视部分),既涉及实体的内部 功能和算法完成部分。在对一个设计实体定义了外部界面后,一旦其 内部开发完成后,其他的设计就可以直接调用这个实体。具有“功能 强大设计灵活,易于共享和复用”等特点。 软件编程环境(isp):ispLEVER 是 lattice 公司推出的 EDA 软件, 适用于所有的 lattice 公司的 CPLD、SPLD、FPGA 可编程器件的设计。 能够对所涉及的系统进行功能仿真和时序仿真。编译器将设计输入生 成熔丝文件图文件,然后将熔丝文件下载到 ispLSI1032 芯片中,在 设计输入的过程中,常采用层次化设计方法,分模块、分层次的进行。 4、 实验设计方案: 输入说明:按键扫描时钟(buttonclk)、电梯时钟信号(clk)、异步 复位(reset)、一层上升请求端口(f1upbutton)、二层上升请求端口 (f2upbutton)、二层下降请求端口(f2dnbutton)、三层下降请求端口 (f3dnbutton)、三层上升请求端口(f3upbutton)、四层下降请求端口 (f4dnbutton)、一层停站请求端口(stop1button)、二层停站请求 端口(stop2button)、三层停站请求端口(stop3button)、 四层停站
请求端口(stop4button)、电梯位置信号(position(4downto1))、电 梯模式(上升或下降)信号(udsig)。 主要的程序代码说明: 定义状态变量 Type liftstate is : (stopon1,dooropen,doorclose,doorwait1,doorwait2,doorwait3,d oorwait4,doorwait5,doorwait6,doorwait7,doorwait8, up,down,stop,swup1,swup2,swup3,swup4,swup5,swdn1,swdn2, swdn3,swdn4,swdn5); 主要使用了 case 语句和 if 语句。 模块图: 定义元件库 输入端口 输出端口 状态机进程(主要进程) 定义 fourlift 实体 结构体 one 信号灯控制进程 按键信号灯进程 流程图:
电梯总流程图 初始化 有无运行信号 N 等待请求 Y 显示并判断上下行 有无符合要 求的同层信 号 Y 停止开门 消掉该层的信号 有无同向选层 信号 N 扫描电梯位置 N 上\下行 Y 停下取消选层信号
判断目的层是否 N 达到 Y 停止 上下行分模块流程图 :
5、 实验步骤与观察记录: 实验步骤部分: 1) 首先应考虑输入端口,一个异步复位端口 reset,用于系统 不正常是回到初始态,以及人在外面时的六个状态,在电梯内 部应该有各层停留的请求端口,一个电梯的时钟输入端口,还 有一个按键的端口; 2) 其次用该考虑输出,有升降请求就需要有个灯来显示一下, 同时电梯内部也需要有写等来显示,同时还需要有数码管显示 楼梯的层数以及经过的时间 3) 四层电梯的结构体设计状态机设计了状态分别是(初始化 状态)stopon1,(开门状态)dooropen,(关门状态)doorclose, (开门时间的几个状态)doorwait1-8,(楼层上行时间的几个 状态)swup1-5,(下行时间的几个状态)swdn1-5,(上下行指 示)up down,(停滞状态)stop; 4) 状态机进程中电梯的状态多数由信号灯控制,通过对信号 灯的判断决定下一状态,而信号灯的控制又是由 clearup, cleardn 来控制的 观察记录部分: 在调试程序的过程中出现了许多的逻辑错误,语法错误,开始的 时候仪器没有反应就只能凭借自己的经验来一步一步寻找其中的一 些 bug 后来一起有些反应就可以一步一步测试寻找看看哪些环节有所不足
然后去寻找对应的程序代码找出逻辑错误,等程序完善的差不多是就 可以考虑添加点附加功能。 6、 实验过程的分析处理以及讨论: 在完成编程以后要进行程序的编译与仿真,开始时总是忘记把 根目录建立在 d 盘以至于出现了各种各样的错误,改了根目录以后, 开始正式修改,前期程序有许多语法错误,总是少加了分号,或者忘 记写 end if 或者是把分号写成了汉语字符修改过来以后才开始编译。 编译通过以后,又出现了很多的逻辑错误,比如说在两个进程里 同时给灯赋值以至于程序的逻辑混乱不能正确的运行,在我们快把程 序功能实现时发现少了一个模块,就是程序不能够遵守先上后下的原 则然后我们就开始在程序里加上这个模块,可是在立刻开关门时程序 又出现了错误,我们没有找到逻辑的问题就只能把这段代码删掉重新 换一种思路。参照了别人的意见。最终终于解决这个问题。 7、 实验方案的改进意见: 在这个电梯试验中,我们可以看见很明显的漏洞,比如说没有 超重的提示,没有电梯内的照明灯,而一般的四层楼是不会安 装电梯的这样过于浪费资源,应该多设计一下电梯的层数,电 梯内没有信号如果电梯坏了应该需要自动向外界报警,还应该 注意一下防抖动的措施,当突然没电的时候电梯不能够掉下去, 应添加安全的措施。我们虽然只是一个实验报告,可是还是应 该尽量向现实中的电梯接近。
8 实验感想: 这次的课设实验时间是比较紧的,只有 7 天的时间而且之前我 们对于 VHDL 语言知之不多,所以只能一边学一遍编译程序, 同时我们还借鉴的了老师给的源程序,感觉只是开始时定义输 入输出信号时遇上了很大的问题,原因是我们没有弄清逻辑就 开始定义各种端口,导致了端口的错误,然后我们只能从头开 始分析课设,建立正确的流程图,然后开始编译程序,从中遇 上的各种问题也教育我们编程不能够疏忽,一个符号的疏忽可 能会导致检查错误半个小时。在编程之前要想好之间的逻辑关 系这样才不容易出差错。
分享到:
收藏