实例六 自动售饮料机

本文档详细介绍了如何使用FPGA设计一个自动售饮料机,包括sell模块设计、sell_test测试文件创建、sell_constrain约束文件制定以及VIVADO后端设计与开发板验证。设计中,当投入硬币总和达到2.5元时,售货机将释放饮料并可能返回找零。整个设计流程从模块设计到硬件实现,提供了详细的步骤和代码示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

实例六 自动售饮料机

3.2.1. 本章导读

了解自动售货机的工作流程以及各个工作状态,以及其testbench,最后在Robei可视化仿真软件经行功能实现和仿真验证。
设计原理
自动售货机的信号定义:clk:时钟输入;reset:系统复位信号;half_dollar:代表投入5角硬币;one_dollar:代表投入1元硬币;half_out:表示找零信号;dispense:表示机器售出一瓶饮料。
当reset=0时,售货机处于工作状态,此时连续往售货机中投硬币(可以是5角也可以是一元),投入最后一枚硬币时,如果之前投入的硬币总和为2.5元,则可以取走一瓶饮料,如果少于2.5元则继续投币,如果为3元则显示可以取出一瓶饮料,而且找零显示信号为高电平。
在这里插入图片描述

3.2.2. 设计流程

1. sell模块的设计
(1)新建一个模型命名为sell,类型为module,同时具备4个输入和2个输出,每个引脚的属性和名称参照下图3-2-1经行对应的修改。
在这里插入图片描述
(2)添加代码。点击模型下方的 Code添加代码。
代码:
parameter idle=0,half=1,one=2,one_half=3,two=4;
reg[2:0] D;
always @(posedge clk)
begin
if(rst)
begin
dispense=0;
half_out=0;
D=idle;
end
case(D)
idle:
if(half_dollar)
D=half;
else if(one_dollar)
D=one;
half:
if(half_dollar)
D=one;
else if(one_dollar)
D=one_half;
one:
if(half_dollar)
D=one_half;
else if(one_dollar)
D=two;
one_half:
if(half_dollar)
D=two;
else if(one_dollar)
begin
dispense=1;
D=idle;
end
two:
if(half_dollar)
begin
dispense=1;
D=idle;
end
else if(one_dollar)
begin
dispense=1;
half_out=1;
D=idle;
end
endcase
end

(3)保存模型到一个文件夹(文件夹路径不能有空格和中文)中,运行并检查有无错误。

2. sell_test测试文件设计

(1)新建一个具有4个输入2个输出的sell_test测试文件,记得将Module Type设置为 “testbench”࿰

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值