电子课程设计——自动售货机控制系统学院:电子信息工程学院专业、班级:通信101501姓名:黄兆凯学号:201015030106指导教师:李东红2012年12月目录一、设计任务与要求 (1)(1)基本要求 (1)(2)提高要求 (1)二、总体框图 (1)(1)设计思路 (1)(2)系统原理 (1)三、器件选择 (2)四、功能模块 (2)(1)功能控制模块 (2)(3)输入信号处理模块 (5)五、总体设计电路说明 (6)(1)系统仿真 (7)(2)硬件验证(操作) (8)六、总结 (9)自动售货机控制系统一、设计任务与要求(1)基本设计要求设计一个模拟自动售货机的逻辑控制电路1、它有两个投币口分别为一元投币口和五角投币口。
2、每次只能投入一枚一元或五角硬币。
3、投入一元五角硬币后机器自动给出一瓶矿泉水。
投入两元硬币后,在给出一瓶矿泉水的同时找回一枚五角的硬币。
(2)提高要求1、增加一个五元投币口和出水数量选择按钮,一个一元的找钱端口。
二、总体框图1、设计思路根据设计要求可以对售货机的基本功能进行确定。
它应该能够区分一元和五角硬币,并且能够对投入的货币进行累加。
当所投币值达到商品售价。
就自动送出商品。
因为题目要求只有一种商品并且其售价为一元五。
根据这一特殊点可设计方案如下:用两个开关分别模拟投入一元和五角硬币时产生的信号,高电平有效。
用两颗LED分别模拟售出商品和找钱信号,灯灭有效。
2、系统原理自动售货机的所有信号均由同步时钟信号clk的正边沿触发。
由于售货机的硬币接受器一般是一个机械设置装置,投币时产生的信号要比同步信号clk要慢得多,一般可持续好几个周期,必须对投币输入信号进行处理,使每一次投币时在clk脉冲周期内只能产生一个脉冲作为功能控制模块的投币驱动信号。
因此可将该系统分为两个模块。
如图一:Shuru SHJ_CTRL(图一)自动售货机控制系统各模块连接图自动售货机控制系统模块之间连接如图一所示,其中“shuru”为投币输入信号处理模块,它是利用D触发器和几个门电路组成的一个简单时序逻辑电路。
主要起到对输入信号进行存储和延时的作用。
其输出信号作为功能控制模块“SHJ_CTRL”的输入驱动信号。
功能控制模块“SHJ_CTRL”则用VHDL语言实现。
它主要起到对输入信号进行分析处理的作用。
是整个系统的核心。
其中,OUT为自动售货机的矿泉水输出信号,ZHAOQIAN为找钱输出信号。
三、器件选择1、装有QuartusII软件的计算机一台。
2、芯片:使用altera公司生产的Cyclone系列芯片,FPGA芯片。
3、EDA实验箱一个。
4、下载接口是数字芯片的下载接口(JTAG)主要用于FPGA芯片的数据下载。
5、拨码开关调用:VGA[3..0]设置为0001,管脚的分配是固定的,其对应管脚是:VGA[0] PIN162VGA[1] PIN161VGA[2] PIN164VGA[3] PIN163四、功能模块1、功能控制模块1)自动售货机控制功能的状态描述取投币信号为输入逻辑变量,投入一枚一元硬币时用A=1表示,未投入时A=0。
投入一枚五角硬币用B=1表示,未投入时B=0。
给出矿泉水和找钱为两个输出变量,分别用Z和Y表示,给出矿泉水时Z=1,不给时Z=0,找回一枚五角硬币时Y=1,不找时Y=0。
根据上面的功能描述,可用三个状态S0,S1,S2表示,未投币前的初始状态为S0,投入五角硬币以后为S1,投入一元硬币后(包括投入一枚一元硬币和投入两枚五角硬币的情况)为S2,再投入一枚五角硬币后电路返回S0,同时输出为Z=1,Y=0;如果投入的是一枚一元硬币,则电路也应能返回S0,同时输出为Z=1,Y=1。
根据上面的分析可得到状态转换图如图二所示。
00/00(图二)状态图2)自动售货机功能控制模块的VHDL实现根据上面所示的状态转换图,用VHDL语言中的CASE_WHEN结构和IF_THEN_ELSE语句实现控制功能,源程序如下:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY shj_ctrl IS --实体PORT(A,B:IN STD_LOGIC;clk:IN STD_LOGIC;Z,Y:OUT STD_LOGIC); --器件端口描述END shj_ctrl ;ARCHITECTURE beha OF shj_ctrl IS --结构体TYPE states IS(S0,S1,S2);SIGNAL state:states;SIGNAL X:STD_LOGIC_VECTOR(1 DOWNTO 0); BEGINX<=A&B;PROCESS(x,state)BEGINIF rising_edge(clk) THENCASE state ISWHEN S0=>Z<='0';Y<='0';IF(X="01")THENstate<=s1;ELSIF(X="10")THENstate<=s2;ELSEstate<=s0;END IF;WHEN S1=>Z<='0';Y<='0';IF(X="01")THENstate<=s2;ELSIF(X="10")THENstate<=S0;Z<='1';Y<='0';ELSEstate<=s1;END IF;WHEN S2=>Z<='0';Y<='0';IF(X="01")THENstate<=S0;Z<='1';Y<='0';ELSIF(X="10")THENstate<=s0;Z<='1';Y<='1';ELSEstate<=s2;END IF;END CASE;END IF;END PROCESS;END beha;上面程序中,A、B分别为一元硬币和五角硬币驱动信号,Z为矿泉水输出信号,Y为找钱输出信号。
3) 功能模块仿真(图三)功能模块仿真图说明:当系统输入两个元的该店平时,输出和找钱都输出高电平一。
也就是说,输入两元时,出水、找钱。
2、投币输入信号处理模块投币输入信号的处理电路如图三所示,其中IN_yuan和IN_jiao作为一元硬币和五角硬币的投币输入信号,A和B为相应的输出信号,作为功能控制模块的输入信号,而且A、B输出是在投币输入信号IN_yuan和IN_jiao为高电平1之后的一个周期内被设置为1。
(图四)投币输入信号的处理电路(图五)投币输入电路的仿真图说明:经过仿真结果如图四所示,实现了每次投币后在一个clk周期内只产生一个可靠的脉冲驱动信号。
当元输入为一时,A输出一,当角输出一时,B输出一。
当元和角同时输一时,AB同时输出一。
五、总体设计电路图(图六)顶层电路(图七)管脚分配(1)、系统仿真自动售货机控制系统功能仿真如下:(图八)控制系统功能仿真一说明:当系统YUAN输入端给连个高电平时,输出OUT和ZHAOQIAN分别输出高电平1,也就是说输入两元钱时,输出一瓶水,找五角钱。
(图九)控制系统功能仿真二说明:当系统角输入端给三个高电平1时,输出端OUT输出高电平1,ZHAOQIAN 输出低电平0.也就是说,输入三个五角时,只出水,不着钱。
(2)、硬件验证(操作)1、将程序下载到芯片FPGA2、实物连接1)将IO9/IO10分别到L1/L2上2)CLK 连接板载时钟连接到IO3口上3、进行模拟仿真1)连续两次将IN-YUAN置1,观察结果。
两灯都灭。
2)连续三次将IN-JIAO置1,观察结果。
出水灯灭,找钱灯亮。
3)分别将IN-YUAN,IN-JIAO置1,观察结果。
L1灯灭,L2灯亮。
六、总结这次课程设历时史两个星期,在整整两个多星期的日子里,可以说是苦多于甜,但是可以学到很多很多东西,同时不仅可以巩固以前所学的知识,而且学到了很多课本上没有的东西,我认为,在这学期的实验中,在收获知识的同时,还收获了阅历,收获了成熟,在此过程中,我们通过查找大量资料,请教老师,以及不懈的努力,不仅培养了独立思考、动手操作的能力,在各种其它能力上也都有了提高。
更重要的是,在实验课上,我们学会了很多学习的方法。
而这是日后最实用的,真的是受益匪浅。
要面对社会的挑战,只有不断的学习、实践,再学习、再实践。
通过这次课程设计,我更加感到理论和实际之间的差异很大。
我也越来越强烈地感到要掌握一门技术,唯一的办法也是最好的办法就是实践。
只有通过实践才能将书本上的知识应用,也只有实践才能发现很多问题,真正掌握知识,学以致用。
虽然遇到的问题很多,但是同时得到很多有用的经验。
这些对于以后的学习和工作都是很有用的。
9。