题解 | #自动贩售机1#
自动贩售机1
https://www.nowcoder.com/practice/dcf59e6c51f6489093495acb1bc34dd8
大神帮忙看看为啥这么写不对啊。。。为啥这里要有out1输出啊??
我的代码如下:
`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 ); parameter S0 = 3'd0; parameter S1 = 3'd1; parameter S2 = 3'd2; parameter S3 = 3'd3; parameter S4 = 3'd4; parameter S5 = 3'd5; parameter S6 = 3'd6; reg [2:0] cstate, nstate; always@(posedge clk or negedge rst) begin if(!rst) begin cstate <= S0; end else begin cstate <= nstate; end end always@(*) begin case(cstate) S0: begin nstate = d1?S1:(d2?S2:(d3?S4:S0)); end S1: begin nstate = d1?S2:(d2?S3:(d3?S5:S1)); end S2: begin nstate = d1?S3:(d2?S4:(d3?S6:S2)); end default: begin nstate = S0; end endcase end always@(posedge clk or negedge rst) begin if(!rst) begin out1 <= 1'b0; out2 <= 2'd0; end else begin out1 <= (nstate==S3) | (nstate==S4) | (nstate==S5) | (nstate==S6); out2 <= (nstate==S4)?2'd1:((nstate==S5)?2'd2:((nstate==S6)?2'd3:2'd0)); end end endmodule