题解 | #并串转换#

并串转换

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
	);

//*************code***********//
	reg valid;
	reg [3:0] din;
	reg [1:0] counter;

	always @(posedge clk, negedge rst) begin

		if(!rst) begin
			counter <= 0;
			valid <= 0;
			din <= 0;
		end
		else if(counter == 3) begin
			counter <= 0;
			valid <= 1; 
			din <= d;
		end

		else begin
			counter <= counter + 1;
			din <= {din[2:0], din[3]};
			valid <= 0;
		end
	end

	assign dout = din[3];
	assign valid_in = valid;

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

endmodule

串并转换,就是一位一位输出多bit数据。 核心思想就是多bit数据移位。用counter表示多bit数据的位数,每次count都移位。valid信号意思是在此时接收输入信号,则我们在每次counter的最后一次接收信号,使valid为1。

全部评论

相关推荐

04-06 11:24
已编辑
太原学院 C++
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务