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

游戏机计费程序

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,//切换为畅玩模式,boost==0为普通模式,boost==1为畅玩模式
        output reg[9:0]remain,//剩余费用
        output reg yellow,//剩余费用小于10元
        output reg red//费用不足,关闭电脑
    ); 
//黄灯
    always@(posedge clk or negedge rst_n) 
        begin
            if(!rst_n)
                yellow <= 1'b0;
            else if(remain < 10&&remain)
                yellow <= 1'b1;
            else
                yellow <= yellow;
        end
//红灯
    always@(posedge clk or negedge rst_n)
        begin
            if(!rst_n)
                red <= 1'b0;
            else if((boost==0&&remain < 10'b1)||(boost==1&&remain < 10'd2))
                red <= 1'b1;
            else
                red <= 1'b0;
        end
//剩余费用
    always@(posedge clk or negedge rst_n)
        begin
            if(!rst_n)
                remain <= 10'b0;
            else if(set)
                remain <= remain + money;
            else if(boost == 0)
                remain <= remain - 1;
            else if(boost == 1)
                remain <= remain - 2;
            else
                remain <= remain;
        end
endmodule
`timescale 1ns/1ns

module game_count
    (
		input rst_n, //异位复位信号,低电平有效
        input clk, 	//时钟信号
        input [9:0]money,//预付费用
        input set,//续费
		input boost,//切换为畅玩模式,boost==0为普通模式,boost==1为畅玩模式
        output reg[9:0]remain,//剩余费用
		output reg yellow,//剩余费用小于10元
		output reg red//费用不足,关闭电脑
    ); 
//黄灯
    always@(posedge clk or negedge rst_n) 
        begin
            if(!rst_n)
                yellow <= 1'b0;
            else if(remain < 10&&remain)
                yellow <= 1'b1;
            else
                yellow <= yellow;
        end
//红灯
    always@(posedge clk or negedge rst_n)
        begin
            if(!rst_n)
                red <= 1'b0;
            else if((boost==0&&remain < 10'b1)||(boost==1&&remain < 10'd2))
                red <= 1'b1;
            else
                red <= 1'b0;
        end
//剩余费用
    always@(posedge clk or negedge rst_n)
        begin
            if(!rst_n)
                remain <= 10'b0;
            else if(set)
                remain <= remain + money;
            else if(boost == 0)
                remain <= remain - 1;
            else if(boost == 1)
                remain <= remain - 2;
            else
                remain <= remain;
        end
endmodule

全部评论

相关推荐

真的很糟糕:欲哭无泪
点赞 评论 收藏
分享
06-02 15:17
门头沟学院 Java
心爱的idea:怎么会呢 应该是打招呼有问题 问就说实习6个月全国可飞随时到岗
点赞 评论 收藏
分享
06-08 22:25
门头沟学院 Java
从零开始的转码生活:这hr不会打开手机不分青红皂白给所有人群发这句话,过一会再给所有人再发一遍,这肯定会有重复的,不管,再过一会再发一遍
点赞 评论 收藏
分享
找个工作&nbsp;学历是要卡的&nbsp;要求是高的&nbsp;技能不足是真的&nbsp;实习经验是0的&nbsp;简历无处可写是事实的&nbsp;钱不好赚是真的&nbsp;想躺平又不敢躺&nbsp;也不甘心躺&nbsp;怕自己的灵感和才华被掩埋甚至从未被自己发现&nbsp;又质疑自己是否真正有才华
码农索隆:你现在啊,你心里都明白咋回事,但是你没办法改变现状,一想到未来,你又没有信心狠下心来在当下努力。 得走出这种状态,不能一直困在那里面,哪不行就去提升哪,你一动不动那指定改变不了未来,动起来,积少成多才能越来越好
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

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