名称:无人售货机设计Verilog代码Quartus仿真(文末获取)
软件:Quartus
语言:Verilog
代码功能:
无人售货机
1、可以选择5元、10元、15元、20元的商品
2、可以投币1元、5元、10元、20元
3、购买过程中可以取消,退币
4、输出投入总钱币、商品价钱、找零金额
设计:设置4种商品,由4个开关进行选择,分别为5元、10元、15元、20元。
购买成功后用led指示,同时数码管显示投入总钱币,找零金额,选中商品价钱。具体信号对应具体功能如下图所示。
1. 工程文件
售货模块
购买成功led指示模块
下降沿检测模块
等待30s模块
数码管显示模块
2. 程序运行
3. 原理图
4. 管脚约束
5. 程序仿真
Testbench
仿真图
下图中,rst_button低电平复位,复位后,selection_of_10脉冲表示选中价钱为10的商品,可看见total_need_money_out信号变为10,然后throw_into_20_down脉冲表示投入20元,total_throw_inmoney_out信号变为20,然后confirm_button确认购买,低电平有效,显示找零total_refund_money_out=10。同时buy_succeed_led_10信号变为高电平,表示购买成功。
下图为仿真取消购买后,退全部输入金额。
部分代码展示:
//Vending_machine module Vending_machine( input clk_50M,//50M input rst_button,//复位 //开关 input Selection_of_05,//选5元商品 input Selection_of_10,//选10元商品 input Selection_of_15,//选15元商品 input Selection_of_20,//选20元商品 //开关 input throw_into_01_down,//投1元 input throw_into_01coin_down,//投1元硬币 input throw_into_05_down,//投5元 input throw_into_10_down,//投10元 input throw_into_20_down,//投20元 //按键 input confirm_button,//确认购买,低电平有效 input Give_change_button,//不买退钱,低电平有效 input time30s_change_button,//30s计时退钱 output [3:0] state_out, input wait_second_time, output [7:0] total_throw_inmoney_out,//投入总钱币 output [7:0] total_need_money_out,//选中商品价钱 output [7:0] total_refund_money_out//找零金额 ); parameter state_0=4'd0; parameter state_1=4'd1;//选择 parameter state_2=4'd2;// parameter state_3=4'd3;// parameter state_4=4'd4;//找零时间4秒 parameter state_5=4'd5;//找零20元 parameter state_6=4'd6;//找零15元 parameter state_7=4'd7;//找零10元 parameter state_8=4'd8;//找零5元 parameter state_9=4'd9;//结束
源代码
点击下方的公众号卡片获取