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

数据串转并电路

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]temp;

always@(posedge clk or negedge rst_n)begin
	if(~rst_n)
	cnt<=0;
	else if (valid_a)
	     if(cnt==5)
	       cnt<=0;
		 else
		 cnt<=cnt+1;
	else
	cnt<=cnt;
end


always@(posedge clk or negedge rst_n)begin
	if(~rst_n)
	temp<=0;
	else if (valid_a)
     case(cnt)
	 0:temp[0]<=data_a;
	 1:temp[1]<=data_a;
	 2:temp[2]<=data_a;
	 3:temp[3]<=data_a;
	 4:temp[4]<=data_a;
	 5:temp[5]<=data_a;
	 default temp<=0;
	 endcase
end

always@(posedge clk or negedge rst_n)begin
	if(~rst_n)
	ready_a<=0;
	else
	ready_a<=1;
end

always@(posedge clk or negedge rst_n)begin
	if(~rst_n)
	valid_b<=0;
	else if (valid_a)
	     if(cnt==5)
	    valid_b<=1;
	else
	valid_b<=0;
end

always@(posedge clk or negedge rst_n)begin
	if(~rst_n)
	data_b<=0;
	else if (valid_a)
	     if(cnt==5)
	    data_b<=temp;
	else
	data_b<=data_b;
end



endmodule

观察时序图,发现在数据无效的时候会保cnt的值不变,且计数到5才会拉高

全部评论

相关推荐

嵐jlu:我是山川🐔里🐔🧱的,阿里系简历全过; 你这简历一看就还是半成品啊,没有荣誉经历奖项什么的吗?
投递阿里巴巴集团等公司10个岗位
点赞 评论 收藏
分享
05-22 09:23
门头沟学院 Java
点赞 评论 收藏
分享
07-09 15:14
南京大学 C++
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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