题解 | #游戏机计费程序#
游戏机计费程序
https://www.nowcoder.com/practice/50188fb7e23b4eee86f8c463c8284f5e
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 ); reg valid; // 费用 always @(posedge clk or negedge rst_n) begin if (!rst_n) begin remain <= 0; valid <= 0; end else begin valid <= 1; if (set) begin remain <= remain + money; end if (valid && !set) begin if (!boost) begin remain <= remain < 1 ? remain : remain - 1; end else begin remain <= remain < 2 ? remain : remain - 2; end end end end // 亮灯 always @(posedge clk or negedge rst_n) begin if (!rst_n) begin yellow <= 0; red <= 0; end else begin yellow <= remain < 10 && remain > 0; red <= !boost && remain < 1 || boost && remain < 2; end end endmodule