FPGA平台下饮料自动贩卖机系统的设计与实现毕业论文
2020-04-04 10:52:51
摘 要
近年来,随着FPGA技术的发展成熟,FPGA技术的应用场景也变得越来越广泛。同时伴随着零售行业“新零售”概念的产生,能够24小时无人值守的自动贩卖机越来越受零售行业的青睐。此设计旨在探索将FPGA技术应用于自动售卖机的控制,并研发一款能应用于实际的基于FPGA平台的饮料自动售卖机控制系统。
本设计使用Basys3开发板作为承载自动售卖机控制系统的FPGA平台,运用Vivado集成开发环境、Visual Studio 2010集成开发环境等工具进行开发,实现了基于FPGA的饮料自动售卖机系统。在整体系统的设计中,将系统一分为二划分为软硬件两个大的模块。软硬件模块之间通过UART通信的方式进行数据互通,其中硬件模块实现了控制售货功能,软件模块实现了系统的配置与管理功能。使用UART通信的方式不仅解决了FPGA开发板自身存在掉电易失性的缺陷,同时让系统具有更大的可配置性,实用性得到大大的提升。本文将按照软件系统开发流程的进展,对实现基于FPGA的饮料自动售卖机系统过程中系统的分析、设计以及实现与测试工作进行详细的叙述。
关键字:FPGA;自动贩卖机;UART通信;
Abstract
In recent years, with the development of FPGA technology, the application scenario of FPGA technology is becoming more and more extensive. At the same time, with the emergence of the concept of "new retail" in the retail industry, the 24 hour unattended vending machine is increasingly favored by the retail industry. This design aims to explore the application of FPGA technology to the control of vending machines, and to develop a control system for the beverage vending machine based on the FPGA platform.
This design uses the Basys3 development board as the FPGA platform that carries the control system of the vending machine, uses the Vivado integrated development environment, the Visual Studio 2010 integrated development environment and other tools to develop, and realizes the beverage vending machine system based on FPGA. In the design of the whole system, the system is divided into two modules: hardware and software. The software and hardware modules intercommunicate with the UART communication, in which the hardware module realizes the sale function, and the software module realizes the configuration and management function of the system. The use of UART communication not only solves the defect of power-off volatility of the FPGA development board itself, but also allows the system to have greater configurability and practicality. In this paper, according to the development of software system development process, the system analysis, design, implementation and testing in the process of realizing FPGA based beverage vending machine system are described in detail.
Key Words:FPGA;vending machine; UART communication;
目 录
摘 要 I
Abstract II
第1章 绪论 1
1.1 研究背景 1
1.2 国内外研究现状 1
1.3 研究目的及意义 2
1.4 开发环境与平台 2
1.4.1 软件平台 2
1.4.2 硬件平台 3
1.5 论文结构 3
第2章 FPGA平台下饮料自动贩卖机系统的需求分析 4
2.1系统总体功能结构 4
2.2业务功能需求 5
2.2.1投币功能 5
2.2.2售货功能 6
2.2.3出货及找零功能 7
2.2.4后台配置与管理模块 8
2.2 系统非功能需求 9
2.3 可行性分析 10
第3章 FPGA平台下饮料自动贩卖机系统的系统设计 11
3.1 系统的整体设计方案 11
3.2 功能模块设计 11
3.2.1 投币功能 11
3.2.2 售货功能 12
3.2.3 出货及找零功能 14
3.2.4 后台配置与管理模块 15
3.3 通信设计 17
3.3.1 通信协议设计 17
3.3.2 异步串行通信电路设计 17
3.4 系统设计小结 18
第4章 FPGA平台下饮料自动贩卖机系统的实现与测试 20
4.1 模块实现 20
4.1.1 投币功能 20
4.1.2 售货功能 20
4.1.3 出货及找零功能 22
4.1.4 后台配置与管理模块 24
4.2 系统仿真与测试 24
4.2.1 购物功能测试 25
4.2.2 后台配置功能测试 27
第5章 总结与体会 28
参考文献 29
致 谢 30
第1章 绪论
1.1 研究背景
随着科学技术的发展,以计算机技术、网络技术、自动控制技术等为代表,迅猛发展的技术极大地推动了经济的发展,同时经济的发展也不断催生出新的技术。1985年xilinx推出真正意义上的第一颗FPGA(Field Programmable Gate Array,现场可编程门阵列)芯片XC2064标志了FPGA技术真正进入实际生产生活。这一技术一经发明,后续的发展速度之快,超出大多数人的想象。FPGA先天具备可编程灵活性高、开发周期短、并行计算可编程灵活性高的这些优点,这直接致使在多应用场合产生优异的表现,其在以国防、医疗、工业控制等为代表的行业内产生极大影响,而这些行业对其需求也成为其发展的源动力。如今随着人工智能、深度学习、区块链等新技术的出现,FPGA的硬件并发优势成为这些新技术青睐的支撑技术。将FPGA用于算法硬加速的学术探索逐步成为热门研究方向,AES、深度学习等算法在FPGA加速下也确实显现出更为优异的性能。
在技术发展的同时,技术也推动了经济的发展、行业的变革。在网络技术、控制技术等推动下,零售行业产生了新的发展趋势,“新零售”一改传统零售行业的旧面貌,以方便快捷,无人值守等优点迅速成长。其中以自动售卖机为例,因其24小时服务,无人值守、灵活布设等特点成为零售行业的新宠。
此研究旨在学习使用FPGA完成相对复杂的专用数字电路的设计,同时尝试应用FPGA并使用主从控制方式设计并实现自动售货机数字系统,实现自动售货控制功能。
1.2 国内外研究现状
自FPGA技术产生以来,其应用场景越来越广泛。从国防军事到工业控制,再从医疗设备控制到家庭电气设备的控制,越来越多的应用场景带动了FPGA在技术上的发展,同时勾起了越来越多的人的研究兴趣。在控制方面的研究成果数不胜数,例如将其应用全自动洗衣机的控制、应用于数字电源的控制、应用于步进电机的控制等等;但近几年也有人研究将其应用于算法加速等领域,例如有人使用FPGA对AES等加密、CNN等深度学习算法进行加速优化;此外也有人将其应用于数据采集与传输、网络控制等领域。虽然应用的领域多种多样,但其依赖的基础技术却是相差无几,多依赖诸如全双工UART、FIFO存储结构以及脉宽调制等。在数字电路设计中, FPGA发挥着越来越重要的作用。从简单的接口电路设计到复杂的状态机,甚至系统级芯片(SoC-System On Chip) ,FPGA所扮演的角色已经不容忽视[1]。
国外的Muhammad等人曾在论文中提出使用FPGA来实现一种两个硬币输入、四种货物输出的自动售卖机[2];国内范文萍等人也曾在文章中提出了基于FPGA相对完善的自动售卖机数字系统[3]。FPGA凭借其可编程灵活性高、开发周期短、并行计算可编程灵活性高等优点在各个领域表现出优越的性能,但真正将其应用于自助零售的案例却是稀少的。究其原因大致可分以下两点:1、成本较高,目前来讲FPGA应用成本总体上高于常规的单片机等控制芯片;2、在自动售卖应用场景中不要求高速、并行等FPGA具备的优点特性,普通的穿行控制技术能够满足其技术需求,在较高的成本促使下市场自然而然选择传统控制技术作为支撑。当前零售场景对FPGA技术的高成本表现出的消极情绪或许会随着FPGA成本降低,应用场景升级等变化而有所变化,因此探索FPGA在零售领域的应用是有必要的。虽然在一些文献中有将其应用于自助零售的想法,但其设计相对简单功能单一,无法满足实际需要。
1.3 研究目的及意义
自动售货机可以根据投入的货币进行自动售货,是交易中常用的一种智能的自动化设备,几乎不受时间、地点的限制,可以很好的节约人力资源、方便的进行交易[4]。将自动售卖机部署到人们需要消费并且人工售货不适宜部署的地方将大大方便人们的生活。将其零散地部署在景区能够为游人及时的提供其所需的饮料和食物;而将计生用品零售柜部署到小区、酒店等方便需要的人,同时又能避免消费者购买时的尴尬。在当前物联网技术备受追捧,“新零售行业”成为热点的大背景下,便利成为零售行业关注的重点。自动售卖机因为能够24小时提供服务,部署灵活等特性极大地提高了消费便利性,从而越来越受零售行业的青睐。本研究题目旨在从管理者和消费者双重角度研发设计基于FPGA的自助售货数字系统,以求尽可能满足实际需求。
1.4 开发环境与平台
为了更好完成本课题的研究并且更清晰地呈现研究的结果,这里我们将使用到一些由前人设计、生产的工具性平台,按照软硬件特性划分为软件平台与硬件平台两类。
1.4.1 软件平台
在课题研究过程中,所有的开发环境软件都依托于windows 10操作系统,所有的软件正常使用都依赖与windows 10操作系统的正常运行。在windows 10操作系统正常运行的基础啊上,这里需要用到一些主流的软件开发工具,主要有:
- Vivado Design Suite 2017.4开发环境套件:
Vivado设计套件,是FPGA厂商赛灵思公司发布的集成设计环境。包括高度集成的设计环境和新一代从系统到IC级的工具,这些均建立在共享的可扩展数据模型和通用调试环境基础上。这里我们将使用它和硬件描述语言verilog来开发所有的自动售货机所需要的逻辑电路以及逻辑电路的仿真测试、下载调试等工作[5]。
- Microsoft Visual Studio 2010开发环境与SQLite数据库:
为了完成后台配置系统的设计与开发,这里将使用到Microsoft Visual Studio 2010开发环境与SQLite轻型数据库。Microsoft Visual Studio 2010开发环境是微软公司推出的开发环境,这里我将使用它来作为后台管理配置程序的开发、调试等工作。SQLite轻型数据库是D.RichardHipp建立的公有领域项目。它的设计目标是嵌入式的,而且目前已经在很多嵌入式产品中使用了它,它占用资源非常的低,我将使用它来存储由于FPGA开发板掉电易失性导致必须存储在片外的数据,进而为整个系统的正常运行提供保障。
1.4.2 硬件平台
为了验证所设计的数字系统的正确性,这里我将使用Basys3开发板作为硬件验证工具,对所设计的逻辑电路进行验证。Basys3 是围绕着一个Xilinx Artix®-7 FPGA 芯片XC7A35T-1CPG236C 搭建的,它提供了完整、随时可以使用的硬件平台,并且它适合于从基本逻辑器件到复杂控制器件的各种主机电路。它除了拥有XC7A35T-1CPG236C芯片之外,还配备了大量的板载1/O设备,其中包括拨码开关、4位七段数码管、Pmod端口等。同时它还提供了1800Kbit RAM、5个独立的时钟管理单元、USB-UART转换桥等诸多设备。整个系统最终将以Basys3为载体,完成其所有功能的运行。
1.5 论文结构
论文共分为五章,主要内容分别如下。
第一章:绪论。首先介绍基于FPGA平台的自动售货机系统的研究背景与国内外研究现状,随后阐述了本研究的目的及意义,最后交代论文的整体结构;
第二章:FPGA平台下饮料自动贩卖机系统的需求分析。首先对系统设计进行整体需求描述后,然后从系统的功能角度和非功能角度进行需求分析,通过各对功能实现过程中所需要的子功能模块的用例描述来展示系统所要完成任务以及任务的处理方法。
第三章:FPGA平台下饮料自动贩卖机系统的系统设计。在需求分析的基础上对系统进行详细设计,设计系统各个系统功能模块与其子模块的实现流程以及与其他模块协作的控制信号。
第四章:系FPGA平台下饮料自动贩卖机系统的实现与测试。通过对各个功能模块及其子模块的电路原理图的介绍来描述其实现的方法。
第五章:总结与体会。总结本研究成果中的优点与不足,回顾、总结研发过程中所学习和使用到的知识。
第2章 FPGA平台下饮料自动贩卖机系统的需求分析
2.1系统总体功能结构
自动售卖机作为一种24小时无人值守的零售器械,其组成大体上可以分为机械系统与数字系统两部分。其中机械系统主要完成货物传送等机械动力功能,而数字系统主要完成售货控制等逻辑功能。本课题旨在研发自动售买机的数字系统,对于机械系统不在研究范围之内亦不做讨论。自动售卖机的数字系统是其“大脑”,它指挥机械系统完成购物。这里的指挥即是指控制,其中主要包括售货控制、出货控制、找零控制、投币控制等功能,同时自动售卖机的数字系统还应当具备交易过程中产生的最终数据的存储功能以及一些过程中产生的数据显示功能。由于此处选用的硬件支持环境不具备数据持久化的能力,故此将通过串口通信的方式将相关数据发送到PC端进行存储。此外,由于自动售卖机中货物随时可能发生变化,那么其数字系统还应当为其管理人员提供完善的管理与配置功能,其中涵盖且不限于补货、货物下架、取钱、补充零钱等功能,详细功能见图2.1。此处仅对本系统几个主要功能进行概述介绍:
- 投币功能:当售货控制对投币功能使能后,对于由机械系统输送到数字系统的投币信号能够正确计数,并将其转化为相应的币值提交给售货控制模块用于交易控制。
- 出货控制与找零控制功能:当售货模块通知开启售货或找零功能时,能够正确完成出货或找零工作并且在完成工作后通知售货模块。
- 售货功能:完成售货过程的控制,及时通知其他模块完成出货、找零等工作,并且对交易结果数据通过通信功能模块发送到PC端进行存储。
- 后台配置与管理功能:接收交易结果数据进行存储,并且提供管理员进行配置以及管理的功能,同时还应当对操作进行日志记录以便于管理员查看运行状态。
图2.1 系统的总体功能框图
2.2业务功能需求
2.2.1投币功能
- 投币模块用例描述:
简单描述 | 接受7种币值(50、20、10、5、1、0.5、0.1)的投币,分别对个币值个数计数并计算总币值。 |
前置条件 | 投币功能使能信号置位。 |
后置条件 | 当完成功能后有投币功能复位信号置位时恢复所有计数器到原始状态。 |
事件流 | |
基流 |
|
2.2.2售货功能
售货功能的实现主要由售货控制模块、内存读写控制模块以及通信模块三个子模块相互协调完成工作:
- 售货控制模块用例描述
简单描述 | 控制售货流程,确保售货过程流畅稳定 |
前置条件 | 系统由管理员完成了配置操作,可以正常运行 |
后置条件 | 售货结束后,流程控制回到原点等待再次启动 |
事件流 | |
基流 |
|
分支流 |
|
业务规则 |
|
- 内存读写控制模块用例描述:
简单描述 | 控制内存读写的安全性,保证读取、写入正确 |
前置条件 | 有内存读写请求到来 |
后置条件 | 当请求为读请求时输出相应地址寄存器中的数据 |
事件流 | |
基流 |
|
- 通信模块用例描述:
简单描述 | 产生或解析数据包,进行数据通信以完成配置及数据备份 |
后置条件 | 完成一次控制后,回到控制起点等待下次启动 |
事件流 | |
基流 |
|
分支流 |
|
2.2.3出货及找零功能
出货与找零功能的实现是由出货控制模块与找零控制模块分别控制相应的步进电机驱动模块开完成出货或找零功能的:
- 出货控制模块用例描述:
简单描述 | 依据控制信号控制出货步进电机转动与停止 |
前置条件 | 售货控制模块输出的出货使能信号置位 |
后置条件 | 完成出货后通知售货模块已经结束出货可以进行下步操作 |
事件流 | |
基流 |
|
分支流 |
|
- 找零控制模块用例描述:
简单描述 | 控制找零电机完成找零功能 |
前置条件 | 检测到找零使能信号置位 |
后置条件 | 完成出货后通知售货模块已经结束出货可以进行下步操作 |
事件流 | |
基流 |
|
分支流 |
|
- 步进电机驱动模块用例描述:
简单描述 | 控制步进电机转动与停止转动 |
前置条件 | 寄存器写入完成,启动使能信号置位。 |
事件流 | |
基流 |
|
2.2.4后台配置与管理模块
后台配置与管理功能是一套完整的服务系统,它包括了日志记录功能、配置与管理功能、管理员登录登出功能以及串口通信功能等诸多子功能。由于其不是本研究的核心所在,此处仅对其中重要的子功能加以分析与阐述。
- 配置与管理功能用例描述:
简单描述 | 对收到的数据包解包翻译并执行,对收到管理员的配置指令进行解释并打包 |
前置条件 | 收到数据包或有管理员触发配置操作 |
后置条件 | 按照解析好的指令操作数据库或将数据包送到消息队列发送 |
事件流 | |
基流 |
|
分支流 |
|
- 串口通信功能用例描述:
简单描述 | 打开串口进行读写 |
前置条件 | 串口已连接并可打开 |
后置条件 | 收到的数据存入数据包接收队列 |
事件流 | |
基流 |
|
分支流 |
|
- 日志记录功能用例描述:
简单描述 | 记录后台管理工具运行时需要记录的事件 |
前置条件 | 日志文件可以被正常创建或已存在 |
事件流 | |
基流 |
|
分支流 |
|
2.2 系统非功能需求
系统的非功能性需求一般指指依一些条件判断系统运作情形或其特性,而不是针对系统特定行为的需求。包括安全性、可靠性、互操作性、健壮性、易使用性、可维护性、可移植性、可重用性、可扩充性等。本系统的非功能性需求主要有以下几个:
- 安全性与可靠性:在系统运行过程中发生于经济相关的操作,所以系统要尽可能地保障操作是安全的、可靠的。
- 易实用性:在消费者或者管理员操作的过程中使用尽可能简单的操作方式来与系统进行交互。
2.3 可行性分析
经过调研与分析,基于FPGA平台的饮料自动贩卖机系统的设计与实现相关的可行性分析可以总结为以下两点:
- 经济可行性:从经济角度来说,本系统将使用到一些软硬件资源以及知识资源。其中硬件资源包括FPGA开发板、PC机、步进电机等,这些是自我拥有或可以从学校实验室借取的;软件资源包括软硬件开发工具以及PC机操作系统等,这些可以从网络获取或硬件资源自身携带;知识资源包括书籍、学术成果论文等,可以从网络或学校图书馆借取。综上所述,基于FPGA的饮料自动贩卖机系统的设计与实现在经济角度上是可行的。
- 技术可行性:从技术的角度来说,本系统的设计与实现将使用到verilog语言、C 语言、以及数字电路设计相关的知识、UART通信协议等技术。上述所提到的基本都在大学本科期间进行过基础学习或实践,虽然存在部分技术难点但不至于导致研发无法进行。故此,于FPGA的饮料自动贩卖机系统的设计与实现在技术角度上同样是可行的。
第3章 FPGA平台下饮料自动贩卖机系统的系统设计
3.1 系统的整体设计方案
FPGA平台下饮料自动贩卖机系统的系统设计按照功能实现过程中的软硬件特性分为硬件功能设计与软件功能设计两部分。其中硬件部分设计时将使用硬件描述语言Verilog在Vivado Design Suite 2017.4开发环境中来进行设计开发硬件数字电路[6],并将其通过仿真验证后搭载至Basys3开发板上来完成其应有的功能。软件部分将使用C 语言、SQLite数据库在Microsoft Visual Studio 2010开发环境中进行开发并调试,开发其包括对硬件配置与管理功能等在内的控制台应用程序。最后软硬件的交互工作由双方的通信模块配合协调完成,配置与管理系统通过发送配置或管理数据包到硬件通信控制模块,由硬件控制模块解析成指令对RAM进行读写操作,最后由通信控制器打包成反馈包回送给配置系统完成配置工作,系统的总体设计框图如下。
以上是毕业论文大纲或资料介绍,该课题完整毕业论文、开题报告、任务书、程序设计、图纸设计等资料请添加微信获取,微信号:bysjorg。
相关图片展示: