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

非整数倍数据位宽转换8to12

https://www.nowcoder.com/practice/11dfedff55fd4c24b7f696bed86190b1

`timescale 1ns/1ns

module width_8to12(
	input 			 clk 		,   
	input 			rst_n		,
	input			valid_in	,
	input	[7:0]	data_in	,
 
 	output  reg		   valid_out,
	output  reg [11:0] data_out
);
//本题中的波形图给的data_lock不是data_in
//实际上已经提示通过缓存来答题
reg [7:0] data_lock;
reg [1:0] data_cnt;

always@(posedge clk or negedge rst_n)begin
  if(!rst_n)
    data_cnt <= 1'b0;
  else if(valid_in)begin
    if(data_cnt == 2'b10)
	  data_cnt <= 1'b0;
	else
	  data_cnt <= data_cnt + 1'b1;
  end
  else
    data_cnt <= data_cnt;
end

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

always@(posedge clk or negedge rst_n)begin
  if(!rst_n)begin
    valid_out <= 1'b0;
	data_out  <= 1'b0;  
  end
  else if(valid_in)begin
    case(data_cnt)
	  2'b01:begin
	    valid_out <= 1'b1;
		data_out <= {data_lock,data_in[7:4]};
	  end
      2'b10:begin
		valid_out <= 1'b1;
		data_out  <= {data_lock[3:0],data_in};
	  end
	  default:begin
		valid_out <= 1'b0;
		data_out <= data_out;
	  end
	endcase
  end
  else begin
    valid_out <= 1'b0;
	data_out <= data_out;
  end
end



endmodule

全部评论

相关推荐

不愿透露姓名的神秘牛友
07-07 14:00
不想多说了,什么逆天HR,还要教我礼貌😂
机械打工仔:这不纯傻卵吗,他还操心上别人老板了
投递BOSS直聘等公司7个岗位
点赞 评论 收藏
分享
06-20 17:42
东华大学 Java
凉风落木楚山秋:要是在2015,你这简历还可以月入十万,可惜现在是2025,已经跟不上版本了
我的简历长这样
点赞 评论 收藏
分享
我是没经验的毕业生,这啥情况啊会不会是hr在刷kpi
JamesGosli...:字节boss属于是群发了,我都快入职字节了,其他部门还在和我boss打招呼
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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