题解 | #整数倍数据位宽转换8to16#

整数倍数据位宽转换8to16

https://www.nowcoder.com/practice/f1fb03cb0baf46ada2969806114bce5e

`timescale 1ns/1ns

module width_8to16(
	input 				   clk 		,   
	input 				   rst_n		,
	input				      valid_in	,
	input	   [7:0]		   data_in	,
 
 	output	reg			valid_out,
	output   reg [15:0]	data_out
);

reg [1:0] count;
reg [7:0] mid_reg;

always @(posedge clk or negedge rst_n)begin
	if(!rst_n)begin
		count <= 2'b00;
	end
	else begin
		if(valid_in)begin
			if(count == 1)begin
				count <= 0;
			end
			else begin
				count <= count + 1;
			end
		end
		else begin
			count <= count;
		end
	end
end

always @(posedge clk or negedge rst_n)begin
	if(!rst_n)begin
		mid_reg <= 8'b0;
	end
	else begin
		if(valid_in)begin
			mid_reg <= data_in;
		end
		else begin
			mid_reg <= mid_reg;
		end
	end
end

always @(posedge clk or negedge rst_n)begin
	if(!rst_n)begin
		data_out <= 16'b0;
		valid_out <= 1'b0;
	end
	else begin
		if(count == 1 && valid_in)begin
			data_out <= {mid_reg , data_in};
			valid_out <= 1'b1;
		end
		else begin
			data_out <= data_out;
			valid_out <= 1'b0;
		end
	end
end

endmodule

全部评论
mid_reg用8bit设计,一般我们想着用16bit,存满之后在赋值给data_out,这样设计不满足时序要求
点赞 回复 分享
发布于 2024-06-14 11:20 甘肃

相关推荐

03-05 12:52
吉林大学 Java
挣K存W养DOG:他的价值在于把他家里积攒的财富回馈给社会
点赞 评论 收藏
分享
找到实习就改名4月17日下午更改:1600一个月?
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务