当前位置:文档之家› 基于Verilog HDL的自动售货机设计

基于Verilog HDL的自动售货机设计

基于Verilog HDL的自动售货机设计
基于Verilog HDL的自动售货机设计

密级:

NANCHANG UNIVERSITY

学士学位论文

THESIS OF BACHELOR

(2012 —2016年)

题目基于Verilog HDL的自动售货机设计

学院:信息工程学院系电子信息工程系

专业班级:

学生姓名:学号:

指导教师:职称:教授

起讫日期:2016.3.14——2016.6.3

基于Verilog HDL的自动售货机设计

专业:电子信息工程学号:6100212164

学生姓名:田启泽指导教师:陶凌

摘要

自动售货机是商业自动化的常用设备,它不受地点和时间的限制,能够支持线上,线下多种支付方式,出货迅速,并且操作简单方便,因此受到了社会各群体的欢迎。现目前自动售货机多为单片机设计,常出现因功能单一不能满足顾客需求,性能不稳定带来各种售货出错等现象。

本文将论述采用EDA方法,以QuartusⅡ为软件开发平台,使用Verilog HDL语言设计,经过仿真后,在FPGA器件中实现自动售货机系统的详细流程。经过仿真验证设计可以实现投币计次,两种售价均为两元的商品选择,购物操作无条件取消,按键消抖,以及投币退币数量显示功能。硬件电路用一个按键电路实现投币功能,以led的点亮的数量指示投币的数量和商品出货情况,并以七段数码管显示退币的数量。

关键词:自动售货机;Verilog HDL;FPGA;EDA;Quartus Ⅱ

Design of Vending Machine Based on VHDL

Abstract

Vending machines are commonly used as commercial automated equipment, it is not restricted some trouble aspects,such as place,time and so on. It support online, offline payment methods, fast shipping, and easy operation, therefore has been welcomed by all social groups. Vending machines are currently a mostly single-chip design, often due to a single function can not meet customer needs, bring a variety of sales performance problems due to unstable capability.

This article will discusses the selling process of the vending machine by using QuartusⅡas software development platform, with the EDA method and through Verilog HDL language designing, after simulating, complying vending machine system in FPGA devices. After simulation designed it can be achieved coin metering and selection of commodities both are priced at two yuan, unconditionally canceled, key debounce and coin-coin number display. Hardware circuit using a function key circuits replays coin-operated,the number of led lights indicates the number of shipments of goods and coin, and using seven-segment LED to displaythe number of coin return.

Keywords: vending machine;Verilog HDL;FPGA;EDA;Quartus Ⅱ

目录

摘要 (Ⅰ)

Abstract (Ⅱ)

第一章绪论............................................................................... 错误!未定义书签。

1.1 自动售货机设计的研究背景.............................................. 错误!未定义书签。

1.2 自动售货机设计的研究意义 (2)

1.3 国内外研究现状 (2)

1.4 自动售货机设计的主要内容 (3)

第二章相关技术简介 (5)

2.1 EDA技术简介 (5)

2.2 Verilog HDL语言介绍 (6)

2.3 QuartusⅡ软件开发平台 (7)

第三章总体设计方案 (8)

3.1设计要求 (8)

3.2 总体设计 (8)

第四章模块设计及仿真测试 (10)

4.1 投币计次功能的实现 (10)

4.2 led与数码管显示功能的实现 (11)

4.3 无条件取消功能的实现 (14)

4.4 商品选择出货功能的实现 (16)

4.5 抖动消除电路的实现 (18)

第五章总体功能的仿真测试 (20)

结论 (23)

参考文献(References) (24)

致谢 (25)

附录 (26)

第一章绪论

1.1 自动售货机研究背景

中国产业调研网发布的2016年版中国自动售货机市场现状调研与发展趋势趋势分析报告认为,居民收入水平显步攀升,自动售货机的迅猛发展得益于消费群体追逐灵活、智能、高效以及自助式服务。现今自动售货机已经成为了欧美发达国家经济发展中的一个不可分割部分,特别是对青年一代,这种伴随其成长的前卫零售方式更可谓是一种新的消费时尚[1]。自动售货机具有技术含量高、销售方式新、市场潜力大、商品货真价实等优点,决定了它广阔的发展。而且,它与电子购物等新型消费方式相通,能创造出巨大的商机。

自动售货机在一些发达国家应用非常普遍,1930年,美国研制出世界第一台自动售货机,主要贩卖香烟。而自动售货机在我国的投入使用,也已经有20多年的时间,但一直没有全面普及。十九世纪三十年代,我国开始引进日韩等国的老旧机器投入市场,到如今的自主研发和生产贩卖机,我国自动售货机生产工厂,运营商家蹒跚起步,攻克了一道道技术,市场难题,已经在国内零售行业内打下了良好的基础,开辟了一条顺畅的零售之路。目前我国的自动售货机发展趋势已经日渐清晰,自动售货机市场已经慢慢由沿海发达地区向中西部欠发达地区拓展

[2]

中国是世界上经济发展最快的国家之一,但是目前市场上仅置放了区区4万台自动售货机。许多企业家开始成立自动售货机公司,但还没有找到有效的定价模式。在许多公司当中,仅有一家是盈利的,因为它们占据了有利的地点,售货机功能齐全,商品的价位更容易让广大百姓接受,除了供应日常的食品之外,还提供了其他许多物品。

由于中国自动售货机市场起步较晚,民众对自动售货机的接受度低,对其安全性存在种种质疑,这是中国自动售货机市场发展缓慢的主要原因。除此之外,贩卖机的功能单一,价格不具备市场竞争力,货币识别能力也比较差,这些都是影响消费者进行选择的重要因素。由于自动售货机在国内属于新鲜事物,民众对其充满了好奇之心,蓄意破坏者大有人在,自动售货机投入市场初期,在一些城市几乎遭到"灭顶之灾"。曾经有人将价值昂贵的自动售货机毁坏,只是为了拿去其中价格低廉的商品。可以说自动售货机在某种程度代表的是城市发达程度,同时也考验着人们的素质与涵养。现如今,伴随着自动售货机技术的成熟和市民对自动

售货机的加深了解,新的消费方式也逐步促进了人们更高的文明素质,自动售货机的发展命运正在悄悄地发生着变化。原先,自动售货机由于不能识辨新币和功能比较单一,钱币有被卡的现象不时出现,安全性也不如现在,造成自动售货机被损坏的情况时有发生。如今,自动售货机可以做到同时制冷与加热,可以满足不同人群的消费需求[3]。安全,透明的展示窗可以起到良好的广告效果。货币识别技术也日趋完善,能够识别二十元以下(包括二十元)的所有币种,并且还能够识别货币的真假。控制系统更是方便智能,可以根据市场需求设定营业时间以及灯光的照明时间,节能效果极好。同时,还具备了一般的公务能力,统计,盘点,打印等功能是样样具备。

1.2 自动售货机的研究意义

随着中国经济的不断腾飞,居民收入显著增加,消费水平逐步攀升,社会智能化程度不断加深,人们的消费意识向智能高效,省时安全转变,自动售货机将以其独特的优势在经济腾飞浪潮中进一步在市场经济体制中获得更广泛的支持与欢迎。就其目前在中国的现状而言,自动售货机在中国的发展必然在未来几年中取得举足轻重的进步。时代的发展为自动售货机的普及奠定了良好的背景,然而自动售货机在中国的现状大大落后于欧美等发达国家。究其原因,第一,我国自动售货机的研发与普及较欧美国家起步晚是一个比较重要的因素,第二,国内自动售货机要普遍发展也有着相当的技术瓶颈。然而国内企业普遍缺乏自主创新能力,无法攻克自动售货机研究技术难题。

自动售货机市场在未来几年将极度繁华,然而国内的硬件设备还不具有迎接繁华时代到来的基础。目前我国分布的自动售货机大都为国外引进,外国技术容易遏制我国相关技术的发展。自动售货机作为一种集成度极高的高新产品,要想在国内普及国产自动售货机,必须解决各类技术问题,才有可能赶超欧美,实现

自动售货机在中国的普及目标[4]

1.3 自动售货机的国内外研究现状

国内市场自动售货机仅仅引入不到十年,依然处于市场导入期,竞争相对来不是很激烈。自动售货机在国内处处充满着无限商机。截至2016年,国内自动售货机拥有量约为13万台,相对于14亿人口的国家,这个数字远远不能够满足消费者的需求。假如按中国现有的城市人口6.7亿人计算,平均每10000人中才有一台自动售货机。相对于东南亚,欧美西方发达国家拥有量是远远落后的。在很

多的发达国家中,自动售货机的营业额可以占到零售业总额的百分之六十及以上,而且保持平均每年百分之五的增速。

大好的市场趋势,促使着自动售货机生产商和运营商不断改革其生产技术和运营成本。目前国内制造商共有一百家之多,运营商更是多达五十家之多。此外,国外巨头企业也开始进入中国市场[5]。日本自动售货机市场已经趋于饱和,其国内自动售货机行业老大--富士电气集团,世界规模最大的日本自动售货机运营商--日本饮料公司,已经开始觊觎中国这片尚未完全被开发的市场。无独有偶,美国自动售货机行业巨头De Amertek集团、恒新集团等行业巨头也开始在投放它们的产品,中国企业迎难而上,困难重重。

截至目前,相关企业已经开拓了四种销售模式。第一种是具有强大经济实力的专业运营商进行整体购买。第二种是合资或合作的形式,双方在某个市场上发掘出共同利益点,展开合作或者合资。利用资源优势,共同开拓市场。第三种是租赁给有意于自动售货机行业的创业者。第四种方式是生产厂家囊括生产,运营于一身。自动售货机的发展阶段如图1-1所示。

图1-1

另外,国内一些自动售货机企业为了提升产品竞争力,已经进入了自主创新模式。2004年,天津和重庆出现了一种通过手机就可以购物的自动售货机。用户不必现场缴纳现金,只需要在交话费的同时将货款一并结算即可,这种购物方式虽说不能够颠覆传统付费模式,但也在一定程度上冲击了传统购物模式的霸主地位。与此同时,中国自动售货机市场进入全新的e时代购物新模式。新平台基于无线通讯技术实现实时库存管理系统、电子结算、LCD大屏互动广告等几大新型

功能[6]

1.4 自动售货机设计的主要内容

本文主要研究利用自动售货机来完成商品选择、投币计次、出货操作、led 数码管显示等功能。主要完成了以下几个方面的工作:

1.对自动售货机的研究背景及其研究意义做了简短的分析。

2.对设计中用的EDA技术以及Verilog HDL语言、Q uarterⅡ软件开发平台相关技术做了简单的介绍。

3.在对自动售货机的整个控制系统进行了研究梳理之后,提出了售货机的整体设计方案。

4,对各个子模块功能的利用Verilog HDL语言程序的输入的方式进行了详细的分析设计,并且对每一个子模块进行了仿真测试,对其相对应的功能进行了验证。

5,最后对整个系统进行了仿真,对整个自动售货机的功能进行了验证。

第二章相关技术简介

2.1 EDA技术简介

EDA(Electronic Design Automation)技术全称为电子设计自动化技术。这是一种高效的电子设计自动化工具,是随着集成电路和计算机技术飞速发展而应运而生的设计工具。它主要辅助设计以下三个方面的工作,一是集成电路设计,二是电子电路设计,三是印刷电路板设计。应用EDA技术,可以在计算机环境下进行模拟,检验,布图和测试。不仅可以节省开发成本,还可以很大程度的提升各种设计的质量。EDA技术的发展是与可编程逻辑器件,大规模集成电路设计,计算机技术和电子设计技术同步的。EDA技术的发展大致经历了以下三个阶段,第一个阶段是七十年代至八十年代的CAD(Computer Aided Design)阶段,逻辑仿真,PCB设计以及IC版图编辑均须设计人员手工进行计算。第二阶段是八十年代中后期的CAE(Computer Aided Engineering)阶段[6]。较CAD 阶段,增加了电路功能和结构设计,并且通过电气连接将二者连接在一起,实现了工程设计。第三阶段即九十年代的设计自动化阶段。此时的EDA技术已成一个完整的系统,设计师仅需给出工程的性能指标要求,EDA系统即可自动给出相关设计方案。到了21世纪,EDA技术更是发生了翻天覆地的变化。各项技术均日益成熟。

现代电子设计都需要借助计算机上的EDA相关软件进行,手工设计的时代已然被颠覆。EDA技术依赖性能强大的计算机。借助开发平台例如QuartusⅡ,输入相应的硬件描述语言程序,便能够自动的完成逻辑编译,化简,分割,综合,布局布线以及仿真测试,实现电子线路系统功能。EDA技术概括起来有以下几个主要特点[7]。

一是硬件语言设计输入。EDA系统输入方式包含硬件描述语言输入和原理图输入方式。而硬件语言输入方式在工程设计中占比在百分之七十以上。硬件语言描述方式的突出优点是:公开可利用性,设计与工艺无关,描述能力强,可以实现大规模的系统设计,设计的复用和继承性好。二是自顶向下的设计方法。其突出优点在于可以很大程度简化设计的复杂性,有利于在早期发现设计中的错误,提高设计的额一次成功率。三是逻辑综合与优化。其优点在于将高层次的系统设计自动的翻译成门级电路描述,实现了设计与工艺相互独立。四是开放性和标准性[8]。一个EDA系统只要建立了符合标准的开放式框架结构,就可以与其他工厂的电子设计工具一起工作。这样,设计者就可以充分利用相关资源,提高设计的质量。五是丰富的库。21世纪的EDA工具已经形成了一个较完整的库,

包含了元器件图形符号库,元器件模型库,工艺参数库,标准单元库,可复用的电路模块库以及IP库等等[9]。完整的库文件可以很大程度的提高设计效率。2.2 Verilog HDL语言介绍

Verilog HDL和VHDL是目前世界上最流行的两种硬件描述语言(HDL:Hardware Description Language),被广泛地应用于基于可编程逻辑器件的项目开发。二者都是在20世纪80年代中期开发出来的,前者由Gateway Design Automation公司(该公司于1989年被Cadence公司收购)开发,后者由美国军方研发[10]。

Verilog HDL由C语言发展而来,继承了C语言设计的简介,高效和易用的特点。既可以用Verilog HDL语言来进行各种层次的逻辑设计,也可以进行数字系统的仿真测试,时序分析和逻辑综合。Verilog HDL语言已经成为ASIC设计领域的标准。适合于算法级,寄存器传输级,门级和版图级灯各层次设计描述[11]。Verilog HDL语言主要功能有以下几个:一是可描述顺序执行和并行执行的程序结构。二是使用延迟程序来清晰的表达控制过程的起止时间。三是提供了丰富的条件和循环程序结构。四是提供了完整的一套表示组合逻辑基本原件的描述与。较之于VHDL语言,Verilog HDL语言属于RTL硬件描述语言,只适合RTL级以及更低层次的门电路级设计。然而所有的硬件描述语言设计,最终都要转换成门电路级才能够实现布局布线。所以Verilog HDL语言程序的综合过程较VHDL 简单[12]。

2.3 QuartusⅡ软件开发平台

