名称:售货机基于ego1开发板的自动饮料机verilog代码vivado软件
软件:VIVADO
语言:Verilog
代码功能:
设计一个自动饮料机逻辑电路,
它的投币口只能投入一枚五角或一元硬币;
投入一元五角硬币后机器自动给出一杯饮料,投入两元硬币后再给出饮料的同时找回一枚五角硬币;
数码管显示投币金额、商品单价、找零金额;
出货时通过led灯指示。
本代码已在ego1开发板验证,开发板如下,其他开发板可以修改管脚适配:
代码下载:售货机基于ego1开发板的自动饮料机verilog代码vivado软件名称:售货机基于ego1开发板的自动饮料机verilog代码vivado软件(代码在文末下载)软件:VIVADO语言:Verilog代码功能:设计一个自动饮料机逻辑电路,它的投币口只能投入一枚五角或一元硬币;投入一元五角硬币后机器自动给出一杯饮料,投入两元硬币后再给出饮料的同时找回一枚五角硬币;数码管显示投币金额、商品单价、找零金额;出货时通过led灯指示。FPGA代码Verilog/VHDL代码http://www.hdlcode.com/index.php?m=home&c=View&a=index&aid=306
1. 工程文件
2. 程序文件
3. 程序编译
4. RTL图
5. 管脚分配
6. Testbench
7. 仿真图
整体仿真图
按键消抖模块
控制模块
显示模块
文章来源:https://www.toymoban.com/news/detail-800373.html
部分代码展示:文章来源地址https://www.toymoban.com/news/detail-800373.html
//售货状态控制模块 module state_control( input clk_in, input rst,//高电平有效 input throw_into_10_down_out,//1.0元 input throw_into_05_down_out,//0.5元 output outgo_done_15,//出货指示灯 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_4=4'd4;//等待 parameter state_5=4'd9;//结束 reg [3:0] state=4'd0; reg [7:0] total_throw_inmoney=8'd0;//投入总钱币 reg [7:0] total_need_money=8'd0;//选中商品价钱 reg [7:0] total_refund_money=8'd0;//找零金额 reg [7:0] accumulated_money=8'd0;//累计卖货额 assign total_throw_inmoney_out=total_throw_inmoney; assign total_need_money_out=total_need_money; assign total_refund_money_out=total_refund_money; assign total_accumulated_money=accumulated_money; ///控制模块:状态机,实现各个状态的转换// reg wait_second_time=1'd0; always@(posedge clk_in or posedge rst) if(rst) state<=state_0; else case(state) state_0://初始状态 state<=state_1; state_1://投钱 begin if(total_throw_inmoney>=total_need_money)//投币足够 state<=state_2;//找零 else state<=state_1;//继续投钱 end state_2://确认购买 state <=state_4; state_4://等待 state<=state_5; state_5://结束 state<=state_5; default:state<=state_0; endcase reg [7:0] univalence=8'd0;//单价 reg outgo_done=0; always@(posedge clk_in) begin case (state) state_0: //商品选择 begin univalence<=8'd15;//单价一元五角 total_need_money<=univalence;//单价 total_throw_inmoney<=8'd0; total_refund_money<=8'd0; outgo_done<=1'd0; end state_1: ///投币输入 begin if(throw_into_05_down_out ==1'd1)//投入0.5元 total_throw_inmoney<=total_throw_inmoney+8'd5; else if(throw_into_10_down_out ==1'd1)//投入1.0元 total_throw_inmoney<=total_throw_inmoney+8'd10; else total_throw_inmoney<=total_throw_inmoney; total_need_money<=total_need_money; total_refund_money<=total_refund_money; outgo_done<=1'd0; end state_2: //计算找零金额 begin if(total_throw_inmoney>total_need_money) //如果投入大于所需 begin total_refund_money<=total_throw_inmoney-total_need_money;//找零 end else if(total_throw_inmoney==total_need_money)//如果投入等于所需 begin total_refund_money<=8'd0; end else total_refund_money<=total_throw_inmoney;//退币 total_need_money<=total_need_money; total_throw_inmoney<=total_throw_inmoney; outgo_done<=1'd0;// end state_4,state_5: begin total_need_money<=total_need_money; total_throw_inmoney<=total_throw_inmoney; total_refund_money<=total_refund_money; outgo_done<=1'd1; end
到了这里,关于售货机基于ego1开发板的自动饮料机verilog代码vivado软件的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!