题解 | 游戏机计费程序(不用状态机原因分析)
游戏机计费程序
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 <= 0; end else if (set) begin remain <= remain + money; end else if (boost && remain >= 2) begin remain <= remain - 2; end else if (!boost && remain >= 1) begin remain <= remain - 1; end end always @(posedge clk or negedge rst_n) begin if (!rst_n) begin yellow <= 0; end else if (remain < 10 && remain > 0) begin yellow <= 1; end else begin yellow <= 0; end end always @(posedge clk or negedge rst_n) begin if (!rst_n) begin red <= 0; end else if (boost && remain < 2 || (!boost) && remain < 1) begin red <= 1; end else begin red <= 0; end end endmodule
boost的话使用电平控制的,不是脉冲控制,因此不用状态机