1、 课 程 设 计 报 告 题 目: 自动售货机课程设计自动售货机课程设计 系 别: 电子信息与电气工程系电子信息与电气工程系 专 业: 通信工程通信工程 班 级: 学 号:_ 姓 名: 导 师: 日期:日期: 2016.5.30 2016.5.30 成成 绩:绩: 一、引言一、引言 本次课程设计研究自动售货机的主要功能模块,主要包括商品选择模块、 余额计算模块、退币模块,由于条件上的限制,对投币模块中的货币检测未进行 处理。相应的主要功能有选择货物,购买,出货找零,显示,延时和时控功能。 通过使用 VHDL 语言,基于 FPGA 可编程芯片,并通过使用 QUARTUS软件进行程 序设计,模拟仿
2、真,功能验证,以更好的来理解和掌握自动售货机控制系统的工 作原理和设计方法,以及学习和掌握基于 EDA 的电子产品设计方法,进一步加深 对 VHDL 语言以及 QUARTUS软件、FPGA 可编程芯片的认识与了解。 二二、项目要求项目要求 设计一个自动售货机控制程序,它的投币口每次可以投入 1 元、2 元、5 元, 且规定投入 1 元或 2 元后不得再投入5 元。 当投入总值等于或超过设定值 (4 元) , 售货机就自动送出货物并找回多余的钱。 1、基本要求按照上面要求,编写程序,实现售单一商品的功能。 2、扩展要求:在基本要求的基础上,完善电路,实现售多个商品的功能(设定值 应该相应增加)。
3、 三、三、设计方案设计方案 本售货机可销售两种商品,单价分别为 3 元和 4 元。投币口每次可以投入 1 元、2 元、5 元,且规定投入 1 元或 2 元后不得再投入 5 元,投入总额为 3 元时, 不能再投入 2 元或者 5 元,当投入总值超过设定值 3 元或者 4 元的情况下,选择 商品一或者商品二,售货机就自动送出货物并找回多余的钱。 四、四、项目代码及其分析项目代码及其分析 VHDLVHDL 程序代码程序代码: LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY ZDSHJ IS PORT(CLK,RESET:IN STD_LOGIC;
4、DIN:IN STD_LOGIC_VECTOR(2 DOWNTO 0); COMB_OUTPUTS,GIVE_CHANGE:OUT STD_LOGIC); END ENTITY; ARCHITECTURE behav OF ZDSHJ IS TYPE FSM_ST IS (S0,S1,S2,S3,S4,S5); SIGNAL current_state,next_state:FSM_ST; BEGIN REG:PROCESS(CLK)BEGIN IF RESET=1 THEN current_state=s0; ELSIF CLKEVENT AND CLK=1 THEN current_sta
5、teCOMB_OUTPUTS=0; GIVE_CHANGE=0; IF DIN=“001“ THEN next_state=s1; ELSIF DIN=“010“ THEN next_state=s2; ELSIF DIN=“101“ THEN next_state=s5; ELSE next_stateCOMB_OUTPUTS=0; GIVE_CHANGE=0; IF DIN=“001“ THEN next_state=s2; ELSIF DIN=“010“ THEN next_state=s3; ELSE next_stateCOMB_OUTPUTS=0; GIVE_CHANGE=0; I
6、F DIN=“001“ THEN next_state=s3; ELSIF DIN=“010“ THEN next_state=s4; ELSE next_stateCOMB_OUTPUTS=0; GIVE_CHANGE=0; IF DIN=“001“ THEN next_state=s4; ELSIF DIN=“010“ THEN next_state=s5; ELSE next_stateCOMB_OUTPUTS=1; GIVE_CHANGE=0; next_stateCOMB_OUTPUTS=1; GIVE_CHANGE=1; next_state=s0; END CASE; END PROCESS COM; END behav; 程序分