基于FPGA的自动售货机控制器设计毕业论文.docx
《基于FPGA的自动售货机控制器设计毕业论文.docx》由会员分享,可在线阅读,更多相关《基于FPGA的自动售货机控制器设计毕业论文.docx(43页珍藏版)》请在冰豆网上搜索。
![基于FPGA的自动售货机控制器设计毕业论文.docx](https://file1.bdocx.com/fileroot1/2023-1/12/0ecc8581-0c17-4e39-ac98-c2247c2ab4b3/0ecc8581-0c17-4e39-ac98-c2247c2ab4b31.gif)
基于FPGA的自动售货机控制器设计毕业论文
大连海事大学
毕业论文
┊┊┊┊┊┊┊装┊┊┊┊┊┊┊订┊┊┊┊┊┊┊线┊┊┊┊┊┊┊
二○一四年六月
基于FPGA的自动售货机控制器设计
专业班级:
电子信息工程3班
姓名:
林慧
指导老师:
严飞
信息科学技术学院
摘要
随着科学技术的迅猛发展、人们生活水平的逐日提高,自动售货机作为自动化商业机械的代表被广泛用于公共场所自动售货,给人们的生活带来了极大的方便。
本文介绍的是基于FPGA的自动售货机控制器的软件设计,此自动售货机控制器包含八个大模块:
购物模块,定价模块,投币模块,比价模块,计时模块,复位模块,购物显示模块以及数码管显示模块。
投入钱币并通过键盘选择后再经比价处理模块,将对应的出货找零信息通过LED灯和数码管显示模块反映。
本设计借助于VHDL语言来编程实现八个模块的基本功能,在QuartusII软件中实现模块的设计、编译、综合、优化、仿真直至生成器件之后下载到FPGA目标芯片上。
在ZY11EDA13BE实验系统中完成自动售货机的功能实现,通过开关、键盘等完成购物请求、投币等操作,通过数码管及指示灯显示系统运行结果,从而可以更清晰地观察到自动售货机的运行情况。
关键词:
自动售货机控制器;EDA;FPGA;QuartusII;VHDL
ABSTRACT
Withtherapiddevelopmentofscienceandtechnologyaswellaspeople'slivingstandardsrisedaybyday.Asarepresentativeofcommercialmachineryautomationvending,thevendingmachinebusinessiswidelyusedinpublicplaces,hasboughtgreatconveniencetopeople'slives.
ThispaperdescribesthesoftwaredesignandhardwaredesignbasedonFPGAvendingmachinecontroller,thevendingmachinecontrollermoduleconsistsmainlyofeightmodules:
shoppingmodule,pricemodule,coinmodule,timingmodule,pricecomparisonmodule,resetmodule,shoppingdisplaymoduleanddigitaldisplaymodule.Afterparityprocessingmoduleforselectedcommoditypricesandtheamountofinvestmentcomparison,thecorrespondingchangeinformationdeliverythroughLEDlightsandthedigitaldisplaymoduledisplay.
ThisdesignusingVHDLhardwaredescriptionlanguageprogrammingtodescribethebasicfunctionofeightmodules.PerformedontheQuartusIIsoftwareplatformfordesign,compilation,integration,optimization,simulationandultimatelytheresultingobjectfilesdownloadedtothetargetFPGAchip.CompletingtherealizationofthefunctionofthevendingmachineintheZY11EDA13BEexperimentalsystem.Coin,shoppingrequestthroughtheswitch,keyboardandtheotheroperations.Throughdigitaltubeandlightdisplaysystemrunningresult,whichcanbeobservedmoreclearlythevendingmachineoperation.
Keywords:
vendingmachinecontroller;EDA;FPGA;QuartusII;VHDL
基于FPGA的自动售货机控制器设计
第1章绪论
自动售货机的起源
公元前3纪元时,希腊科学家希罗为教堂发放圣水,设制了一个圣水壶。
任何人只要投入一枚5德拉克玛的硬币,壶嘴中便会吐出一定量的圣水。
当时的善男信女无不为这神壶如此灵验而目瞪口呆,认为是神灵在显现,向它的儿女收现钱。
希罗发明了这个神壶,实际上就是一架自动售货机。
日本诞生的第一台自动售货机是明治时期的发明家——表谷高七发明的,用来销售香烟等。
该自动售货机于1890年(明治23年)获得了专利,但未投入实际使用。
之后,表谷于1904年(明治37年)完成了"邮票明信片自动售货机",被递信(相当于现在的邮政省)采用。
该机器的外壳为木材并进行了装饰,是将邮票销售、明信片销售、投信邮筒三种功能一体化的颇具特色的设备。
自动售货机的现状与发展
随着现代社会生活节奏的不断加快,人们对现代化生活工具的依赖也日益增强,在日常生活工作、学习中,对效率的要求也愈来愈高,这也就是自动售货机等一系列的自动装置如今广泛应用的原因[1]。
20世纪80年代以来,自动售货机在美、日等发达国家得到了迅速的普及和发展。
在美国,运营商就多达10800家,并且具有与大饮料商、大食品商的合作经验[2]。
在日本,由于自动售货机无所不在,二十四小时供应,所以它很受特别忙碌的人的欢迎[3]。
在加拿大,自动售货机有相当一部分已不采用投币的方式,而是应用一种具有先进信息功能的纽扣式触摸技术。
在英国,国内的银行和信用机构还专门推出一种自动售货机卡。
自动售货机在西方发达国家及日韩等国已经发展成为一个相对成熟的零售业,而对于中国来说尚处于导入时期。
近些年,自动售货机在我国大中城市发展势头迅猛,其前景非常广阔[4]。
车站、码头、酒店宾馆、大学校园、街道等地方随处可见自动售货机。
据资料,广州市区内摆放的1500台囊括各种品牌的自动售货机还不足以满足地铁和公交车站的需求。
新开发出的无线自动售货机除了更方便售卖货品之外,还被视为一种传播广泛的广告媒介[1]。
随着我国零售业态的不断发展和2010年上海世博会的推动,我国无店铺销售业态的发展获得了更好的环境和契机。
特别是跨国企业的加入,进一步刺激和带动我国自动售货机产业的发展。
自动售货机的研究方向
自动售货机的机体内部结构已经相当完善,现在,自动售货机产业正在走向信息化并进一步实现合理化。
例如实行联机方式,通过电话线路将自动售货机内的库存信息及时地传送各营业点的电脑中,从而确保了商品的发送、补充以及商品选定的顺利进行。
并且,为防止地球暖化,自动售货机的开发致力于能源的节省,节能型清凉饮料自动售货机成为该行业的主流。
进入21世纪时,自动售货机也将进一步向节省资源和能源以及高功能化的方向发展。
自动售货机的最终发展目标是为人们生活带来最大限度的便利,因此这不光是实现其最基础的功能,更重要的是不能给工作生活带来任何不良影响[5]。
课题研究任务
本文设计的自动售货机采用VHDL语言在QuartusII软件平台上进行编程、编译、综合优化和仿真,最后将生成器件下载到FPGA目标芯片上,在ZY11EDA13BE实验系统中完成自动售货机控制系统的功能实现,通过开关、键盘等完成购物请求和货币投入,通过数码管及指示灯显示系统运行结果。
本章小结
本章主要介绍了自动售货机的发展历史,发展现状及研究方向,对自动售货机的历史由来、发展有基本了解。
简要说明了本次课题设计的研究任务,对之后设计有一定深度的了解。
第2章开发设计基础
EDA技术简介
EDA(ElectronicDesignAutomation)技术与计算机、集成电路、电子系统设计的发展密切相关,汇集了计算机科学领域的大多数最新研究成果,以高性能的计算机作为工作平台,开发出来的一整套电子设计系统软件。
对特定芯片进行适配编译,逻辑映射,编程下载等工作,最后形成集成电子系统或专用集成芯片[6]。
EDA技术使得设计者仅需使用硬件描述语言和EDA软件即只使用软件的方式便能完成对系统硬件功能的设计实现,这是电子设计技术史上的一个巨大进步[7]。
EDA技术具有以下四个特点:
(1)采用硬件描述语言进行设计,语言的标准化,更适合于描述规模大、功能复杂的数字系统。
(2)逻辑综合与优化,提高设计效率。
(3)开放性和标准化,有利于大规模、有组织的设计开发工作。
(4)更完备的库,使EDA工具有更强大的设计能力和更高的设计效率。
EDA技术与传统电子设计对比在产品设计理念,设计技术,系统硬件构成,软件架构和知识产权等方面更具优势,属于高层次的电子设计方法,因此EDA技术能得到更广泛的应用[8]。
FPGA简介
现场可编程门阵列(FieldProgrammableGateArrays,FPGA)是一种新型可编程使用的信号处理器件,经由使用者改变配置信息从而定义其功能。
相较于传统数字电路系统,FPGA具有可编程、高速和高可靠性等优点,过器件内部的可编程输入/输出端口和基本可编程逻辑单元,把电路扳机的设计嵌入至芯片中施行,优化电路性能,本质上增强了设计的灵活性和效率[9]。
基本的FPGA设计流程主要涵盖设计定义,逻辑综合,逻辑仿真验证,板级仿真验证与调试等步骤[10]。
随着微电子技术、EDA技术、以及应用系统需求的发展,FPGA正在逐渐成为数字系统开发的平台,并将在以下方面继续完善和提高:
(1)高集成度、大容量、低成本、低电压、低功耗。
(2)资源多样化。
(3)适用于片上系统:
处理器、高速串行I/O、DSP等。
(4)深亚微米工艺的使用。
目前基于90nm工艺的FPGA已经商用,正向65nm挺进。
(5)各种软硬IP库的发展和完善。
VHDL语言概述
1982年,超高速集成电路硬件描述语言——VHDL(Very-High-SpeedIntegratedCircuitHard-WareDescriptionLanguage)最初是由美国国防部提出的硬件描述语言。
VHDL在1987年底被国际电气电子工程师协会(TheInstituteofElectricalandElectronicsEngineers,IEEE)和美国国防部确定为标准硬件描述语言[11]。
VHDL语言通常含有以下三个部分:
库(Library),实体(Entity)定义区,结构体(Architecture)定义区[11]。
库(Library)声明区内存放了可供其他程序调用的经编译的数据,实体定义,构造体定义,程序包等资源。
实体(Entity)用来描述所设计芯片外观,有I/O端口和参数的定义,是首要设计单元。
相同的器件可以有不同的实现,但是只能对应一个实体[12]。
结构体(Architecture)描述所设计芯片的逻辑功能,不同描述方式仅体现在编写程序上,其结构体构造是完全相同的。
一个设计实体可能有多个结构体[11]。
2.3.1VHDL语言特点
VHDL语言进行数字逻辑电路的设计与传统电路设计方法相比具有如下的特征[11]。
(1)可移植性好。
对同一硬件电路的语言描述,对于不同模拟器、综合器或是工作平台也采用相同描述。
(2)硬件描述能力强大。
具有多层次的电路设计描述功能,同时支持惯性延迟和传输延迟,能准确建立硬件电路的模型。
(3)易于共享。
将预先设计好的模块可以放在库中,之后的设计便可以直接调用。
(4)功能强大,设计方式多样。
可用于门级、电路级甚至系统级的描述、仿真和设计,随时判断设计系统功能的可行性。
2.3.2VHDL的优势
(1)VHDL的行为描述能力更强,因而成为系统设计领域最佳的硬件描述语言。
(2)丰富的仿真语句和库函数,使其可对设计进行仿真模拟。
(3)具有相对独立性,设计者可不必懂硬件的结构,也不必管理最终设计实现的目标器件是什么。
(4)VHDL语句的行为描述能力和程序结构决定了它具有支持大规模设计的分解和已有设计的再利用功能。
QuartusII软件介绍
Altera的QuartusII可编程逻辑软件属于第四代PLD开发平台。
该平台支持一个工作组环境下的设计要求,其中包括支持基于Internet的协作设计。
Quartus平台与Cadence、ExemplarLogic、MentorGraphics、Synopsys和Synplicity等EDA供应商的开发工具相兼容。
改进了软件的LogicLock模块设计功能,增添了FastFit编译选项,推进了网络编辑性能,而且提升了调试能力。
QuartusII通过和DSPBuilder工具与Matlab/Simulink相结合,可以方便地实现各种DSP应用系统;支持Altera的片上可编程系统(SOPC)开发,集系统级设计、嵌入式软件开发、可编程逻辑设计于一体,是一种综合性的开发平台。
QuartusII原理图输入设计的步骤如下:
(1)建立工程项目(工程目录、名称和选择合适器件)
(2)编辑设计图形文件(放置元件、连线、设定输入输出管脚名称)
(3)编译设计图形文件(检查电路是否有错误)
(4)时序仿真设计文件(得到仿真波形验证设计结果)
(5)生成元件符号
硬件介绍
本实验设计硬件部分采用ZY11EDA13BE实验系统来实现,核心芯片是EPF1K30QC208-2。
实验主板布局图如图所示。
本次设计采用了实验系统中的核心芯片EPF1K30QC208-2、电源模块、数字可调信号源、开关按键模块、键盘模块、LED显示模块以及数码管显示模块。
图ZY11EDA13BE实验系统图
本章小结
本章主要对本课题研究的自动售货机设计过程中涉及的软硬件平台和工具进行介绍。
了解了EDA技术的作用、实现的功能特点,同时介绍了FPGA的主要功能和原理,EDA综合工具QuartusII软件及对编程需要使用到的VHDL语言进行了介绍,并对本设计所用的教学实验设备ZY11EDA13BE进行了简要介绍。
第3章自动售货机设计方案
自动售货机整体描述
3.1.1自动售货机功能要求
本次设计的基于FPGA的自动售货机在ZY11EDA13BE实验系统中完成功能验证,主要是使用4*4键盘模块来进行自动售货机的购物选择,使用LED指示灯来进行出货找零的信号显示,使用开关按键来进行模拟投币,使用数码管来进行购物选择、商品售价、投币金额、找零金额的显示,使用数字可调信号源来调节时钟信号和分频延时信号。
自动售货机的具体功能要求如下:
(1)共销售24种不同价位的商品。
(2)可以识别:
硬币、纸币,投入的硬币识别金额为1元,投入的纸币识别金额为1元,5元,10元,20元。
(3)投入的钱币总额数码管实时显示。
(4)每次只能购买一件商品。
(5)通过小键盘顾客可以选择商品的编号,例如选择24号商品,则需要在小键盘上先按下2,然后再按下4,最后按下确认键(A),进而实现商品的选择与购买。
(6)当投入的总金额小于顾客选择商品的售价时,自动售货机可以继续投币,当投入的总金额大于或者等于顾客选择的商品售价时,自动售货机锁定键盘和投币,出货,扣除商品售价,并且找零,找零金额在数码管上显示出来。
(7)在投币状态下13秒内没有任何操作,则自动进入结算状态,退回钱币。
在选择状态下35秒内没有任何操作,则自动回到初始状态,键盘和数码管清零。
(8)有两个LED显示灯,分别显示出货与找零两种状态。
3.1.2自动售货机系统总框图
图自动售货机系统总框图
本文所设计的自动售货机如图所示,共有8个模块,分别是购物模块,定价模块,投币模块,计时模块,比价模块,复位模块,购物显示模块,数码管显示模块。
其中复位模块主要对投币模块,购物模块,定价模块,比价模块进行重置清零,保证系统的稳定运行,所以该模块是整个系统必不可少的成分。
3.1.3自动售货机基本流程图
自动售货机系统基本流程图如图所示。
图自动售货机基本流程图
系统初始化后先进行自检,然后监测是否投入钱币。
当有钱币投入时,系统则自动累加投币的总额,并在数码管上显示。
当无钱币投入时,若有按键输入则进入商品选择状态。
如果没有选择商品,则13秒后自动退币。
如果选择了商品但是不在选择范围内,则购物模块清零,重新选择。
若选择的商品在选择范围内,系统则会调出卖家定价并显示,而后系统会把投币总额与所选择商品的单价进行比较,如果投币总额低于商品单价时,会给一定的再投币时间。
如果投币总额不低于商品单价时,则系统进入结算状态。
如果选择商品没有按下确认键则13秒后自动退币,如果已经选择了商品并按下确认键,则系统进行相应的出货找零。
本文所设计的自动售货机有8个模块,分别是购物模块,定价模块,投币模块,计时模块,比价模块,复位模块,购物显示模块,数码管显示模块。
下面分别介绍各个模块。
购物模块
购物模块是消费者使用键盘进行商品选择消费的模块。
通过4*4矩阵键盘输入选择商品号数,再按下确认键(A),即可实现商品的选择。
因为本设计能销售01—24号商品,所以选择两个数码管进行显示。
通常矩阵式键盘都是单片机控制,本模块提供的键盘模块完全用CPLD/FPGA控制,I/O分布原理图如图所示:
图I/O分布原理图
3.2.1购物模块整体描述
3.2.1.1购物模块基本流程图
购物模块基本流程图如图所示。
图购物模块基本流程图
3.2.1.2购物模块生成器件
图购物模块基本流程图
购物模块生成器件图如图所示。
输入信号:
(1)start1:
购物重置信号
(2)enin1:
购物使能信号
(3)clk1:
时钟信号(4)kbrow1:
4*4矩阵键盘4位列输入信号
(5)restart1:
购物复位信号
输出信号:
(1)shuju1:
购物8位二进制累加信号
(2)jen1:
购物计时触发信号
(3)scan1:
购物数码管扫描信号(4)kbcol1:
4*4矩阵键盘4位行输出信号
(5)seg71:
购物数码管显示信号
3.2.1.3购物模块总功能描述
购物重置信号有效时,该模块清零重置。
当购物重置信号无效时,购物模块监控购物信号的输入。
若购物使能信号无效,则自动锁定键盘,系统无法接受按键输入信号,此模块不工作。
当购物重置信号无效、购物使能信号有效,且有时间触发时,系统经由输出键盘行动态扫描信号获取按键的键值并输出键盘的行扫描信号。
当有按键按下时,扫描到所选的列信号,把列信号与状态信号进行比对,最终确定键盘的行扫描信号,确定按键的键值。
若检测到已按下确认按键(A),先判断按下键值是否符合设定,若检测值大于24,即超过设计的限定范围,该模块将输出“00111111”给购物数码管显示信号和相对应的购物数码管扫描信号,同时购物计时使能信号会输出给计时模块,此时购物数码管清零,顾客可以重新输入。
若检测值不大于24,则把键值编译成BCD码再经译码后输出给数码管,同时把对应的数码管扫描信号输出给数码管,将购物8位二进制累加信号输出给价格模块,把购物计时使能信号输出给计时模块。
如果没有按下确认按键(A),则只把键值编译成BCD码通过译码后输出给数码管,同时把相应的购物数码管扫描信号输出给数码管,不把键盘8位二进制累加信号输出给定价模块。
为了解决顾客在购物选择过程中可能会按下错误数字的问题,特别设定一个购物复位信号,当购物复位信号有效时,对应数码管清零,顾客可以重新选择。
另外,此模块内带有的按键消抖的功能可以提高键值键入的准确性。
3.2.1.4购物模块组成元件
购物模块是由扫描元件,编译元件,数据处理元件,购物数码管译码元件这四个元件组成。
接下来分块介绍各元件。
3.2.2扫描元件
3.2.2.1功能描述
扫描元件的作用是将输出相对应的4*4矩阵键盘4位行输出信号给4*4矩阵键盘。
3.2.2.2主要信号
输入信号:
(1)clk:
时钟信号
(2)kbrow:
4*4矩阵键盘4位列输入信号
输出信号:
(1)en:
使能信号
(2)state:
购物状态信号
(3)kbcol:
4*4矩阵键盘4位行输出信号
3.2.2.3仿真结果
图扫描元件波形仿真图
扫描元件波形仿真图如图所示。
当kbrow为“1000”(相当于按键按下不松开),en的输出信号为“0”,kbcol为“0001”,state为“00”。
仿真波形符合设计要求。
3.2.3编译元件
3.2.3.1功能描述
编译元件的作用是把4*4矩阵键盘4位列输入信号通过与4*4矩阵键盘4位行输出信号的对应编译成相应的4位二进制码。
3.2.3.2元件主要信号
输入信号:
(1)clk:
时钟信号
(2)brow:
4*4矩阵键盘4位列输入信号
(3)tate:
购物状态信号
输出信号:
at:
购物数码管显示信号
3.2.3.3仿真结果
图编译元件波形仿真图
编译元件波形仿真图如图所示。
kbrow为“0001”,state为“10”,即kbcol为“0100”,所以得到at为“01111111”,即等于7。
仿真波形符合设计要求。
3.2.4数据处理元件
3.2.4.1功能描述
数据处理元件的作用是先对按键进行消抖,而后接受编译元件的4位二进制码,进行二进制相加后得到购物8位二进制信号后逐位输出满足限定的4位BCD码数据,购物8位二进制信号及购物数码管扫描信号。
3.2.4.2元件主要信号
输入信号:
(1)clk:
时钟信号
(2)n:
使能信号
(3)enin:
购物使能信号(4)da:
4位二进制译码
(5)start:
购物重置信号
输出信号:
(1)data:
BCD码
(2)shuju:
购物8位二进制累加信号
(3)scan:
时扫描信号(4)jen:
购物计时触发信号
3.2.4.3仿真结果
图数据处理元件波形仿真图
数据处理元件波形仿真图如图所示。
da输入“0001”,进行移位数码管输出,data输出“0000”时,scan对应为“111”;data输出“0001”时,scan对应为“110”,因为clk设定的不精确,仿真存在一定误差。
由于存在消抖延时,所以在延时结束时,jen有效。
仿真波形基本符合程序设计要求。
3.2.5购物数码管译码元件
3.2.5.1功能描述
购物数码管译码元件的作用是把数据处理元件生成的4位BCD码编译成适合数码管显示的购物数码管显示信号,且输出相对应的购物数码管扫描信号。
本文所设计的自动售货机要求这两个数码管要能显示0—9这9个数字。
3.2.5.2元件主要信号
输入信号:
data:
BCD码
输出信号:
seg7:
数码管显示信号
3.2.5.3仿真结果
图购物数码管译码元件波形仿真图
购物数码管译码元件