题解 | #自动贩售机2#

自动贩售机2

http://www.nowcoder.com/practice/298dec1c3dce45c881f3e53e02558828

`timescale 1ns/1ns

module seller2(
	input wire clk  ,
	input wire rst  ,
	input wire d1 ,
	input wire d2 ,
	input wire sel ,
	
output reg out1,
output reg out2,
output reg out3
);
//*************code***********//
    parameter   s0 = 7'b0000_001,//
                s1 = 7'b0000_010,//0.5
                s2 = 7'b0000_100,//1
                s3 = 7'b0001_000,//1.5
                s4 = 7'b0010_000,//2
                s5 = 7'b0100_000,//2.5
                s6 = 7'b1000_000;//3
    
reg    [6:0]    st_cur;
reg    [6:0]    st_next;

wire    [1:0]    pi_money;

assign pi_money = {d2,d1};

always@(posedge clk or negedge rst)begin 
    if(!rst)begin 
       st_cur <= 7'b0; 
    end
    else    begin 
       st_cur <= st_next; 
    end
end

always@(*)begin 
    case(st_cur)
        s0 : case(pi_money)
            2'b01 : st_next <= s1;
            2'b10 : st_next <= s2;
            default : st_next <= st_next;     
        endcase
        s1 : case(pi_money)
            2'b01 : st_next <= s2;
            2'b10 : st_next <= s3;
            default : st_next <= st_next;
        endcase
        s2 : case(pi_money)
            2'b01 : st_next <= s3;
            2'b10 : st_next <= s4;
            default : st_next <= st_next;
        endcase
        s3 : if(!sel)begin 
                st_next <= s0;
            end
            else    begin 
                case(pi_money)
                    2'b01 : st_next <= s4;
                    2'b10 : st_next <= s5;
                    default : st_next <= st_next;
                endcase
            end
        s4 : if(!sel)begin 
                st_next <= s0;
            end
            else    begin 
                case(pi_money)
                    2'b01 : st_next <= s5;
                    2'b10 : st_next <= s6;
                    default : st_next <= st_next;
                endcase
            end
        s5 : st_next <= s0;
        s6 : st_next <= s0;
        default : st_next <= s0;  
    endcase
end

always@(posedge clk or negedge rst)begin 
    if(!rst)begin
        out1 <= 1'b0;
        out2 <= 1'b0;
        out3 <= 1'b0;
    end
    else    case(st_next)
        s3 : if(!sel)begin 
                out1 <= 1'b1;
                out2 <= 1'b0;
                out3 <= 1'b0;
        end
        else    begin 
                out1 <= 1'b0;
                out2 <= 1'b0;
                out3 <= 1'b0; 
        end
        s4 : if(!sel)begin 
                out1 <= 1'b1;
                out2 <= 1'b0;
                out3 <= 1'b1;
        end
        else    begin 
                out1 <= 1'b0;
                out2 <= 1'b0;
                out3 <= 1'b0;
        end
        s5 : if(!sel)begin 
                out1 <= 1'b1;
                out2 <= 1'b0;
                out3 <= 1'b1;
        end
        else    begin 
                out1 <= 1'b0;
                out2 <= 1'b1;
                out3 <= 1'b0; 
        end
        s6 : if(!sel)begin 
                out1 <= 1'b1;
                out2 <= 1'b0;
                out3 <= 1'b1;
        end
        else    begin 
                out1 <= 1'b0;
                out2 <= 1'b1;
                out3 <= 1'b1;
        end
        default : begin 
                 out1 <= 1'b0;
                 out2 <= 1'b0;
                 out3 <= 1'b0; 
        end  
    endcase
end
//*************code***********//
endmodule
全部评论

相关推荐

01-01 23:23
复旦大学 Java
点赞 评论 收藏
分享
面试官全程关摄像头1.自我介绍一下2.React和Vue哪个更熟悉一点3.你在之前那段实习经历中有没有什么技术性的突破(我只是实习了44天工作28天,我把我能说的都说了)4.你封装的哪个表单组件支不支持动态传值5.自己在实习阶段Vue3项目封装过hook吗6.hook有什么作用7.Vue2和Vue3的响应式区别(我说一个是proxy是拦截所有的底层操作,Object.defineProperty本身就是一个底层操作,有些东西拦截不了,比如数组的一些操作还有等等,面试官就说实在要拦截能不能拦截????我心想肯定不行呀,他的底层机制就不允许吧)8.pinia和vuex的区别(这个回答不出来是我太久没用了)9.pinia和zustand的区别,怎么选(直接给我干懵了)(我说react能用pinia吗&nbsp;&nbsp;他说要用的话也可以)10.渲染一万条数据,怎么解决页面卡顿问题(我说分页、监听滚轮动态加载,纯数据展示好像还可以用canvas画)(估计是没说虚拟表单,感觉不满意)11.type和interface的区别12.ts的泛型有哪些作用(我就说了一个结构相同但是类型不同的时候可以用,比如请求响应的接口,每次的data不同,这里能用一个泛型,他问我还有什么)13.你项目用的是React,如果让你再写一遍你会选择什么14.pnpm、npm、yarn的区别15.dependencies和devdependencies的区别总而言之太久没面试了,上一段实习的面试js问了很多。结果这次js一点没问,网络方面也没考,表现得很一般,但是知道自己的问题了&nbsp;&nbsp;好好准备,等待明天的影石360和周四的腾讯了&nbsp;&nbsp;加油!!!
解zj:大三的第一段面试居然是这样的结局
查看15道真题和解析
点赞 评论 收藏
分享
评论
点赞
1
分享

创作者周榜

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