题解 | #游戏机计费程序#
游戏机计费程序
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