verilog:模拟简易自动售货机代码(quartus13.1)

自动售货机

功能:自动售货机共有三个商品,通过选择某一个商品去付款,然后自动售货机弹出相应商品。

具体代码如下

module m1(clr,a,b,out,z);
input a,clr;//clr是选择按钮,a表示付款状态
input [2:0] b;//b是储存选择的商品号:共有三个商品:001,010,100
output reg [2:0] out;//out是中间状态,用来连接三个商品和发放商品的
output reg [1:0] z; //z是发放商品用的,对应out的三个状态
always@(clr)//clr发生变化,说明有人在选择商品
begin 
case(b)     
3'b001:out<=3'b111;
3'b010:out<=3'b011;
3'b100:out<=3'b110;
endcase
end
always@(a)   //付款成功,即a=1
begin
case(out)
3'b111:z<=2'b01;
3'b011:z<=2'b10;
3'b101:z<=2'b11;
endcase
end
endmodule

test beach代码如下

`timescale 1ns/1ps
module m1_tb();
reg a,clr;
reg [2:0] b;
wire [2:0] out;
wire [1:0] z; 
m1 m2(.a(a),.clr(clr),.b(b),.out(out),.z(z));
initial
begin
clr=0;
#10 clr=1;
#10 clr=0;
end
initial
begin
a=0;
#25 a=1;
#35 $stop;
end
initial
begin
b=3'b000;
#20 b=3'b010;
end
endmodule

仿真波形图

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

我有一贱

兄弟,咱们一起加油

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值