基于VHDL的自动售货机系统设计

2015-06-08 08:20
系统仿真技术 2015年2期
关键词:投币状态机数码管

赵 杰

(商洛学院电子信息与电气工程学院,陕西商洛726000)

1 引 言

自动售货机是能按照投入的货币自动售货的机器,它是贸易自动化的常用设备,受时间、地点的限制少,能节约人力、便利交易,是一种全新的贸易零售方式,又被称为24小时业务的小型超市[1]。在自动售货机的控制方面,常采用单片机或PLC(可编程逻辑控制器)作为控制核心,完成整个系统的基本功能[2-5]。然而,实际中主控芯片需和众多外围芯片或接口相连,或者需要进行功能扩展[6]。用传统方式来应对日益复杂的要求显得力不从心。而使用硬件描述语言在FPGA(现场可编程门阵列)上实现电路系统的现代EDA(电子设计自动化)技术,具有明显的优势[7-8]。本文主要利用VHDL硬件描述语言编写程序代码,用状态机实现功能转换,以Quartus II软件作为运行平台,实现一个能够实现货物选择、投币、找零、多次购买等功能的自动售货机。自动售货机采用模块化设计,可以对各模块实行独自设计、修订和调试,最终通过模拟仿真进行验证。

2 自动售货机设计

为方便起见,设定自动售货机可以出售两种商品,标价分别为2元和3元。售货机可以分别识别1元和5元两种货币。

(1)购买者可选择购买多种商品种类,选定商品种类后处于等待投币状态。如果超时等待时间,则认定购买者放弃选购,此后售货机自动返回初始状态,等待新的交易。如果在规定时间内,再次选中物品,就进入再次等待状态。

(2)每次交易完成,售货机自动返回初始状态,等待下一次交易。

(3)使用按键信号来模拟1元,5元两种货币的投入,可以持续投币,同时显示投入的金钱和还应投入的金钱。如果某次投币后金额不够,且一定时间内不再投币,则购买失败,退币,并显示应退还金额。

(4)指示电路,分别指示购买成功、购买失败和正在找零三种状态。

联系自动售货机的运行过程,采用有限状态机来实现主控部分的功能,将实际的交易操作过程,转换为状态机各状态的切换,使得整体设计变得简洁。为方便起见,这里用LED(发光二极管)灯和数码管进行相应显示。因此,可将自动售货机系统分为多个模块:主控模块、二进制译码模块、显示译码模块、分频模块等。采用VHDL语言对各个模块功能进行描写,最后把各模块整合生成顶层设计实体。整体结构框图如图1所示。

图1 整体结构框图Fig.1 Whole structure diagram

主控模块:此模块是整个设计的最主要的主控模块,控制着整个设计的商品选择、投币、找零等功能。此模块总体据有5个输入端口和6个输出端口。其输入端口包含 clk、coin1(识别1元货币)、coin5(识别5元货币)、price2(价值2元的物品)、price3(价值3元的物品),输出端口有paid(已投入多少货币)、needed(还需要多少货币)、moneyout(找多少货币)、success(灯亮示意交易成功)、failure(灯亮示意交易失败)、showmoneyout(灯亮示意正在找钱)。此模块体现了此系统最主要的交易过程,包含商品选择、投入货币、金额计算、找钱出货等。其后接二进制译码模块。

二进制译码模块:具有一个输入端和两个输出端。从b端口输入一个4位的二进制数,从bcd0和bcd1端口输出两个4位的BCD(二-十进制码)码。此模块的功能目的是为了把总控模块输出的二进制数(paid,needed,moneyout)转换为BCD码,以至于输出到数码管模块动态扫描。此模块的原理是将一个4位的二进制数转换成2个4位的BCD码,分别为高4位和低4位。其后接显示译码模块。

显示译码模块:此模块具有7个输入端口和2个输出端口。输入端dain是一个4位的BCD码,clk接收q1的时钟,sel范围为000~111,判断选择八个数码管中的哪个,daout输出到num进行显示译码,该模块的功能是将4位二进制码转换为7位二进制数代表a—g从led输出,以便能用7段显示数码管显示。

分频器模块:此模块具有一个输入端口和两个输出端口。输入一个clk时钟经过分频器输出较高频率时钟给数码管扫描模块和低频率时钟给主控模块的状态机。

3 主要仿真结果

3.1 主控模块

