verilog设计 自动售货机.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
verilog设计 自动售货机

自动售货机 1、设计说明 本设计是以现场可编程逻辑器件(FPGA)为核心的自动售货机,利用Modesim软件编写verilog硬件描述语言程序以实现自动售货功能。 1.1、系统设计描述 (1)用四个发光二极管分别模拟售出价值为2元、5元、7元和10元的商品,购买者可以通过开关选择任意一种标价中的小商品; (2)灯亮时表示该小商品售出; (3)用开关分别模拟1元、5元,10元和20元货币投入,用四支发光二极管代表投入的货币的面值; (4)每次只能售出一种小商品,当所投硬币达到或超过购买者所选面值时,售出货物并找回剩余的硬币,回到初始状态; (5)当所投硬币值不足面值时,可通过一个复位键退回所投硬币,回到初始状态。 系统框图如图1.1所示: 图1.1 系统框图 2、详细状态描述 2.1 初始状态 rst为复位键,低电平有效,实现系统复位。 2.2 选商品状态 分别有价格为2元、5元、7元和10元的商品,每次选择商品前,设置一个标志位btn_sel_goods表示选择商品状态。此自动售货机每一次售货时只能一次选择一种商品,当同时选择两种以上时,选择商品无效,数码管显示清零,重新进行商品选择。选择商品后,数码管显示所选商品价格。 2.3 投币状态 当选好商品后,开始投币。同样有一标志位btn_price表示投币金额。投币口只接受面值为1元、5元10元和20元的货币,可以同时投入多种面值钱币。投完币后,先有一个确认买商品的过程,若投了币但又不购买商品了,就将全部投币金额退回;若确认购买商品,则进入下一状态。 2.4 找零状态 投完币,并确认购买商品后,进入找零状态。首先要将所投的金额与所选商品的价格做比较,若所投金额小于商品价格,则退回所投钱币;若大于等于商品价格,则两者做差,得到需要找零的钱。 3、仿真结果分析 设置测试程序各参数,运行tb文件,仿真结果如下图3.1、3.2所示。 图3.1 图3.1所示,商品价格选择为7元,即btn_sel_goods=2b10,投币总额大于商品价格的情况,上图中btn_mony从右到左依次代表投币1元、10元、20元、10元、20元、1元、20元和10元,共92元。red灯实时显示所投货币的面值。dis_price显示为0000001_0001111,对应数码管显示数字为07,即7元。 dis_mony为0000000_0100100,对应数码管显示数字为85。可以看出,实验结果很理想,说明代码符合设计要求。 图3.2 图3.2所示,商品价格选择为7元,即btn_sel_goods=2b10,投币总额小于商品价格的情况,上图中btn_mony从右到左依次代表投币1元、5元,共6元。red灯实时显示所投货币的面值。dis_price显示为0000001_0001111,对应数码管显示数字为07,即7元。 dis_mony为0000001_0100000,对应数码管显示数字为06,即6元,可以看出,实验结果很理想,说明代码符合设计要求。 4、总结与展望 通过本次课程设计,我对Verilog HDL语言有了更深刻的了解,能够比较灵活地运用它来实现我们所想要要其实现的功能。 试验中,由于实验条件的限制本实验只实现了一些自动售货机最基本的功能,如果允许的话,后续工作还可以加一些像刷卡消费,折扣消费之类的功能进去。 总的来说该试验还是很成功的,在实验中也确实遇到了不少问题,不过在老师和同学的帮助下一一克服了,使我明白了和他人共同合作的重要性。在以后的道路上我们也必须深刻认识到团队合作的精神,投入今后的发展之中。 附录: ///////////////////////////////////////////////// //自动售货机 //btn_sel_goods 为所选商品,由于实验条件的限制,本实验中只给出4种价格的商品 //btn_ok 购买确认键 //led[3:0] 客户单次投币币值 //beep 客户所投金额或购买商品后剩余金额大于所选商品价格时,该灯亮,表示可以继续购买 //led_warn 客户所投金额或购买商品后剩余金额小于所选商品价格时,该灯亮,表示不可以继续购买 //charge 找零按键,按下后找零 ///////////////////////////////////////////////// `timescale 1ns / 1ps module auto_machine(rst,clk,charge,dis_mony,dis_price, btn_ok,btn_mony,btn_sel_goods,led_warn,led,beep); input clk,rst; input charge,btn_ok; //找零/确

文档评论(0)

ayangjiayu3 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档