课程设计(论文)基于VHDL的自动售货机的设计.doc

上传人:仙人指路1688 文档编号:3993471 上传时间:2023-03-30 格式:DOC 页数:19 大小:610KB
返回 下载 相关 举报
课程设计(论文)基于VHDL的自动售货机的设计.doc_第1页
第1页 / 共19页
课程设计(论文)基于VHDL的自动售货机的设计.doc_第2页
第2页 / 共19页
课程设计(论文)基于VHDL的自动售货机的设计.doc_第3页
第3页 / 共19页
课程设计(论文)基于VHDL的自动售货机的设计.doc_第4页
第4页 / 共19页
课程设计(论文)基于VHDL的自动售货机的设计.doc_第5页
第5页 / 共19页
点击查看更多>>
资源描述

《课程设计(论文)基于VHDL的自动售货机的设计.doc》由会员分享,可在线阅读,更多相关《课程设计(论文)基于VHDL的自动售货机的设计.doc(19页珍藏版)》请在三一办公上搜索。

1、目录绪论2第一章 自动售货机的概述31.1 自动售货机的历史、现状、前景31.2 自动售货机的设计目的41.3 自动售货机的功能4第二章 自动售货机设计思想52.1 自动售货机的设计要求52.2 自动售货机程序设计的总体思路52.3 状态的定义62.4 状态转换图6第三章 自动售货机的详细设计73.1 端口的设计73.2 程序的实现7第四章 自动售货机的实验结果94.1仿真波形以及硬件实现94.2 程序的调试11第五章 小结12参考文献13谢辞14附录15基于VHDL的自动售货机的设计绪论随着社会的发展,文明的进步,人们的生活逐渐智能化已成为一种趋势。自动售货机就是其中之一。自动售货机以其创新

2、性,美观大方,占地面积小,灵活方便等而深受广大市民青睐。为此,本次课程设计就是基于VHDL语言设计一个自动售货机。其主要功能如下:自动售货机只出售cola,pepsi,purewater三种饮料,机器有2个投币孔,能识别1 元、5角两种硬币,且每次只能投一个币,每次只售出一瓶饮料。系统能自动计算投币总额,并与商品价格对比,能发出超额或者欠费警告,还能自动找零。找零由大到小进行,一次一枚,以此类推。为了使系统更便于人性化管理,设有reset键,方便管理。关键词:自动售货机、功能、人性化。第一章 自动售货机的概述1.1 自动售货机的历史、现状、前景 据说世界上最早的自动售货机出现在公元前3世纪,那

3、是埃及神殿里的投币式圣水出售机。17世纪,英国的小酒吧里设有了香烟的自动售货机。在自动售货机历史的长河中,日本开发出实用型的自动售货机,那是在进入本世纪后的事。日本第一台自动售货机是1904年问世的“邮票明信片自动出售机”,它是集邮票明信片的出售和邮筒投函为一体的机器。自动售货机的真正普及是在第二次世界大战以后。50年代,“喷水型果汁自动售货机”大受欢迎,果汁被注入在纸杯里出售。后来,由于美国的饮料大公司进入日本市场,1962年,出现了以自动售货机为主体的流通领域的革命。1967年,100日元单位以下的货币全部改为硬币,从而促进了自动售货机产业的发展。 从自动售货机的发展趋势来看,它的出现是由

4、于劳动密集型的产业构造向技术密集型社会转变的产物。大量生产、大量消费以及消费模式和销售环境的变化,要求出现新的流通渠道;而相对的超市、百货购物中心等新的流通渠道的产生,人工费用也不断上升;再加上场地的局限性以及购物的便利性等这些因素的制约,无人自动售货机作为一种必须的机器便应运而生了。 从广义来讲投入硬币、纸币、信用卡等后便可以销售商品的机械,从狭义来讲就是自动销售商品的机械。从供给的条件看,自动售货机可以充分补充人力资源的不足,适应消费环境和消费模式的变化,24小时无人售货的系统可以更省力,运营时需要的资本少、面积小,有吸引人们购买好奇心的自身性能,可以很好地解决人工费用上升的问题等各项优点

