当前位置:首页 >> 信息与通信 >>

基于fsm自动售货机的设计(原创)


基于有限状态机的自动售货控制系统 基于有限状态机的自动售货控制系统
泰山学院 陈辉
摘要:本文以 VHDL 语言为工具,以 quartusII 为平台,运用 VHDL 有限状态机设计自动售货系统, 摘要 实现了对四种物品的售货,找零功能。 关键词: 关键词:VHDL,状态机,自动售货系统

Automatic vending control system based on FSM
Chen Hui
Abstract: In this paper, VHDL language as a tool to quartusII as the platform, the finite state machine design using VHDL automatic vending system, and sales of four items, give change functions. Keywords: VHDL, state machines, automatic vending system

1.引言 1.引言
有限状态机 FSM(Finite State Machine)及其设计技术是实用数字系统设计中实现高效率、高 可靠逻辑控制的重要途径。 传统的状态机设计方法需进行繁琐的状态分配、绘制状态表、化简次态方程等,而利用 VHDL 可 以避免这些繁琐的过程,直接利用状态转换图进行状态机的描述,所有的状态均可表达为 CASE_WHEN 结构中的一条 CASE 语句,而状态的转移则通过 IF_THEN_ELsE 语句实现。此外,与 VHDL 的其它描述方式相比,状态机的 VHDL 表述丰富多样,程序层次分明,结构清晰,易读易懂;在排 错、修改和模块移植方面也有其独到的特点。

2.自动售货机控制系统的实现
2. 1 商品信息存储
本系统首先要将商品的单价,数量置入到自动售货机,这里用电平模拟输入输出信号。 定义三个输入端口。 item:in std_logic_vector(1 downto 0); --商品选择输入端 ,”00”代表商品一”,01”代表商品二”10”,代表商品三, “11”代表商品四

set: in std_logic ; pri_in:in std_logic_vector(3 downto 0);

--商品信息置入信号 --商品价格

quan_in:in std_logic_vector(3 downto 0); --商品数量 定义一个二维数组,存放四个八位的数据,即四种商品的价格与数量,高四位为价格,低四位为数量。 type ram_type is array(3 downto 0)of std_logic_vector(7 downto 0); signal ram :ram_type; 相关控制程序如下: if set='1' then ram(conv_integer(item))<=pri_in&quan_in; 函数 Conv_Integer()将 std_logic_vector 类型强制转换成整数型。当‘set’为高电平时,将当前物品信息存入。 仿真波形见图 2-1。

图 2-1 物品信息存储波形仿真

2.2 自动售货机控制功能的状态描述 本自动售货系统可划分为五个状态:系统初始化,物品选择,投币处理,输出商品和找零。程 序相关端口说明及变量定义如下: type state_type is (initial_state,item_state,money_state,sell_state,change_state); signal state:state_type; sel,cancel,set: in std_logic; coin0: in std_logic; coin1: in std_logic; item:in std_logic_vector(1 downto 0); --选择、取消、开始 --5 角硬币投入口 --1 元硬币投入口 --商品选择端

change_out :out std_logic_vector(3 downto 0);--找零输出

item_out:out std_logic_vector(3 downto 0);

--商品输出 ,“0001”代表商品一;”0010”代 表商品二; ”0100” 代表商品三; ”1000” 代表商品四

qianbugou :out std_logic; quehuo:out std_logic;--库存不足提示

--投币不足提示

quantity:out std_logic_vector(3 downto 0));

--当前库存数量

variable quan: std_logic_vector(3 downto 0);--变量,存储商品数量 variable pri: std_logic_vector(3 downto 0);--变量,存储商品价格 2.2.1 系统初始化 该状态主要对各输出端口初始化,相关程序如下 when initial_state=> item_out<="0000"; change_out<="0000"; counter<="0000"; qianbugou<='0'; quehuo<='0'; state<=item_state; --出货口关闭 --找零口关闭 --投入钱币总额记录清零 --投币额不足指示关闭 --缺货指示灯灭

2.2.2 物品选择 检测选择了哪种物品,并读取该物品的库存和单价。 库存不足时给予提示。 when item_state=> if sel='1' then for i in 0 to 3 loop quan(i):=ram(conv_integer(item))(i); end loop; for i in 4 to 7 loop pri(i-4):=ram (conv_integer(item))(i); end loop; if quan>0 then --读取商品单价 --读取商品数量 --检测到 sel 键按下

