题解 | 游戏机计费程序(不用状态机原因分析)

游戏机计费程序

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的话使用电平控制的,不是脉冲控制,因此不用状态机

全部评论

相关推荐

08-21 16:35
已编辑
门头沟学院 Java
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务