5、。 现在,自动售货机产业正在走向信息化并进一步实现合理化。例如实行联机方式,通过电话线路将自动售货机内的库存信息及时地传送各营业点的电脑中,从而确保了商品的发送、补充以及商品选定的顺利进行。并且,为防止地球暖化,自动售货机的开发致力于能源的节省,节能型清凉饮料自动售货机成为该行业的主流。在夏季电力消费高峰时,这种机型的自动售货机即使在关掉冷却器的状况下也能保持低温,与以往的自动售货机相比,它能够节约1015的电力。进入21世纪时,自动售货机也将进一步向节省资源和能源以及高功能化的方向发展。1.2 自动售货机的设计目的经过一学期的EDA的学习,我对VHDL语言有了一定的基础。因此决定用VHDL语

6、言设计一个成品。考虑到趣味性,以及可行性方面的问题,决定设计一个基于VHDL的自动售货机。通过5天的课程设计,利用自己所学的知识和各种相关文献的查阅,根据要求,写出相应的代码后,利用Maxplus进行调试、仿真,发现并改正错误,并记录调试成功后的波形图文件。1.3 自动售货机的功能本次设计的自动售货机有以下功能:自动售货机可出售三种饮料:cola、pepsi、purewater三种饮料。价格分别是1.5元、1.5元、1元。自动售货机有两个投币孔,一个识别1元,另一个识别0.5元。顾客可分别向两个孔投币,一次只能购买一瓶饮料,且自动找零。若付款之后按下取消键,系统将全额退回。自动售货机适合人性化

7、管理,带有reset键,一键恢复。第二章 自动售货机设计思想2.1 自动售货机的设计要求1、自动售货机有2个投币孔,每次只能投入一枚硬币,但可以连续投入多枚硬币,机器能够识别的硬币金额为1元、5角,顾客可选择的饮料有cola、pepsi、purewater三种饮料。每次只能售出1瓶饮料。2、购买饮料时先选择饮料的价格再投币,当投入的硬币总额达到或超过饮料价格后,系统发出指示信号并拒收继续投入的硬币。顾客投币后,按动确定键,系统将发出饮料和找零硬币,若所投金额不足,则发出欠资信号指示,在欠资情况下,顾客可以继续投币购买,也可按取消键,系统将退出所投入的全部金额。3、顾客投入硬币后,如果未按确定键

8、而按取消键,系统也将退出所投的全部金额。4、找零钱或退币时,按由大到小原则处理,即金额超过1元的,先退一元再退五角。5、为方便管理员,额外添加的功能: 重置(Reset)功能 添加Reset按钮,用于因外部原因引起系统逻辑混乱或顾客进行非法操作时将系统中的所有参数强行清零(即把系统归于起始状态)。2.2 自动售货机程序设计的总体思路通过采用状态机的方法,定义了WAIT_STATE、SHOPPING_STATE、DRINKOUT_STATE、CHANGEOUT_STATE四个状态。并且定义2个进程,来分成状态之间的转换以及中间信号量的传递以及结果的输出。2.3 状态的定义WAIT_STATE:当

9、没有用户使用自动售货机时,自动售货机处在等待状态,按下reset键后,机器也自动回复到等待状态。为自动售货机的起始状态。SHOPPING_STATE:用户开始交易的状态,包括选择饮料类型,投币,只要没有按确定键,系统就在该状态。DRINKOUT_STATE:用户选择了饮料,并投入足够硬币后,自动售货机发出饮料时的状态。CHANGEOUT_STATE:用户买完饮料,投币多余饮料价格,机器找出零钱的状态和用户投币后,取消购买饮料,机器推出钱币的状态都是找零状态。2.4 状态转换图等待状态找零状态购买状态出货状态Reset=1Choosing200=1 or Choosing150=1 or Cho

