题解 | #游戏机计费程序#

游戏机计费程序

http://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)
            remain <= 0;
        else if (set&&!boost) 
            remain <= money + remain-1'b1;
                else if (set&&boost)             
                        remain <= money + remain-'d2;
        else if (remain==1&&!boost || (remain==2&&boost))
            remain <= 0;
        else
            begin
                if (!boost)
                    remain <= remain -1;
                else if (boost)
                    remain <= remain -2;    
                else remain <= remain;
            end
    end

always @(posedge clk or negedge rst_n) 
        if(!rst_n)
            begin
                yellow <= 1'd0;
                red <= 1'd0;
            end
    else if (remain <10 && remain != 0)
            begin
                yellow <= 1'd1;
                red <= 1'd0;
            end        
    else if ((remain == 1&&!boost) || (remain==2&&boost))
            begin
                yellow <= 1'd0;
                red <= 1'd1;
            end    
        else 
            begin
                yellow <= 1'd0;
                red <= 1'd0;
            end    
endmodule
全部评论

相关推荐

点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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