题解 | #自动贩售机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=0,s0=1,s1=2,s2=3,s3=4,s4=5,s5=6;
reg [2:0] cs,ns;
always@(posedge clk or negedge rst)begin
	if(!rst)cs<=idle;
	else cs<=ns;
end
always@(*)begin
	if(!rst)ns=idle;
	else begin
		case(cs)
		idle:ns=d1?s0:d2?s1:d3?s3:ns;//因为组合逻辑电路在任意时刻改变激励值都会使改变输出值,所以需要用ns=ns来锁存值
		s0:ns=d1?s1:d2?s2:d3?s4:ns;
		s1:ns=d1?s2:d2?s3:d3?s5:ns;
		s2:ns=idle;
		s3:ns=idle;
		s4:ns=idle;
		s5:ns=idle;
		default:ns=idle;
		endcase

	end
end
always@(posedge clk or negedge rst)begin
	if(!rst)begin
		out1<=0;
		out2<=0;
	end
	else begin
		case(ns)
		idle:begin
			out1<=0;
			out2<=0;
		end
		s0:begin
			out1<=0;
			out2<=0;
		end
		s1:begin
			out1<=0;
			out2<=0;
		end
		s2:begin
			out1<=1;
			out2<=0;
		end
		s3:begin
			out1<=1;
			out2<=1;
		end
		s4:begin
			out1<=1;
			out2<=2;
		end
		s5:begin
			out1<=1;
			out2<=3;
		end
		default:begin
			out1<=0;
			out2<=0;
		end
		endcase
	end
end

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

全部评论

相关推荐

今天 15:23
门头沟学院 Java
难道你们背八股都不觉得累?现在每天背八股背的我想吐
想去大厂的土豆子:累不累都是对比出来的,八股可比高考、考研轻松多了
点赞 评论 收藏
分享
迟缓的斜杠青年巴比Q了:简历被投过的公司卖出去了,我前两天遇到过更离谱的,打电话来问我有没有意向报班学Java学习,服了,还拿我学校一个学长在他们那报班学了之后干了华为OD当招牌
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

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