10、osing100=1cancel=1cancel=0 ,IMM=OWE,ok=1IMM=OWE,ok=1Trade_Already=1exchange=0第三章 自动售货机的详细设计 3.1 端口的设计输入端口: 饮料类型选择按钮-cola,pepsi,purewater;投入1元、5角二种硬币时系统的识别信号- Put_In100 ,Put_In50;确定按钮-ok;取消按钮-cancel;管理员使用的重置按钮-reset;找零按钮-coin_out;系统内部的时钟信号-clk。输出端口:当投入钱超额时的超额拒收信号-Money_Over;投入钱金额不足时的欠费信号- Money_Owe;找

11、零时的1元、5角信号- Output100,Output50;饮料价格信号- Drink_Out;饮料种类-Types;显示给顾客当前钱数的信号- Money_Show;4个分别指示现在所处状态的灯- led_light_W,led_light_S,led_light_D,led_light_C。3.2 程序的实现使用双进程的方式完成整个程序的编写,第一个进程用来实现等待状态、购买状态、出货状态、找零状态之间的转换,并输出4个状态指示灯的信号。第二个进程用来实现各个中间信号量的传递和输出信号的输出,以及各项基本功能的实现。其实现框图如下:第四章 自动售货机的实验结果4.1仿真波形以及硬件实现

12、图形1可以描述如下:某君买饮料,选择cola之后,先投了一个一元的硬币,然后又投了一个五毛的,最后出了一瓶可乐。图一 图形描述的是:付钱之后,按取消键。图二 图形3可以描述如下:当金额超了1.5元时,点找零键,系统自动分两次找钱,第一次一元,第二次5毛。图三 图形四为总体图。图四 图五为硬件图图五4.2 程序的调试在程序设计当中遇到了几个问题,大体如下:1、 最初程序存在一个led_light_S,led_light_W,led_light_D,led_light_C四种状态同时出现的情况。由于这四种状态需要在自动售货机上显示出来,因此,考虑到人性化的原则,就要让四种状态在同一个时刻只能有一种

13、为高电平。经改正,该问题得以解决。2、 在找钱的那部分中,最初定义的是例如:exchange00001010,在仿真时就发现,即使要找一元,系统也会分两次找,一次五毛。这个问题也得到了解决。3、 关于显示超额和欠费的部分,有一个很纠结的问题。那就是当等于时,是显示超额还是欠费。在程序中,我没有定义等号那部分。4、 按找零按钮,需要按几次,直到找完为止。这个问题暂时没有能解决,因为Coin_Out是随着时钟来的,只有来了时钟上升沿,才有效。因此,在按找零按钮时,需要长按。关于这个问题的解决,考虑过把它放在时钟外,但这样会让程序很乱,失去逻辑感。第五章 小结通过一周的课程设计,我设计并完成了自动售

14、货机的设计,并用Max_plus2完成了仿真,并出了波形图。硬件实现方面,由于试验箱上找不到合适的模式,因此硬件实现没有完成。最终的自动售货机有识别硬币、显示饮料种类和单价、余额的计算、找零、出货、复位等功能,基本上能满足需求。通过本次课设,大概掌握了EDA和FPGA的开发流程。并且通过程序的设计,对状态机的设计有了一个更深刻的理解。对自动售货机的原理更是有了一个很深刻的认识。特别是把这个功能设计和实际联系起来的时候,趣味性大增,考虑问题也更加全面。总的来说,本次课程设计受益匪浅。不管是在知识方面还是,工程设计方面,都有了一个提升。参考文献l 徐志军,徐光辉编著 . CPLD/FPGA的开发与

15、应用 ,电子工业出版社,2001.12 潘松,黄继业编著 .EDA技术实用教程 ,2005 ,科学出版社3 王开军,姜宇柏编著.面向CPLD/FPGA的VHDL设计 ,机械工业出版社,2006.104 詹仙宁 编著.VHDL开发精解与实例剖析 ,电子工业出版社,2009.95 张亦华 编著.数字电路EDA入门VHDL程序实例集 ,北京邮电大学出版社,20036 谢辞 在这里,我要感谢我的老师朱路博士。在这学期的学习中,朱老师给予了我很多热情的鼓励和悉心的指导。其教学思想十分对我的胃口,平时上课结合实际,通俗易懂。并且经常给我们介绍一些学习榜样的事迹,这也让我们收获颇多。总之,谢谢朱老师!附录程

