题解 | #游戏机计费程序#逻辑清晰,不用状态机

游戏机计费程序

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 <= 10'd0;
    end
    else if(set)begin
        remain <= remain + money;
    end
    else if(~boost && remain > 1'b0)begin       // ~boost 0 费用不足
        remain <= remain - 1'd1;
    end
    else if(boost && remain > 1'b1)begin        //boost 0,1 均费用不足
        remain <= remain - 2'd2;
    end
    else begin
        remain <= remain;
    end
end

always@(posedge clk or negedge rst_n)begin
    if(!rst_n)begin
        yellow <= 1'b0;
    end
    else if(remain > 1'b0 && remain < 4'd10)begin
        yellow <= 1'b1;
    end
    else begin
        yellow <= 1'b0;
    end
end

always@(posedge clk or negedge rst_n)begin
    if(!rst_n)begin
        red <= 1'b0;
    end
    else if((~boost && remain == 1'b0) || (boost && remain <= 1'b1))begin
        red <= 1'b1;
    end
    else begin
        red <= 1'b0;
    end
end




endmodule

全部评论

相关推荐

评论
1
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务