赞
踩
名称:基于FPGA的苏打汽水自动售货机设计Verilog代码VIVADO仿真(文末获取)
软件:VIVADO
语言:Verilog
代码功能:
苏打汽水自动售货机。它们的价格为25美分。机器接收5美分、10美分和25美分硬币。当投入足够的硬币时,苏打汽水自动售货机就会分配汽水和找零钱。为这个苏打汽水自动售货机设计一个有限状态机控制器。有限状态机的输入是 Nickel(5美分)、Dime(10美分)和 Quarter(25美分),表示硬币已经投入机器。假设在一个周期投一个硬币。输出是 Dispense、 Retumdime、 Returntwodime。当有限状态机达到25美分时,它将给出Dispense和相应的 Return输出,需要给出合适的找零。接着它准备开始接收硬币以便售卖下一瓶苏打汽水。
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
扫描文章末尾的公众号二维码
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。