基于FPGA的自动售货机毕业设计Word格式文档下载.docx
- 文档编号:17016925
- 上传时间:2022-11-27
- 格式:DOCX
- 页数:20
- 大小:218.89KB
基于FPGA的自动售货机毕业设计Word格式文档下载.docx
《基于FPGA的自动售货机毕业设计Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《基于FPGA的自动售货机毕业设计Word格式文档下载.docx(20页珍藏版)》请在冰豆网上搜索。
目前,随着移动商务的发展,自动售货机作为一种方便、直观的移动商务工具,开始在全球各地迅速普及和发展[1]。
2硬件系统的设计
本控制系统的硬件外围设备分为:
外部存储器,外部电源,晶振信号发生器,以及FPGA芯片,LED外部显示灯,出货装置。
2.1芯片的选择
本文所用到的FPGA芯片为,Altera生产的EPF10K10LC84芯片,EPF10K10LC84-4是一种复杂可编程逻辑器件,另外还有其它类型的管脚和封装,选择性强[2]。
2.2时钟发生器
自动售货机的控制系统需要一个时钟信号,我们选用的是6MHz的时钟信号。
其中用两个振荡器以及两个电阻可以完成我们所需要的设定。
2.3电源电路
日常所用到的电源为220V电压的电源,但是本课题中自动售货机所需要的电压为5V,因此我们需要设定一个变压电路来完成所需的电压。
在这部分电路我们用到了一个变压器,一个整流桥,一个滤波电路,一个稳压器完成为5V电压的电源。
2.4键盘的设计
为了完成购物自动售货机必须有购物键,本课题所要求的是五个按键,其中四个是商品选择键(热狗,饮料,汉堡,双层汉堡),剩下的一个按键为初始按键[3]。
关于输入按键的信号发生情况将在下文中的软件系统设计中阐述,这里就不多叙述。
2.5显示器设计
自动售货机需要一个显示灯,当购物结束后显示器显示找零钱数额。
对于显示器的显示数字情况,将在下文软件系统中的显示模块进行阐述。
3软件系统设计
软件系统分为总体思想与模块的分类。
3.1设计思想
3.1.1功能要求
1.该系统能完成对货物信息的存储、进程控制、钱币处理、余额计算和显示功能。
2.举例说明:
如果自动售货机能够销售4种商品:
热狗(1元),汉堡包(4元),双层汉堡包(8元),饮料(3元)数量无限。
自动售货机允许投入1元,2元,5元硬币:
当总币值等于顾客需要的商品单价时,机器送出需要的商品:
若总币值大于顾客需要的商品单价时,机器除提供所需商品外,并将余币退出;
若总币值小于顾客需要的商品单价时,机器退出顾客投入的硬币。
设机器内1元和2元的找零硬币无限。
3.每次投币的时间有限制,不得超过30秒,在时间到时,总币值不足顾客购买的商品单价时,自动售货机按不足钱数处理,退还全部硬币。
或者在设定时间内,总币值不足顾客购买的商品单价时,若需要取消交易则可按取消键,售货机按不足钱数处理,退还全部硬币。
4.当顾客完成一次购买后或按错按钮后,需要设置一个重新开始按钮,使整个系统恢复到初始状态。
5.顾客一次只能购买一种商品的一个,若需要更多商品,需要重复操作[4]。
3.1.2总体思想
自动售货机包括四个商品,依据四种商品分别设为四个按钮,A1,A3,A4,A8。
当顾客选择其中的一种商品时,售货机发送出一个信号按钮不再生效,用一个LED灯显示。
设置三个按钮:
a1,a2,a5来表示投入的硬币是1元、2元、5元。
当顾客投入的硬币大于或等于售价时将不再接受硬币,用一个LED灯显示。
当顾客确定某种商品且投入了足额的硬币,投币时限到时,投币窗口找零,用七段显示管显示找零数,同时送出商品,指示灯out亮[5]。
3.1.3控制状态的设计
此售货机分为三种状态:
初始状态,投币状态,找零状态。
1.初始状态:
当售货机通电后进入初始状态,顾客购买时,可根据选择xuan_rg,xuan_yl,xuan_hb,xuan_schb键购买商品,从而进入下一状态。
当顾客购买错误或不再购买时按下start重新进入初始状态。
2.投币状态:
在这个状态时xuan_rg,xuan_yl,xuan_hb,xuan_schb键失效。
投入钱(1元,2元,5元),当投入硬币等于或者超过商品价格时进入下一状态。
投币时间为30秒超过30秒,售货机拒绝接受钱币。
3.找零状态:
投币结束,售货机自动判别总钱数,若在时限到来之际,总钱数少于顾客所需商品的单价,则退出钱币,用LED显示退钱数。
若大于或等于商品数则通过控制系统找零,用LED显示找零数,送出商品[6]。
3.1.4设计流程图
系统设计流程图,如图3-1所示。
图3-1系统设计流程示意图
3.2模块分类
此售货机模块包括:
投币处理模块,商品选择模块,投币模块,分频模块,控制器模块,计时模块,LED灯显示模块,找零模块,出货模块,如图3-2所示。
图3-2模块示意图
3.2.1投币模块
自动售货机能够自动计算投入的钱币数目,需要提供一个寄存器来记录并保存投入的总币值。
此模块有六个输入信号以及两个输出信号:
qian1,qian2,qian5为不同数额钱币输入信号;
en1为主控模块所发出的信号,当en1信号为1的时候,投币模块开始工作;
reset为恢复初始信号,当reset信号为1的时候投币模块不进行工作;
en为给计时器的输出信号,当en为1的时候计时器开始工作;
bi为输出的钱币数目。
通过程序所得到的仿真图如下所示[7]。
1.当reset输入为0,输入为5元2元1元时,输出结果为7。
仿真结果如图3-3所示。
图3-3reset输入为0时的仿真结果
2.当reset输入为1时,输入5元,2元,1元,bi输出应为0。
仿真结果如图3-4所示。
图3-4reset输入为1时的仿真结果
3.2.2商品选择模块
自动售货机的商品选择模块,通过自动售货机上的四个选择按键完成商品选择,在接收到对应四个商品之一的一个选择信号时进行编译,将被选择的商品进行编码,输入到主控模块中,在主控模块中与所接受的钱币进行对与计算。
输入信号为a1,a2,a3,a8。
而xuan_rg,xuan_hb,xuan_yl,xuan_schb为四个输出信号,与出货模块连接。
reset与en2信号来自主控模块,当reset为1时模块进入初始状态,进行选择。
当en2为1时,商品可以进行选择,当en2为0时,四个商品选择键无效[8]。
商品选择模块如图3-5所示。
图3-5商品选择模块
通过程序所得仿真结果如下:
1.当reset输入为1,en2输入为0,a8输入为1时,d输出应当为0,仿真结果如图3-6所示。
图3-6reset输入为1,en2输入为0,a8输入为1时的仿真结果
2.当reset输入为0,en2输入为0,a8输入为1时,d输出为0,仿真结果如图3-7所示。
图3-7reset输入为0,en2输入为0,a8输入为1时的仿真结果
3.当reset输入为0,en2输入为1,a8输入为1时,d输出为8,xuan_schb输出为1,仿真结果如图3-8所示。
图3-8en2输出为2时的仿真结果
3.2.3分频模块
分频模块是用来将外来的时钟信号进行分频,由于硬件系统已经知道,选用的时钟信号是由外部的6MHZ的晶振提供的,通过分频模块进行分频以后将得到周期为1HZ的信号[9]。
由于仿真所需时间过长,本文选择100.0ns为一周期的信号,分频后为6.0us为一周期的信号,时钟输入信号为clk,输出信号为newclk,分频模块如图3-9所示。
图3-9分频模块
通过程序所得到的仿真结果如下:
当clk第15输出为上升沿时,newclk输出为1,仿真结果如图3-9所示。
图3-10newclk输出为1时的仿真结果
3.2.4计数模块
由于课题要求自动售货机控制系统有定时系统,并限定在30s内完成投币,30s之后投币无效,因此需要设定一个计数模块对投币时间进行限制。
en为接受信号,当投币开始时投币模块发出信号,计数模块开始工作,当计数到30时向控制模块发出t信号。
Clr为控制器发送给计数模块的一个信号,当clr为1时,计数器归零。
Clk为分频模块发送的时钟信号。
计数模块如图3-11所示。
图3-11计数模块
3.2.5出货模块
出货模块是自动售货机给出相关货物的信号,本课题要求货物为四个商品,因此出货模块有5个输入信号,xuan_rg,xuan_sb,xuan_yl,xuan_schb,为所购商品的输入信号,en为控制模块所给的信号当en=1时出货模块开始工作,然后对顾客所选择货物进行出货[10]。
出货模块有四个输出信号为所选择的货物的输出信号。
出货模块如图3.12所示。
图3-12出货模块
出货模块的仿真结果如下:
1.当输入信号en为1,xuan_rg信号为1时,chu_rg信号为1,仿真结果如图3-13所示。
图3-13chu_rg信号为1时的仿真结果
2.当输入信号en为0,xuan_rg信号为1时,chu_rg信号为0,仿真结果如图3-14所示。
图3-14chu_rg信号为0时的仿真结果
3.2.6显示模块
显示模块的作用是对购物结束后的所需找零数目进行显示。
找零显示模块的输入端接收来自控制模块的输入信号,输出端外接LED显示灯,由于找零的数目为范围为0至8,因此只需要一个LED显示灯,输出信号为a,b,c,d,e,f,g。
找零显示模块如图3-15所示。
图3-15显示模块
当输入信号di为2时,g输出为1,f输出为0,e输出为1,d输出为1,c输出为0,b输出为1,a输出为1,仿真结果如图3-16所示。
图3-16di输入为2时的仿真结果
3.2.7主控模块
主控模块为自动售货机控制系统的核心部分,在主控模块中将输入的钱币数目(b)与商品的价格(d)进行对比,然后进行找零并发出出货信号。
输入信号t为计时信号,当时间超过30s时,商品不再接受货币。
Clk为控制系统的时钟信号。
输出信号di,c分别为找零显示模块的输入信号与找零信号。
en为控制出货模块的信号,当en值为1时,确认出货模块可以输出商品。
Start为复位信号,当start值为1时,自动售货机回到初始状态。
Clr为计数模块的控制信号,当收货完成后,Clr输出为1,计数模块回到初始状态归零。
en1与en2分别为投币模块与商品选择模块的控制信号,当en1为0时,投币模块不工作,当en2为0时商品选择模块不工作。
主控模块如图3-17所示。
图3-17主控模块
主控模块的仿真结果如下:
1.当start输入为0,t输入为0,b输入为5,d输入为4时,c输出为1,clr输出为1,en输出为1,en1输出为1,reset输出为1,仿真结果如图3-18所示。
图3-18c输出为1,clr输出为1,en输出为1,en1输出为1,reset输出为1时的仿真结果。
2.当start输入为0,t输入为1时,b输入为5,当输入为4时(b>
=d),c输出为1,en输出为0,en1输出为0,clr输出为1,en2输出为0,仿真结果如图3-19所示。
图3-19c输出为1,en输出为0,en1输出为0,clr输出为1,en2输出为0时的仿真结果。
4结果分析与讨论
通过设计简单的自动售货机,详细了解了自动售货机的投币模块,商品选择模块,主控模块等模块的软件设计与实现主要功能的模块的仿真。
经过仿真与实践,整个系统的工作稳定可靠,具有较强的适应性,当需要增加商品时,此控制系统只需增加相对的输入信号,硬件原有的电路不应改变,因此在自动售货机行业可以得到广泛的应用。
不过缺点是只能完成相对比较简单的自动售货机功能,实现金额计算,发放商品,找零,退币等功能。
由于其中是商品存货无限,找零无限,因此不会出现找零钱币与商品存货的不足的情况。
解决办法是通过增加模块,与输入信号来解决。
仿真过程中遇到的问题主要有:
1、在仿真过程中由于原有时钟信号分频模块仿真时间过长,因此用频率相对较小的晶振进行代替仿真。
2、仿真过程中找零所得钱币数目不能达到预期效果,通过调整主控模块程序已得到解决。
参考文献
[1]袁亚恒,周伟.基于VHDL的自动售货机设计[J],武汉理工大学学报,武汉:
信息管理工程版,2007.3
[2]宋潇,李佩佩,韩莹莹.自动售货机控制设计[J],科技信息,机械与电子,2009.3
[3]谭卫泽,徐畅.面向FPGA器件的VHDL语言优化设计方法[J],南宁职业技术学院学报.2008.4
[4]陈志刚.VHDL语言在电路设计中的优化[J],电子测试.2008.9
[5]周润雅等.基于QuartusII的FPGA/CPLD数字系统设计实例[M],北京:
电子工业出版社,2007.5
[6]姜雪松,吴钰淳,王鹰.VHDL设计实例与仿真[M],北京:
机械工业出版社,2006.3
[7]徐光军,徐光辉.CPLD/FPGA的开发与应用[M],北京:
电子工业出版社,2002.10
[8]PETERR.WILSON.UNDERSTANDINGTHEFPGADESIGNFLOW,Electronicsworld,2008.1
10L.M.Wu;
W.B.Hu;
N.H.Lai;
G.T.WangTheReconfigurableEmbeddedNcSystemBasedOnFpga[M],KeyEngineeringMaterials.2009.1
[9]MarkD.Birnbaum.Essentialelectronicdesignautomation(EDA).ChinaMachinePress,2005.9
[10]RusdiansyahA,TsaoDB.Anintegratedmodeloftheperiodicdeliveryproblemsforvending-machinesupplychains[J].JournalofFoodEngineering,2005.7
致谢
本课题在选题及研究过程中得到朱永琴老师的亲切关怀和悉心指导下完成的。
她严肃的科学态度,严谨的治学精神,精益求精的工作作风,深深地感染和激励着我。
从课题的选择到项目的最终完成,朱老师都始终给予我细心的指导和不懈的支持。
在此谨向朱老师致以诚挚的谢意和崇高的敬意。
同时我要感谢同学们对我做毕业设计期间的帮助,由于他们的热情帮助促使我能在规定时间内完成我所做的课题,对于同学们的帮助我深怀感激之情。
附录1:
硬件原理图
附录2:
软件程序
投币模块主要程序如下:
libraryieee;
useieee.std_logic_1164.all;
entitytoubiis
port(a1,a2,a5,en1,clk,reset:
instd_logic;
bi:
outintegerrange0to15;
en:
outstd_logic);
endtoubi;
architectureaoftoubiis
signalstate:
integerrange0to1;
begin
process
variableqian:
integerrange0to15;
waituntilclk=‘1’andclk'
event;
ifreset=‘1’thenstate<
=0;
bi<
qian:
en<
=‘0’;
else
casestateis
when0=>
ifen1=‘1’thenifa1=‘1’thenstate<
=1;
qian:
=‘1’;
elsifa2=‘1’thenstate<
=2;
qian:
=2;
elsifa5=‘1’thenstate<
=5;
endif;
when1=>
ifen1=‘1’thenifa1=‘1’thenqian:
=qian+1;
=qian;
elsifa2=‘1’thenqian:
=qian+2;
elsifa5=‘1’thenqian:
=qian+5;
商选择模块主要程序如下:
USEieee.std_logic_1164.ALL;
ENTITYyimaIS
PORT
(a1,a3,a4,a8,en2,reset:
INSTD_LOGIC;
xuan_rg,xuan_yl,xuan_hb,xuan_schb:
OUTSTD_LOGIC;
d:
OUTintegerrange0to8);
ENDyima;
ARCHITECTUREaOFyimaIS
BEGIN
process(a1,a3,a4,a8)
ifreset=‘0'
then
ifa1=‘1'
anden2=‘1'
then
d<
xuan_rg<
=‘1'
;
xuan_yl<
=‘0'
xuan_hb<
xuan_schb<
elsifa3=‘1'
then
=3;
xuan_yl<
elsifa4=‘1'
=4;
xuan_hb<
elsifa8=‘1'
=8;
elsed<
=0;
='
0'
;
0’;
endif;
endprocess;
ENDa;
分频模块主要程序如下:
LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164.ALL;
ENTITYfenpiIS
PORT(CLK:
INSTD_LOGIC;
NEWCLK:
OUTSTD_LOGIC);
ENDfenpi;
ARCHITECTUREaOFfenpiIS
SIGNALQ:
INTEGERRANGE0TO14;
SIGNALDIVCLK:
STD_LOGIC;
PROCESS(CLK)
IFCLK'
EVENTANDCLK='
1'
THEN
IFQ<
14THENQ<
=Q+1;
ELSEDIVCLK<
=NOTDIVCLK;
Q<
ENDIF;
ENDPROCESS;
NEWCLK<
=DIVCLK;
ENDa;
计数模块主要程序如下:
libraryieee;
useieee.std_logic_1164.all;
useieee.std_logic_unsigned.all;
entityjishuis
port(clk,en,clr:
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 FPGA 自动 售货 毕业设计