quehuo<='1'; state<=money_state; else quehuo<='0'; state<=initial_state; end if; else item_out<="0000"; state<=item_state; end if; 投币处理 2.2.3 投币处理 该状态记录投入的钱币的数量 when money_state=> if cancel='1' then state<=initial_state; change_out<=counter; elsif sel='1' then state<=sell_state; else state<=money_state; end if; if coin0='1' then counter<=counter+1; elsif coin1='1' then counter<=counter+2; end if; 2.2.4: 2.2.4:输出货物

--当库存容量为零时,指示灯亮 --进入投币状态

--当库存容量不为零时,指示灯灭 --进入初始化状态

--没有按下 sel 键,出货口关闭 --当前状态不变,循环检测 sel 键是否按下

--按下“取消”按钮 --进入初始状态 --返还投入的所有硬币

--按下 sel 键,进入出货状态

-- 没有任何键按下,继续循环检测按键

--投入 5 角硬币 counter 自加 1

--投入 1 元硬币 counter 自加 2

判断投币是否足够,足够则输出商品,并判断是否需要找零,若需要则进入找零状态。投币 不足给予提示,并返回投币状态。 when sell_state =>

if cancel='1' then change_out<=counter; state<=initial_state; elsif

--按下“取消”按钮 --返还投入的所有硬币 --进入初始状态

counter>=pri then –-判断投入的硬币数量是否足够 --投币数足够,将投币数不足指示关闭 then --输出所选物品

qianbugou<=’0’; if item="00"

item_out<="0001"; elsif item="01" then item_out<="0010"; elsif item="10" then item_out<="0100"; else item_out<="1000"; end if; quan:=quan-1; --库存量减一

ram(conv_integer(item))<=pri&quan; --商品数量信息更新 state<=change_state; else qianbugou<=’1’; state<= money_state; end if; 2.2.5 找零 计算并返还剩余的钱币, when change_state=> if cancel='1' then change_out<=counter; state<=initial_state; elsif counter>pri then --按下“取消”按钮 --返还投入的所有硬币 --进入初始状态 --需要找零 --系统进入找零状态 --投币数量不足 --提示投币数不足 --返回投币状态

change_out<=counter-pri;--将多出货币输出 else

change_out<="0000"; state<=initial_state;--返回初始状态 end if; 状态转换图见图 2-2

图 2-2 状态转换图

3. 设计验证 . 通过波形仿真检验该自动售货系统是否能完成对五种情况的处理。四种情形为: (1)投币足够,需要找零。 (2)缺货。 (3)投币足够,不需找零。 (4)投币不足。 首先置入商品的价格与数量,数据见表 3-1
表 3-1 商品信息 商品 商品一 商品二 商品三 商品四 数量 1111 0000 1111 1111 价格 0110 1000 0100 0010

四种情形的波形仿真分别见 图 3-1,图 3-2,图 3-3,图 3-4。

图 3-1

需要找零仿真波形

图 3-2 缺货仿真波形

图 3-3 投币正好仿真波形

图 3-4 投币不足波形仿真

购物过程中,若按下取消键时,则返还所投钱币,波形仿真见图 3-5

图 3-5”取消”键测试仿真波形

将验证数据填表分析,验证结果完全正确。实现了该设计的所有功能。数据统计见表 3-2 表 3-2 验证数据统计
情况 所选物品 (item) 需找零 缺货 投币正 好 投币不 足 商品一(00) 1111 商品二(01) 0000 商品三(10) 1111 商品四(11) 1111 0110 1000 0100 0010 库存 所需金额 投入金额 (count) 1000 0010 0100 0001 输出物品 (item_out) 0001 0000 0100 0000 找零金额 (change_out) 0010 0000 0000 0000 投币不足 指示灯 (qianbugou) 灭 灭 灭 亮 缺货指示 灯 (quehuo) 灭 亮 灭 灭

4 结语 本设计利用 VHDL 语言有限状态机设计自动售货系统, 大大降低了设计难度和时间, 提高了设 计效率和可靠性, 利用语言的灵活性及功能强大的 EDA 工具, 可以轻松完成硬件的功能扩充与升级, 整个设计过程相对于传统的设计方法,有较大的突破。 参考文献
[1]《EDA 技术实用教程》 (第三版)潘松.黄继业著 科学出版社 [2]《EDA 应用技术(第二版) 焦素敏 清华大学出版社,2005 》 [3]《EDA 实验与实践》 周立功.北京航空航天大学出版社,2007


