• 方案介绍
  • 附件下载
  • 相关推荐
申请入驻 产业图谱

基于FPGA的苏打汽水自动售货机设计Verilog代码VIVADO仿真

08/03 09:19
506
加入交流群
扫码加入
获取工程师必备礼包
参与热点资讯讨论

2-24060G21P3246.doc

共1个文件

名称:基于FPGA的苏打汽水自动售货机设计Verilog代码VIVADO仿真

软件:VIVADO

语言:Verilog

代码功能:

苏打汽水自动售货机。它们的价格为25美分。机器接收5美分、10美分和25美分硬币。当投入足够的硬币时,苏打汽水自动售货机就会分配汽水和找零钱。

为这个苏打汽水自动售货机设计一个有限状态机控制器。有限状态机的输入是 Nickel(5美分)、Dime(10美分)和 Quarter(25美分),表示硬币已经投入机器。

假设在一个周期投一个硬币。输出是 Dispense、 Retumdime、 Returntwodime。

当有限状态机达到25美分时,它将给出Dispense和相应的 Return输出,需要给出合适的找零。接着它准备开始接收硬币以便售卖下一瓶苏打汽水。

FPGA代码Verilog/VHDL代码资源下载:www.hdlcode.com

演示视频:

设计文档:

1. 工程文件

2. 程序文件

3. 程序编译

4. Testbench

5. 仿真图

部分代码展示:

//苏打水自动售货机,价钱25
module?autu_sell(
input?clk,//时钟
input?Nickel,//5美分
input?Dime,//10美分
input?Quartue,//25美分
output?reg?Dispense,//出货
output?reg?ReturnNickel,//找零5美分
output?reg?ReturnDime,//找零10美分
output?reg?ReturnTwoDime//找零20美分
);
reg?[2:0]?state=3'd0;
parameter?s_idle=3'd0;
parameter?s_add_5=3'd1;
parameter?s_add_10=3'd2;
parameter?s_add_25=3'd3;
parameter?s_charge=3'd4;
parameter?s_Dispense=3'd5;
reg?[5:0]?in_money=0;//总投币金额
always@(posedge?clk)
case(state)
s_idle:
if(in_money>=25)//投币大于等于25
state<=s_charge;//计算找零
else?if(Nickel)//5美分
state<=s_add_5;
else?if(Dime)//10美分
state<=s_add_10;
else?if(Quartue)//25美分
state<=s_add_25;
else
state<=s_idle;
s_add_5://+5美分
state<=s_idle;
s_add_10://+10美分
state<=s_idle;
s_add_25://+25美分
state<=s_idle;
s_charge://计算找零
state<=s_Dispense;
s_Dispense://出货
state<=s_idle;
default:;
endcase
//计算总输入金额
always@(posedge?clk)
case(state)
s_add_5://+5美分
in_money<=in_money+5;
s_add_10://+10美分
in_money<=in_money+10;
s_add_25://+25美分
in_money<=in_money+25;
s_Dispense:
????in_money<=0;
default:;
endcase

点击链接获取代码文件:http://www.hdlcode.com/index.php?m=home&c=View&a=index&aid=836

  • 2-24060G21P3246.doc
    下载

相关推荐