题解 | #游戏机计费程序#
游戏机计费程序
https://www.nowcoder.com/practice/50188fb7e23b4eee86f8c463c8284f5e
`timescale 1ns/1ns
module game_count
(
input rst_n, //异位复位信号,低电平有效
input clk, //时钟信号
input [9:0]money,
input set,
input boost,
output reg[9:0]remain,
output reg yellow,
output reg red
);
always@(posedge clk or negedge rst_n) begin
if(!rst_n) begin
remain <= 'd0;
end
else begin
case({set,boost})
2'b11,
2'b10: remain <= remain + money;
2'b00: remain <= (remain=='d0)?'d0:(remain-'d1);
2'b01: remain <= (remain>='d2)?(remain-'d2):remain;
default: remain <= remain;
endcase
end
end
always@(posedge clk or negedge rst_n) begin
if(!rst_n) begin
yellow <= 1'b0;
red <= 1'b0;
end
else begin
yellow <= (remain<'d10) & (remain>'d0);
red <= (remain=='d0);
end
end
endmodule