相关文章:
基于fsm自动售货机的设计(原创).doc
基于fsm自动售货机的设计(原创) - 基于有限状态机的自动售货控制系统 基于有
基于FSM的自动售货机的设计与实现_论文.pdf
基于FSM自动售货机的设计与实现 - ’ 。’J 平常 苍常 煳 Electr
基于单片机的自动售货机设计-精品.doc
它只需要顾客投币和按购物键选择即可自动售货及退找零钱,其工作 程序如下图 1.1 [1 ] 第 3 页共 62 页 基于单片机的自动售货机系统设计 售货机的工作...
基于PLC自动售货机设计.doc
基于PLC自动售货机设计 - 江门 / 中山职业技术学院成人教育 毕业论文(设计、作业) 题 目: 基于 PLC 自动售货设计 谭展 层次: 大专 学生姓名: 所学专业: ...
基于PLC的自动售货机的设计.doc
基于PLC的自动售货机的设计 - 基于 PLC 的自动售货机的设计 摘要 随着科
基于自动机原理的自动售货机的设计.pdf
基于自动机原理的自动售货机的设计 - 编译原理 基于自动机原理的自动 售货机的设计 专学业:计算机科学与技术 号: 1162810301 李天群 金永霞 学生姓名: 指导教师...
基于Verilog HDL的自动售货机设计.doc
密级: NANCHANG UNIVERSITY 学士学位论文 THESIS OF BACHELOR (2012 2016 年) 题 目基于 Verilog HDL 的自动售货机设计 学 院:信息工程学院系电子信息工程系 ...
自动售货机FSM.txt
自动售货机FSM_工学_高等教育_教育专区。自动售货机FSM实现的Verilog程序 ...自动售货机的盈利模式 暂无评价 2页 1.00 基于fsm自动售货机的设计.....
基于plc自动售货机控制系统设计_图文.ppt
基于plc自动售货机控制系统设计 - 基于PLC的自动售货机控制系统设计 12机制班 熊妙虎 指导老师:尉蓉 PLC控制系统设计原则: (1) 最大限度地满足被控对象的控制...
基于plc的新型自动售货机的设计-开题报告_图文.doc
商丘学院毕业设计开题报告分院:电子信息工程学院 题目 郭鑫 张振华 2015 年 9 月 8 日 基于 PLC 的新型自动售货机的设计 专业班级 职称 电气工程及 其自动化 ...
自动售货机设计_图文.doc
自动售货机设计 - 自动售货机设计 一、实验任务 前提:单一商品的设定值是 4 元,多个商品时就设定值自拟 (1)自动售货机的投币口每次可以投入 1 元、2 元...
自动售货机控制系统的VHDL实现(1).doc
自动售货机控制系统的VHDL实现(1) - 自动售货机控制系统的 VHDL 实现
状态机-自动售货机_图文.ppt
状态机-自动售货机 - 状态机设计 --自动售货机 2013-9-22 # 1 状态机设计 --自动售货机 ? 状态机(State Machine)是一类很重要的时序 电路,是很多数...
(本科毕业论文设计)基于单片机的自动售货机的系统设计.doc
(本科毕业论文设计)基于单片机的自动售货机的系统设计 - 本文设计了一种以STC
基于PLC自动售货机的设计开题报告.doc
鞍山师范学院 2010 级本科毕业论文 (设计) 开题报告专业名称:电子科学与技术论文题目:基于 PLC 自动售货机的设计指导教 马凤铭 职 学生姓 师称名一、研究目的(...
基于VHDL的自动售货机设计_图文.doc
基于VHDL的自动售货机设计_信息与通信_工程科技_专业资料 暂无评价|0人阅读|0次下载|举报文档基于VHDL的自动售货机设计_信息与通信_工程科技_专业资料。北华大学...
基于单片机的自动售货机设计.doc
基于单片机的自动售货机设计 摘要近些年来自动售货机已经非常普遍,各大商场门口和一些公园等公共场所随 处可见,自动售货机已经得到了人们的认可,使用人数越来越多。...
基于Multisim的自动售货机仿真设计_图文.ppt
基于Multisim的自 动售货机仿真设计导 师: ×× 答辩人: 曾××专业: 应用物理 论文框架 1 2 3 4 研究背景 电路设计 模拟仿真结论 研究背景自动售货机(...
基于单片机的自动售货机设计_毕业论文.doc
基于单片机的自动售货机设计_毕业论文_工学_高等教育_教育专区。单片机论文_优秀毕业论文_外文翻译_毕业论文设计_毕业过关论文_毕业设计_毕业设计说明_毕业论文_单片机...
基于FPGA的自动售货机控制器设计_图文.doc
43 IV 基于 FPGA 的自动售货机控制器设计 基于 FPGA 的自动售货机控制器设计 第 1 章 绪论 1.1 自动售货机的起源公元前 3 纪元时,希腊科学家希罗为教堂...
更多相关标签: