广西科技大学课程设计VHDL自动售货机的设计推荐.docx

上传人:b****7 文档编号:10275375 上传时间:2023-02-09 格式:DOCX 页数:20 大小:292.50KB
下载 相关 举报
广西科技大学课程设计VHDL自动售货机的设计推荐.docx_第1页
第1页 / 共20页
广西科技大学课程设计VHDL自动售货机的设计推荐.docx_第2页
第2页 / 共20页
广西科技大学课程设计VHDL自动售货机的设计推荐.docx_第3页
第3页 / 共20页
广西科技大学课程设计VHDL自动售货机的设计推荐.docx_第4页
第4页 / 共20页
广西科技大学课程设计VHDL自动售货机的设计推荐.docx_第5页
第5页 / 共20页
点击查看更多>>
下载资源
资源描述

广西科技大学课程设计VHDL自动售货机的设计推荐.docx

《广西科技大学课程设计VHDL自动售货机的设计推荐.docx》由会员分享,可在线阅读,更多相关《广西科技大学课程设计VHDL自动售货机的设计推荐.docx(20页珍藏版)》请在冰豆网上搜索。

广西科技大学课程设计VHDL自动售货机的设计推荐.docx

广西科技大学课程设计VHDL自动售货机的设计推荐

广西工学院

毕业设计(论文)任务书

 

课题名称 基于VHDL自动售货机的设计

 

指导教师

教研室主任

系主任

2012年9月10日

 

摘要

本设计是以现场可编程逻辑器件(FPGA)为核心的自动售货机,利用QuartusⅡ软件编写verilogHDL硬件描述语言程序以实现自动售货功能。

本设计主要以程序为主,硬件方面则使用实验箱,将程序各变量端口与实验箱管脚进行相应的配置,用六开关分别代表商品价格、所投钱币价格及确认付款找零操作。

当选择好商品并投币后,数码管显示所选商品价格及投入钱币价格;按下确认付款开关,数码管显示应找多少钱,蜂鸣器响,对应商品LED灯亮。

若所投钱币不足所选商品价格,对应警告钱币不足的LED灯亮。

关键字:

FPGA、VerilogHDL、自动售货机、QuartusⅡ

 

Abstract

Thisdesignisanauto-vendingmachinebasedonfieldprogrammablelogicdevices(FPGA).WeuseQuartusⅡtowriteprocedureinverilogHDLwhichisalanguagetodescribehardware.Theprocedurewillrealizethefunctionofauto-vendingmachine.

Thisdesignismainlyaboutprocedure.Forthehardware,weuseexperimentalbox.Weallocateallvariablequantitiesintheproceduretothefeetinexperimentalbox.Weusesixswitchrespectivelyrepresentcommoditypricesandthrowmoneypriceandconfirmpaymentchangeoperation.Whenchoosinggoodcommoditiesandcoin,digitalpipedisplayselectedcommoditypricesandmoneyprice.Whenpressingconfirmpaymentswitch,digitalpipedisplayshouldfindhowmuchmoney,buzzersounded,correspondingcommodityLEDlights.Ifthrowmoneyshortageselectedcommodityprices,correspondingwarningmoneyshortageofLEDlights.

Keywords:

FPGA、VerilogHDL、auto-vendingmachine、QuartusⅡ

 

目录

1、绪论………………………………………………………………………………………..5

1.1背景……………………………………………………………………………………..5

1.2VHDL语言介绍…………………………………………………………………………5

1.2.1VHDL语言的发展背景…………………………………………...........................5

1.2.2VHDL语言的基本结构……………………………………………………………6

2、自动售货机的设计…………………………………………………………………………8

2.1设计说明………………………………………………………………………………...8

2.1.1流程说明……………………………………………………………………………..8

2.1.2各模块说明…………………………………………………………………………..9

2.1.3顶层模块……………………………………………………………………………10

3、仿真时序图……………………………………………………………………………….12

3.1只选择商品不投币……………………………………………………………………12

3.2选择商品但投币不足……………………….……………………………………….12

3.3选择商品,支付硬币刚够…………………………………………………………….13

3.4选择两样商品,支付够………………………………………………………………13

