1、摘 要人类社会已进入到高度发达的信息化社会,信息社会的发展离不开电子产品的进步。现代电子产品在性能提高、复杂度增大的同时,价格却一直呈下降趋势,而且产品更新换代的步伐也越来越快,实现这种进步的主要原因就是生产制造技术和电子设计技术的发展。自动售货是 20 世纪 70 年代在日本、欧美发展起来的一种全新的消费方式,自动售货机又被称为 24 小时营业的微型自助超市,它的售货领域非常广泛,是发达国家商品零售的一种主要方式。本设计要实现自动售货机的基本功能,如投币处理、商品选择、购货撤销、异常退币、计算存货等功能。采用 VHDL 硬件描述语言编程的设计方法设计系统核心电路的硬件程序,与一般的软件开发不
2、同,VHDL 编程更需要熟悉一些底层的硬件知识,特别是数字逻辑电路的设计,因此 VHDL 编程的方法、思路都要更多的与硬件电路联系起来。完成系统各个功能模块的硬件程序设计后,在软件平台上进行编译和电路仿真,最后生成的目标文件下载到实验台内的 FPGA 芯片以实现该系统,并在实验台上对设计进行验证。关键字:自动售货机 ;VHDL 编程;编译;电路仿真- 1 -AbstractHuman society has entered into a highly developed information community, social development of information on el
3、ectronic products progress. the modern electronic products in the performance, the increased complexity of the same time, the price has been a downward trend, and the pace of product faster and faster, the realization of this progress is that of manufacturing technology and electronic design of tech
4、nology.The coin is in the 70s of 20th century in japan, and develop a new and vending machine is called open 24 hours in the cafeteria, it is very widespread area of sale in retail in the developed countries, is a major way. this is designed to enable automatic machines in the basic functionality, s
5、uch as a coin, choose and purchases of goods, money is retired, stock and functions. Complete system of the various functional modules of hardware, software design process in the compilation and circuit emulation, the target file download to the test stand in the chip to implement the system fpga, a
6、nd on the stage of design validation.Keywords: Vending machine;Vhdl programming;Compilation;Circuit simulation- 2 -目 录引言 .- 1 -1 EDA 技术简介 .- 2 -1.1 EDA 技术的发展概况 .- 2 -1.2 EDA 技术的基本特征 .- 2 -1.2.1“自顶向下”的设计方法 .- 2 -1.2.2 高层次设计 .- 3 -2 工作原理 .- 3 -2. 1 任务概述 .- 3 -2.2 系统设计 - 3 -2.3 系统组成方框图 .- 3 -2.4 工作过程 .
7、- 4 -3 设计方案 .- 4 -3.1 自动售货机 VHDL 程序 .- 4 -3.2 各功能部件系统仿真图 .- 8 -结 论 .- 11 -参考文献 .- 12 - 3 -引言自动售货机能够根据投入钱币自动收货的机器,是商业自动化的常用设备。不受时间、地点的限制,能节省人力物力。现代售货机的功能、结构根据商品的种类而异。货币装置时售货机的核心,其主要功能是确认投入币数及面值,计算余额,找兑余额。因此,自动售货机在商业,食品业越来越普及,更方便消费者购买自己所需的商品。使用方便、可靠、节省人力的自动售货机将在社会生活中成为一种趋势。新 浪 腾讯 QQ 空间 搜 狐 网 易 谷 歌凤 凰
8、网 新浪微博 新 华 网 人 民 网 中国移动 中国政府网人 人 网 开 心 网 天涯社区 汽车之家 4399 游戏 太平洋电脑东方财富 中华英才网 中 彩 网 赛 尔 号 智联招聘 携程旅行网CNTV 中国电信 58 同城 淘 宝 网 湖南卫视 大众点评网工商银行 凡客诚品 中关村在线 国美电器 易 车 网 去哪儿网京东商城 苏宁易购新 功 能刷 卡 购 物 功 能 :在网络环境支持情况下,具备多种电子支付功能,如信用卡、储值卡、手机卡等刷卡消费。多 种 货 币 识 别 功 能 :电控系统可以配合纸币、硬币识别器增加代金券功能,可以识别纸质和硬币类型的代金券。- 4 -数 据 下 载 功 能
9、 :应用 USB 技术,使用一个优盘,就能轻松下载售货机的运营信息,然后使用 PC 机对下载的数据进行处理,便于运营商掌握不同地区、不同机器、不同商品的售卖情况。无 线 网 络 运 营 管 理 功 能 :将自动售货机当前运营的数据,包括系统状态、系统故障、料道故障、缺货情况、销售数据通过安装在自动售货机上的 GPRS 模块无线传输到售货机网络服务器,运营人员可以在任何一台联网的电脑上掌握售货机的这些信息,实现自动售货机的大规模运营和网络化管理。 EDA 技术是以计算机为工具完成数字系统的逻辑综合、布局布线和设计仿真等工作。电路设计者只需要完成对系统功能的描述,就可以由计算机软件进行系统处理,最
10、后得到设计结果,并且修改设计方案如同修改软件一样方便。利用 EDA 工具可以极大地提高设计效率。利用硬件描述语言编程来表示逻辑器件及系统硬件的功能和行为,是 EDA 设计方法的一个重要特征。VHDL(Very High Speed Integrated Circuit Hardware Description Language,超高速集成电路硬件描述语言)是硬件描述语言的一种,对系统硬件的描述功能很强而语法又比较简单。VHDL 具有强大的行为描述能力,设计者可以不懂硬件的结构,只需集中精力进行电子系统的设计和性能优化;具有方便的逻辑仿真与调试功能,在设计早期就能查验系统的功能,方便地比较各种方
11、案的可行性及其优劣。目前,VHDL 作为 IEEE 的工业标准硬件描述语言,得到众多 EDA公司的支持,在电子工程领域已经成为事实上通用硬件描述语言。本文采用 VHDL 作为工具描述了自动售货机控制模块的逻辑控制电路,并在FPGA 上实现。该自动售货机能够根据投入硬币额度,按预定的要求在投入硬币大于规定值时送出饮料并找零。设计方案本文所设计的简易自动售货机可销售矿泉水,假设每瓶 1.5 元。设两个投币孔,分别接收 1 元和 5 角两种硬币,两个输出口,分别输出购买的商品和找零。假设每次只能投入一枚 1 元或 5 角硬币,投入 1 元 5 角硬币后机器自动给出一瓶矿泉水;投入 2 元硬币后,在给
12、出一瓶矿泉水的同时找回一枚 5 角的硬币。另外设置一复位按钮,当复位按钮按下时,自动售货机回到初始状态。开发软件选用功能强大的 Altera 公司的最新可编程逻辑器件开发工具 Quartus II 8.0,实现芯片选用 Altera 公司 FLEX10K 系列的 EPF10K10LC84-4;首先在计算- 5 -机上完成程序设计、编译及时序仿真,然后将经过验证的设计文件下载到选择的可编程逻辑器件中,并在电子设计自动化实验系统中进行硬件模拟和测试。状态机 VHDL 程序设计有限状态机 FSM(Finite State Machine)及其设计技术是实用数字系统设计中实现高效率、高可靠逻辑控制的重
13、要途径。传统的状态机设计方法需进行繁琐的状态分配、绘制状态表、简化次态方程等,而利用 VHDL 可以避免这些烦琐的过程,直接利用状态转换图进行状态机的描述。此外,与 VHDL 的其他描述方式相比,状态机的 VHDL 表述丰富多样,程序层次分明,结构清晰,易读易懂;在排错、修改和模块移植方面也有其独到的特点。状态机有摩尔(Moore)型和米立(Mealy)型两种。Moore 型状态机的输出信号只与当前状态有关;Mealy 型状态机的输出信号不仅与当前状态有关,还与输入信号有关。结合本文设计,由于输出仅与状态有关,选用了 Moore 型状态机设计自动售货机控制模块,状态转换图如图 1 所示。图 1
14、 自动售货机状态转换图1)状态定义:S0 表示初态,S1 表示投入 5 角硬币,S2 表示投入 1 元硬币,S3表示投入 1 元 5 角硬币,S4 表示投入 2 元硬币。2)输入信号:取投币信号为输入逻辑变量,用两位的矢量 state_inputs 表示。state_inputs(0)表示投入 1 元硬币,state_inputs(1)表示投入 5 角硬币。输入信号为 1 表示投入硬币,输入信号为 0 表示未投入硬币。3)输出信号:给出矿泉水和找零为两个输出变量,用两位的矢量comb_outputs 表示。comb_outputs(0)表示输出货物,comb_outputs(1)表示找5 角零
15、钱。输出信号为 1 表示输出货物或找零,输出信号为 0 表示不输出货物或不找零。EDA 技术是以计算机为工具完成数字系统的逻辑综合、布局布线和设计仿真等工作。电路设计者只需要完成对系统功能的描述,就可以由计算机软件进行系统处理,最后得到设计结果,并且修改设计方案如同修改软件一样方便。利用 EDA 工具可以极大地提高设计效率。利用硬件描述语言编程来表示逻辑器件及系统硬件的功能和行为,是 EDA 设计方法的一个重要特征。VHDL(Very High Speed Integrated Circuit Hardware Description Language,超高速集成电路硬件描述语言)是硬件描述语
16、言的一种,对系统硬件的描述功能很强而语法又比较简单。VHDL 具有强大的行为描述能力,设计者可以不懂硬件的结构,只需集中精力进行电子系统的设计和性能优化;具有方便的逻辑仿真与调试功能,在设计早期就能查验系统的功能,方便地比较各种方案- 6 -的可行性及其优劣。目前,VHDL 作为 IEEE 的工业标准硬件描述语言,得到众多 EDA公司的支持,在电子工程领域已经成为事实上通用硬件描述语言。本文采用 VHDL 作为工具描述了自动售货机控制模块的逻辑控制电路,并在FPGA 上实现。该自动售货机能够根据投入硬币额度,按预定的要求在投入硬币大于规定值时送出饮料并找零。设计方案本文所设计的简易自动售货机可
17、销售矿泉水,假设每瓶 1.5 元。设两个投币孔,分别接收 1 元和 5 角两种硬币,两个输出口,分别输出购买的商品和找零。假设每次只能投入一枚 1 元或 5 角硬币,投入 1 元 5 角硬币后机器自动给出一瓶矿泉水;投入 2 元硬币后,在给出一瓶矿泉水的同时找回一枚 5 角的硬币。另外设置一复位按钮,当复位按钮按下时,自动售货机回到初始状态。开发软件选用功能强大的 Altera 公司的最新可编程逻辑器件开发工具 Quartus II 8.0,实现芯片选用 Altera 公司 FLEX10K 系列的 EPF10K10LC84-4;首先在计算机上完成程序设计、编译及时序仿真,然后将经过验证的设计文
18、件下载到选择的可编程逻辑器件中,并在电子设计自动化实验系统中进行硬件模拟和测试。状态机 VHDL 程序设计有限状态机 FSM(Finite State Machine)及其设计技术是实用数字系统设计中实现高效率、高可靠逻辑控制的重要途径。传统的状态机设计方法需进行繁琐的状态分配、绘制状态表、简化次态方程等,而利用 VHDL 可以避免这些烦琐的过程,直接利用状态转换图进行状态机的描述。此外,与 VHDL 的其他描述方式相比,状态机的 VHDL 表述丰富多样,程序层次分明,结构清晰,易读易懂;在排错、修改和模块移植方面也有其独到的特点。状态机有摩尔(Moore)型和米立(Mealy)型两种。Moo
19、re 型状态机的输出信号只与当前状态有关;Mealy 型状态机的输出信号不仅与当前状态有关,还与输入信号有关。结合本文设计,由于输出仅与状态有关,选用了 Moore 型状态机设计自动售货机控制模块,状态转换图如图 1 所示。图 1 自动售货机状态转换图1)状态定义:S0 表示初态,S1 表示投入 5 角硬币,S2 表示投入 1 元硬币,S3表示投入 1 元 5 角硬币,S4 表示投入 2 元硬币。2)输入信号:取投币信号为输入逻辑变量,用两位的矢量 state_inputs 表示。state_inputs(0)表示投入 1 元硬币,state_inputs(1)表示投入 5 角硬币。输入信号为
20、 1 表示投入硬币,输入信号为 0 表示未投入硬币。- 7 -3)输出信号:给出矿泉水和找零为两个输出变量,用两位的矢量comb_outputs 表示。comb_outputs(0)表示输出货物,comb_outputs(1)表示找5 角零钱。输出信号为 1 表示输出货物或找零,输出信号为 0 表示不输出货物或不找零。根据图 1 所示的状态转换图,用 VHDL 中的 CASE_WHEN 结构和 IF_THEN_ELSE 语句实现控制功能,源程序如下:LIBRARY IEEE; -库和程序包的使用说明USE IEEE.STD_LOGIC_1164.ALL;ENTITY sellmachine I
21、S -实体定义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 sellmachine;ARCHITECTURE state OF sellmachine IS -结构体TYPE fsm_st IS (S0,S1,S2,S3,S4); -状态枚举类型定义SIGNAL current_state,next_state:fsm_st; -状态信号的定义BEGINreg:PROCESS(reset,clk) -时序进程B
22、EGINIF reset=1 THEN current_state=S0; -异步复位ELSIF rising_edge(clk) THENcurrent_state=next_state; -状态转换END IF;END PROCESS;corn:PROCESS(current_state,state_inputs) -组合进程- 8 -BEGINCASE current_state ISWHEN S0=comb_outputs=“00”; -现态 S0IF state_inputs=“00” THEN next_state=S0; -输入不同,次态不同ELSIF state_inputs=
23、“01” THEN next_state=S1;ELSIF state_inputs=“10” THEN next_state=S2;END IF;WHEN S1=comb_outputs=“00”; -现态 S1IF 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”; -现态 S2IF state_inputs=
24、“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=“10”; -现态 S3IF state_inputs=“00” THEN next_state=S0; -输入不同,次态不同ELSIF state_inputs=“01” THEN next_state=S1;ELSIF state_inputs=“10” THEN next_state=S2;EN
25、D IF;WHEN S4=comb_outputs=“11”; -现态 S4- 9 -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 state;编译、仿真及 FPGA 实现在 Altera 公司的可编程逻辑器件集成开发平台 Quartus II 8.0 下完成程序的编辑、编译并进行时序仿真。1)编译:编译是
26、 EDA 设计中的核心环节。软件将对设计输入文件进行逻辑化简、综合和优化, 适当地用一片或多片器件进行适配,最后产生编程用的编程文件。主要包括设计编译和检查、逻辑优化和综合、适配和分割、布局和布线、生成编程数据文件等过程。自动售货机控制模块 VHDL 文件编译报告如图 2 所示。图 2 编译报告报告中给出了进行编译的时间、采用的开发软件的版本、顶层设计实体名、选用器件的系列和型号、时序分析情况、占用资源情况及引脚使用情况等信息。2)时序仿真:编译后对系统和各模块进行时序仿真,分析其时序关系,估计设计的性能及检查和消除竞争冒险是非常有必要的。仿真前,先利用波形编辑器建立波形文件,仿真结果将会生成报告文件和输出信号波形,从中便可以观察到各个节点的信号变化。若发现错误,则返回设计输入中修改设计逻辑。自动售货机控制模块仿真波形如图 3 所示。图 3 时序仿真波形3) FPGA 实现:将编译阶段生成的编程数据文件通过 Quartus II 下载到芯片EPF10K10LC84-4 中,并在电子设计自动化实验系统中进行测试得到了正确的结果。