题解 | 自动贩售机2
自动贩售机2
https://www.nowcoder.com/practice/298dec1c3dce45c881f3e53e02558828
`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
);
//*************code***********//
reg [3:0] cnt;
always@(posedge clk or negedge rst)begin
if(!rst)begin
cnt <= 0;
out1 <= 0;
out2 <= 0;
out3 <= 0;
end
else begin
if(sel==0)begin
if(d1) cnt <= cnt + 1;
else if(d2) cnt <= cnt + 2;
else if(cnt == 3)begin
out1 <= 1;
out2 <= 0;
out3 <= 0;
cnt <= 0;
end
else if(cnt == 4)begin
out1 <= 1;
out2 <= 0;
out3 <= 1;
cnt <= 0;
end
else begin
out1 <= 0;
out2 <= 0;
out3 <= 0;
end
end
else begin
if(d1) cnt <= cnt + 1;
else if(d2) cnt <= cnt + 2;
else if(cnt == 5)begin
out1 <= 0;
out2 <= 1;
out3 <= 0;
cnt <= 0;
end
else if(cnt == 6)begin
out1 <= 0;
out2 <= 1;
out3 <= 1;
cnt <= 0;
end
else begin
out1 <= 0;
out2 <= 0;
out3 <= 0;
end
end
end
end
//*************code***********//
endmodule
