文档详情

基于FPGA的投币式矿泉水自动售水机控制系统.docx

发布:2018-06-19约6.87千字共11页下载文档
文本预览下载声明
基于FPGA的投币式矿泉水 自动售水机控制系统 ——EDA实验设计报告 任务与要求: 设计一个投币式矿泉水自动售水机的控制系统。该系统能完成矿泉水的单价和数量的信息存储,进程控制,硬币处理,余额计算,显示等功能。某种矿泉水的单价和数量在初始化时输入并储存,用户可以用硬币购买。售货时能根据用户输入的货币,判断钱币是否足够,钱币足够则自动送出一瓶水,钱币不足则给出提示继续投币,若没有继续投币则延迟30秒后退币并复位;能够自动计算出应找钱币余额、库存矿泉水数量并显示。 设定:使用硬币为一元、五角两种,某种矿泉水的单价为1.5元。 程序的设计思路和ASM流程图的设计: 本系统由拨码开关表示投币数量,其中a 1表示投入的五角硬币数量,b 1表示投入的1元硬币数量,每次根据投入的硬币不同而分别计数,并将投入的总金额用数码管显示出来(分频显示),当达到了交易金额时,out产生一个正脉冲,此正脉冲控制闸门打开,汽水掉出来,交易完成。当超出了交易金额,则out1会产生一个正脉冲,提示按动退币开关取回找零。若交易未完成时,顾客想要取消交易,按动退币开关可取回投入金额。 1、原始状态图的建立与化简 ASM图见附图。 2、状态分配与状态转换表的确定 投币部分: 该部分用三个状态即可表示。s0表示未投币状态, s1表示已投入五角状态, s2表示投入已一元状态。当投入一元五角时,给出一瓶水,并转到状态s0 ,当投入两元时,给出一瓶水,同时找回一枚五角硬币,并转到状态s0。 状态转换表如下: s a1b1 00 01 10 s0 s0/00 s01/00 s2/00 s1 s1/00 s2/00 s0/10 s2 s2/00 s0/10 s0/11 显示部分: 状态 rst kc s tb A 0 X X X B 1 0 0 X C 1 1 X X D 1 0 1 0 E 1 0 1 1 状态A:系统功能不开启,无显示 状态B:系统功能开启,交易未开始,数码管显示交易金额0.0 状态C:库存开关开启,显示库存 状态D:使用投币功能,交易开始,显示投币金额 状态E:退币功能开启,显示应退还金额 3、输入、输出变量的确定 输入变量: clk(可调时钟信号),rst(使能信号),tuibi(退比操作),kc(库存显示) a1(五角硬币个数),b1(一元硬币个数) KBCol(键盘列扫描信号) 输出变量 out(购买成功,自动出水),out1(领取找零提示) warn(提示投币不足,继续投币) ledtb(30秒未投币,交易结束,领取钱币) weixuan(位选),pay(数码管显示) KBRow(键盘行扫描信号) 程序特色部分举例: 本系统在设计要求的基础上,增加了退币系统。 该系统的功能主要分为三部分: 第一部分为要求的找零退币; 第二部分为未及时投币造成的退币; 第三部分为投币不足且不希望继续交易时的退币。 此外,本系统还利用分频显示的方式,实时显示投币钱数,退币金额等,具有一定的智能。 程序调试与改进 : 调试步骤: 1、运行QuartusII软件,新建工程  2、建立文本文件,写入程序,编译保存。  3、分配管脚。保存编译。 4、将生成的.sof文件烧录到FPGA 5、观察结果 设计改进: 本系统的设计并不是直接完成的,而是一部分一部分不断调试修改完善的,因而可能部分程序顺序较为混乱。先完成的部分是投币功能部分,然后逐步加入显示功能,退币功能,以及库存功能,最终整合在一起,达成任务要求。 编写过程中,库存显示部分出现了一些问题:当售出矿泉水时,库存数量应自动减一,然而由于拨码开关控制投币金额,程序自动循环运行,使得库存数量自动循环递减。经过多次尝试,我在库存运算前加了一个比较条件——只有在投入钱币数量发生变化且购满成功时,库存才减少。之后通过不断调试,系统终于顺利实现了库存显示的功能。 总结: 本次实验通过对自动售水机状态转换图的分析得出其工作原理,并根据工作原理编写出Verilog HDL源程序。通过验证,设计的系统基本完成了设计预定的目标,实验结果能够顺利的在FPGA上正确显示,能较好的实现自动售货机的基本功能 。 收获与体会: 通过此次仿真实验—基于状态机的自动售货机的设计,我掌握了Quartus II软件的基本使用方法,对EDA设计有了更进一步的认识并且对Verilog语言有了更深刻的了解,可以独立编写一些源程序,灵活地运用它来实现我所想要其实现的功能。同时,通过此次实验,我掌握了设计工作的完整流程,培养并锻炼了设计思维,增加了实际操作经验,锻炼了能力,为以后的课程设计积累了宝贵的经验。实验过程中难免遇到一些问题,遇到问题我们不能灰心、烦躁,甚至放弃,而要静下心来仔细思考,分部检查,找出最终的原因进行改正,这样才会有进步,才会一步
显示全部
相似文档