自动售货机控制模块-Verilog HDL

一、 问题描述

设计一个自动售货机控制模块,信息如下:

1. 售货机可提供8种可售商品,其中01号商品(代表第一种商品),价格为2元,02商品为4元,依次类推,08号商品售价为16元。

2. 售货机可接受1元,5元和10元的纸币收入。

3. 交易开始,用户需要先投入一定量的货币;在外部货币投入后,售货机累计输入货币总值;完成投币后,用户选择所有需要的商品;选择结束后,按下交易键;交易成功,售货机出货、找零,更新系统的存量货币信息和货物信息;交易不成功,退回用户投入货币。

4. 交易不成功可能可能因为投币不足;货物不足;零钱不足等原因造成;

5. 管理员可以通过外部设备访问和修改可售商品信息和存量货币信息。

 

二、 功能概括

自动售货机刚初始化时,需要管理员对其剩余钱数和商品数进行管理,之后用户可以进行商品购买。用户首先选择商品,无误后对商品进行确认,否则取消,在用户选择了某种商品后,售货机会对其存货进行确认,如果该商品已经售罄,则交易失败,回到空闲状态。该商品有存货时,售货机延时一段时间(30S)留给用户进行投币,用户只能投入1,5,10元的钱币,否则售货机会将其退出。用户在延时内投币后,售货机进行找零计算,如果售货机内现金不足找零,则退出所有钱币,售货机进入管理员管理状态,此时需要管理员管理现金。正确情况下,零钱足够多,则正常找零,如果找零数额为0直接出货,找零数不为0则是先找零再出货。出于实际情况的考虑,我认为自动售货机更适合使用先选择产品,再投入钱币的方式更为合理,因此在设计时使用的是先选择确认,再延时投币的流程。自动售货机的整个管理和售货流程如下图所示:

图1 自动售货机工作流程图

三、 接口定义

表1 系统接口与描述表

名称

I/O

描述

时钟与复位

clk

I

工作时钟

init

I

交易取消信号

rst

I

初始化与复位

管理员接口

manage

I

管理使能信号

manage_money

I

管理售货机内剩余钱数

load

I

外部串口接收(暂定)

left01

I

管理第01号商品数量

left02

I

管理第02号商品数量

left03

I

管理第03号商品数量

left04

I

管理第04号商品数量

left05

I

管理第05号商品数量

left06

I

管理第06号商品数量

left07

I

管理第07号商品数量

left08

I

管理第08号商品数量

用户接口

select

I

选择商品

confirm

I

确认购买商品

money_input

I

投入钱币

change

O

得到售货机找零

out

O

得到商品

 

四、 电路设计

系统设计:

根据题目要求,本项目关

评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值