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

自动售货机控制系统VHDL有限状态机实现


自动售货机控制系统 VHDL 有限状态机实现
1 引言 有限状态机 FSM(Finite State Machine)及其设计技术是实用数字系统设计中实现高效 率、高可靠逻辑控制的重要途径。传统的状态机设计方法需进行繁琐的状态分配、绘制状态 表、化简 次态方程等,而利用 VHDL 可以避免这些繁琐的过程,直接利用状态转换图进行状 态机的描述,所有的状态均可表达为 CASE_WHEN 结构中的一条 CASE 语句,而状态的转移则 通过 IF_THEN_ELsE 语句实现。此外,与 VHDL 的其它描述方式相比,状态机的 VHDL 表述丰 富多样,程序层次分明,结构清 晰,易读易懂;在排错、修改和模块移植方面也有其独到 的特点。 2 自动售货机控制系统的实现 2.1 自动售货机功能描述及控制系统组成 设计一个自动售货机的逻辑控制电路。它有两个投币口分别为一元投币口和五角投币 口,假设每次只能投入一枚一元或五角硬币,投入一元五角硬币后机器自动 给出一瓶矿泉 水,投入两元硬币后,在给出一瓶矿泉水的同时找回一枚五角的硬币。图 1 为自动售货机控 制系统方框图,由投币信号处理模块和功能控制模块组成。

2.2 自动售货机控制功能的状态描述 取投币信号为输入逻辑变量,投入一枚一元硬币时用 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。根据上面的分析可得到状态转 换图如图 2 所示。

2.3 自动售货机功能控制模块的 VHDL 实现 根据图 2 所示的状态转换图, 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 shi_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=>Z<='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; END IF; END PROCESS; END beha;

上面程序中,A、B 分别为一元硬币和五角硬币驱动信号,Z 为矿泉水输出信号,Y 为找 钱输出信号。通过对程序分析和仿真可以看出,A 和 B 的驱动信号的持 续时间必须控制在 clk 时钟周期内,如果驱动信号时间太短,系统检测不到投币信号,时间太长,会误认为是 两次或多次投币,造成误操作。因此,要使整个控制 系统可靠运行,还必须设计专门投币 输入信号处理电路。

library ieee; use ieee.std_logic_1164.all; package state_pack is type state is (qa,qb); end state_pack; library ieee; use ieee.std_logic_1164.all; use work.state_pack.all; entity control is port( start,cp,T:in std_logic; d,b:in integer range 0 to 9; en1,en2,en3:out std_logic; reset,out1,reject1,reject2:out std_logic; c:out integer range 0 to 9); end control; architecture con of control is signal current_state:state:=qa; begin process variable var: integer range 0 to 9; begin wait until cp='1'and cp'event; if start='1'then current_state<=qa; c<=0;reject1<='0';reject2<='0';out1<='0'; en1<='1';reset<='0';en2<='0';en3<='0'; end if; case current_state is when qa=> if d=0 then current_state<=qa;c<=0;reject1<='0';reject2<='0'; out1<='0';en1<='1'; reset<='1';en2<='0';en3<='0'; else current_state<=qb;var:=d; end if; when others=>

en1<='0';reset<='0';en2<='1';en3<='1'; if b=0 then reject1<='1';reject2<='0';out1<='0'; elsif (T='0'and b<var) then c<=0;reject1<='1';reject2<='0';out1<='0';reset<='0'; en1<='0';en2<='1';en3<='1'; elsif (T='0'and b>=var)then c<=b-var;reject1<='1';reject2<='1';out1<='1';reset<='0'; en1<='0';en2<='0';en3<='1'; elsif(T='1'and b<var)then c<=b;reject1<='1';reject2<='1';out1<='0';reset<='1'; en1<='1';en2<='0';en3<='0'; end if; end case; end process; end con;


相关文章:
vhdl实现自动售货机
vhdl实现自动售货机_计算机硬件及网络_IT/计算机_专业资料。用vhdl实现自动售货机,内附有ise环境下的testbench代码,及仿真结果波形 ...
基于VHDL的自动售货机设计_图文
基于VHDL自动售货机设计_信息与通信_工程科技_专业资料。北华大学电子系统综合...实习目的通过本课题的研究,可以掌握电子控制系统的基本原理与其实现, 通过对各个...
基于VHDL语言自动售货机设计实验报告-绝对原创
基于VHDL语言自动售货机设计实验报告-绝对原创_工学_高等教育_教育专区。大学...--系统进入出票状态 else state<=money_state; end if; 实现了商品的多次选择...
自动售货机功能控制模块的VHDL实现程序
自动售货机功能控制模块的VHDL实现程序 - 用VHDL语言中的CASE_WHEN结构和IF_THEN_ELSE语句实现控制功能,源程序
基于VHDL的自动售货机设计
本文使用 VHDL 描述自动售货机各模块的结构、行为、...通过本课题的研究, 可以掌握电子控制系统的基本原理...使用 VHDL 硬 件描述语言编写程序代码用状态机实现...
东南大学VHDL自动售货机设计报告
东南大学VHDL自动售货机设计报告_工学_高等教育_教育专区。基于VHDL自动售货机...(4)为方便用户,本系统设置了复位键(rst),当处在非投币及 找零状态, 按下...
基于VHDL的自动售货机控制电路设计
###本科毕业论文 (设计) 题目 基于 VHDL自动售货机控制电路设计 学生 ##...通过定义售货过程的各个状态以及各个状 态之间的转换从而实现了自动售后机的...
北邮vhdl自动售货机实验报告(含代码)
第一种是用顺序结构和 if when 逻辑判断来实现。第二种是用状态机实现。我...VHDL自动售货机 14页 1下载券 喜欢此文档的还喜欢 自动售货机控制系统的VH....
自动售货机电路设计VHDL
自动售货机电路设计VHDL_电子/电路_工程科技_专业资料。郑州轻工业学院 课程设计任务书题目 电信 2 班 自动售货机电路设计 学号 541101030217 姓名 李磊 专业、班级...
基于fsm自动售货机的设计(原创)
基于fsm自动售货机的设计(原创) - 基于有限状态机的自动售货控制系统 基于有限状态机的自动售货控制系统 泰山学院 陈辉 摘要:本文以 VHDL 语言为工具,以 quartus...
更多相关标签: