1、摘 要本课题是基于 Verilog HDL 语言的小型自动售货机。采用 Verilog HDL 在ModelsimSE6.2B 软件平台进行编译和仿真。在此次设计中,主要采用有限状态机(FSM)的设计,在投币选货状态和找零状态在这两个状态间进行转移。从而实现货物的选择、货币运算、出货控制、余额显示以及找零等功能。该售货机系统能够识别两种硬币,两种纸币。有五种不同价格的商品可供选择,并且通过显示译码电路,可在 LED 显示器显示余额,同时具备找零、机器存有硬币不足 LED 亮起报警、缺货 LED 亮起报警等功能。现代的自动售货机有使用方便快捷,可以全天候 24 小时工作,占地少,成本低,维护简单
2、等优点,有着广阔的前景。采用 FPGA 方式用 Verilog HDL 硬件描述语言,设计简易的自动售货机,其编程简单,开发周期短,硬件运行速度快,开发成本低,稳定性高等优点。关键词:自动售货机; Verilog HDL; 有限状态机;Modelsim; ABSTRACTThis topic design a simple vending machine is based on the FPGA chip. EP2C35 chip, and DE2 development board for the hardware platform, the use of Verilog HDL to co
3、mpile and simulation in the Quartus software platform, and through the DE2 development achieve the basic functions of a Simple vending machine.board by to download code to the chip. In this design,it used of finite state machine (FSM) design, choice of goods state, shipment status and give change co
4、in state in the three inter-state transfer, in order to achieve the choice of goods, monetary operations, the cargo control, features such as display and give change. The vending machine system to identify three kinds of coins, there are five kinds of goods at different prices to choose from, and by
5、 showing decoding circuit, in DE2 onboard LED display shows the balance, both functions give change. Modern vending machines are convenient, it can work 24 hours a day, covers an area of small, low cost, simple maintenance, there are broad prospects. Manner with the use of FPGA hardware description
6、language Verilog HDL, design simple vending machine, the programming is simple, short development cycles, fast hardware, the development of low cost, high stability.Key words: vending machines; Verilog HDL; Finite state machine; FPGA; DE2 development board;目 录绪 论 1第 一 章 系 统 方 案 设计 31.1 人 机 交 换 界 面 设
7、计 31.2 系 统 方 案 设计 41 2.1 系 统 方 案 确定 5第 二 章 系 统 各 模 块 硬 件 设计 72.1 DE2 开 发 板 介绍 72.2 自 动 售 货 机 各 模 块 设计 82.2.1 自 动 售 货 机 主 体 设计 82.2.2 LED 显 示 设 计 方 案 92.2.3 货 币 输 入 信 号 设 计 方案 102.2.4 出 货 显 示 设 计 方案 11第 三 章 系 统 的 软 件 设计 123.1 EDA 工 具 软 件 介绍 133.2 软 件 设 计 总 方案 143.3 售 货 机 主 芯 片 程 序 设 计 方案 153.4 BCD-LE
8、D 七 段 数 码 显 示 译 码器 173.5 硬 币 输 入 信 号 程 序 设 计 方案 183.6 出 货 显 示 程 序 设 计 方案 193.7 自 动 售 货 机 各 部 分 组 合 连 接 设计 20第 四 章 调 试 及 仿真 214.1 用 Quartus 完 成 PFGA 设 计 步骤 214.2 自 动 售 货 机 波 形 仿 真 结果 214.2.1 自 动 售 货 机 波 形 仿真 214.2.2 输 入 信 号 处 理 程 序 波 形 仿真 234.2.3 BCD-LED 七 段 数 码 显 示 译 码 器 波 形 仿真 234.2.4 出 货 显 示 译 码 器
9、 波 形 仿真 244.2.5 自 动 售 货 机 主 芯 片 程 序 仿 真 波形 254.3 下 载 、 仿 真 及 测试 25结论 26致 谢 27参 考 文献 28附 录 1( 程 序 源 代 码 ) 29附 录 2( 整 体 设 计 原 理 图 ) 35绪 论自动售货机最早出现在二十世纪五、六十年代的西欧,英国是较早实行自动售货机售货的国家之一。1942 年,在食品销售中首先推广了自动售货的销售方式。1950 年,英国食品杂货行有 500 家采用自动售货机售货。1969 年,采用自动售货机售货的商家增加到 23000 家,销售的商品扩展到文化用品、唱片、香烟、食品等多个方面。进入 7
10、0 年代后,约有 40 多万家香烟、饮料店采用自动售货机。1980 年英国有 50 余万台自动售货机,年销售额达 8.81 亿英镑。70年代后,日本、美欧等发达国家和地区自动售货机迅猛的发展,短短 30 年,发达国家自动售货机产业已发展到相当大规模。自动售货机被广泛地布放于车站、油站、码头、机场、宾馆、写字楼、娱乐场所及大街小巷和公路旁,人们通过自动售货机可以买到食品、香烟、饮料、报纸、票、卡甚至鲜花和小宠物等物品。自动售货机实现了商品需求化、性能多样化的发展,又原来只能有限商品品种,转变为继百货公司、超级市场、便民店之后,以消费者与售货机“一对一”自动售货的无店铺销售业态。 目前自动售货机是
11、集声、光、机电一体化的高新智能化产品,在我国也开始得到应用。在中国人们可以看到现代化的自动售货机摆放在一些大商场门口、繁华街道两旁、公园入口处以及其它热闹的场所。自动售货机的新奇、文明、高档、昼夜服务、占地小、灵活方便深受许多地区市民的青睐,甚至出现许多排队购买的现象。专辑测算,中国的自动售货机在市场容量最保守算应该有四十七万台,一年的销售额可达三百五十亿元若按人均台数计算全年可达五百亿,自动售货机在日本达到平均每二三十人一台,在美国达到每四十人一台,在欧洲每六十人一台,由于中国经济与上述国家还有一定差距,按每五百人一台计算。因此,自动售货机在中国有着广阔的发展前景。 现在,自动售货机产业正在
12、走向信息化并进一步实现合理化。例如实行联机方式,通过电话线路将自动售货机内的库存信息及时地传送各营业点的电脑中,从而确保了商品的发送、补充以及商品选定的顺利进行。并且,为防止地球暖化,自动售货机的开发致力于能源的节省,节能型清凉饮料自动售货机成为该行业的主流。在夏季电力消费高峰时,这种机型的自动售货机即使在关掉冷却器的状况下也能保持低温,与以往的自动售货机相比,它能够节约 15的电力。进入 21 世纪时,自动售货机也将进一步向节省资源和能源以及高功能化的方向发展。自动售货机是商业自动化的常用设备,它不受时间、地点的限制,能节省人力、方便交易。一般的自动售货机由钱币装置、指示装置、贮藏售货装置等
13、组成。钱币装置是售货机的核心,其主要功能是确认投入钱币的真伪,分选钱币的种类,计算金额。如果投入的金额达到购买物品的数值即发出售货信号,并找出余钱。指示装置用以指示顾客所选商品的品种。贮藏售货装置保存商品,接收出售指示信号,把顾客选择的商品送至付货口。一般售货机的钱币装置由投币口、选别装置、确认钱币真伪的检查装置、计算金额的计算装置和找钱装置组成。70 年代以来,出现了采用微型计算机控制的各种新型自动售货机和利用信用卡代替钱币并与计算机连接的更大规模的无人售货系统,如无人自选商场、车站的自动售票和检票系统、银行的现金自动支付机等。近年来,随着电子系统设计自动化(EDA)和超大规模可编程逻辑器件
14、和快速发展,硬件描述语言(HDL)这一新型电子系统开发工具正在迅速普及,是计算机设计和编程人员和电子器件厂商都寻找的一种工具,是芯片设计人员和生产伙伴之间建立沟通和交换数据的桥梁。已经是从事 EDA 电子工程师必须掌握的工具。HDL 使得电路的编程和设计者能够自由表述电路的特征,它可以描述和仿真电子元件的特性,这些电子元件的规模可以从单个门电路直到一块完整的多层印刷的电路板。HDL 的主要操纵对象是高速集成电路和现场可编程门阵列(FPGA)。HDL 的仿真功能使设计者在产品投入大规模生产前可以分别测试各个元件及其之间的连接,用仿真的方式完成以前必须设计和建造好的样机才能进行的电子电路特性的说明
15、和调试,并可以仿真器上测试所设计的电路功能是否正确。从而在芯片和器件的复杂性不断以惊人的速度增长的同时降低系统开发的成本和时间。本课题中需要实现至少 3 种不同价格货物的买卖操作。要用 3 个拨动开关表示 3 种硬币,用 5 个键表示 5 种不同价格的商品。投入货币后用数码管显示钱数。买东西时,先按物品键,再投入硬币,若成交,用数码管显示物品输出。若输入余额大于所选物品的价格,退回多余的钱,若少于物品的价格,则退钱。在这次设计中,已实现上述功能,并且能够下载到 DE2 开发板上进行仿真。下面的论述中,第一章介绍系统的方案设计,包括人机交换界面的设计,系统方案设计和系统的方案的确定,还有系统方案
16、的总体设计原理图。第二章介绍系统各模块硬件设计,包括 DE2 开发板的介绍和各个硬件部分设计的介绍。包括自动售货机的主芯片、余额显示译码器、输入处理芯片和出货显示译码器,以及他们的设计原理图。第三章介绍软件系统设计,各个部分软件设计原理及过程。包括主程序,显示译码器程序,输入处理程序和显示译码程序以及他们的原理图。第四章介绍了编译调试过程以及各部分的调试波形,并对波形进行了分析。最后是结论、致谢、参考文献和附录。第一章 系统方案设计1.1 人机交换界面设计人 机 交 换 界 面 图 , 对 人 机 交 换 的 按 键 一 目 了 然 。 这 次 设 计 中 , 用 到DE2 开 发 板 作 为
17、 设 计 平 台 , 它 的 界 面 比 较 大 众 化 , 所 有 的 按 键 显 示 都 是 放 在一 起 , 但 有 了 这 个 界 面 图 结 合 下 面 的 介 绍 , 很 容 易 就 可 以 了 解 这 个 自 动 售货 机 的 操 作 步 骤 以 及 使 用 方 法 。YJ元显示 角显示 出货显示E D C B AWJIYIN上面是 5 种货物选择开关上面是货币输入和找零开关角找零元找零OverflowR 复位开关图 1.1 自 动 售 货 机 人 机 交 换 界 面 简 图首 先 , 确 定 可 以 对 5 种 不 同 种 类 的 货 物 进 行 自 动 售 货 ,价 格 分
18、别 为A=1.00,B=1.50,C=1.80,D=3.10,E=5.00。 当 A、 B、 C、 D、 E 五 种 货 物 输 出时 , 为 了 在 DE2 开 发 板 上 能 够 显 示 出 来 , 识 别 方 便 , 加 一 个 译 码 器 , 如 果货 物 A 出 货 时 , 通 过 译 码 器 , 在 LED 显 示 器 上 显 示 数 字 1。 同 理B、 C、 D、 E 分 别 显 示 2、 3、 4、 5。 其 次 , 自 动 售 货 机 选 择 可 以 接 受 一 元 、五 角 、 一 角 三 种 硬 币 (即 有 三 种 输 入 信 号 IY 代 表 投 入 一 元 , W
19、J 代 表 投 入五 角 , YJ 代 表 投 入 一 角 )。 这 三 种 货 币 的 输 入 在 DE2 开 发 板 上 分 别 用 三 个开 关 来 表 示 , 当 每 次 来 回 拨 动 一 次 开 关 , 就 代 表 投 一 次 硬 币 , 及 相 应 的面 额 的 硬 币 加 1。 用 2 个 4 位 7 段 LED(高 位 代 表 元 、 低 位 代 表 角 )显 示 投入 的 总 钱 数 , 最 大 输 入 金 额 是 9.90 元 。 如 果 大 于 该 金 额 输 出 信 号 为overflow, 代 表 最 后 投 入 的 硬 币 会 退 出 。 选 择 货 物 的 输
20、入 信 号IA,IB,IC,ID,IE 和 一 个 放 弃 信 号 IN,放 弃 信 号 是 将 余 额 找 出 来 。 输 出 信 号元 找 零 和 角 找 零 。 同 时 还 有 一 个 R 复 位 信 号 。 如 图 1.1 所 示 , 人 机 交 换 界面 图 简 图 。在 操 作 时 候 , 先 按 复 位 键 , 是 将 里 面 的 各 个 输 入 输 出 口 以 及 寄 存 器 全 部清 零 。 其 次 选 择 货 物 , 再 投 币 , 当 投 的 金 额 等 于 货 物 的 价 格 的 时 候 , 出 货 ,同 时 LED 显 示 器 上 上 面 的 金 额 清 零 。 当
21、大 于 货 物 的 价 格 时 候 , 出 货 同 时 ,显 示 剩 余 的 金 额 。 如 果 按 找 零 开 关 , 找 零 , LED 显 示 清 零 。 当 金 额 大 于 9.9元 时 , 把 最 后 一 次 投 币 退 出 来 。1.2 系 统 方 案 设 计要 实 现 自 动 售 货 机 的 功 能 , 如 果 只 靠 一 个 芯 片 一 个 程 序 是 很 难 完 成 系 统的 设 计 , 所 以 自 动 售 货 机 系 统 有 4 个 部 分 组 成 。自动售货机的主芯片。主要实现自动售货机的基本功能。它可以选择 5 种不同的货物,当选择货物后,进入投币状态,投入硬币后,系统
22、会自动记录下所所投入硬币的金额,并且将投入的硬币的余额以 BCD 码的形式输出,当金额大于 9.9 元的时候,系统会自动将最后一次投入的货币输出;输出信号为overflow。当上面的金额等于货物的价格的时候,系统会自动出货,五种货物与之相对应的有五个输出管脚,当出货时,高电平有效;当金额大于货物的价格时候,系统出货,并且进行找零,当金额小于货物的价格的时候,系统会等待着再次投币。如果有 IN 找零信号输入,直接进入找零状态。输入信号处理芯片。输入信号的时候,每次输入信号高电平的周期不能正好是一个 clk 脉冲信号的周期,所以要设计一个信号处理程序。在输入货币和找零信号的时候,无论产生高电平的时
23、间的多长,都会产生一个和 clk 周期相同的高电平。BCD-LED 七段数码显示译码器。自动售货机主芯片产生的是 BCD 码,BCD 码不方便的识别,所以要用这个芯片,来处理 BCD 码的信号,使之变成能够识别的数字信号。出货显示译码器。在出货的时候,由于采用 DE2 开发板,主频过高,达到50MHz,人的肉眼根本无法识别信号的变化,我们需要设计一个出货显示译码器,当出货物 A,B,C,D,E 的时候,在 LED 显示器上就相应的产生1、 2、 3、 4、 5 的数字,这样就可以轻松的看到是那种货物出来了。将这四个部分有机的组合起来,就可以实现自动售货机的功能,如图 1.2所示。图 1.2 系
24、统方案原理图1.2 1 系 统 方 案 确 定自 动 售 货 机 的 主 芯 片 程 序 主 要 采 用 有 限 状 态 机 ( FSM) , 在 选 择 货 物 状态 , 投 币 出 货 状 态 和 找 零 状 态 这 个 3 个 状 态 间 进 行 跳 转 , 来 实 现 自 动 售 货机 的 基 本 功 能 。 选 择 货 物 状 态 主 要 是 货 物 的 选 择 的 处 理 等 功 能 , 如 果 在 选 择货 物 之 前 投 硬 币 , 系 统 进 入 货 币 找 零 状 态 , 就 将 货 币 退 出 来 , 否 则 就 停 留在 这 个 状 态 。 如 果 先 选 择 货 物
25、, 系 统 会 自 动 进 入 投 币 出 货 的 状 态 , 否 则 停 留在 这 个 状 态 。 投 币 出 货 状 态 主 要 是 对 投 入 货 币 运 算 和 出 货 控 制 处 理 等 功 能 。如 果 余 额 大 于 9.9 元 的 时 候 , 系 统 会 把 最 后 一 次 投 入 的 硬 币 找 出 来 。 如 果余 额 大 于 所 选 货 物 的 价 格 , 系 统 会 自 动 出 货 并 且 进 入 找 零 状 态 , 把 剩 余 的 零钱 找 出 来 。 如 果 余 额 等 于 所 选 货 物 的 价 格 , 系 统 会 自 动 出 货 , 并 且 把 余 额 清零 。
26、 当 余 额 小 于 所 选 货 物 的 价 格 , 系 统 会 停 留 在 这 个 状 态 。 如 果 发 现 有 找 零信 号 输 入 的 时 候 , 系 统 进 入 找 零 状 态 。 找 零 状 态 主 要 是 对 零 钱 进 行 找 零 功 能 。当 每 次 clk 脉 冲 来 临 时 候 , 如 果 上 面 的 余 额 不 为 零 , 系 统 会 自 动 减 一 。 这样 反 复 进 行 , 直 到 上 面 的 余 额 为 零 。输 入 的 信 号 的 处 理 , 使 它 不 能 误 判 货 币 的 投 入 次 数 , 采 用 判 断 是 否 有 上升 沿 , 以 确 定 投 币 的 次 数 , 当 出 现 几 次 上 升 沿 , 就 代 表 几 次 投 币 , 这 样 来 防自动售货机主芯片1 元输入处理5 角输入处理1 角输入处理找零输入处理出货显示译码器元显示译码 器角显示译码 器选择货物 A选择货物 B选择货物 C选择货物 D选择货物 E 元找零角找零Overflow复位 R