EDA课程设计——自动售货机控制系统

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

《电子设计ED动技术》课程设计报

题目:___ 自动售货机控制系统

姓名:______________________________

院系: ______________________________

专业:____________________________

学号:_____________________________

指导教师:_________________________

完成时间:年月曰

目录

一、课程设计题目、内容与要求

1、...................... 设计题目

2、...................... 具体要求

二、................................................. 系统设计

1、设计思路.......................................

2、系统原理(包含:框图等阐述)与设计说明等内容

三、................................................. 系统实现

注:此部分阐述具体实现,包含主要逻辑单元、模块、源代

码等内容

四、................................................. 系统仿真

五、................................................. 硬件验证(操作)说明 ..........................................

六、................................................. 总结

七、................................................. 参考书目

一、课程设计题目、内容与要求

1、设计题目

自动售货机控制系统

2、具体要求

设计一个模拟自动售货机的逻辑控制电路

1、它有两个投币口分别为一元投币口和五角投币口。

2、每次只能投入一枚一元或五角硬币。

3、投入一元五角硬币后机器自动给出一瓶矿泉水。

4、投入两元硬币后,在给出一瓶矿泉水的同时找回一枚五角的硬币

二、系统设计

1、设计思路

根据设计要求可以对售货机的基本功能进行确定。它应该能够区分一元和五角硬币,并且能够对投入的货币进行累加。当所投币值达到商品售价。就自动送出商品。因为题目要求只有一种商品并且其售价为一元五。根据这一特殊点可设计方案如下:用两个开关分别模拟投入一元和五角硬币时产生的信号,高电平有效。用两颗LED 分别模拟售出商品和找钱信号,灯亮有效。具体功能实现如下:

1、连续两次将IN-YUAN 置1 ,则OUT 灯会亮,且ZHAOQIAN 也会亮。表示买一元五的矿泉水,投了两元钱,则售出商品,找回五角零钱。

2、连续三次将

IN-JIAO 置1,则OUT 灯会亮,而ZHAOJIAN 不会亮。表示买一元五的矿泉水,

当所投钱币达到一兀五时就自动售出商品,完成父易。3、分别将IN-YUAN ,

IN-JIAO 置1,则OUT 灯会亮,而ZHAOJIAN 不会亮。原理同2。

2、系统原理

自动售货机的所有信号均由同步时钟信号 elk 的正边沿触发。由于售货机的 硬币接受器一般是一个机械设置装置,投币时产生的信号要比同步信号

elk 要慢

得多,一般可持续好几个周期,必须对投币输入信号进行处理, 使每一次投币时 在elk 脉冲周期内只能产生一个脉冲作为功能控制模块的投币驱动信号。因此可 将该系统分为两个模块。

(图一)自动售货机控制系统各模块连接图

自动售货机控制系统模块之间连接如图一所示,其中“ shuru ”为投币输入信号 处理模块,它是利用D 触发器和几个门电路组成的一个简单时序逻辑电路。主 要起到对输入信号进行存储和延时的作用。其输出信号作为功能控制模块 SHJ_CTRL ”的输入驱动信号。功能控制模块“SHJ_CTRL ”则用VHDL 语言实现。 它主要起到对输入信号进行分析处理的作用。是整个系统的核心。其中,

OUT

为自动售货机的矿泉水输出信号,ZHAOQIAN 为找钱输出信号

Shuru SHJ_CTRL

ZHAOJIAN

三、系统实现

1、功能控制模块

1)自动售货机控制功能的状态描述

取投币信号为输入逻辑变量,投入一枚一元硬币时用A=1表示,未投入时

A=0。投入一枚五角硬币用B=1表示,未投入时B=0。给出矿泉水和找钱为两个输出变量,分别用Z和丫表示,给出矿泉水时Z=1,不给时Z=0,找回一枚五角硬币时丫=1,不找时丫=0。

根据上面的功能描述,可用三个状态S0,S1,S2表示,未投币前的初始状态为S0,投入五角硬币以后为S1,投入一元硬币后(包括投入一枚一元硬币和投入两枚五角硬币的情况)为S2,再投入一枚五角硬币后电路返回S0,同时输出为Z=1,Y=0 ;如果投入的是一枚一元硬币,则电路也应能返回S0,同时

输出为Z=1,Y=1。根据上面的分析可得到状态转换图如图二所示。

10/00

00/00 01/00 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); BEGIN

X<=A&B;

PROCESS(x,state)

BEGIN

IF rising_edge(clk) THEN

CASE state IS

WHEN S0=>Z<='0';Y<='0';

IF(X="01")THEN

state<=s1;

ELSIF(X="10")THEN

state<=s2;

ELSE

state<=s0;

END IF;

WHEN S1=>Z<='0';Y<='0';

IF(X="01")THEN

state<=s2;

ELSIF(X="10")THEN

state<=S0;

Z<='1';Y<='0';

ELSE

state<=s1;

END IF;

WHEN S2=>Zv='0';Y<='0';

IF(X="01")THEN

state<=S0;

Z<='1';Y<='0';

ELSIF(X="10")THEN

state<=s0;

Z<='1';Y<='1';

ELSE

state<=s2;

END IF;

END CASE;

相关文档
最新文档