QuartusⅡ是由Altera公司开发的一种EDA工具,是经过A+plus、然后到MAX+plus,再到MAX+plusⅡ发展而来的。QuartusⅡ支持多种输入方式,例如原理图输入,硬件编程语言输入等,在使用QuartusⅡ软件时,它会将设计人员设计好的硬件编程语言或者原理图等自动转换目标文件,最后将目标文件下载到器件中。通过DSP Builder工具,QuartusⅡ能很好的跟Matlab、Simulink等结合起来,从而能够方便快捷的实现不同的DSP系统的设计[13]。因为有着简单直接的入口和很强的设计能力,以及使用灵活、方便快捷的优点,所以很受广大设计者的青睐[14]。

QuartusⅡ软件有以下特点:

支持多平台的设计输入,结合其处理和验证功能使其成为一个全集化的开发平台,让开发周期变短。

●是一个与结构无关的开发工具,QuartusⅡ通过把Cyclone、APEX、Mercury

等设计环境转化为所需要的格式,真真正正的成为唯一一个与结构无关的开发工具。

●具有很具有全面的可设计开发资源,是一个集系统设计、软件开发、逻

辑设计于一体的综合性开发平台。

QuartusⅡ的编程设计流程图所示:

图2-1

第三章总体设计方案

3.1 设计要求

1,自动售货机可售卖两种饮料,包括cola型和diet型。

2,饮料价格均为两元,顾客可投入两个一元硬币进行购买。

3,购买途中,若按下取消键,自动售货机将无条件退币。

4,选中饮料后,若投币数量等于饮料价格,指示灯将被点亮。

5,退币过程中以数码管显示的数字来指示退币数量。

6,机器包含复位电路。

3.2 总体方案设计

根据图3-1功能流程图,可具体将售货机分成如下几个模块:投币计次功能模块,Led灯显示功能模块,无条件取消功能模块以及货品选择出货模块。在此

图3-1

方案中,自动售货机系统以FPGA作为处理和控制的核心,能够完成货物的信息存储,进程控制,硬币处理和显示等功能。系统根据用户选择的商品价格,并且能够完成对用户投入硬币与货物价格的数量比较,如用户投入金额大于等于商品价格,则给出商品并计算找零,若金额不足则发出警告信号并退币,取消本次操作。在购买过程当中,若用户按下取消键,则系统无条件退币并通过led显示退币数量。本设计包含两个输出口OUT与OUT1。OUT输出口代表商品输出情况。OUT1代表找零退币情况,输出产生上升沿脉冲即认为输出完成。用三位LED 灯显示商品输出情况,位一位二分别代表cola与diet饮料的输出状态。

位3,4显示投入的硬币数量。a为硬币输入,系统通过信a产生的上升沿对硬币金额进行累加。由此根据金额总量输出对应商品。

对整个系统的端口设置如下:

1,输入端口:1024Hz时钟输入,a硬币输入,reset取消,复位输入端口,cola,die饮料选择输入端口。

2,输出端口:out饮料输出端口,out1退币指示端口,数码管显示端口,led 商品指示输出,投币数量显示。

3,内部可读输出端口:a1投币计次信号。

确定了系统的输入输出端口之后,以下详细介绍系统内部工作原理:

当系统受到reset信号之后,输入输出端口清零。

当系统开始接受投币之后,投币计次电路开始工作,系统每接受一个硬币,a1累加一次,直至累加至2.

当投币累加两次之后,开始选择饮料类别。在选择一种饮料之后,等待下一个时钟信号上升沿,out输出信号输出为1.

当有饮料输出时,led的低二位将显示为何种饮料被售出,高二位将显示投币数量。

在售卖过程中,若顾客中途取消交易,系统收到reset信号,七段数码管将显示应退币数量。输出out也相应的转为零。

第四章模块设计及仿真测试

4.1投币计次功能的实现

