资源描述:
《东南大学短学期_FPGA自动售货机》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、自动售货机设计FPGA模块模拟自动售货机的工作过程,要求如下(1)售货机有两个进币孔,可以输入硬币和纸币,售货机有两个进币孔,一个是输入硬币,一个是输入纸币,硬币的识别范围是1元的硬币,纸币的识别范围是5元,10元,20,50元,100元。乘客可以连续多次投入钱币。(2)顾客可以选择的商品种类有16种,价格分别为1-16元,顾客可以通过输入商品的编号来实现商品的选择。即有一个小键盘(0-9按键)来完成,比如输入15时要先输入1,再输入5。(3)顾客选择完商品后,可以选择需要的数量。然后可以继续选择
2、商品及其数量,每次可以选择最多三个商品,且最多能选三种商品。然后显示出所需金额。顾客此时可以投币,并且显示已经投币的总币值。当投币值达到或超过所需币值后,售货机出货,并扣除所需金额,并找出多余金额。在投币期间,顾客可以按取消键取消本次操作,钱币自动退出。libraryIEEE;useIEEE.STD_LOGIC_1164.ALL;useIEEE.STD_LOGIC_ARITH.ALL;useIEEE.STD_LOGIC_UNSIGNED.ALL;ENTITYvendorISPORT(clk:ins
3、td_logic;key_in:instd_logic_vector(3downto0);--商品种类、数量coin1,coin5,coin10,coin20,coin50,coin100:instd_logic;--各个币值reset:instd_logic;quit:instd_logic;--取消get:instd_logic;quantity_set,varity_set:instd_logic;select_finished:instd_logic;continue_select:ins
4、td_logic;varity1_out,varity2_out,varity3_out:outstd_logic_vector(15downto0);quantity1_out,quantity2_out,quantity3_out:outstd_logic_vector(3downto0);act1_qua,act20_qua:outstd_logic_vector(2downto0);act1,act5,act10,act20,act50,act100:outstd_logic);ENDve
5、ndor;ARCHITECTUREbehavofvendorISsignalvar_a1,var_a2,var_a3:std_logic_vector(3downto0):="0000";signalqua_a1,qua_a2,qua_a3:std_logic_vector(3downto0):="0000";signalcount:std_logic_vector(7downto0):="00000000";--总额signaltoubizhi:std_logic_vector(7downto0
6、):="00000000";--投币值signalpri_a1,pri_a2,pri_a3:std_logic_vector(3downto0):="0000";--选中的三件商品的价格个BEGINprocess(reset,clk)variablei:std_logic_vector(1downto0);variablezhaobizhi:std_logic_vector(7downto0);beginif(reset='1')thenvarity1_out<="0000000000000000
7、";varity2_out<="0000000000000000";varity3_out<="0000000000000000";quantity1_out<="0000";quantity2_out<="0000";quantity3_out<="0000";count<="00000000";toubizhi<="00000000";var_a1<="0000";var_a2<="0000";var_a3<="0000";qua_a1<="0000";qua_a2<="0000";qua_a
8、3<="0000";act1<='0';act5<='0';act10<='0';act20<='0';act50<='0';act100<='0';i:="00";elsif(clk'eventandclk='1')thenvarity1_out<="0000000000000000";varity2_out<="0000000000000000";varity3_out<="0000000000000000";quantity1_out<="0000";quantity2_ou