牛客网刷题VL15 自动贩售机2

描述

题目描述:

设计一个自动贩售机,输入货币有两种,为0.5/1元,饮料价格是1.5/2.5元,要求进行找零,找零只会支付0.5元。

ps:

1、投入的货币会自动经过边沿检测并输出一个在时钟上升沿到1,在下降沿到0的脉冲信号

2、此题忽略出饮料后才能切换饮料的问题

注意rst为低电平复位

信号示意图:

d1 0.5

d2 1

sel 选择饮料

out1 饮料1

out2 饮料2

out3 零钱

波形示意图:

输入描述:

输入信号 clk rst d1 d2 sel 
类型 wire

输出描述:

输出信号  out1 out2  out3
类型  reg

`timescale 1ns/1ns

module seller2(
	input wire clk  ,
	input wire rst  ,
	input wire d1 ,
	input wire d2 ,
	input wire sel ,
	
	output reg out1,
	output reg out2,
	output reg out3
);
reg [3:0] cnt;
//*************code***********//
always@(posedge clk or negedge rst)begin
    if(!rst)begin
        cnt <= 0; 
    end
    else begin
        if(!sel && cnt >= 3)
            cnt <= 0;
        else if(sel && cnt >= 5)
            cnt <= 0;
        else 
            cnt <= cnt + {d2,d1};
    end
end

always@(posedge clk or negedge rst)begin
    if(!rst)begin
        out1 <= 0;
        out2 <= 0;
        out3 <= 0;
    end
    else begin
        if(!sel && cnt >= 3)begin
            out1 <= 1;
            out2 <= 0;
            out3 <= cnt - 3;
        end
        else if(sel && cnt >= 5)begin
            out1 <= 0;
            out2 <= 1;
            out3 <= cnt - 5;
        end
        else begin
            out1 <= 0;
            out2 <= 0;
            out3 <= 0;
        end
    end
end
//*************code***********//
endmodule

没啥需要注意的

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值