系统在1024Hz时钟作用下对投币信号a上升沿脉冲进行累加寄存于a1当中,实现累加功能,流程图如图4-1所示。当a等于1时,寄存器a1进行加一操作,若a不等于1,则,不对a进行任何操作。

图4-1

程序如下:

if(a==1) //if语句判断是否投入一元硬币。

a1<=a1+1; //一元硬币投入,a1在原来的值得基础上加一。

else

a1<=a1; //if语句不满足,则对a1不进行任何操作。

仿真结果如图4-2所示

图4-2

由图4-2可知当a出现高电平时,a1在时钟信号下一个clk上升沿到来时进行加一操作,因为所设计的商品价格均为两元,故a1设为两位寄存器类型数据即可。

由QuqrtusⅡ软件内部生成的RTL电路图如图4-3所示:

图4-3

4.2 led与数码管显示功能的实现

显示功能主要体现在对硬币数量的显示,以及售出商品对应的商品led显示。因开发板至包含4位led。故改选用七段数码管对退币金额数量进行显示。若选择cola型饮料,且金额满足出货条件,则led灯第一位及第四位被点亮。若选择diet型饮料,则led第二位以及第四位被点亮。若输入金额为零,则led 全灭。若输入金额为一,则led第三位点亮。若购买途中交易被取消,则一位七段数码管显示退币金额。程序流程图如图4-4所示。

显示功能模块程序如下:

if(a1==2)//a1满足商品价格,系统根据选择的商品点亮不同的led灯

begin

case({cola,diet})

2'b01:

led<=4'b1001;//选择diet型饮料时,四位led显示1001。

2'b10:

led<=4'b1010;//选择cola型饮料时,四位led显示1010。

default:

led<=4'b1000;//其他不合法情况,四位led显示1000。

endcase

图4-4

如果选择cola型饮料,则当a1满足商品价格两元时,led显示10001;选择diet型饮料则显示1010。若不选择饮料,投币一元显示0100,投币两元显示1000。其他情况均显示0000。

Cola型饮料仿真结果如图4-5所示,四位led显示1010。

图4-5

Diet型饮料仿真结果如图4-6所示,四位led显示1001。

图4-6

投币不选择饮料时的led显示如图4-7所示,当a出现一个上升沿时,四位led 显示0100,当a出现第二个上升沿时,四位led显示1000。

图4-7

由QuqrtusⅡ软件内部生成的RTL电路图如图4-8所示:

图4-8

4.3无条件取消功能的实现

顾客在购买商品的过程中,如果按下了reset按键,自动售货机系统将转入无条件退币程序。退币过程中,七段数码管将显示应退还的硬币数量。若按下reset 按键之前已投币两元,则在数码管上显示数字2。若在按下reset按键之前已投币一元则显示数字1。其流程图如图4-9 所示。

实现程序如下:

if(reset)//检测reset按钮是否被按下,条件为真,执行以下程序

begin

case(a1)

0:duanxuan<=8'b11111100;//按下reset按钮时,a1值为2,数码管显示数字2 1:duanxuan<=8'b01100000;//a1值为1,数码管显示数字1

2:duanxuan<=8'b11011010;//a1值为0,数码管显示数字0

default:duanxuan<=8'b11111111;//其他不合法情况七段数码管全亮

endcase

图4-9

投币两元后按下reset按钮的仿真波形如图4-10所示,七段数码管的值为11011010,其值为2:

图4-10

投币一元后按下reset按钮的仿真波形如图4-11所示,数码管显示阿拉伯数字1,七段数码管为01100000:

图4-11

不投币按下reset按钮后的仿真波形如图4-12所示,七段数码管的值为11111100,其值为0:

图4-12

其他不合法数值(例如a1值为3时)得显示如图4-13所示,七段数码管的值为11111111:

图4-13

由QuqrtusⅡ软件内部生成的RTL电路图如图4-14所示:

图4-14

相关主题
文本预览
相关文档 最新文档