题解 | #非整数倍数据位宽转换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
);

//此题与上一题的思路是一致的,只是说 这一道题 只需要缓存上一个时钟周期的值就行
reg  [1:0]  COUNT          ;
reg  [7:0] data_in_reg     ;

always@(posedge clk or negedge rst_n)begin
    if(!rst_n)
        COUNT <= 'd0              ;
    else if(COUNT == 'd2 && valid_in == 1'b1)
	    COUNT <= 'd0              ;  
	else if(valid_in == 1'b1)
	    COUNT <= COUNT + 1'b1   ; 
end


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


always@(posedge clk or negedge rst_n)begin
    if(!rst_n)begin
        valid_out <= 1'b0                                    ;
		data_out  <=  'd0                                   ;
	end
    else if(COUNT == 'd1  && valid_in == 1'b1)begin
       valid_out <= 1'b1                                    ;
	   data_out  <=  {data_in_reg,data_in[7:4]}             ;
	end
	else if(COUNT == 'd2 && valid_in == 1'b1)begin
       valid_out <= 1'b1                                    ;
	   data_out  <=  {data_in_reg[3:0],data_in}             ;
	end
	else begin
	   valid_out <= 1'b0                                     ;
	   data_out  <= data_out                                 ;
	end
end

endmodule

全部评论

相关推荐

不愿透露姓名的神秘牛友
07-23 14:13
这是聊岔撇了吗,相同的话问了两遍
吴offer选手:上下文切换这一块
点赞 评论 收藏
分享
06-08 22:25
门头沟学院 Java
从零开始的转码生活:这hr不会打开手机不分青红皂白给所有人群发这句话,过一会再给所有人再发一遍,这肯定会有重复的,不管,再过一会再发一遍
点赞 评论 收藏
分享
zzzzhz:兄弟你先猛猛投简历至少三百家,能约到面试就去面。最近可以速成智能小车,智慧家居烂大街的项目,不需要自己写,只需要把里面的代码讲解看明白就行。把其中涉及到的八股文都拿出来单独背一下,我去年找工作就一个智能小车智慧家居找了10k差不多。
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

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