描述
题目描述:
设计一个自动贩售机,输入货币有三种,为0.5/1/2元,饮料价格是1.5元,要求进行找零,找零只会支付0.5元。
ps:
投入的货币会自动经过边沿检测并输出一个在时钟上升沿到1,在下降沿到0的脉冲信号
注意rst为低电平复位
信号示意图:
d1 0.5元
d2 1元
d3 2元
out1 饮料
out2 零钱
波形示意图:
对应的激励源:
`timescale 1ns/1ns
module seller1(
input wire clk ,
input wire rst ,
input wire d1 ,
input wire d2 ,
input wire d3 ,
output reg out1,
output reg [1:0]out2
);
reg [3:0] cnt;
//*************code***********//
always@(posedge clk or negedge rst)begin
if(!rst)
cnt <= 'd0;
else begin
if(cnt >= 3)
cnt <= 'd0;
else
cnt <= cnt + {d3,d2,d1};
end
end
always@(posedge clk or negedge rst)begin
if(!rst)begin
out1 <= 0;
out2 <= 0;
end
else begin
if(cnt >= 3)begin
out1 <= 1;
out2 <= cnt - 3;
end
else begin
out1 <= 0;
out2 <= 0;
end
end
end
//*************code***********//
endmodule
用状态机也行,后面补
输入描述:
输入信号 clk rst d1 d2 d3
类型 wire
输出描述:
输出信号 out1 [1:0]out2
类型 reg