欢迎来到天天文库
浏览记录
ID:59822769
大小:241.63 KB
页数:22页
时间:2020-11-24
《东南大学信息科学与工程学院-基于FPGA的自动售货机控制系统.docx》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、数字系统课程设计--基于FPGA的自动售货机组长:师楠()组员:徐璇()一、设计要求:功能描述:用于模拟自动售货机的工作过程,完成自动售货功能。功能要求:(1)售货机有两个进币孔,可以输入硬币和纸币,售货机有两个进币孔,一个是输入硬币,一个是输入纸币,硬币的识别范围是1元的硬币,纸币的识别范围是5元,10元,20,50元,100元。乘客可以连续多次投入钱币。(2)顾客可以选择的商品种类有16种,价格分别为1-16元,顾客可以通过输入商品的编号来实现商品的选择。即有一个小键盘(0-9按键)来完成,比如输入15时要先输入1,再输入5。(3)顾客选择完商品后,可以选择
2、需要的数量。然后可以继续选择商品及其数量,每次可以选择最多三个商品。然后显示出所需金额。顾客此时可以投币,并且显示已经投币的总币值。当投币值达到或超过所需币值后,售货机出货,并扣除所需金额,并找出多余金额。在投币期间,顾客可以按取消键取消本次操作,钱币自动退出。二、课题分析1)进行购物时,顾客依次选择商品种类和对应的商品数量。一共有16种商品,编号分别为1-16,顾客通过(0-9按键)小键盘输入商品编号和对应的商品数量。若顾客继续选择商品则按下“继续购物”按钮,继续选择下一商品的种类和数量。最多可以选择三种商品,每种商品最多可选择三个。若在商品选择过程中顾客按下
3、“取消”按钮,则回到初始化状态,顾客重新进行选择。2)完成选择后,自动售货机显示所需金额,编号1-16的商品价格分别为1-16元。顾客根据所需金额继续投币,可以连续多次投入1元的硬币和5元,10元,20,50元,100元的纸币。当投币总额大于所需金额时,自动售货机出货并找出零钱。若在投币过程中顾客按下“取消”按钮,则自动售货机自动退出顾客已经投入的钱币。3)根据按键的数值范围(0-9)和商品数量(1-3)的选择范围,设置三个端口,分别用于接收商品编号的个位(4位)、商品编号的十位(4位)、商品数量(2位)。若顾客在商品选择的过程中,选择了三种以上商品或三个以上的
4、个数,则系统不对其作出反应。4)附加功能:管理人员按下reset按钮后,系统重置。默认每种商品机内存货15个,系统进入初始化状态后会自动显示商品剩余库存。开始一、系统运行流程:Nreset=1pre_stateYinitial_stateitem_state输入商品编号NY输入次数小于3Ycancel=1quantity_stateN输入商品数量计算商品总额total_pricequantity_state计算商品剩余库存并输出continue=1money_stateNY输出total_priceYcancel=1Nchange_out<=counter投币c
5、outercompare_stateNcounter>total_priceYYcancel=1NNcounter>total_pricechange_out<=counterYchange_stateYcancel=1change_out<=counterN计算找零额finish_state输出货物、找零四、程序调试编译通过,如图所示:五、波形仿真:在创建的波形仿真文件中,添加所有输入输出端口进行仿真。时钟周期设定为10ns,测试系统的所有功能是否正常。管理员将reset置1;第一次:购买11号商品3件,投入三枚一员硬币,一张一百元纸币;第二次:购买01号商品
6、1件,continue,购买10号商品2件,continue,购买13号商品3件;投入一张五十纸币,一张十元纸币;第三次:购买03号商品2件,cancel;第四次:购买16号商品2件;投入一张五十纸币;cancel;六、附源代码libraryieee;useieee.std_logic_1164.all;useieee.std_logic_arith.all;useieee.std_logic_unsigned.all;----------*************************************----------------------ent
7、ityAUTOSELLERis--实体port(--端口定义clk:instd_logic;--时钟continue,cancel,reset:instd_logic;--继续购物、取消、复位coin:instd_logic;--投入硬币cash:instd_logic_vector(4downto0);--投入纸币item0:instd_logic_vector(3downto0);--选货个位item1:instd_logic_vector(3downto0);--选货十位quantity:instd_logic_vector(1downto0);--货物数
8、量one_out:out
此文档下载收益归作者所有