题解 | #并串转换#

并串转换

https://www.nowcoder.com/practice/296e1060c1734cf0a450ea58dd09d36c

`timescale 1ns/1ns
module huawei5(
	input wire clk  ,
	input wire rst  ,
	input wire [3:0]d ,
	output wire valid_in ,
	output wire dout
	);

	reg valid;
	reg [3:0]din;
	reg [1:0]cnt;
	reg [1:0]state;
	reg data;
	reg en;
	always@(posedge clk or negedge rst)begin
		if(!rst)
		cnt<=0;
		else if(cnt==3)
		cnt<=0;
		else
		cnt<=cnt+1;
	end

	always@(posedge clk or negedge rst)begin
		if(!rst)
		valid<=0;
		else if(cnt==3)
		valid<=1;
		else
		valid<=0;
	end



	always@(posedge clk or negedge rst)begin
		if(!rst)
		din<=0;
		else if(cnt==3)
		din<=d;
		else
		din<=din;
	end

		
 always@(*)begin
	if(!rst)
	data=0;
	else
	case(cnt)
	0:data=din[3];
	1:data=din[2];
	2:data=din[1];
	3:data=din[0];
	endcase
 end
assign valid_in=valid;
assign dout=data;

//*************code***********//


//*************code***********//

endmodule

观察时序图,发现数据有效是在复位信号到来后数4个时钟数据才有效,且到四个时钟的时候才进行数据的并转串。数据是在每第四个时钟到的时候才发生变化,因此需要缓存

全部评论

相关推荐

点赞 收藏 评论
分享
牛客网
牛客企业服务