1、基于FPGA的自动售货机控制器设计毕业论文基于FPGA的自动售货机控制器设计毕业论文基于FPGA的自动售货机控制器设计第1章 绪论1.1自动售货机的起源公元前3纪元时,希腊科学家希罗为教堂发放圣水,设制了一个圣水壶。任何人只要投入一枚5德拉克玛的硬币,壶嘴中便会吐出一定量的圣水。当时的善男信女无不为这神壶如此灵验而目瞪口呆,认为是神灵在显现,向它的儿女收现钱。希罗发明了这个神壶,实际上就是一架自动售货机。日本诞生的第一台自动售货机是明治时期的发明家表谷高七发明的,用来销售香烟等。该自动售货机于1890年(明治23年)获得了专利,但未投入实际使用。之后,表谷于1904年(明治37年)完成了邮票明
2、信片自动售货机,被递信(相当于现在的邮政省)采用。该机器的外壳为木材并进行了装饰,是将邮票销售、明信片销售、投信邮筒三种功能一体化的颇具特色的设备。1.2自动售货机的现状与发展 随着现代社会生活节奏的不断加快,人们对现代化生活工具的依赖也日益增强,在日常生活工作、学习中,对效率的要求也愈来愈高,这也就是自动售货机等一系列的自动装置如今广泛应用的原因1。20世纪80年代以来,自动售货机在美、日等发达国家得到了迅速的普及和发展。在美国,运营商就多达10800家,并且具有与大饮料商、大食品商的合作经验2。在日本,由于自动售货机无所不在,二十四小时供应,所以它很受特别忙碌的人的欢迎3。在加拿大,自动售
3、货机有相当一部分已不采用投币的方式,而是应用一种具有先进信息功能的纽扣式触摸技术。在英国,国内的银行和信用机构还专门推出一种自动售货机卡。自动售货机在西方发达国家及日韩等国已经发展成为一个相对成熟的零售业,而对于中国来说尚处于导入时期。近些年,自动售货机在我国大中城市发展势头迅猛,其前景非常广阔4。车站、码头、酒店宾馆、大学校园、街道等地方随处可见自动售货机。据资料,广州市区内摆放的1500台囊括各种品牌的自动售货机还不足以满足地铁和公交车站的需求。新开发出的无线自动售货机除了更方便售卖货品之外,还被视为一种传播广泛的广告媒介1。随着我国零售业态的不断发展和2010年上海世博会的推动,我国无店
4、铺销售业态的发展获得了更好的环境和契机。特别是跨国企业的加入,进一步刺激和带动我国自动售货机产业的发展。1.3自动售货机的研究方向自动售货机的机体内部结构已经相当完善,现在,自动售货机产业正在走向信息化并进一步实现合理化。例如实行联机方式,通过电话线路将自动售货机内的库存信息及时地传送各营业点的电脑中,从而确保了商品的发送、补充以及商品选定的顺利进行。并且,为防止地球暖化,自动售货机的开发致力于能源的节省,节能型清凉饮料自动售货机成为该行业的主流。进入21世纪时,自动售货机也将进一步向节省资源和能源以及高功能化的方向发展。自动售货机的最终发展目标是为人们生活带来最大限度的便利,因此这不光是实现
5、其最基础的功能,更重要的是不能给工作生活带来任何不良影响5。1.4课题研究任务本文设计的自动售货机采用VHDL语言在Quartus II软件平台上进行编程、编译、综合优化和仿真,最后将生成器件下载到FPGA目标芯片上,在ZY11EDA13BE实验系统中完成自动售货机控制系统的功能实现,通过开关、键盘等完成购物请求和货币投入,通过数码管及指示灯显示系统运行结果。1.5 本章小结本章主要介绍了自动售货机的发展历史,发展现状及研究方向,对自动售货机的历史由来、发展有基本了解。简要说明了本次课题设计的研究任务,对之后设计有一定深度的了解。第2章 开发设计基础2.1 EDA技术简介EDA(Electro
6、nic Design Automation)技术与计算机、集成电路、电子系统设计的发展密切相关,汇集了计算机科学领域的大多数最新研究成果,以高性能的计算机作为工作平台,开发出来的一整套电子设计系统软件。对特定芯片进行适配编译,逻辑映射,编程下载等工作,最后形成集成电子系统或专用集成芯片6。EDA技术使得设计者仅需使用硬件描述语言和EDA软件即只使用软件的方式便能完成对系统硬件功能的设计实现,这是电子设计技术史上的一个巨大进步7。EDA技术具有以下四个特点:(1)采用硬件描述语言进行设计,语言的标准化,更适合于描述规模大、功能复杂的数字系统。(2)逻辑综合与优化,提高设计效率。(3)开放性和标准
7、化,有利于大规模、有组织的设计开发工作。(4)更完备的库,使EDA工具有更强大的设计能力和更高的设计效率。EDA技术与传统电子设计对比在产品设计理念,设计技术,系统硬件构成,软件架构和知识产权等方面更具优势,属于高层次的电子设计方法,因此EDA技术能得到更广泛的应用8。2.2 FPGA简介现场可编程门阵列(Field Programmable Gate Arrays,FPGA)是一种新型可编程使用的信号处理器件,经由使用者改变配置信息从而定义其功能。相较于传统数字电路系统,FPGA具有可编程、高速和高可靠性等优点,过器件内部的可编程输入/输出端口和基本可编程逻辑单元,把电路扳机的设计嵌入至芯片
8、中施行,优化电路性能,本质上增强了设计的灵活性和效率9。基本的FPGA设计流程主要涵盖设计定义,逻辑综合,逻辑仿真验证,板级仿真验证与调试等步骤10。随着微电子技术、EDA技术、以及应用系统需求的发展,FPGA正在逐渐成为数字系统开发的平台,并将在以下方面继续完善和提高:(1)高集成度、大容量、低成本、低电压、低功耗。(2)资源多样化。(3)适用于片上系统:处理器、高速串行I/O、DSP等。(4)深亚微米工艺的使用。目前基于90nm工艺的FPGA已经商用,正向65nm挺进。(5)各种软硬IP库的发展和完善。2.3 VHDL语言概述1982年,超高速集成电路硬件描述语言VHDL(Very-Hig
9、h-Speed Integrated Circuit Hard-Ware Description Language)最初是由美国国防部提出的硬件描述语言。VHDL在1987年底被国际电气电子工程师协会(The Institute of Electrical and Electronics Engineers, IEEE)和美国国防部确定为标准硬件描述语言11。VHDL语言通常含有以下三个部分:库(Library),实体(Entity)定义区,结构体(Architecture)定义区11。库(Library)声明区内存放了可供其他程序调用的经编译的数据,实体定义,构造体定义,程序包等资源。实体(
10、Entity)用来描述所设计芯片外观,有I/O端口和参数的定义,是首要设计单元。相同的器件可以有不同的实现,但是只能对应一个实体12。结构体(Architecture)描述所设计芯片的逻辑功能,不同描述方式仅体现在编写程序上,其结构体构造是完全相同的。一个设计实体可能有多个结构体11。2.3.1 VHDL语言特点VHDL语言进行数字逻辑电路的设计与传统电路设计方法相比具有如下的特征11。(1)可移植性好。对同一硬件电路的语言描述,对于不同模拟器、综合器或是工作平台也采用相同描述。(2)硬件描述能力强大。具有多层次的电路设计描述功能,同时支持惯性延迟和传输延迟,能准确建立硬件电路的模型。(3)易
11、于共享。将预先设计好的模块可以放在库中,之后的设计便可以直接调用。(4)功能强大,设计方式多样。可用于门级、电路级甚至系统级的描述、仿真和设计,随时判断设计系统功能的可行性。2.3.2 VHDL的优势(1)VHDL的行为描述能力更强,因而成为系统设计领域最佳的硬件描述语言。(2)丰富的仿真语句和库函数,使其可对设计进行仿真模拟。(3)具有相对独立性,设计者可不必懂硬件的结构,也不必管理最终设计实现的目标器件是什么。(4)VHDL语句的行为描述能力和程序结构决定了它具有支持大规模设计的分解和已有设计的再利用功能。2.4 Quartus II软件介绍Altera的Quartus II可编程逻辑软件
12、属于第四代PLD开发平台。该平台支持一个工作组环境下的设计要求,其中包括支持基于Internet的协作设计。Quartus平台与Cadence、ExemplarLogic、 MentorGraphics、Synopsys和Synplicity等EDA供应商的开发工具相兼容。改进了软件的LogicLock模块设计功能,增添了FastFit编译选项,推进了网络编辑性能,而且提升了调试能力。Quartus II 通过和DSP Builder工具与Matlab/Simulink相结合,可以方便地实现各种DSP应用系统;支持Altera的片上可编程系统(SOPC)开发,集系统级设计、嵌入式软件开发、可编
13、程逻辑设计于一体,是一种综合性的开发平台。Quartus II原理图输入设计的步骤如下:(1)建立工程项目(工程目录、名称和选择合适器件)(2)编辑设计图形文件(放置元件、连线、设定输入输出管脚名称)(3)编译设计图形文件(检查电路是否有错误)(4)时序仿真设计文件(得到仿真波形验证设计结果)(5)生成元件符号2.5 硬件介绍本实验设计硬件部分采用ZY11EDA13BE实验系统来实现,核心芯片是EPF1K30QC208-2。实验主板布局图如图2.1所示。本次设计采用了实验系统中的核心芯片EPF1K30QC208-2、电源模块、数字可调信号源、开关按键模块、键盘模块、LED显示模块以及数码管显示
14、模块。图2.1 ZY11EDA13BE实验系统图2.6 本章小结本章主要对本课题研究的自动售货机设计过程中涉及的软硬件平台和工具进行介绍。了解了EDA技术的作用、实现的功能特点,同时介绍了FPGA的主要功能和原理,EDA综合工具Quartus II软件及对编程需要使用到的VHDL语言进行了介绍,并对本设计所用的教学实验设备ZY11EDA13BE进行了简要介绍。第3章 自动售货机设计方案3.1 自动售货机整体描述3.1.1 自动售货机功能要求本次设计的基于FPGA的自动售货机在ZY11EDA13BE实验系统中完成功能验证,主要是使用4*4键盘模块来进行自动售货机的购物选择,使用LED指示灯来进行
15、出货找零的信号显示,使用开关按键来进行模拟投币,使用数码管来进行购物选择、商品售价、投币金额、找零金额的显示,使用数字可调信号源来调节时钟信号和分频延时信号。自动售货机的具体功能要求如下:(1)共销售24种不同价位的商品。(2)可以识别:硬币、纸币,投入的硬币识别金额为1元,投入的纸币识别金额为1元,5元,10元,20元。(3)投入的钱币总额数码管实时显示。(4)每次只能购买一件商品。(5)通过小键盘顾客可以选择商品的编号,例如选择24号商品,则需要在小键盘上先按下2,然后再按下4,最后按下确认键(A),进而实现商品的选择与购买。(6)当投入的总金额小于顾客选择商品的售价时,自动售货机可以继续
16、投币,当投入的总金额大于或者等于顾客选择的商品售价时,自动售货机锁定键盘和投币,出货,扣除商品售价,并且找零,找零金额在数码管上显示出来。(7)在投币状态下13秒内没有任何操作,则自动进入结算状态,退回钱币。在选择状态下35秒内没有任何操作,则自动回到初始状态,键盘和数码管清零。(8)有两个LED显示灯,分别显示出货与找零两种状态。3.1.2 自动售货机系统总框图数码管显示模块购物模块(扫描)(按键输入)(去抖)图3.1 自动售货机系统总框图本文所设计的自动售货机如图3.1所示,共有8个模块,分别是购物模块,定价模块,投币模块,计时模块,比价模块,复位模块,购物显示模块,数码管显示模块。其中复
17、位模块主要对投币模块,购物模块,定价模块,比价模块进行重置清零,保证系统的稳定运行,所以该模块是整个系统必不可少的成分。3.1.3 自动售货机基本流程图自动售货机系统基本流程图如图3.2所示。图3.2 自动售货机基本流程图系统初始化后先进行自检,然后监测是否投入钱币。当有钱币投入时,系统则自动累加投币的总额,并在数码管上显示。当无钱币投入时,若有按键输入则进入商品选择状态。如果没有选择商品,则13秒后自动退币。如果选择了商品但是不在选择范围内,则购物模块清零,重新选择。若选择的商品在选择范围内,系统则会调出卖家定价并显示,而后系统会把投币总额与所选择商品的单价进行比较,如果投币总额低于商品单价
18、时,会给一定的再投币时间。如果投币总额不低于商品单价时,则系统进入结算状态。如果选择商品没有按下确认键则13秒后自动退币,如果已经选择了商品并按下确认键,则系统进行相应的出货找零。本文所设计的自动售货机有8个模块,分别是购物模块,定价模块,投币模块,计时模块,比价模块,复位模块,购物显示模块,数码管显示模块。下面分别介绍各个模块。3.2 购物模块购物模块是消费者使用键盘进行商品选择消费的模块。通过4*4矩阵键盘输入选择商品号数,再按下确认键(A),即可实现商品的选择。因为本设计能销售0124号商品,所以选择两个数码管进行显示。通常矩阵式键盘都是单片机控制,本模块提供的键盘模块完全用CPLD/F
19、PGA控制,I/O分布原理图如图3.3所示:图3.3 I/O分布原理图3.2.1 购物模块整体描述3.2.1.1 购物模块基本流程图购物模块基本流程图如图3.4所示。图3.4 购物模块基本流程图3.2.1.2 购物模块生成器件图3.5 购物模块基本流程图购物模块生成器件图如图3.5所示。输入信号: (1)start1:购物重置信号 (2)enin1:购物使能信号(3)clk1:时钟信号 (4)kbrow1:4*4矩阵键盘4位列输入信号(5)restart1:购物复位信号输出信号:(1)shuju1:购物8位二进制累加信号 (2)jen1:购物计时触发信号(3)scan1:购物数码管扫描信号 (
20、4)kbcol1:4*4矩阵键盘4位行输出信号(5)seg71:购物数码管显示信号3.2.1.3 购物模块总功能描述购物重置信号有效时,该模块清零重置。当购物重置信号无效时,购物模块监控购物信号的输入。若购物使能信号无效,则自动锁定键盘,系统无法接受按键输入信号,此模块不工作。当购物重置信号无效、购物使能信号有效,且有时间触发时,系统经由输出键盘行动态扫描信号获取按键的键值并输出键盘的行扫描信号。当有按键按下时,扫描到所选的列信号,把列信号与状态信号进行比对,最终确定键盘的行扫描信号,确定按键的键值。若检测到已按下确认按键(A),先判断按下键值是否符合设定,若检测值大于24,即超过设计的限定范
21、围,该模块将输出“00111111”给购物数码管显示信号和相对应的购物数码管扫描信号,同时购物计时使能信号会输出给计时模块,此时购物数码管清零,顾客可以重新输入。若检测值不大于24,则把键值编译成BCD码再经译码后输出给数码管,同时把对应的数码管扫描信号输出给数码管,将购物8位二进制累加信号输出给价格模块,把购物计时使能信号输出给计时模块。如果没有按下确认按键(A),则只把键值编译成BCD码通过译码后输出给数码管,同时把相应的购物数码管扫描信号输出给数码管,不把键盘8位二进制累加信号输出给定价模块。为了解决顾客在购物选择过程中可能会按下错误数字的问题,特别设定一个购物复位信号,当购物复位信号有
22、效时,对应数码管清零,顾客可以重新选择。另外,此模块内带有的按键消抖的功能可以提高键值键入的准确性。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 仿真结果图3.6
23、扫描元件波形仿真图扫描元件波形仿真图如图3.6所示。当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 仿真结果图3.7 编译元件波形仿真图编译元件波形仿真图如图
24、4.4所示。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码 (
25、2)shuju:购物8位二进制累加信号(3)scan:时扫描信号 (4)jen:购物计时触发信号3.2.4.3 仿真结果图3.8 数据处理元件波形仿真图数据处理元件波形仿真图如图3.8所示。da输入“0001”,进行移位数码管输出, data输出“0000”时,scan对应为“111”; data输出“0001” 时,scan对应为“110”,因为clk设定的不精确,仿真存在一定误差。由于存在消抖延时,所以在延时结束时,jen有效。仿真波形基本符合程序设计要求。3.2.5 购物数码管译码元件3.2.5.1 功能描述购物数码管译码元件的作用是把数据处理元件生成的4位BCD码编译成适合数码管显示的
26、购物数码管显示信号,且输出相对应的购物数码管扫描信号。本文所设计的自动售货机要求这两个数码管要能显示09这9个数字。3.2.5.2 元件主要信号输入信号: data: BCD码输出信号: seg7:数码管显示信号3.2.5.3 仿真结果图3.9 购物数码管译码元件波形仿真图购物数码管译码元件波形仿真图如图3.9所示。data输入为“0000”时,购物数码管译码元件把该信号编译成seg7为“00111111”,在数码管上显示为“0”,仿真波形符合程序设计要求。3.3 定价模块定价模块是将商家事先给货物定价调出的模块。当顾客在键盘上输入符合限定范围内的商品号数时,购物模块将购物8位二进制累加信号输
27、出给定价模块。定价模块将对应的商品价格输出,并通过数码管显示。3.3.1 定价模块整体描述3.3.1.1 定价模块基本流程图定价模块基本流程图如图3.10所示。开始图3.10 定价模块基本流程图3.3.1.2 定价模块生成器件图3.11定价模块生成器件图定价模块生成器件图如图3.11所示。输入信号: (1)en1:价格使能信号 (2)start1:价格重置信号(3)xuanze1:选择商品信号 (4)clk1:时钟信号输出信号:(1)seg71:价格数码管显示信号 (2)scan1:价格数码管扫描信号(3)jiawei1:价格8位二进制信号 (4)ren1:价格计时触发信号3.3.1.3 定价
28、模块总功能描述当价格重置信号有效时,定价模块重置清零。当价格重置信号无效时,定价模块监控商品选择信号的输入。当价格使能信号无效时,商品信号无法被接收,此模块不工作。当价格重置信号无效且价格使能信号有效,并有时钟触发时,系统读取选择商品信号,并给其赋原先定价,即价格8位二进制信号输出给比价模块,价格计时触发信号输出给计时模块。同时将价格8位二进制信号进行BCD码的编译,先将价格8位二进制信号转换成十进制信号,而后对该十进制信号进行10的取模,得到该十进制信号的十位数。对十进制信号进行10的取余则能得到该十进制信号的个位数,最后把得到的十位数和个位数分别转换成4位二进制码,得到对应的BCD码后把价
29、格数码管扫描信号和价格数码管显示信号输出给购物显示模块。表3.1为本次设计设定的商品售价。卖家可通过改变程序代码改变定价。表3. 1 商品价格商品号D2零售价/元D0商品号f零售价/元商品号f零售价/元01010091517170201110061806030101101019013040111201220017051101311521115061211412022123071301512123130081411602824083.3.1.4 定价模块组成元件定价模块主要是由3个元件组成的,分别是定价元件,价格BCD译码元件,价格数码管译码元件。接下来分块介绍各元件。3.3.2 定价元件3.3
30、.2.1 功能描述定价元件的作用是把不同选择的8位二进制信号赋予具体数额的8位二进制信号,并把这些8位二进制信号传递给价格BCD译码元件。3.3.2.2 主要信号输入信号:(1)clk:时钟信号 (2)xuanze:选择商品信号输出信号: price:价格8位二进制信号3.3.2.3 仿真结果图3.12 定价元件波形仿真图定价元件波形仿真图如图3.12所示。当xuanze为“00000110”(即选择6号商品)且有时钟触发时,price为“00000010”(即2元),在数码管上显示为“02”。仿真波形符合程序设计要求。3.3.3 价格BCD译码元件3.3.3.1 功能描述价格赋值元件的作用是把定价元件传递来的具体数额的8位二进制金额信号传输给比价模块,同时编译其所对应的BCD码,并把该BCD码传递给价格数码管译码元件。3.3.3.2 主要信号输入信号:(1)en:使能信号 (2)clk:时钟信号(3)start:重置信号 (4)da:8位二进制信号输出信号:(1)jiawei:价格8位二进制信号 (2)scan:数码管扫描信号(3)data:BCD码3.3.3.3 仿真结果图3.13 价格BCD译码元件波形仿真图价格BCD译码元件波形仿真图如图3.13所示。da输入“00000010”,进行移位数码管输出, data输出“0000”时,scan对应
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1