如图2所示,客户先选择了一个2元物品随后选择了一个3元物品,needed表示为5即需要货币为5元,随后投入一个1元货币之后再没有投入货币,paid端口为1,needed端口为4,即已投入1元货币还需要投入4元货币,超出限时后failure变成高电平表明本次交易失败,随后回到初始状态。图3是连续两次选择商品投币并找零的仿真结果,图4为多次交易的仿真结果。

图2 选择两次但投币不足仿真结果Fig.2 Simulation result of selected twice with insufficient coins

图3 连续两次选择商品投币找零仿真结果Fig.3 Simulation result of selected twice and given charge

图4 多次交易投币仿真Fig.4 Simulation result of multiple coins

3.2 顶层电路仿真

译码、显示等模块仿真结果这里不再详述。对顶层电路进行仿真,当连续选择2元和3元的商品,连续投入一张1元和一张5元,LED指示仿真success为高电平表示成功,showmoneyout为高电平表示正在找零,并由数码管显示相应的金额,结果如图5所示。图6为连续选择商品只投币一次,交易失败的仿真结果。

图5 连续选择商品连续投币Fig.5 Simulation result of continuous selection for coins

图6 连续选择商品投币一次Fig.6 Simulation result of continuous selection with coin-operated once

4 总 结

该自动售货机可以按照设计的目的进行多次购买、出货找零;可在数码管上显示出已投货币、还需投入货币、找零金额,同时有代表交易成功、交易失败、正在找零的三个LED灯来指示状态。设计中采用的自顶向下的设计方法,实现了模块化的设计思想。各个模块所具有的相对独立性更好地保证了系统的稳定性,节约了系统资源。由于FPGA/CPLD(复杂可编程逻辑器件)具有良好的可扩展性,可以方便地对系统进行功能扩充和修改,因此,本设计具有一定实用性。

[1] 谢中赛,金志华,余世明.基于μC/OS-Ⅱ的自动售货机控制系统[J].机电工程,2009,26(1):35-37.XIE Zhongsai,JIN Zhihua,YU Shiming.Vending machine controller based on μC/OS-II[J].Mechanical &Electrical Engineering Magazine,2009,26(1):35-37.

[2] 董淑冷,茅红伟.PLC在自动售货机控制系统中的应用[J].上海师范大学学报:自然科学版,2007,36(2):47-51.DONG Shuleng,MAO Hongwei.The application of PLC in vending machine control system[J].Journal of Shanghai Normal University:Natural Sciences,2007,36(2):47-51.

[3] 陈慧.基于嵌入式单片机的智能自动售货机控制系统[J].华东交通大学学报,2008,25(6):78-82.CHEN Hui.A control system of intelligent vending machines based on the embedded SCMP[J].Journal of East China Jiaotong University,2008,25(6):78-82.

[4] 刘志臣.基于单片机的自动售货机模拟设计[J].科学大众(科学教育),2014(3):146-147.LIU Zhiceng.Vending machine design based on MCU[J].Popular Science,2014(3):146-147.

[5] 陆思杰.自动售货系统应用介绍[J].机械研究与应用,2010,23(2):147-148.LU Sijie.Brief introduction of automatic vending system[J].Mechanical Research & Application,2010,23(2):147-148.

[6] 余世明,晁岳磊,缪仁将.自动售货机研究现状及展望[J].中国工程科学,2008,10(7):51-56.YU Shiming,CHAO Yuelei,MIN Renjiang.Present situation and future prospects of vending machine[J].Engineering Science,2008,10(7):51-56.

[7] 孙延腾,吴艳霞,顾国昌,等.基于VHDL语言的参数化设计方法[J].计算机工程与应用,2010,46(31):68-71.SUN Yanteng,WU Yanxia,GU Guochang,et al.VHDL based design parameterization methodology[J].Computer Engineering and Applications,2010,46(31):68-71.

[8] 赵辉.基于EDA技术的数字系统设计[J].电子设计工程,2012,20(2):34-37.ZHAO Hui.Design of digital system based on EDA technology[J].Electronic Design Engineering,2012,20(2):34-37.

猜你喜欢
投币状态机数码管
微课教学设计之“数码管动态显示”
基于有限状态机的交会对接飞行任务规划方法
Arduino编程
MC9S08FL16单片机数码管静态显示分析
单片机控制的四位数码管动态显示编程
投币畅饮(图片故事)
基于Spring StateMachine的有限状态机应用研究
我是白骨精
放飞诚信的白鸽
奇妙投币机