自动售货机
功能:自动售货机共有三个商品,通过选择某一个商品去付款,然后自动售货机弹出相应商品。
具体代码如下
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
仿真波形图