题解 | #自动售卖机#

自动售卖机

https://www.nowcoder.com/practice/487953e6d3e3434988e0dd6960b6c9f8

`timescale 1ns/1ns

module sale(
   input                clk   ,
   input                rst_n ,
   input                sel   ,//sel=0,5$dranks,sel=1,10&=$drinks
   input          [1:0] din   ,//din=1,input 5$,din=2,input 10$
 
   output   reg  [1:0] drinks_out,//drinks_out=1,output 5$ drinks,drinks_out=2,output 10$ drinks
   output	reg        change_out   
);
    parameter IDLE = 1'b0, B_5_STATE = 1'b1;

    reg curr_state, next_state;

    always @(posedge clk or negedge rst_n) begin
        if(~rst_n) begin
            curr_state <= IDLE;
        end
        else begin
            curr_state <= next_state;
        end
    end

    always @(*) begin
        case(curr_state) 
            IDLE: begin 
                if(sel == 1'b1 && din == 2'd1) begin
                    next_state = B_5_STATE;
                end
                else begin
                    next_state = IDLE;
                end
            end
            B_5_STATE: begin 
                if(sel == 1'b1 && din == 2'd1) begin
                    next_state = IDLE;
                end
                else if(sel == 1'b1 && din == 2'd2) begin
                    next_state = IDLE;
                end
                else begin
                    drinks_out = 0;
                    change_out = 0;
                    next_state = B_5_STATE;
                end
            end
        endcase
    end

    always @(posedge clk or negedge rst_n) begin
        if(~rst_n) begin
            drinks_out = 0;
            change_out = 0;
        end
        else begin
            case(curr_state) 
                IDLE: begin 
                    if(sel == 1'b0 && din == 2'd0) begin
                        drinks_out = 0;
                        change_out = 0;
                    end
                    else if(sel == 1'b0 && din == 2'd1) begin
                        drinks_out = 1;
                        change_out = 0;
                    end
                    else if(sel == 1'b0 && din == 2'd2)begin
                        drinks_out = 1;
                        change_out = 1;
                    end
                    else if(sel == 1'b1 && din == 2'd0) begin
                        drinks_out = 0;
                        change_out = 0;
                    end
                    else if(sel == 1'b1 && din == 2'd1) begin
                        drinks_out = 0;
                        change_out = 0;
                    end
                    else if(sel == 1'b1 && din == 2'd2) begin
                        drinks_out = 2;
                        change_out = 0;
                    end
                    else begin
                        drinks_out = 0;
                        change_out = 0;
                    end
                end
                B_5_STATE: begin 
                    if(sel == 1'b1 && din == 2'd0) begin
                        drinks_out = 0;
                        change_out = 0;
                    end
                    else if(sel == 1'b1 && din == 2'd1) begin
                        drinks_out = 2;
                        change_out = 0;
                    end
                    else if(sel == 1'b1 && din == 2'd2) begin
                        drinks_out = 2;
                        change_out = 1;
                    end
                    else begin
                        drinks_out = 0;
                        change_out = 0;
                    end
                end
            endcase
        end
    end

endmodule

前期被题目坑了,“sel信号会先于din信号有效”这句话让我误以为sel信号比din信号早一个周期。。。。。

全部评论

相关推荐

家里人这种思想对吗?最近找到了某大厂算法岗的实习,家里人一直跟我说要给领导买点东西,搞好关系,我真的搞不清楚他们这种思想到底怎么来的,真的很烦他们教我做事,他们总觉得自己是对的,我不照着他们的想法做,就觉得我态度不对,之前找实习也是只会嘴巴上对我说你要加油,你要努力,但是根本不知道我背后付出了多少努力,真的好烦被教做事的感觉。
青春运维少年不会梦到...:小时候老爸每次外出打工,我都会说注意安全,可是我真的懂老爸的工作吗,一个小学文凭的人出去打工能有什么安全的工作,可是老爸还是慈祥的回应我,仿佛每天能安全回家都归功于我的祈福。到了现在,我跨越3000多公里去了陌生的城市,老爸还是那个老爸,只不过现在多了问我的情况,会问我适应新城市吗,适应工作强度吗,到最后真的好奇,问我这个工作是干啥的;老爸没文化,不知道计算机网络有七层结构,也不知道云saas订阅,我只能说,就像汽车修理厂一样,我是那个修车的师傅。老爸可能觉得真的理解不了我的工作,之后也就没多问了。不过仍然还是给我传授他的经验,对于老爸来说,他也知道我做的是他难以理解的工作,知道小县城的那套江湖规矩难以闯荡大城市,但是他依旧会关心我。。。
实习的内耗时刻
点赞 评论 收藏
分享
白火同学:先说结论,准大三不是特别好找实习,boss沟通300+没有实习是很正常的情况。一是暑期实习时间太短了,二是在这么多准大四都找不到实习,从实习时间和掌握技术层面,企业会优先看他们。 再说简历,其实985本+准大三到这水平的简历也很优秀了,要说的话,项目经历可以再优化一下,可以基本围绕采取STAR原则,分为项目概述、技术架构、技术亮点、实现结果,再发给AI润色一下。 最后说操作,准大三的话,如果想找实习那就多投,不过现在也7月中旬了,时间上已经略晚了。如果7月底实在找不到,也可以多刷点算法,多学点技术,这实习也不至于一定得有,当然有更好。
点赞 评论 收藏
分享
程序员小白条:这比例牛逼,750:1
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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