《电子综合设计EDA课程设计—自动售票机[汇编]》由会员分享,可在线阅读,更多相关《电子综合设计EDA课程设计—自动售票机[汇编](18页珍藏版)》请在金锄头文库上搜索。
1、1 课程设计报告 2015-2016学年第 2 学期 课程设计名称:电子综合设计 EDA课程设计 院 (系) :电子信息学院 专业: 电子信息工程班级:电子 1313 学生姓名:吴限学号: 26 综合实验时间: 2016/7/11-2016/7/15 指导教师:钟 旭 提交时间: 2016/7/15 2 上海电机学院课程设计任务书 课程名称电子综合设计 EDA课程设计课程代码033117P1 课程设计 课题清单 1、数字式竞赛抢答器 2、自动售票机 3、乒乓球比赛游戏机 4、电子密码锁 5、出租车自动计费器 6、洗衣机控制器 7、交通信号灯控制器 8、电梯控制器 设计时间2016 年 7 月
2、11 日 2016 年 7 月 15 日 一、课程设计任务汇总 设计任务:自动售票机 功能要求: 1、 设计一个自动售票机,用开关电平信号模拟投币过程,每次投一枚 硬币,但可以连续投入数枚硬币; 2、 机器能自动识别硬币金额,最大为 1 元,最小为 5 角。设定票价 为元,每次售一张票; 3、 购票时先投入硬币,当投入的硬币总金额达到或超过票的面值时, 机器发出指示,这时可以按取票键取出票; 4、 如果所投硬币超过票的面值则会提示找零钱,取完票以后按找零键 则可以取出零钱,并显示零钱数; 使用数码管显示当前投入的金额。 二、对课程设计成果的要求(包括课程设计报告、图纸、图表、实物等软 硬件要求
3、) 1课程设计基本要求 课题分析、查阅资料、方案论证、方案实现、系统联调、撰写课程设计 报告 2成果要求 (1)系统方案(2)电路 RTL原理图 (3)Verilog源程序和流程图(或状态机转移图) (4)Verilog测试程序(5)设计说明书(课程设计报告) 三、课程设计工作进度计划: 时间安排内容 星期一下达任务 星期二程序设计 星期三程序调试 星期四撰写报告 星期五考核答辩 3 四、主要参考资料: 指 导 书: Verilog数字系统设计教程夏宇闻编著北京航空航天大学 出版社 参考资料:EDA 设计实验教程艾明晶编著清华大学出版社 4 目录 一、题目名称 错误! 未定义书签。 二、内容摘
4、要 错误! 未定义书签。 三、设计任务和要求 错误! 未定义书签。 四、系统方案 错误! 未定义书签。 五、设计方法硬件设计 错误! 未定义书签。 六、设计方法软件设计 错误! 未定义书签。 七、系统调试 错误! 未定义书签。 使用的主要仪器和仪表. . 错误! 未定义书签。 调试电路的方法和技巧. . 错误! 未定义书签。 整理性能测试数据和波形,并与计算结果比较分析 . 错误! 未定义书签。 调试中出现的故障、原因及排除方法. 错误! 未定义书签。 八、设计成果 错误! 未定义书签。 九、设计结论 错误! 未定义书签。 十、收获和体会 错误! 未定义书签。 附件(源程序). 错误! 未定义
5、书签。 参考文献 . . 错误! 未定义书签。 1 一、题目名称 自动售票机 二、内容摘要 自动售票机是为了实现机器根据输入指令进行全自动出售票的目的。本 设计是采用了币值输入相加模块、主控模块和币值显示这三个模块实现的。 在币值输入相加模块中,用两个开关电平输入按钮分别代表 2 种硬币输 入,每按一次,表示投入一枚硬币。并设置控制电路,硬币输入的次数控制 十进制加法器的加数 A 和被加数 B,使输入的币值实时相加。用两位数码 管显示当前的投入币值,在主控模块中设置一个复位信号reset ,用于中止 交易 (系统复位)。 设置一个取票信号ok, 一个票给出信号 tout , tout 接 LE
6、D 显示,灯亮则表示可以取票,否则取票键无效,按ok 键取票,灯灭。设置 一个取零钱信号 charge ,一个零钱输出信号 mout,mout 接 LED 显示,灯 亮则表示有零钱,按 charge 取零钱,灯灭。主控模块中是一个状态机,当 币值不同时分别实现不同的结果。 三、设计任务和要求 设计一个自动售票机, 用开关电平信号模拟投币过程, 每次投一枚硬币, 但可以连续投入数枚硬币。机器能自动识别硬币金额,最大为1 元,最小为 5 角。设定票价为元,每次售一张票。 购票时先投入硬币,当投入的硬币总金额达到或超过票的面值时,机器 发出指示,这时可以按取票键取出票。如果所投硬币超过票的面值则会提
7、示 找零钱,取完票以后按找零键则可以取出零钱。 2 四、系统方案 表 4-1 币值相加模块输入状态表 图 4-1 自动售票机系统框图 3 五、设计方法硬件设计 图 5-1 自动售票机硬件系统框图 4 六、设计方法软件设计 图 6-1 币值判断流程图 图 6-2 系统流程图 5 七、系统调试 使用的主要仪器和仪表 计算机一台、 ISE 仿真设计软件。 调试电路的方法和技巧 分别运行每个模块的程序,观察是否通过检测,最后通过仿真出来的测 试波形图,仔细的进行一步步运行,观察运行结果是否和课题的设计要求相 对应。 整理性能测试数据和波形,并与计算结果比较分析 实际的仿真结果图能够完美的实现课题的各项
8、要求,最终的仿真测试图 如下图 8-4。 调试中出现的故障、原因及排除方法 数码管显示不正确,原因是管脚的配置不对。 6 八、设计成果 图 8-1 顶层模块 clk :时钟信号; reset :系统复位清零; half :5 角硬币模拟信号,为1 时表示投币 5 角,为 0 表示未投入; one:1 元硬币模拟信号,为1 时表示投币 1 元,为 0 表示未投入; mout:可找零钱输出显示,置1 表示有零可找,置0 表示无零钱可找; tout :有票输出信号,置1 表示有票可出,置 0 表示不能出票; charge:取零钱信号,置1 检查是否能出零钱; ok:取票,置 1 检查是否可取票; m
9、s1,ms2 :输出数码管片选信号, 01选中第 2 位数码管, 10 选中第 1 位数码 管; a,b,c,d,e,f,g:数码管输出译码信号,分别驱动数码管7 个引脚。 7 图 8-2 主控模块 mh :投入金额数码显示的高4 位;ml: 投入金额数码显示的低4 位。 图 8-3 数码管模块 in1,in2:分别表示高低位输入金额; ms1,ms2 :输出数码管片选信号。 a,b,c,d,e,f,g:数码管输出译码信号,分别驱动数码管7 个引脚。 8 图 8-4 模拟仿真图 图 8-5 图 8-5 为第一次交易此时投入一枚硬币,此时金额显示为10,译码后也就 是 1001111,00000
10、01;此时按下 ok 键,由于金额不足,没有任何反应。随后投 入第二枚硬币,金额显示20,金额不足,依旧没有反应。 图 8-6 图 8-6 表示此时又投入1 元,此时总共已经投入3 元,数码管显示30,译 码后就是 0000110,0000001;此时, tout 为 1。按下 ok,出票, tout 为 0。 9 图 8-7 图 8-7 表示由于还有余额5 毛,所以 mout 为 1,按下 charge,找零, mout 清零,找零。 图 8-8 图 8-8 为第二次交易,先按下 half , 金额为 5 毛, 显示 05, 译码后为 0000001, 0100100。由于金额不足按下ok
11、后,没有反应。 10 图 8-9 图 8-9 表示随后按下 one,再按 one,此时金额达到元,金额已满, tout=1 。 然后按下 ok,出票并且 tout 清零。 11 九、设计结论 本自动售票机较好地采用了自顶向下的设计理念,利用层次化结构化的方法 将售票机系统分为三个模块。 自动售票机系统是由顶层模块负责连接各子模 块,主控模块设置各输入输出信号、时钟信号及复位信号, 并控制币值的累 加,数码管显示模块负责数码管的动态显示币值组成。设计合理,层次清晰, 仿真时能够分别测试各个模块从而尽早地排除错误。 在程序设计上顶层模块调用主模块及数码管显示模块,实现对主控与数码管 的连接;主控模
12、块采用 Mealy 状态机结构主要对投币情况及出票进行控制并送数 码管显示;数码管模块采用动态扫描方法结合片选信号实现两位数码显示。通过 对着三个大模块的设计, 成功实现了自动售票的功能并进行仿真测试,即当币值 等于元时,tout 指示灯亮, ok 键有票给出, mout灯不亮,不找零钱;当币值 为元时,tout 指示灯亮,ok 键有票给出, mout 指示灯亮,有零钱给出,charge 键找零钱;其余情况下,既无票给出也不找零钱。测试结果显示设计符合要求。 12 十、收获和体会 通过本次课程设计,我对Verilog HDL语言有了更深刻的了解,能够比较灵 活地运用它来实现我们所想要要其实现的
13、功能。在实验中,我也遇到了很多挫折, 不过我都和同伴一一克服了, 大家齐心协力解决了问题, 使我明白了和他人共同 合作的重要性。 在以后的道路上我们也必须深刻认识到团队合作的精神,投入今 后的发展之中。 日常生活中有很多各种不同的自动售票机,通过本次课程设计我终于了解到 自动售票是如何实现的了, 虽然我们设计的知识很简单的一种售票机,但是原理 是大同小异的,相信如果让我设计更复杂点的功能,我也会研究出来。 成功就是在不断摸索着前进中实现的,遇到问题我们不能灰心、 烦躁,甚至 放弃,而要静下心来仔细思考,分部检查,找出最终的原因进行改正,这样才会 有进步,才会一步步向自己的目标靠近,才会取得自己
14、所要追求的成功。 13 附件(源程序) 顶层模块程序: module top(one,half,reset,clk,ok,charge,tout,mout,ms1,ms2,a,b,c,d,e,f,g); ne(one), .half(half), .mh(mh), .ml(ml), .tout(tout), .mout(mout), .reset(reset), .clk(clk), .ok(ok), .charge(charge) ); sel u2( .in1(ml), .in2(mh), .clk(clk), .ms1(ms1), .ms2(ms2), .a(a), .b(b), .c(
15、c), .d(d), .e(e), .f(f), .g(g) ); endmodule 14 ne(one), .half(half), .reset(reset), .clk(clk), .ok(ok), .charge(charge), .tout(tout), .mout(mout), .ms1(ms1), .ms2(ms2), .a(a), .b(b), .c(c), .d(d), .e(e), .f(f), .g(g) ); initial begin 宇闻. Verilog数字系统设计教程 . 北京:北京航空航天大学出版社, 2013 2. 艾明晶 .EDA设计实验教程 . 北京:清华大学出版社,2010 小组分工 资料搜集与整理朱佳俊 Verilog HDL程序及仿真测试吴限 Verilog HDL程序及仿真测试谢煜 撰写报告及 PPT苏嘉明