题解 | #自动贩售机1#

自动贩售机1

https://www.nowcoder.com/practice/dcf59e6c51f6489093495acb1bc34dd8

`timescale 1ns/1ns
module seller1(
	input wire clk  ,
	input wire rst  ,
	input wire d1 ,
	input wire d2 ,
	input wire d3 ,
	
	output reg out1,
	output reg [1:0]out2
);
//*************code***********//
parameter IDLE = 3'b001;
parameter S0   = 3'b010;
parameter S1   = 3'b100;

reg [2:0] cs, ns;
always @ (posedge clk or negedge rst) 
begin
    if( ~rst ) begin
        cs <= IDLE;
    end
    else begin
        cs <= ns;
    end 
end 

always @ (d1, d2, d3, rst) 
begin
    if( ~rst ) begin
        ns = IDLE;
    end 
    else begin
        case( cs )
            IDLE : begin
                case({d1, d2, d3}) 
                    3'b000 : ns = ns;
                    3'b100 : ns = S0;
                    3'b010 : ns = S1;
                    3'b001 : ns = IDLE;
                    default : ns = IDLE;
                endcase
            end 
            S0 : begin
                case({d1, d2, d3}) 
                    3'b000 : ns = ns;
                    3'b100 : ns = S1;
                    3'b010 : ns = IDLE;
                    3'b001 : ns = IDLE;
                    default : ns = IDLE;
                endcase
            end 
            S1 : begin
                if({d1, d2, d3} == 3'b000)
                    ns = ns;
                else 
                    ns = IDLE;     
            end
            default : begin
                if({d1, d2, d3} == 3'b000)
                    ns = ns;
                else 
                    ns = IDLE;  
            end 
        endcase
    end 
end 

reg out1_reg;
reg [1:0] out2_reg;
always @ (posedge clk or negedge rst) 
begin
    if( ~rst ) begin
        out1_reg <= 1'b0;
        out2_reg <= 2'b0;
    end
    else begin
        case(cs) 
            IDLE : begin
                if({d1, d2, d3} == 3'b001) begin
                    out1_reg <= 1'b1; 
                    out2_reg <= 2'd1; 
                end     
                else begin
                    out1_reg <= 1'b0; 
                    out2_reg <= 2'd0;
                end 
            end 
            S0 : begin
                case({d1, d2, d3}) 
                    3'b010 : begin
                        out1_reg <= 1'b1; 
                        out2_reg <= 2'd0; 
                    end 
                    3'b001 : begin
                        out1_reg <= 1'b1; 
                        out2_reg <= 2'd2; 
                    end 
                    default : begin
                        out1_reg <= 1'b0; 
                        out2_reg <= 2'd0; 
                    end 
                endcase
            end 
            S1 : begin
                case({d1, d2, d3}) 
                    3'b100 : begin
                        out1_reg <= 1'b1; 
                        out2_reg <= 2'd0; 
                    end 
                    3'b010 : begin
                        out1_reg <= 1'b1; 
                        out2_reg <= 2'd1; 
                    end 
                    3'b001 : begin
                        out1_reg <= 1'b1; 
                        out2_reg <= 2'd3; 
                    end 
                    default : begin
                        out1_reg <= 1'b0; 
                        out2_reg <= 2'd0; 
                    end 
                endcase     
            end
            default : begin
                out1_reg <= 1'b0; 
                out2_reg <= 2'd0;
            end 

        endcase
    end 
end 

always @ (posedge clk or negedge rst) 
begin
    if( ~rst ) begin
        out1 <= 1'b0;
        out2 <= 2'b0;
    end
    else begin
        out1 <= out1_reg;
        out2 <= out2_reg;
    end 
end	

//*************code***********//
endmodule

全部评论

相关推荐

球球别再泡了:坏,我单9要了14
点赞 评论 收藏
分享
评论
点赞
收藏
分享
正在热议
# 25届秋招总结 #
439972次浏览 4484人参与
# 春招别灰心,我们一人来一句鼓励 #
41352次浏览 523人参与
# 北方华创开奖 #
107247次浏览 599人参与
# 地方国企笔面经互助 #
7914次浏览 18人参与
# 虾皮求职进展汇总 #
113497次浏览 880人参与
# 实习,投递多份简历没人回复怎么办 #
2453683次浏览 34846人参与
# 阿里云管培生offer #
119651次浏览 2219人参与
# 实习必须要去大厂吗? #
55552次浏览 959人参与
# 同bg的你秋招战况如何? #
75178次浏览 548人参与
# 提前批简历挂麻了怎么办 #
149763次浏览 1976人参与
# 投递实习岗位前的准备 #
1195578次浏览 18546人参与
# 你投递的公司有几家约面了? #
33166次浏览 188人参与
# 双非本科求职如何逆袭 #
661770次浏览 7394人参与
# 机械人春招想让哪家公司来捞你? #
157585次浏览 2267人参与
# 如果公司给你放一天假,你会怎么度过? #
4714次浏览 53人参与
# 如果你有一天可以担任公司的CEO,你会做哪三件事? #
11214次浏览 253人参与
# 发工资后,你做的第一件事是什么 #
12359次浏览 61人参与
# 工作中,努力重要还是选择重要? #
35521次浏览 384人参与
# 参加完秋招的机械人,还参加春招吗? #
20068次浏览 240人参与
# 实习想申请秋招offer,能不能argue薪资 #
39205次浏览 314人参与
# 我的上岸简历长这样 #
451863次浏览 8087人参与
# 非技术岗是怎么找实习的 #
155831次浏览 2120人参与
牛客网
牛客企业服务