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

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

http://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]cnt;
    reg[11:0]data_cache;
    
    always @(posedge clk or negedge rst_n)begin
        if(~rst_n)
            cnt <= 0;
        else if(valid_in && cnt == 2)
            cnt <= 0;
        else if(valid_in)
            cnt <= cnt + 1'b1;
    end
    
    always @(posedge clk or negedge rst_n)begin
        if(~rst_n)
            data_cache <= 0;
        else if(valid_in)
            data_cache <= {data_cache[3:0],data_in};
    end
    
    always @(posedge clk or negedge rst_n)begin
        if(~rst_n)begin
            valid_out <= 0;
            data_out <= 0;
        end else if(valid_in && cnt == 2'd1)begin
           valid_out <= 1'b1;
            data_out <= {data_cache[7:0],data_in[7:4]};
        end else if(valid_in && cnt == 2'd2)begin
           valid_out <= 1'b1;
            data_out <= {data_cache[3:0],data_in};
        end else begin
           valid_out <= 0; 
        end
    end
endmodule
全部评论
跟我思路一样
点赞 回复 分享
发布于 2023-01-25 20:12 河北
好兄弟,一样!
点赞 回复 分享
发布于 2022-05-07 19:12

相关推荐

敢逐云霄志:你打招呼语怎么能这么长,hr都没看下去的欲望,简明扼要说重点,就读于某某学校某某专业,26届应届毕业生,学信网可查,先后在某某公司实习过(如有),然后做过什么项目,想找一份什么样的工作,可实习几个月以上,期待您的回复。
点赞 评论 收藏
分享
评论
7
1
分享

创作者周榜

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