题解 | #自动贩售机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 s0=8'b00000001,
		  s1=8'b00000010,
		  s2=8'b00000100,
		  s3=8'b00001000,
		  s4=8'b00010000,
		  s5=8'b00100000,
		  s6=8'b01000000,
		  s7=8'b10000000;

		  reg [7:0]n_state;
		  reg [7:0]c_state;

		  wire [2:0]reg_d;
		  assign reg_d={d1,d2,d3};

		always@(posedge clk or negedge rst)
		if(!rst)
			c_state<=s0;
		else
			c_state<=n_state;

		always@(*) 
		case(c_state)
		s0:begin
			case(reg_d)
			3'b100:n_state=s1;
			3'b010:n_state=s2;
			3'b001:n_state=s4;
			default:n_state=n_state;
			endcase
		end 
		s1:begin
			case(reg_d)
			3'b100:n_state=s2;
			3'b010:n_state=s3;
			3'b001:n_state=s5;
			default:n_state=n_state;
			endcase
		end
		s2:begin
			case(reg_d)
			3'b100:n_state=s3;
			3'b010:n_state=s4;
			3'b001:n_state=s6;
			default:n_state=n_state;
			endcase
		end
		s3:n_state=s0;
		s4:n_state=s0;
		s5:n_state=s0;
		s6:n_state=s0;
		default:n_state=s0;
		endcase
		
		always@(posedge clk or negedge rst)
		if(!rst)begin
			out1<=0;
			out2<=0;
		end
		else begin
			case(n_state)
			s3:begin
				out1<=1;
				out2<=0;	
			end
			s4:begin
				out1<=1;
				out2<=1;	
			end
			s5:begin
				out1<=1;
				out2<=2;	
			end
			s6:begin
				out1<=1;
				out2<=3;	
			end
			default:begin
				out1<=0;
				out2<=0;	
			end
			endcase
		end


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

全部评论

相关推荐

05-13 00:41
已编辑
北京邮电大学 Java
理性的杰克刷牛客:ai肯定要有的,最好学一下agent方向加一个智能客服什么的进去,并且多加点什么skill,mcp啥的,另外你现在的项目深度有些浅,这些功能都太简单了,而且也不是真正能扛高并发的实现,没有什么太大的亮点,可以去网上找点更有深度的项目。可以先投一些中小厂,有实习经历以后再去大厂,你现在这个大厂可能机会不大
点赞 评论 收藏
分享
抽纸大侠:抱抱😘,首先你还有春招,然后就算这时候没上岸也没关系,大部分人都是这样,毕业了再找也成,最后工作只是生活的一小部分,找到工作也不是一个必须的事情。不要气馁不要焦虑你只是陷入了短暂的低谷,你也一直有退路
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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