题解 | #位拆分与运算#

位拆分与运算

http://www.nowcoder.com/practice/1649582a755a4fabb9763d07e62a9752

`timescale 1ns/1ns

module data_cal(
input clk,
input rst,
input [15:0]d,
input [1:0]sel,

output [4:0]out,
output validout
);

    reg [15:0] d_buf;
    assign out = sel == 'd0 ? 'd0 :
                 sel == 'd1 ? d_buf[3:0] + d_buf[7:4]: 
                 sel == 'd2 ? d_buf[3:0] + d_buf[11:8]:
                 sel == 'd3 ? d_buf[3:0] + d_buf[15:12]:
                 'd0;
    
    assign validout = sel == 'd0 ? 1'b0 : 1'b1;
    
    always @(posedge clk or negedge rst) begin
        if (!rst) begin
            d_buf <= 0; 
        end if (sel == 'd0) begin
           d_buf <= d; 
        end
    end
    
endmodule
全部评论

相关推荐

11-13 20:16
已编辑
厦门理工学院 软件测试
专业嗎喽:硕佬,把学校背景放后面几段,学校背景双非还学院,让人看了就不想往下看。 把实习经历和个人奖项放前面,用数字化简述自己实习的成果和掌握的技能,比如负责项目一次通过率90%,曾4次发现项目潜在问题风险为公司减少损失等等
点赞 评论 收藏
分享
评论
4
收藏
分享

创作者周榜

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