3.5选择一样商品,支付大于应付………………………………………………………14.

4、总结………………………………………………………………………………………15

致谢………………………………………………………………………………………….16

参考文献…………………………………………………………………………………….17

附录………………………………………………………………………………………….18

 

1绪论

1.1背景

随着科技的发展和社会的进步,自动化商业机械有了越来越广泛的应用,自动售货机作为自动化商业机械的代表被广泛用于公共场所自动售货,给人们的生活带来了极大的方便。

特别在发达国家,自动售货机已经十分普及,自动售货机可售出各种成型包装小商品,各种袋装,盒装,软瓶装等小商品。

因其无需专人值守而可以每天24小时售货,被称为“无人小超市”。

在我国,由于多种原因,自动售货机的市场推广缓慢,处于培育阶段,但可以预见,这种方便快捷的服务形式因其适合现代生活快节奏的需要,在不久的将来必会获得大众的喜爱。

随着商品市场的不断繁荣,自动售货机和自动服务设施必将逐步得到广泛的应用。

本文设计研究自动售货机的主要功能模块,主要包括货币处理模块、余额计算模块、显示模块,延时和时控模块,由于条件上的限制,对投币模块中的货币检测未进行处理。

相应的主要功能有选择货物,多次购买,出货找零,显示,延时和时控功能。

本文是通过使用VHDL语言,基于FPGA可编程芯片,并通过使用QuartusⅡ软件进行程序设计,模拟仿真,功能验证,以更好的来理解和掌握自动售货机控制系统的工作原理和设计方法,以及学习和掌握基于EDA的电子产品设计方法,进一步加深对VHDL语言以及QuartusⅡ软件、FPGA可编程芯片的认识与了解。

更深入的学习EDA技术,更好地掌握本专业知识。

1.2VHDL语言介绍

VHDL[2](VeryHighSpeedIntegratedCircuitHard-wareDescriptionLanguage)是指超高速集成电路硬件描述语言。

VHDL主要用于描述数字系统的结构、行为、功能和接口。

除了含有许多具有硬件特征的语句外,VHDL的语言形式,以及描述风格与句法,类似于一般的计算机一个电路模块或一高级语言,如C语言。

VHDL的程序结构特点是,将一项工程设计或称设计实体(可以是一个元件、一个电路模块或一个系统)分成外部(或称可视部分,即端口)和内部(或称不可视部分)。

在对一个设计实体定义了外部界面后,一旦其内部开发完成,其他的设计就可以直接调用这个实体。

这种将设计实体分成内外部分的概念是VHDL系统设计的基本点。

1.2.1VHDL语言的发展背景

硬件描述语言的发展至今已经有几十年的历史,并已成功应用到系统的仿真、验证和设计综合等方面。

其中比较著名的的有VHDL语言、AHDL语言、VerilogHDL语言等。

而在七八十年代初期VHDL语言是为美国国防部工作的。

它是以ADA语言为根源,就像将被看到的整体结构的VHDL和其他的VHDL报表。

1986年,有人提议VHDL语言作为IEEE标准。

它经历了一些修改意见和修改,直至1987年12月获得通过,成为IEEE1076至1987标准。

它的出现为电子设计自动化的普及和推广奠定了坚实的基础。

之后IEEE对87版本进行了修订,于1933年推出了较为完善的93版本(被定为ANSI/IEEEstd1076-1993标准),使得VHDL语言的编程更加灵活方便。

此后,越来越多的人开始使用VHDL语言进行数字电路系统的设计。

而VHDL语言有不同于软件编程语言,在编程结构和规范上有自己的特点,在此,本文就从简单介绍VHDL语言基础开始。

1.2.2VHDL语言的基本结构

一个完整的VHDL[3]语言程序通常包括实体(Entity)、构造体(Architecture)、配置(Configuration)、包集合(Package)和库(Library)5个部分。

前4种是可以分别编译的源设计单元。

下面分别介绍:

实体:

实体是用于描述所设计电路系统的外部接口信号,系统的输入输出端口及属性都是在实体中定义的。

一个实体是设计中最基本的。

最上层水平的设计是最高层的实体。

如果设计分层次,那么最高层的描述将有低层描述的说明附在它里面。

构造体:

构造体用于描述系统内部的结构和行为,系统要实现的功能都是在构造体内用语言进行描述的。

所有实体可以有一个构造体的说明来模拟。

该构造体描述的行为实体。

一个单一的实体可以有多个构造体。

一个构造体可能是行为而另一个可能是一个结构描述的设计。

配置:

配置用于从库中选取所需单元来组成系统设计的不同版本。

配置声明是用来约束一个组件实例的一双实体架构。

一个配置可以被视为像一个零件清单进行设计。

它描述的使用的每一个实体的行为,就像零件列表说明哪一部分用于每一部分的设计。

包集合:

包集合存放各种设计模块都能共享的数据类型、常数和子程序等。

包集合是一个收集常用数据类型和子程序中使用的设计。

想想包含使用的工具建立的设计的一个工具箱作为一个包。

库:

库存放已经编译的实体、构造体、包集合和配置。

库可由用户生成或者是由ASIC芯片制造商提供,以便在设计中为大家共享。

这种功能可以通过特定语句来实现。

除了以上介绍的各种术语,其它术语还有:

驱动程序:

这是一个信号上的一个源。

如果一个信号有两个来源,那么当两个来源是由两个驱动程序来起作用的。

总线:

这个词,“巴士”通常使我想起一组信号或某个特定的通信方式,用于设计的硬件。

在VHDL语言,总线是一种特殊的信号,表明可能由驱动程序来完成。

属性:

一个关于VHDL对象连接到VHDL的物体或预先确定的数据的属性数据。

例如,电流驱动能力的一个缓冲区或最高工作温度的装置。

通用:

泛指是VHDL语言传递信息实体参数的任期。

例如,如果一个实体是一个门级模型的上升和下降延迟,上升和下降延误的值才能通过成为实体与仿制。

进程:

一个进程是执行的VHDL中的一个基本单位。

一切行动,是在模拟VHDL描述分为单个或多个进程。

在VHDL语言程序中,最重要的就是实体和构造体部分。

它们是一个具体设计的核心。

如果说实体是系统和外部交流的桥梁,那么构造体就是处理内外交流的信号加工厂。

在构造体中各种信号协调工作,最后得到所需的输出,传送到输出端口和外部进行交流。

本次课程设计采用模式5,下图为模式5的电路图:

 

2自动售货机的设计

2.1设计说明

本文设计的自动售货机可销售两种商品;售货机可识别1元和5角两种货币,在一次购买过程中,可购买一个或多个商品,系统会自动计算所需钱数和找零钱数并自动找零。

另外有3个发光二极管、3个LCD数码管。

3个发光二极管分别用来显示交易成功、交易失败、正在找零。

3个LCD数码管:

1个用来显示所需金额,1个用来显示已付金额,1个用来显示找零数。

1个蜂鸣器,蜂鸣器响表示交易结束。

本文设计的自动售货机有两种饮料可以出售,售价均为1.5元。

售货机可以识别1元,5角两种货币。

如果投入金额总值等于或超过售价就可以将饮料放出,并具有相应的找零钱功能。

(1)用户可多次选择购买的饮料种类,某次饮料种类选定后等待投币。

如等待时间超过10秒钟,则认为用户放弃选购,售货机自动回到等待状态,等待新的交易。

若在10秒内,再次选中饮料,则再次等待。

(2)每次交易完成,售货机自动回到等待状态,等待新的交易。

(3)用按键模拟投入1元,5角这两种货币,可连续投币,同时显示投入的金额和还应投入的金额。

若某次投币后金额不足,且一定时限内不再投币(10秒左右),则交易失败,并退币,显示退还金额。

(4)具有指示电路,分别指示购买成功、交易取消(交易失败)和找零。

(5)相应显示有延时和时控功能。

2.1.1流程说明

本文设计的自动售货机当通电时,表示一次投币销售过程的开始。

顾客选择一种商品或多种则进入投币状态。

若不投币,则自动返回初始状态。

投币后,系统自动计算所投钱数。

若投币够,则出货找零。

若投币不够,等待10秒后,顾客没有继续投币,则退币并回到初始状态。

 

本系统的投币销售流程图如图所示:

2.1.2各模块说明

本文设计的自动售货机总体只有一个模块:

总控模块。

总控模块:

总控模块是本系统最重要的模块,该模块大体有5个输入端口和7个输出端口。

其输入端口有:

clk、coin5(投入5角货币)、coin10(投入1元货币)、price1(选择商品1)、price2(选择商品2),输出端口有:

aid(已投入多少钱)、needed(还需要多少钱)、moneyout(找零)、success(灯亮表示交易成功)、failure(灯亮表示交易失败)、showmoneyout(灯亮表示正在找零)。

alarm(蜂鸣器响表示交易结束)

该模块实现了本系统最重要的交易过程,包括选择商品、投入货币、计算货币,找零出货等。

 

2.1.3顶层模块

5个输入端口通过按键控制输入,7个输出端口通过硬件箱实现功能。

2.2状态之间的转换

本文所设计的自动售货机进程可分为7个状态:

a,b,c,d,e,f,g。

a为开始状态,在a状态中有按键按下时就进入b状态(投币状态)。

b为投币状态,在b状态中如果等待十秒还没投币就进入e状态,然后从e状态返回a状态。

若有货币投入,但投币不够时,即进入c状态(继续投币),若等待十秒不投,即进入g状态(退钱),若投币但还不够,则继续投币。

当投币够了,即进入d状态(出货找零)。

之后进入f状态(延时)后返回a状态。

c为继续投币状态,在规定时间内如果不投币就进入g状态,如果投币就进入d状态。

d为出货找零状态,在该状态进行交易数额计算,遵循多还少补设定。

e为交易进行中延时状态,在规定时间内能进行多次选择商品与多次支付货币。

f为交易结束延时状态,在规定时间内重新开始另一次交易。

g为退钱状态,在交易失败时,即支付货币不够时进行货币返还操作。

 

下图为状态之间的转换图:

在这次课程设计中,我们采用了实验箱模式5,下图是管脚的分配:

 

3仿真时序图

3.1只选择商品不投币

只选择商品但不投币,时序图表示需要投币1.5元,交易失败,交易结束,蜂鸣器响。

3.2选择商品但投币不足

选择商品后投币不足,我们只以两个5角硬币做支付,1元的类似。

时序图表示在投放2个5角硬币后,还需要5角,但是没有再币,最后返还1元,交易失败,交易结束,蜂鸣器响。

3.3选择商品,支付硬币刚够

这两个图均表示交易成功,支付刚好够数,没有返还,交易结束,蜂鸣器响。

3.4选择两样商品,支付刚够

这个图表示交易成功,支付刚好够数,没有返还,交易结束,蜂鸣器响。

3.5选择一样商品,支付大于应付

这个图表示交易成功,支付大于应付,找钱返还,交易结束,蜂鸣器响。

 

4总结

通过两周的课程设计,我设计并完成了自动售货机的设计,并用QuartusII完成了仿真,并出了波形图。

硬件实现方面,在实试验箱上选择模式5,因此硬件上完美实现功能。

最终的自动售货机有识别硬币、显示饮料种类和单价、余额的计算、找零、出货等功能,基本上能满足需求。

通过本次课设,大概掌握了EDA和FPGA的开发流程。

并且通过程序的设计,对状态机的设计有了一个更深刻的理解。

对自动售货机的原理更是有了一个很深刻的认识。

特别是把这个功能设计和实际联系起来的时候,趣味性大增,考虑问题也更加全面。

总的来说,本次课程设计受益匪浅。

不管是在知识方面还是,工程设计方面,都有了一个提升。

 

致谢

在这次课程设计中,经过同学和韦艳霞老师耐心的指导和帮助,熟悉了QuartusII软件的功能,顺利完成了课程设计,掌握了EDA的相关技能,了解了软件的基本性质和实用性能。

在这里再次感谢老师和同学们的帮助,同时也希望在EDA领域有所建树。

 

参考文献

1、潘松,黄继业.EDA技术实用教程(第二版)[M].北京:

北京航空航天大学出版社,1990

2、刘欲晓,方强,黄宛宁等.EDA技术与VHDL电路开发应用实践[M].北京:

电子工业出版社,2009

3、谭会生,瞿遂春等.EDA技术综合应用实例与分析[M].西安:

西安电子科技大学出版社.2004.

4、徐志军,徐光辉编著.《CPLD/FPGA的开发与应用》,电子工业出版社,2001.1

5、潘松,黄继业编著.《EDA技术实用教程》,2005,科学出版社

6、王开军,姜宇柏编著.《面向CPLD/FPGA的VHDL设计》,机械工业出版社,2006.10

7、詹仙宁编著.《VHDL开发精解与实例剖析》,电子工业出版社,2009.9

8、张亦华编著.《数字电路EDA入门——VHDL程序实例集》,北京邮电大学出版社,2003

 

附录

Libraryieee;

useieee.std_logic_1164.all;

useieee.std_logic_unsigned.all;

entityshouhuojioriginalis

port(clk:

instd_logic;--时钟信号

coin5:

instd_logic;--5角钱信号

coin10:

instd_logic;--1元钱信号

price1:

instd_logic;--商品1选择信号

price2:

instd_logic;--商品2选择信号

paid:

outstd_logic_vector(3downto0);--已支付钱数

needed:

outstd_logic_vector(3downto0);--需要支付钱数

moneyout:

outstd_logic_vector(3downto0);--返回找零钱数

success:

outstd_logic;--交易成功信号

failure:

outstd_logic;--交易失败信号

alarm:

outstd_logic;--交易结束信号

showmoneyout:

outstd_logic);--找零状态信号

endshouhuojioriginal;

architecturebehavofshouhuojioriginalis

typestate_typeis(qa,qb,qe,qc,qg,qd,qf);

signalcurrent_state:

state_type:

=qa;

signalq:

integerrange0to100;

begin

process(clk)

variablepaidtemp:

std_logic_vector(3downto0);

variableneededtemp:

std_logic_vector(3downto0);

variablebackmoney:

std_logic_vector(3downto0);

variablepricetemp:

std_logic_vector(3downto0);

begin

ifclk'eventandclk='1'then

casecurrent_stateis

whenqa=>paidtemp:

="0000";--状态qa为初始状态

neededtemp:

="0000";

backmoney:

="0000";

pricetemp:

="0000";

q<=0;

showmoneyout<='0';

moneyout<="0000";

paid<="0000";

needed<="0000";

failure<='0';

success<='0';

alarm<='0';

ifprice1='1'orprice2='1'thencurrent_state<=qb;

ifprice1='1'thenpricetemp:

=pricetemp+15;neededtemp:

=pricetemp;

Elsepricetemp:

=pricetemp+15;neededtemp:

=pricetemp;

endif;

endif;

paid<=paidtemp;

needed<=neededtemp;

whenqb=>alarm<='0';--状态qb为投币状态,支付钱币购买商品

ifcoin5='1'orcoin10='1'then

ifcoin5='1'thenpaidtemp:

=paidtemp+5;

elsepaidtemp:

=paidtemp+10;

endif;

ifpaidtemp>=pricetempthenbackmoney:

=paidtemp-pricetemp;neededtemp:

="0000";current_state<=qd;

elseneededtemp:

=pricetemp-paidtemp;backmoney:

="0000";current_state<=qc;q<=0;

endif;

paid<=paidtemp;

needed<=neededtemp;

endif;

ifq<8thenq<=q+1;

ifprice1='1'orprice2='1'thenq<=0;

ifprice1='1'thenpricetemp:

=pricetemp+15;neededtemp:

=neededtemp+15;

elsepricetemp:

=pricetemp+15;neededtemp:

=neededtemp+15;

endif;

paid<=paidtemp;

needed<=neededtemp;

endif;

elsecurrent_state<=qe;q<=0;

endif;

whenqe=>alarm<='1';--状态qe为交易失败,不追加支付钱币和选择商品

failure<='1';

ifq<4thenq<=q+1;

elsecurrent_state<=qa;q<=0;

endif;

whenqc=>alarm<='0';--状态qc为有钱币支付,但钱币不足或超过,继续支付或返还钱币

ifcoin5='1'orcoin10='1'then

i

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 历史学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1