题解 | #自动贩售机2#

自动贩售机2

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

两种方案:

方案一:设计一个状态机,通过判断sel来选择下一个状态;

关于输出使用cur_stata还是next_stata。我做了个实验。两种都可以。但是使用cur_stata得用逻辑输出。next_stata是使用正常的时序输出,具体可以看下面得程序。

`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=0, S0_5=1, S1=2, S1_5=3, S2=4, S2_5=5, S3=6;
	reg [2:0] cur_stata, next_stata;

	always@(posedge clk or negedge rst)
		if(~rst)
			cur_stata <= S0;
		else
			cur_stata <= next_stata;

	always@(*)
		case(cur_stata)
			S0: next_stata <= d1? S0_5: d2? S1: next_stata;
			S0_5: next_stata <= d1? S1: d2? S1_5: next_stata;
			S1: next_stata <= d1? S1_5: d2? S2: next_stata;
			S1_5: next_stata <= ~sel? S0: d1? S2: d2? S2_5: next_stata;
			S2: next_stata <= ~sel? S0: d1? S2_5: d2? S3: next_stata;
			default: next_stata <= S0;
		endcase

	// always@(*)
	// 	if (~rst)
	// 		{out1, out2, out3} <= 3'b000;
	// 	else
	// 		case(cur_stata)
	// 			S1_5: {out1, out2, out3} <= ~sel? 100: 000;
	// 			S2:  {out1, out2, out3} <= ~sel? 101: 000;
	// 			S2_5:{out1, out2, out3} <= ~sel? 101: 010;
	// 			S3:{out1, out2, out3} <= ~sel? 101: 011;
	// 			default: {out1, out2, out3} <= 000;
	// 		endcase


		always@(posedge clk or negedge rst)
		if (~rst)
			{out1, out2, out3} <= 3'b000;
		else
			case(next_stata)
				S1_5: {out1, out2, out3} <= ~sel? 100: 000;
				S2:  {out1, out2, out3} <= ~sel? 101: 000;
				S2_5:{out1, out2, out3} <= ~sel? 101: 010;
				S3:{out1, out2, out3} <= ~sel? 101: 011;
				default: {out1, out2, out3} <= 000;
			endcase
//*************code***********//
endmodule

方案二:

写两个不同的状态机,根据sel来选择使用哪一个状态机。程序待完成。

全部评论

相关推荐

02-23 19:27
门头沟学院 Java
点赞 评论 收藏
分享
Cassifa:发的字比你都多的一律视为骗子或者想白嫖压榨实习生的
点赞 评论 收藏
分享
02-08 20:56
已编辑
南京工业大学 Java
在等offer的比尔很洒脱:我也是在实习,项目先不说,感觉有点点小熟悉,但是我有点疑问,这第一个实习,公司真的让实习生去部署搭建和引入mq之类的吗,是不是有点过于信任了,我实习过的两个公司都是人家正式早搭好了,根本摸不到部署搭建的
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务