16、序如下:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity automaticseller isport(clk: in std_logic;ok,cancel,reset: in std_logic;cola,pepsi,purewater: in std_logic;Put_In100 ,Put_In50 : in std_logic;Coin_Out : in std_logic;Drink_Out : out std_logic_vector(7 downto 0); Types

17、 : out std_logic_vector(3 downto 0);Money_Over : out std_logic;Money_Show : out std_logic_vector(7 downto 0);Money_Owe : out std_logic;Output100,Output50: out std_logic;led_light_W:out std_logic;led_light_S:out std_logic;led_light_D:out std_logic;led_light_C:out std_logic);end automaticseller;archit

18、ecture behave of automaticseller isType states is(WAIT_STATE,SHOPPING_STATE,CHANGEOUT_STATE,DRINKOUT_STATE);signal state:states;signal Trade_Already:std_logic;signal OWE:std_logic_vector(7 downto 0);signal exchange:std_logic_vector(7 downto 0);signal IMM:std_logic_vector(7 downto 0); beginprocess(cl

19、k,reset)-进程一:状态之间的转换,并输出4个状态指示灯的信号beginif(reset=1)then-重置为高电平时,归为等待状态,无视时钟stateled_light_W=1;led_light_S=0;led_light_D=0;led_light_C=0;-1、定义等待状态if(cola=1 or pepsi=1or purewater=1 )then-是否按下饮料种类选择键state=SHOPPING_STATE;else stateled_light_W=0;led_light_S=1;led_light_D=0;led_light_C=0;-2、定义购物状态if(cance

20、l=1)then-若在购买状态按下取消键则跳到找钱状态state=OWE)then-判断已付的金额是否大于商品价格if ok=1thenstate=DRINKOUT_STATE;-按下确定键后跳到出货状态else state=SHOPPING_STATE;end if;else stateled_light_W=0;led_light_S=0;led_light_D=1;led_light_C=0;-3、定义出货状态if(Trade_Already=1)thenstateled_light_W=0;led_light_S=0;led_light_D=0;led_light_C=1;-4、定义找

21、钱状态if(exchange=0)then-若找钱金额为零,则跳回等待状态state=WAIT_STATE;else statestateif(purewater=1)thenOWE=00001010;-000001010,即定义价格为10角!Drink_Out_E:=00001010;Types_E:=1010;elsif(cola=1)thenOWE=00001111;-价格为15角Drink_Out_E:=00001111;Types_E:=1011;else OWEMoney_Show=IMM;-把价格值给显示当前金额值if(cancel=1)thenexchange1:=IMM;-按

22、取消键,则把价格值给需找零金额值Money_Over=0;Money_OweOWE)thenexchange1:=IMM-OWE;-找零Money_Over=1;-超额信号为高电平Money_Owe=0;elsif(ok=1)thenMoney_Owe=1;-若所付金额不足,且按下确定键,则欠费信号为高电平end if;if(IMMOWE)thenif(Put_In50=1)thenIMM=IMM+00000101;-5毛加5elsif(Put_In100=1)thenIMM=IMM+00001010;end if;end if;exchangeDrink_Out=Drink_Out_E;Ty

23、pes=Types_E;Trade_AlreadyMoney_Over0)thenif(Coin_Out=1)then-找零按钮If(exchange=00001010)thenexchange1:=exchange-00001010;Output100=00000101)thenexchange1:=exchange-00000101;Output50=1;-找五毛end if;else Output50=Coin_Out;Output100=Coin_Out;end if;end if;exchange=exchange1;Money_Show=exchange;end case;end if;end process;end behave;

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 办公文档 > 其他范文


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号