题解 | #自动售卖机#

自动售卖机

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

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 s0=0,s1=1;
reg[2:0] next_state,state;

always @(*)
begin
case (state)
s0 :  next_state= sel ? (din==1 ? s1:s0) : s0;
s1 :  next_state = din==0 ?  s1 : s0;
endcase

end
    always @(posedge clk or negedge  rst_n)
    begin
    if(!rst_n)
    begin
    state<=s0;
    end
    else
    begin
    state<=next_state;
    end
    end 
    
   always @ (posedge clk or negedge rst_n)
   begin
   if(!rst_n)
   begin
   drinks_out<=0;
   change_out<=0;
   end
   else if (sel)
   begin
   change_out<= (state==s1 && din==2);
   drinks_out<= ((state==s1 && (din==2|| din==1)) || din==2) ? 2:0;
   end
   else
   begin
    change_out<=  din==2;
   drinks_out<= (din==1 || din==2) ? 1:0;
   end
   end

endmodule

全部评论

相关推荐

不愿透露姓名的神秘牛友
11-26 16:06
已编辑
快手电商 后端 23k-35k
点赞 评论 收藏
分享
jack_miller:我给我们导员说我不在这里转正,可能没三方签了。导员说没事学校催的时候帮我想办法应付一下
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务