题解 | 游戏机计费程序(不用状态机原因分析)
游戏机计费程序
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的话使用电平控制的,不是脉冲控制,因此不用状态机
