您好,欢迎访问三七文档
当前位置:首页 > 行业资料 > 酒店餐饮 > 简易售货机的设计-数字逻辑课程设计报告
石家庄经济学院华信学院数字逻辑课程设计报告题目简易售货机的设计姓名学号班号指导老师成绩目录1.课程设计目的·······························································································2.开发工具选择·······························································································3.设计方案···································································································4.模块描述····································································································5.VHDL实现·································································································6.调试仿真······································································································7.课程设计回顾总结·······················································································参考文献····································································································附录···············································································································1课程设计目的(1)设计一个简易售货机,可销售巧克力(0.5元)、纯净水(1元)、牛奶(1.5元)、汉堡(2元)4种商品,数量无限。(2)只能投入1元或5角硬币,如果投的钱数等于或则大于所购买的商品单价,则自动售货机会给出所购买的商品;如果投的钱数不够,自动售货机不做响应,继续等待顾客的下次操作。两个输出口分别输出购买的商品和找零,零币无限。(3)有两个LED数码管显示已经投入的币值或找零数。顾客一次只能购买一种商品的一个,若需要更多商品,需要重复操作。2开发工具选择(1)硬件描述语言简易售货机的设计采用了功能强大的VHDL语言,它具有很强的行为能力描述,设计方法灵活,可以支持库和模块设计方法。(2)QuartusII软件开发工具本设计采用的软件开发工具是美国的Altera公司的QuartusII,它支持多种设计输入方法,包括原理图输入、文本输入。(3)EDA实验开发系统本设计采用的EDA实验开发系统,主要用于提供可编程逻辑器件的下载电路及EDA实验开发的外围资源,供硬件验证用。3设计方案图3-1状态转换图选择商品投币结束投币≥商品价格继续投币退币清零出货找零YYNNNY开始图3-2操作流程图4模块描述(1)模块一:选择商品分别有价格为0.5元、1元、1.5元和2元的商品,此自动售货机每一次售货时只能一次选择一种商品,当同时选择两种以上时,选择商品无效,重新进行商品选择。选择商品后,数码管显示所选商品价格。(2)模块二:投币当选好商品后,开始投币。投币口只接受0.5元、1元,投完币后,先有一个确认买商品的过程,若投了币但又不购买商品了,进入退钱的模块;若确认购买商品,则进入出货找零模块。(3)模块三:退钱、出货找零投币后取消购买,退回投入的硬币。投完币,若大于等于商品价格,进入找零模块,两者做差,得到需要找零的钱。5VHDL实现1.选择商品模块(1)选择商品模块的元件图符resetenchocolatewatermilkhumbergerprice[4..0]select_goodsinst(2)选择商品模块的VHDL描述LIBRARYieee;USEieee.std_logic_1164.ALL;USEieee.std_logic_unsigned.ALL;ENTITYselect_goodsISPORT(reset,en,chocolate,water,milk,humberger:INSTD_LOGIC;price:OUTintegerrange0to20);ENDselect_goods;ARCHITECTUREarc1OFselect_goodsISsignalgoods:std_logic_vector(3downto0);BEGINgoods=chocolate&water&milk&humberger;process(reset,en)beginIFreset='1'THENprice=0;elsifen='1'thencasegoodsiswhen1000=price=5;when0100=price=10;when0010=price=15;when0001=price=20;whenothers=price=0;endcase;endif;endprocess;ENDarc1;2.投币模块(1)投币模块的元件图符resetclkencoin5coin10total[4..0]coininst(2)投币模块的VHDL描述LIBRARYieee;USEieee.std_logic_1164.ALL;USEieee.std_logic_arith.ALL;USEieee.std_logic_unsigned.ALL;ENTITYcoinISPORT(reset,clk,en,coin5,coin10:INSTD_LOGIC;total:bufferintegerrange0to30);ENDcoin;ARCHITECTUREarc1OFcoinISbeginprocess(clk,reset)beginif(reset='1'anden='0')thentotal=0;elseifclk'eventandclk='1'thenifen='1'thenifcoin5='1'thentotal=total+5;elsifcoin10='1'thentotal=total+10;endif;endif;endif;endif;endprocess;ENDarc1;3.退钱、出货找零模块(1)退钱、出货找零模块的元件图符clkstartok_buycancle_buyprices[4..0]coins[4..0]engoodsencoinclrcoinoutgoodsbackcoins[4..0]controlinst(2)退钱、出货找零模块的VHDL描述LIBRARYieee;USEieee.std_logic_1164.ALL;USEieee.std_logic_unsigned.ALL;ENTITYcontrolISPORT(clk,start,ok_buy,cancle_buy:INSTD_LOGIC;prices,coins:INintegerrange0to30;engoods,encoin,clrcoin,outgoods:OUTSTD_LOGIC;backcoins:OUTintegerrange0to20);ENDcontrol;ARCHITECTUREarc1OFcontrolIStypestate_typeis(salesgoods,incoins,outgoods_coin,back_coin);signalstate:state_type;BEGINprocess(start,clk)beginifstart='1'thenstate=salesgoods;elsifclk'eventandclk='1'thencasestateiswhensalesgoods=ifprices/=0thenstate=incoins;endif;whenincoins=if(coins=pricesandok_buy='1')thenstate=outgoods_coin;elsestate=back_coin;endif;whenothers=state=salesgoods;endcase;endif;endprocess;process(state,prices,coins)begincasestateiswhensalesgoods=engoods='1';encoin='0';clrcoin='1';outgoods='0';backcoins=0;whenincoins=engoods='0';encoin='1';clrcoin='0';outgoods='0';backcoins=0;whenoutgoods_coin=ifcoins=pricesthenengoods='0';encoin='0';clrcoin='0';outgoods='1';backcoins=coins-prices;elseengoods='0';encoin='0';clrcoin='0';outgoods='0';backcoins=coins;endif;whenback_coin=ifcoins=pricesandok_buy='1'thenengoods='0';encoin='0';clrcoin='0';outgoods='1';backcoins=coins-prices;elseengoods='0';encoin='0';clrcoin='0';outgoods='0';backcoins=coins;endif;endcase;endprocess;ENDarc1;6调试仿真1.选择商品模块说明:当en=1时,选择humberger,此商品的价格为2元,prices=20。当en=0时,商品选择模块禁止工作,prices保持不变。2.投币模块说明:当en=1时,投入一枚5角、一枚1元、一枚5角硬币,总币值为20即2元。3.退钱、出货找零模块图6-1选择商品模块的功能仿真波形图图6-2投币模块的功能仿真波形图说明:选择商品的价格prices为10,投入币值coins为20,当取消购买cancel_buy=1时,outgoods=0表示未出货,backcoins=20表示退回20。说明:选择商品的价格prices为10,投入币值coins为20,当确认购买ok_buy=1时,outgoods=1表示出货,backcoins=10表示找零10。图6-3退钱的功能仿真波形图图6-4出货找零的功能仿真波形图4.自动售货机整体结构图及调试仿真:(1)自动售货机整体结构(2)仿真结果及说明:说明:(1)选择milk,price=15,投入一枚1元硬币,coins=10,又投入一枚1元硬币,coins=20,之后,选择取消购买,cancel_buy=1,outgoods=0表示未出货,outcoins=20表示退回投入硬币2元。(2)选择milk,price=15,投入一枚1元硬币,coins=10,又投入一枚1元硬币,coins=20,之后,选择确认购买,ok_buy=1,outgoods=1表示出货,outcoins=5表示找零5角。(3)选择milk,price=15,投入一枚1元硬币,coins=10,又投入一枚5角硬币,c
本文标题:简易售货机的设计-数字逻辑课程设计报告
链接地址:https://www.777doc.com/doc-6191468 .html