电梯系统实现数字逻辑课程设计报告.doc
《电梯系统实现数字逻辑课程设计报告.doc》由会员分享,可在线阅读,更多相关《电梯系统实现数字逻辑课程设计报告.doc(53页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、数字电路与逻辑设计课程设计报告题目:电梯控制器的设计与实现目 录1 课程设计概述51.1 课设目的51.2 课设要求51.3 课设任务51.4 实验环境52 基本方案设计72.1 设计需求72.2 总体结构设计82.2.1 时钟分频82.2.2 数码管显示模块92.2.3 七段译码器模块92.2.4 电梯主控制器模块102.2.5 顶层调用模块133 实验过程与调试153.1 仿真文件与曲线153.1.1 时钟分频1hz仿真153.1.2 时钟分频400hz仿真173.1.3 数码管显示模块仿真173.1.4 七段译码器模块仿真193.1.5 主控制模块仿真193.2 主要故障与调试253.2
2、.1 故障1253.2.2 故障2253.3 模块内部图263.3.1 顶层调用模块263.3.2 主控制器模块274 总结与心得294.1 课设总结294.2 课设心得29附 录30531 课程设计概述1.1 课设目的通过硬件描述语言VHDL的编程,深入了解并掌握可编程芯片PLD的设计技术,加强学生对数字逻辑课程所学知识综合利用的能力。培养学生创造性思维能力和独立解决实际问题的能力。1.2 课设要求(1) 能够全面地应用课程中所学的基本理论和基本方法,完成从设计逻辑电路到设计简单数字系统的过渡。(2) 能力独立思考、独立查阅资料,独立设计规定的系统。(3) 能够独立地完成实施过程,包括安装、
3、布线、测试和排除故障。1.3 课设任务(1) 制定出详细设计方案;(2) 通过Verilog HDL完成规定的设计任务,然后进行编译和仿真,保证设计的正确性;(3) 生成容丝图文件,下载到Basys2开发板,通过实际线路进行验证;(4) 对复杂系统的设计采取模块化、层次化的设计方法;(5) 撰写设计报告,并对存在的问题进行分析、提出改进意见。1.4 实验环境开发环境ISE Project Navigator: ISE是使用XILINX的FPGA的必备的设计工具。目前官方提供下载的最新版本是14.4。它可以完成FPGA开发的全部流程,包括设计输入、仿真、 综合、布局布线、生成BIT文件、配置以及
4、在线调试等,功能非常强大。ISE除了功能完整,使用方便外,它的设计性能也非常好,拿ISE 9.x来说,其设计性能比其他解决方案平均快30%,它集成的时序收敛流程整合了增强性物理综合优化,提供最佳的时钟布局、更好的封装和时序收敛映射,从 而获得更高的设计性能。先进的综合和实现算法将动态功耗降低了10%。 Basys2 开发板:Basys2 开发板是一个电路设计实现平台,任何人都可以通过它来搭建一个真正的数字电路。Basys2是围绕着一个Xilinx Spartan-3E FPGA芯片和一个Atmel AT90USB USB控制器搭建的,它提供了完整、随时可以使用的硬件平台,并且它适合于从基本逻辑
5、器件到复杂控制器件的各种主机电路。Basys2板上集成了大量的I/O设备和FPGA所需的支持电路,让用户能够构建无数的设计而不需要其他器件。用户设计可以不局限于Basys2板本身,还可以通过四个标准的扩展连接口延伸到面包板、用户自定义电路或Pmod模板中。所有6针接口上的信号都受到ESD和短路保护,从而确保在任何环境中的使用寿命。Basys2开发板兼容所有版本的Xilinx ISE工具。Basys2附带一个用于供电和编程的USB下载线,所以就不需要其他供电器件或编程下载线。2 基本方案设计2.1 设计需求要求:1.输入:reset(脉冲),电源(总开关),楼层按钮(4个,开关),每一层的上下按
6、钮(3楼和6楼的用开关,1楼和8楼的用脉冲),开关门(1个,脉冲);2.输出:楼层显示数码管,计时数码管;电梯运行指示灯(电源),电梯上下指示灯,到达楼层指示灯,开关门状态指示灯3.电源开关作为电路总清零信号,初始状态为Off;拨动“电源开关”,电梯电路进入工作状态;4.初态为电梯在1楼;5.电梯可上可下,如果到达某一层需要停下,则开门后停5s,若停5s期间,按关门键,则立刻关门,否则5s后自动关门。在楼层数码管显示电梯当前所在的楼层;并用时间数码管显示倒计时;不运行时不显示时间;电梯正在上行或下行时,开关门键失效。6.电梯处于某层时,可以选择要到达的楼层,但是选择本楼层没有任何反应。选其他层
7、时,点击启动按钮,则电梯开始运行。7.每次按reset,电梯回到1楼;8.电源打开,电源指示灯亮;9.电梯门开时,开关门指示灯亮,否则,灭;10.电梯上行时,上行指示灯亮,下行指示灯灭;电梯下行时,下行指示灯亮,上行指示灯灭;11.电梯处于某层时,所在楼层的led灯亮,否则灭;12.相邻两层运行时间为9s,用一盏Led灯连续闪烁9次表示,并用时间数码管显示倒计时;13.电梯升降的规律:原则1:楼层设置优先。每个选择的楼层都要停止5秒,然后继续运行。原则2:就近原则。电梯运行时,按照就近原则来定义电梯的运行方向,例如,电梯在3楼,2楼有乘客要下楼,则电梯下行到2楼,在二楼设置楼层为1楼后,下降到
8、1楼;原则3:先上后下。当上下楼层都有请求时,以及同一楼层既有上又有下请求时,先上后下;2.2 总体结构设计 按照题目的要求,输出要有数码管显示,所以程序中应该包含数码管译码、七段译码器模块,并且开关门和楼层间上下倒计时以秒为单位,涉及相关的时钟分频模块。这些模块的设计方法比较传统,采用的就是一般通用的写法,例如时钟分频,就采用传统的一半翻转的计数技巧。当然,除开这些小的独立模块,最重要也是最难的是主控制模块。 对主模块的设计思想是采用有限状态机三段式的描述方式,最初采用过“笨方法”,也就是用枚举的做法用if 、case语句去把电梯在每一层的每种输入都考虑到每种输出,但这样会使代码相当复杂,并
9、且出现很多很麻烦的bug,所以收集相关资料后改为三段式描述。 有限状态机三段式:使用三个always模块,一个always模块采用同步时序描述状态转移,一个always采用组合逻辑判断状态转移条件,描述状态转移规律,另一个always模块描述状态输出(可以用组合电路输出,也可以时序电路输出)。 状态的划分,结合题目要求以及日常生活常识,可以把电梯正常运行的过程分为五个状态, 即没有请求的等待状态(WAIT),向上运行的上升状态(UP),向下运行的下降状态(DOWN),开门状态(OPENDOOR),以及关门状态(CLOSEDOOR)。三段式最关键的地方在于第二段五种状态的转移关系以及转移条件的描
10、述,其次就是第三段状态转移的输出和相关变量的赋值。 其次还有相关的小问题值得注意与思考,例如1楼和8楼的按钮要求输入为脉冲,而其他楼层的输入为开关,这个不同在代码中需要作出相关处理才能正确实现功能。这些小问题的排查也是整个程序能否成功的关键电梯系统总计包含两个时钟分频模块分别用于产生频率为1hz的系统时钟信号和一个频率为400hz的扫描时钟信号,一个数码管显示模块用于根据扫描信号和楼层计时器输出来数码管输出,一个七段译码管模块用于将四位的楼层与计时器转变为可以在数码管中输出的八位二进制数,电梯主控制器模块用于完成电梯信号处理,状态转移判定与决定输出功能,以及顶层调用模块用于完成对所有模块的联合
11、调用和剩余细节功能。 这几个模块中,时钟分频、数码管显示还有七段译码器模块在可参考的资料以及网上都有可用的样板与思想,这里借鉴到我们的程序里面。重要的在于主程序状态机中五个状态的转移关系,在下面会配图详细介绍。2.2.1 时钟分频需求:以开发板提供的50Mhz系统时钟和复位键为输出,得到1hz和400hz的时钟信号输入:clk为开发板提供的50Mhz系统时钟 reset为复位键输出:out为所要得到的1hz和400hz的时钟信号按照一半就翻转的方法,输入系统时钟,每个上升沿到来时计数一次,计数满2500次使输出翻转一次并且计数清零,这样得到的输出即为1hz;同理,对于400hz 的时钟分频,只
12、需改为计数满62500次使输出翻转即可。 2.2.2 数码管显示模块需求:根据所提供的扫描时钟,控制四个数码管以较快的速度分别显示出四个可控制的数字,每一次只有一个数码管有显示,但由于扫描时钟频率较快,所以使得在肉眼看来是数码管同时工作。输入:clk_fen为模块shizhongfenpin400hz输出的400hz的扫描信号 num2为所要显示的第一个数字 num3为所要显示的第二个数字输出:wx为判断四个数码管中哪一个工作的四位输出 out为一个数码管显示时所需要显示的四位二进制数扫描信号为时钟分频中400hz的时钟信号输出,将其与要显示的数字一起输入。在400hz的扫描信号的每个周期内四
13、个数码管中只有一个工作,与其对应的输出wx控制四个数码管中哪一个工作并且在顶层调用模块中绑定四个数码管的引脚,输出out作为七段译码器的输入来显示数字。2.2.3 七段译码器模块需求:将一个需要显示的四位二进制数转化成数码管能够显示的八位二进制笔画输入:num为需要显示的四位二进制数输出:out为对应的笔画数码管显示模块中的输出out为四位二进制数,将其作为输入。设计数字与笔画的对应关系后,即可按照输入输出相应的数码管数字。对应关系如下:4b0000:out = 8b00000011;4b0001:out = 8b10011111;4b0010:out = 8b00100101;4b0011:
14、out = 8b00001101;4b0100:out = 8b10011001;4b0101:out = 8b01001001;4b0110:out = 8b01000001;4b0111:out = 8b00011011;4b1000:out = 8b00000001; 4b1001:out = 8b00001001;4b1111:out = 8b11111111;2.2.4 电梯主控制器模块需求:完成电梯输入信号处理,状态转移判定与决定输出输入:cp为开发板的50Mhz系统时钟 clk为1hz的电梯系统时钟 reset为复位键 door为关门键 up_3,up_6,down_3,down
15、_6为3,6楼的上下行请求信号 up_1,down_8为1楼的上行请求信号,8楼的下行请求信号 d1,d3,d6,d8为1,3,6,8楼的停靠请求信号输出:num_louceng为楼层输出(四位二进制表示) out_f为楼层输出(八位二进制表示),但在顶层调用模块中未用到 count_out为计时器输出(八位二进制表示),但在顶层调用模块中未用到 LiftState为当前状态输出,但在顶层调用模块中未用到 count为计时器输出(四位二进制表示) DoorFlag为开关门标志位 UpDnFlag为上下行标志 pos为楼层输出(八位二进制表示),但在顶层调用模块中未用到 UpFlag为上行标志
16、DownFlag为下行标志大层次上的转移关系如下图所示,这部分由我搭档完成,在代码中体现在三段式第一段、第三段以及其他小的地方中。 开始初态一楼,关门,等待状态 分析输入,信号并置根据输入和当前状态判断下一状态,由当前状态决定当前输出 是电梯运行,输出,状态由当前状态转变为下一状态 否 是否复位是否关闭电源 否 是 结束 图1对于三段式第二段详细的状态转移关系,由于篇幅关系不能一一介绍,在此选了WAIT状态对于下一状态的转移关系以及转移条件来做示范,读者可以以此为例在附录源码中去了解其他状态的转移情况。开始当前为WAIT状态有内部停靠请求? N Y有当前楼层上升或下降请求吗? 有当前楼层的吗转
17、OPENDOOR Y Y有大于当前楼层上升或下降请求N N有大于当前楼层的 转UP Y Y还有任何上升或下降请求吗 N 转DOWN N Y 保留在WAIT N 图2在代码中,用八位二进制数d_all表示内部停靠请求的信号并置 ,同理,用八位二进制数up_all、down_all和pos表示外部上升、下降请求、当前位置的信息并置。通过d_all、up_all、down_all与pos的相关逻辑运算表示决策框中转移条件。2.2.5 顶层调用模块需求:完成对所有模块的联合调用和剩余细节功能)输入:cp为开发板的50Mhz系统时钟 reset为复位键 door为关门键 up_3,up_6,down_3
18、,down_6为3,6楼的上下行请求信号 up_1,down_8为1楼的上行请求信号,8楼的下行请求信号 d1,d3,d6,d8为1,3,6,8楼的停靠请求信号输出:led_1,led_3,led_6,led_8为1,3,6,8楼的停靠LED灯 led_up,led_down为上下行的指示灯 led_door为开关门指示灯 out_count为数码管显示的一个数字对应的八位笔画 out_shumaguan为扫描频率下工作的数码管引脚:NET cp LOC = B8; NET d1 LOC = B4; NET d3 LOC = K3; NET d6 LOC = L3; NET d8 LOC =
19、P11; NET door LOC = M4; NET down_3 LOC = E2; NET down_6 LOC = G3; NET down_8 LOC = G12; NET led_1 LOC = P6; NET led_3 LOC = P7; NET led_6 LOC = M11; NET led_8 LOC = M5; NET led_door LOC = N4; NET led_down LOC = P4; NET led_up LOC = G1; NET reset LOC = A7; NET up_3 LOC = N3; NET up_6 LOC = F3; NET up
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 电梯 系统 实现 数字 逻辑 课程设计 报告
限制150内