基于VHDL的自动售货机的设计与实现
基于VHDL +FPGA 的自动售货机控制模块的设计与实现

基于VHDL +FPGA 的自动售货机控制模块的设计与实现EDA 技术是以计算机为工具完成数字系统的逻辑综合、布局布线和设计仿真等工作。
电路设计者只需要完成对系统功能的描述,就可以由计算机软件进行系统处理,最后得到设计结果,并且修改设计方案如同修改软件一样方便。
利用EDA 工具可以极大地提高设计效率。
利用硬件描述语言编程来表示逻辑器件及系统硬件的功能和行为,是EDA设计方法的一个重要特征。
VHDL(Very High Speed Integrated Circuit Hardware DescripTION Language,超高速集成电路硬件描述语言)是硬件描述语言的一种,对系统硬件的描述功能很强而语法又比较简单。
VHDL 具有强大的行为描述能力,设计者可以不懂硬件的结构,只需集中精力进行电子系统的设计和性能优化;具有方便的逻辑仿真与调试功能,在设计早期就能查验系统的功能,方便地比较各种方案的可行性及其优劣。
目前,VHDL 作为IEEE 的工业标准硬件描述语言,得到众多EDA 公司的支持,在电子工程领域已经成为事实上通用硬件描述语言。
本文采用VHDL 作为工具描述了自动售货机控制模块的逻辑控制电路,并在FPGA 上实现。
该自动售货机能够根据投入硬币额度,按预定的要求在投入硬币大于规定值时送出饮料并找零。
设计方案本文所设计的简易自动售货机可销售矿泉水,假设每瓶1.5 元。
设两个投币孔,分别接收1 元和5 角两种硬币,两个输出口,分别输出购买的商品和找零。
假设每次只能投入一枚1 元或5 角硬币,投入1 元5 角硬币后机器自动给出一瓶矿泉水;投入2 元硬币后,在给出一瓶矿泉水的同时找回一枚5 角的硬币。
基于VHDL的售货机

基于VHDL的自动售货机的设计姓名班级:学号:指导老师:摘要:1)EDA:EDA技术就是以计算机为工具,设计者在EDA软件平台上,用硬件描述语言VHDL完成设计文件,然后由计算机自动地完成逻辑编译、化简、分割、综合、优化、布局、布线和仿真,直至对于特定目标芯片的适配编译、逻辑映射和编程下载等工作。
EDA技术的出现,极大地提高了电路设计的效率和可操作性,减轻了设计者的劳动强度。
利用EDA工具,电子设计师可以从概念、算法、协议等开始设计电子系统,大量工作可以通过计算机完成,并可以将电子产品从电路设计、性能分析到设计出IC版图或PCB版图的整个过程的计算机上自动处理完成。
现在对EDA的概念或范畴用得很宽。
包括在机械、电子、通信、航空航天、化工、矿产、生物、医学、军事等各个领域,都有EDA的应用。
目前EDA技术已在各大公司、企事业单位和科研教学部门广泛使用。
2)售货机简介:一般的自动售货机由钱币装置、指示装置、贮藏售货装置等组成。
钱币装置是售货机的核心分选钱币的种类,计算金额。
如果投入的金额达到购买物品的数值即发出售货信号,并找出余钱。
指示装置用以指示顾客所选商品的品种。
3)现状及发展趋势:从自动售货机的发展趋势来看,它的出现是由于劳动密集型的产业构造向技术密集型社会转变的产物。
大量生产、大量消费以及消费模式和销售环境的变化,要求出现新的流通渠道;而相对的超市、百货购物中心等新的流通渠道的产生,人工费用也不断上升;再加上场地的局限性以及购物的便利性等这些因素的制约,无人自动售货机作为一种必须的机器便应运而生了。
从广义来讲投入硬币、纸币、信用卡等后便可以销售商品的机械,从狭义来讲就是自动销售商品的机械。
从供给的条件看,自动售货机可以充分补充人力资源的不足,适应消费环境和消费模式的变化,24小时无人售货的系统可以更省力,运营时需要的资本少、面积小,有吸引人们购买好奇心的自身性能,可以很好地解决人工费用上升的问题等各项优点。
基于VHDL语言自动售货机设计实验报告-绝对原创

自动售货机设计实验报告一设计题目:g) 自动售货机设计FPGA模块模拟自动售货机的工作过程,要求如下(1)售货机有两个进币孔,可以输入硬币和纸币,售货机有两个进币孔,一个是输入硬币,一个是输入纸币,硬币的识别范围是5角和1 元的硬币,纸币的识别范围是1 元、5 元,10 元,20元,50元,100元。
乘客可以连续多次投入钱币。
(2)顾客可以选择的商品种类有16种,价格分别为1-16元,顾客可以通过输入商品的编号来实现商品的选择。
即有一个小键盘(0-9按键)来完成,比如输入15时要先输入1,再输入5。
(3)顾客选择完商品后,可以选择需要的数量。
然后可以继续选择商品及其数量,每次可以选择最多三个商品。
然后显示出所需金额。
顾客此时可以投币,并且显示已经投币的总币值。
当投币值达到或超过所需币值后,售货机出货,并扣除所需金额,并找出多余金额。
在投币期间,顾客可以按取消键取消本次操作,钱币自动退出。
二程序代码:三程序实现功能:FPGA模块模拟自动售货机:(1)售货机有两个进币孔,分别输入硬币和纸币,硬币的识别范围是5角和1 元的硬币,纸币的识别范围是1 元、5 元,10 元,20元,50元,100元。
乘客可以连续多次投入钱币。
(2)顾客可以选择的商品种类有16种,价格分别为1-16元,顾客可以通过输入商品的编号来实现商品的选择。
(3)顾客选择完商品后,可以选择需要的数量。
然后可以继续选择商品及其数量,每次最多选择最种商品,每种商品最多购买三个。
然后显示出所需金额。
顾客此时可以投币,并且显示已经投币的总币值。
当投币值达到或超过所需币值后,售货机出货,并扣除所需金额,并找出多余金额。
在投币期间,顾客可以按取消键取消本次操作,钱币自动退出。
四程序功能模块分析:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_arith.all;use ieee.std_logic_unsigned.all;实体说明:entity sellor isport ( clk:in std_logic; --系统时钟sel,cancel,reset: in std_logic; --选择、取消、开始(用于进入初始状态)变量定义:coin: in std_logic_vector(1 downto 0); --5角硬币、1元硬币crash:in std_logic_vector(5 downto 0); --100元、50元、20元、10元、5元、一元纸币item: in std_logic_vector(3 downto 0); --16种商品quantity:in std_logic_vector(1 downto 0); --商品数量(一次最多购买3件)change_out :out std_logic_vector(10 downto 0); --找零item_out :out std_logic_vector(3 downto 0); --是否购买了商品(1表示有商品出来、0表示没有商品出来)change :out std_logic ); --是否有找零end sellor;结构体说明:architecture behave of sellor issignal price:std_logic_vector(7 downto 0);signal counter: std_logic_vector(10 downto 0); --币数计数器signal total_price:std_logic_vector(10 downto 0); --控制系统的时钟信号type state_type is (initial_state,item1_state,quantity_state,money_state,sell_state,change_state);signal state:state_type;signal temp:std_logic_vector(1 downto 0);signal quan:std_logic_vector(3 downto 0);begincom:process(reset,sel,clk)beginif (clk'event and clk='1')thenif reset='1' then state<=initial_state;temp<="00";quan<="0000";end if;case state iswhen initial_state=>item_out<="0000"; --出票口关闭change_out<="00000000000"; --找零口关闭total_price<="00000000000"; --票价总额记录清零counter<="00000000000";--投入钱币总额记录清零change<='0';state<=item1_state; 设定initial_state选择物品程序:when item1_state=>if temp<"11" thenelse state<=money_state;end if;when quantity_state=>if(cancel='1')then --按下“取消”按钮state<=initial_state;else 取消操作程序if quantity="00" thenitem_out<="0000";change<='0';change_out<="00000000000";state<=initial_state;else 当选择0个商品total_price<=total_price+price*quantity;temp<=temp+1;quan<=quan+quantity;if (sel='1') then state<=item1_state;elsestate<=money_state;end if;end if;end if;货币识别:when money_state=>if(cancel='1')then --按下“取消”按钮state<=initial_state;end if;case crash is --纸币识别end case;case coin is --硬币识别end case;if counter>=total_price thenstate<=sell_state;--系统进入出票状态end if;购物操作程序:when sell_state =>if(cancel='1')thenitem_out<="0000";change<='1';change_out<=counter; --按下“取消”按钮state<=initial_state;elseif counter>=total_price thenitem_out<=quan; --判断是否还有找零state<=change_state; --系统进入找零状态elseitem_out<="0000";state<=initial_state;end if;end if;when change_state=>if(cancel='1')thenitem_out<="0000";change<='1';change_out<=counter; --按下“取消”按钮state<=initial_state;elseif counter>total_price thenchange<='1';change_out<=counter-total_price;item_out<=quan;elsechange<='0';change_out<="00000000000";state<=initial_state;end if;end if;end case;end if;end process;end behave;五、仿真波形六、个人总结与感想:良好的沟通与分工是十分重要的,这对程序的实现和质量具有至关重要的作用。
自动售货机VHDL设计

型状态机设计, 设计。 例6.15: Moore型状态机设计,完成自动售货机 : 型状态机设计 完成自动售货机VHDL设计。 设计 要求:有两种硬币: 元和 元和5角 投入1元 角硬币输出货物 角硬币输出货物, 要求:有两种硬币:1元和 角,投入 元5角硬币输出货物,投入 2元硬币输出货物并找 角零钱。 元硬币输出货物并找5角零钱 元硬币输出货物并找 角零钱。 状态定义: 表示初态 表示初态, 表示投入 角硬币, 表示投入 表示投入5角硬币 表示投入1元硬 状态定义:S0表示初态,S1表示投入 角硬币,S2表示投入 元硬 表示投入1元 角硬币 角硬币, 表示投入 元硬币。 表示投入2元硬币 币,S3表示投入 元5角硬币,S4表示投入 元硬币。 表示投入 输入信号: 表示投入1元硬币 输入信号:state_input (0)表示投入 元硬币,state_input (1)表示 表示投入 元硬币, 表示 投入5角硬币 输入信号为1表示投入硬币 输入信号为0表示未 角硬币。 表示投入硬币, 投入 角硬币。输入信号为 表示投入硬币,输入信号为 表示未 投入硬币。 投入硬币。 输出信号: 表示输出货物, moore 输出信号:comb_outputs (0)表示输出货物, comb_outputs (1)表 表示输出货物 表 reset 示找5角零钱 输出信号为1表示输出货物或找钱 输入信号为0 角零钱。 表示输出货物或找钱, 示找 角零钱。输出信号为 表示输出货物或找钱,输入信号为 current state_inputs _state clk 表示不输出货物或不找钱。 表示不输出货物或不找钱。 state_inputs next_st 根据设计要求分析,得到状态转换图如图所示。状态S0、 、 根据设计要求分析,得到状态转换图如图所示。状态 、S1、
基于VHDL语言的地铁自动售票系统设计与实现

摘要本文主要介绍了利用VHDL设计语言和Altera公司的MAX+PLUS II软件开发平台, 来设计实现地铁自动售票系统的核心控制部分的功能:站点选择,票数选择,投币处理,余额计算,自动出票等功能。
在本设计中采用了有限状态机的设计方法,将整个售票系统的控制部分化分为五个状态: 选站状态,选票状态,投币状态,出票状态和余额找零状态。
最后通过对程序的调试以及相应部分功能的仿真,验证了整个系统的原理和本设计方案的正确性。
由于采用了有限状态机的设计方法,使得本系统运行可靠性高,非法状态易控制。
关键词: FPGA,CPLD, VHDL语言,MAX+PLUS II 软件,有限状态机, ,地铁自动售票系统目录第一章绪论 (1)1.1 电子器件的发展和现状 (1)1.2 设计方法的发展 (3)1.3 层次化的设计与VHDL的应用 (5)1.4 本课题的提出与意义 (8)1.5 本课题研究内容 (8)第二章 VHDL语言介绍 (10)2.1什么是VHDL (10)2.2 VHDL语言的特点 (10)2.3 VHDL的设计流程 (11)2.4 VHDL程序的基本结构 (13)第三章 MAX+PLUS II软件介绍 (14)3.1 MAX+PLUS II简介 (14)3.2Max+PlusⅡ开发系统的特点 (15)3.3 Max+PlusⅡ功能简介 (16)3.4 Max+plusⅡ设计过程 (20)第四章地铁售票系统的设计与实现 (23)4.1 课题要求 (23)4.2设计分析 (23)4.3状态机设计 (25)第五章结束语 (32)附录 (33)参考文献 (40)致谢 (41)第一章绪论1.1 电子器件的发展和现状电子技术的发展总是同电子器件的发展密切相关的,由于电子器件的不断更新换代,电子技术得到了飞速发展,当今信息技术被广泛应用在国民经济的方方面面。
多媒体技术的普及、高速宽带网络的建设、数字电视的出现以及与我们日常生活息息相关的各种家用电器,都离不开微处理器、存储器和一些采用行业标准的专用芯片。
2012EDA课设自动售货机

基于VHDL自动售货机的设计摘要基于FPGA的自动售货机的设计,主要完成的任务是使用VHDl语言,在MAX +PLUSSII上完成电路的设计,程序的编译,基本功能的完善、模拟整个自动售货机的工作过程。
电路的设计模块分为几个模块:主控模块、译码模块、顶层模块。
各个模块完成不同的任务,合在一起就构成了一个自动售货机。
在售货机的设计过程中,使用VHDL语言,根据各个模块的不同功能和它们之间的控制关系进行编写。
软件模块直接在MAX+PLUSSII上进行。
进入21世纪,随着人们对效率的追求,人工售货已不能不满足人们的需求。
对此,自动售货机的设计就用了很大的应用空间和市场。
基于FPGA的自动售货机设计,采用软件开发模块,开发成本底,而且功能设计上有很大的灵活度,需要在软件上进行简单的修该就能实现不同的功能要求,能够满足不同的环境要求。
关键字:自动售货机;FPGA;仿真;VHDL;MAX+PLUSSII目录第一章绪论 (4)第二章自动售货机的设计 (4)2.1 设计说明 (4)2.1.1 流程说明 (4)2.1.2各模块说明 (5)2.1.3各模块的连接 (6)2.2状态之间的转换 (6)第三章仿真时序图 (7)3.1主控模块的仿真 (7)谢辞 (10)参考文献 (11)附录 (11)第一章绪论随着科技的发展和社会的进步,自动化商业机械有了越来越广泛的的应用,自动售货机作为自动化商业机械的代表被广泛用于公共场所自动售货,给人们的生活带来了极大的方便。
特别在发达的国家,自动售货机已经十分普及,自动售货机可售出各种成型包装的小商品,各种袋装,盒装,软瓶装等小商品。
因其无需专人值守而可以每天24 小时售货,被称为“无人小超市”。
在我国,由于多种原因,自动售货机的市场推广缓慢,随着商品市场的不断繁荣,自动售货机和自动服务设施必将逐步得到广泛的应用。
本文设计研究自动售货机的主要功能模块,主要包括货币处理模块、余额计算模块、显示模块,延时和时控模块。
基于VHDL的自动售货机的设计和实现论文

《计算机组成原理》课程设计报告基于VHDL的自动售货机设计与实现课程设计任务书计算机与通信工程学院网络工程专业指导教师对学生在课程设计中的评价指导教师对课程设计的评定意见基于VHDL的自动售货机设计与实现摘要:本设计运用VHDL语言编写一个自动售货机的控制系统,该系统具有货物信息存储,进程控制,硬币处理,余额计算,显示等功能。
商品的种类、单价和数量在初始化时输入,然后存储。
可以识别的币种为硬币,五毛和一元的面额。
用户投入硬币,系统累计数量,然后对比物品的单价和数量,扣除价格,最后计算余额,可以找零。
设计没有考虑硬件的实现,只进行功能的相应仿真,性质为实验性质的课程设计。
关键词:VHDL、自动售货机、课程设计、MXAPLUSⅡ、系统仿真Abstract: This design use of VHDL language design a vending machine control system, the system have the functions to storagethe goods information, process control, coin handling, balance calculation, display and other functions. The type of goods, unit price and quantity in the initialization to be input, and then stored. Currency for the coins can be identified, fifty cents and one dollar denomination. User input coins, the system account sum, and then comparing the unit price and quantity of goods, net price, the final calculation of the balance, you can give change.Design did not consider the hardware implementation, only the corresponding functional simulation, experimental nature of the curriculum design.Keywords: VHDL, vending machines, curriculum design, MXAPLUS Ⅱ, system simulation目录1.引言 (7)1.1自动售货机系统概述 (7)1.2设计任务和主要容 (8)2.系统设计过程 (9)2.1自动售货机系统总体框图 (9)2.2系统功能模块 (9)2.3程序源代码 (11)3.系统仿真 (15)3.1系统仿真全图 (15)3.2系统分步仿真图 (16)4.总结 (20)参考文献 (21)1 引言随着现在生活节奏越来越快,自动售货机的出现大大方便了人们的日常生活。
自动售货机电路设计VHDL

郑州轻工业学院课程设计任务书题目自动售货机电路设计专业、班级电信2班学号 541101030217 姓名李磊主要内容、基本要求、主要参考资料等:查阅资料完成自动售货机的设计思路,利用硬件编程语言VHDL 或者Verilog-HDL来实现,要求能够识别100元、50元、10元、5元及其钢崩1元五种面值的设计,能够找零,设计中假设找零货贝充裕,货物的价格不允许出现0.5元的情况。
给出完成控制电路所需要的设计模块;给出硬件编程语言的实现,并进行仿真;给出下载电路的设计,设计为2种下载方法,其中一种必须为JTAG;同时设计者报告不允许雷同。
参考资料:1、潘松、黄继业《EDA技术及其应用》(第四版)科学出版社 20092、数字信号处理的教材完成期限:指导教师签名:课程负责人签名:摘要随着电子技术的发展,当今数字系统的设计正朝着速度快,容量大,体积小,重量轻的方向发展,推动该潮流迅猛发展的引擎就是日趋进步和完善的ASIC设计技术,AISC芯片具有价格低,体积小,可靠性高等优点,目前在电子产品中已有广泛的应用,VHDL是一种用来描述数字逻辑系统的“编程语言”,它通过对硬件行为的直接描述来实现对硬件的物理实现,代表了当今硬件设计的发展方向。
本文是在VHDL的基础上对自动售货机进行设计来实现其基本功能的,采用了Altera的开发软件Quarts II。
通过在该软件平台上进行数字电路设计和仿真的方法,阐述了VHDL(Very High Speed Integrated Circuit Hardware Description Language)超高速集成电路硬件描述语言的一些特点及语法结构,介绍了自动售货机的基本原理、系统组成和主要功能,并分析讨论了用VHDL语言开发自动售货机系统的设计流程。
本设计采用VHDL硬件描述语言编程的设计方法设计系统核心电路的硬件程序,在Quartus II软件平台上进行编译和仿真。
文章首先简述了自动售货机系统的意义和发展现状以及VHDL语言的特点,然后介绍了自动售货机的设计要求、设计思路,并给出了总体设计框图,通过分析设计写出VHDL程序源代码,将代码在Quartus II软件平台上进行编译仿真,波形基本符合设计要求。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
基于V H D L的自动售货机的设计与实现
This model paper was revised by LINDA on December 15, 2012.
自动售货机实验报告
一、设计任务
设计一个自动售货饮料机,设每瓶饮料元,投币口有两个,1元硬币(one)或5角硬币(half),每个时刻可以输入其中一种硬币,自动售货机有找零钱功能,oute为出货,outm为找零。
二、设计过程
1.设计思路:
状态定义:s0表示初态,s1表示投入5角,s2表示投入1元,s3表示投入1元5角,s4表示投入2元,s5表示投入2元5角,s6表示投入3元。
输入信号:state_outputs(0)表示输入货物,comb_outputs(1)表示找5角硬币,输入信号为1 表示投入硬币,输入信号为1表示未投入硬币。
输出信号:comb_outputs(0)表示输出货物,comb_outputs(1)表示找5角零钱,输出信号为1表示输出货物或找零,输入信号为0表示不输出货物或找零。
根据设计要求分析,得到状态转化图如下图所示,其中状态为s0、S1、S2、S3、S4、
S5、S6;输入为state_inputs(0,1);输出为comb_outouts(0,1);输入仅与状态有关,因此将输入写在状态圈内部。
2.设计步骤:
(1)创建工程。
打开QuartusII ,创建一个新的工程并命名。
根据实验室条件,选择的芯片为cyclone 系列中的EP1C6Q240C8芯片。
00
输入VHDL文本文件。
新建文本文件VHDL file。
输入程序并保存。
程序如下:library ieee;
use autosell is
port(clk,reset :in std_logic;
state_inputs:in std_logic_vector(0 to 1);
comb_outputs:out std_logic_vector(0 to 1));
end autosell;
architecture be of autosell is
type fsm_st is(s0,s1,s2,s3,s4,s5,s6);
signal current_state,next_state:fsm_st;
begin
reg:process(reset,clk)
begin
if reset='1'then current_state<=s0;
elsif rising_edge(clk)then
current_state<=next_state;
end if;
end process;
com:process(current_state,state_inputs)
begin
case current_state is
when s0=>comb_outputs<="00";
if
state_inputs="00" then next_state<=s0;
elsif state_inputs="01" then next_state<=s1;
elsif state_inputs="10" then next_state<=s2; end if;
when s1=>comb_outputs<="00";
if
state_inputs="00" then next_state<=s1;
elsif state_inputs="01" then next_state<=s2;
elsif state_inputs="10" then next_state<=s3;
end if;
when s2=>comb_outputs<="00";
if
state_inputs="00" then next_state<=s2;
elsif state_inputs="01" then next_state<=s3;
elsif state_inputs="10" then next_state<=s4; end if;
when s3=>comb_outputs<="00";
if
state_inputs="00" then next_state<=s3;
elsif state_inputs="01" then next_state<=s4;
elsif state_inputs="10" then next_state<=s5; end if;
when s4=>comb_outputs<="00";
if
state_inputs="00" then next_state<=s4;
elsif state_inputs="01" then next_state<=s5;
elsif state_inputs="10" then next_state<=s6;
end if;
when s5=>comb_outputs<="10";
if
state_inputs="00" then next_state<=s0;
elsif state_inputs="01" then next_state<=s1;
elsif state_inputs="10" then next_state<=s2;
end if;
when s6=>comb_outputs<="11";
if
state_inputs="00" then next_state<=s0;
elsif state_inputs="01" then next_state<=s1;
elsif state_inputs="10" then next_state<=s2; end if;
end case;
end process;
end be;
(2)编程序。
新建VHDL file。
输入程序并保存。
(3)编译程序,进行检验,纠错等。
(4)制作仿真波形,进行仿真,检查是否有错,功能是否能够实现。
(5)下载至芯片。
三、实验结论
仿真波形如下图所示:
四、实验体会
经过这次对自动饮料售货机系统的设计,让我对EDA设计有了更一步的认识,同时也对EDA这门课程有了更深入的了解。
这次设计让我了解了关于自动饮料售货机的原理与设计理念。
对Quartus Ⅱ软件的运用更加熟练。
在摸索该如何设计程序使之当然这个设计存在许多的不足,比如这个设计不能识别纸币,且只能卖一种饮料,数码显示时不能显示当前所投钱的总数而是只显示0、和1元,所以这个设计还需要进一步的修改与完善,在此设计的基础上我们可以加一个键盘让售货机卖更多种类的饮料。
另外,我们还更加充分的认识到,EDA这门课程在科学发展中的至关重要性。
查阅参考书的独立思考的能力以及培养非常重要,我们在设计电路时,遇到很多不理解的东西,有的我们通过查阅参考书弄明白,有的通过网络查到,但由于时间和资料有限我们更多的还是独立思考。
相互讨论共同研究也是很重要的,经常出现一些问
题,经过和同组同学讨论和资料的查询最终得到了解决。
锻炼了我们的团队合作精神及分工合作的能力。