题解 | #数据串转并电路#

数据串转并电路

https://www.nowcoder.com/practice/6134dc3c8d0741d08eb522542913583d

`timescale 1ns/1ns

module s_to_p(
	input 				clk 		,   
	input 				rst_n		,
	input				valid_a		,
	input	 			data_a		,
 
 	output	reg 		ready_a		,
 	output	reg			valid_b		,
	output  reg [5:0] 	data_b
);
reg[2:0]cnt;
reg[5:0]data;
always@(posedge clk or negedge rst_n)begin
	if(!rst_n)begin
		ready_a<=0;
	end
	else begin
		ready_a<=1;
	end
end
always@(posedge clk or negedge rst_n)begin
	if(!rst_n)begin
		cnt<=0;
	end
	else begin
		if(valid_a & ready_a)begin
			if(cnt<3'd5)begin
				cnt<=cnt+1;
			end
			else begin
				cnt<=0;
			end			
		end
		else begin
			if(cnt<3'd5)begin
				cnt<=cnt;
			end
			else begin
				cnt<=0;//防止cnt为5时,valid_a为0时还能一直输出
			end
				
			end
	end
end
always@(posedge clk or negedge rst_n)begin
	if(!rst_n)begin
		data<=0;
	end
	else begin
		if(valid_a&ready_a)begin
			data<={data_a,data[5:1]};
		end
		else begin
			data<=data;
		end
	end
end
always@(posedge clk or negedge rst_n)begin
	if(!rst_n)begin
		data_b<=0;
	end
	else begin
		if(cnt==3'd5 )begin
			data_b<={data_a,data[5:1]};
		end
		else begin
			data_b<=data_b;
		end
		
	end
end
always@(posedge clk or negedge rst_n)begin
	if(!rst_n)begin
		valid_b<=0;
	end
	else begin
		if(cnt==3'd5 &ready_a)begin
			valid_b<=1;
		end
		else begin
			valid_b<=0;
		end
	end
end

endmodule

全部评论

相关推荐

鼠鼠没有找到暑期实习,简历太空了,感觉直接去秋招会完蛋,这个时间点找个日常实习混个简历,边实习边准备秋招有没有搞头啊
梦想是成为七海千秋:可以的完全可以的,找不到暑期就找日常,秋招之前还是有很多时间可以实习的,哪怕只实习了一个月都可以写在简历上
点赞 评论 收藏
分享
05-09 12:23
已编辑
华南理工大学 Java
野猪不是猪🐗:给他装的,双九+有实习的能看的上这种厂我直接吃⑨✌们拿它练练面试愣是给他整出幻觉了
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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