基于FPGA的自动售货机Verilog代码Quartus仿真

名称:基于FPGA的自动售货机Verilog代码Quartus仿真(文末获取)

软件:Quartus

语言:Verilog

代码功能:

(1)待售物品价格1元、2元、3元、五元;

(2)只接受1元、5元、10元币值;

(3)机内存有1元零钱无限;

(4)投入钱币之前认为售货机为空闲状态;投入钱币后需要按下物品标签吐出商品;

(5)自动找零;

(6)完成全部流程:设计规范文档、模块设计、代码输入、功能仿真、约束与综合、布局布线、下载验证等

1. 工程文件

2. 程序文件

3. 程序编译

4. RTL图

状态图

5. Testebnch

6. 仿真图

部分代码展示:

//售货机
module auto_sell(
input clk_in,//50M
input coin_1_key,//投币1元
input coin_5_key,//投币5元
input coin_10_key,//投币10元
input price_1_key,//1元商品
input price_2_key,//2元商品
input price_3_key,//3元商品
input price_5_key,//5元商品
input confirm_key,//确认
output succeed_ledn,//购买成功指示灯
output [2:0] DLA,//数码管位选ABC:0~7
output [7:0] HEX//数码管段选
);
wire [7:0] input_money_BCD;//投币金额
wire [3:0] need_money_BCD;//价钱
wire [7:0] change_money_BCD;//找钱
wire coin_1_p;//投币1元
wire coin_5_p;//投币5元
wire coin_10_p;//投币10元
wire price_2_p;//2元商品
wire price_3_p;//3元商品
wire price_5_p;//5元商品
wire price_1_p;//1元商品
wire confirm_p;//确认 
//按键消抖模块
key_jitter i0_key_jitter(
. clkin(clk_in),     
. key_in(coin_1_key),//输入
. key_negedge(coin_1_p)//消抖后按键下降沿
);
//按键消抖模块
key_jitter i1_key_jitter(
. clkin(clk_in),     
. key_in(coin_5_key),//输入
. key_negedge(coin_5_p)//消抖后按键下降沿
);
//按键消抖模块
key_jitter i10_key_jitter(
. clkin(clk_in),     
. key_in(coin_10_key),//输入
. key_negedge(coin_10_p)//消抖后按键下降沿
);
//按键消抖模块
key_jitter i2_key_jitter(
. clkin(clk_in),     
. key_in(price_2_key),//输入
. key_negedge(price_2_p)//消抖后按键下降沿
);
//按键消抖模块
key_jitter i3_key_jitter(
. clkin(clk_in),     
. key_in(price_3_key),//输入
. key_negedge(price_3_p)//消抖后按键下降沿
);
//按键消抖模块
key_jitter i4_key_jitter(
. clkin(clk_in),     
. key_in(price_5_key),//输入
. key_negedge(price_5_p)//消抖后按键下降沿
);
//按键消抖模块
key_jitter i5_key_jitter(
. clkin(clk_in),     
. key_in(price_1_key),//输入
. key_negedge(price_1_p)//消抖后按键下降沿
);
//按键消抖模块
key_jitter i6_key_jitter(
. clkin(clk_in),     
. key_in(confirm_key),//输入
. key_negedge(confirm_p)//消抖后按键下降沿
);
//状态控制模块
state_ctrl i_state_ctrl(
. clk_in(clk_in),//50M
. reset_n(1'b1),//复位
. coin_1_p(coin_1_p),//投币1元
. coin_5_p(coin_5_p),//投币5元
. coin_10_p(coin_10_p),//投币10元
. price_1_p(price_1_p),//1元商品
. price_2_p(price_2_p),//2元商品
. price_3_p(price_3_p),//3元商品
. price_5_p(price_5_p),//5元商品
. confirm_p(confirm_p),//确认
. succeed_ledn(succeed_ledn),//购买成功指示灯
. input_money_BCD(input_money_BCD),//投币金额
. need_money_BCD(need_money_BCD),//价钱
. change_money_BCD(change_money_BCD)//找钱
);
//数码管显示模块
display_num i_display_num(
. clk_in(clk_in),//50M
. input_money_BCD(input_money_BCD),//投币金额
. need_money_BCD(need_money_BCD),//价钱
. change_money_BCD(change_money_BCD),//找钱
. DLA(DLA),//数码管位选
. HEX(HEX)//数码管段选
);
endmodule
源代码

 扫描文章末尾的公众号二维码

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值