题解 | #位拆分与运算#

位拆分与运算

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

本题目的知识点很明确,位操作和未拆分,拼接语法没用到哈,还是一个多路选择器,用case就能完成,注意的是输出的信号的类型reg

`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 out;
reg validout;
//*************code***********//
reg [15:0] r_d;
always @ (posedge clk or negedge rst)
    if (!rst)begin

        out <= 5'd0;
        validout  <= 1'b0;
    end
    else  begin
        case(sel)
        2'b00: begin    
            validout <= 1'b0;
            r_d <= d;
            out <= 5'd0;
        end
        2'b01: begin    
            validout <= 1'b1;
            out <=r_d[3:0]+ r_d[7:4];
        end
        2'b10: begin    
            validout <= 1'b1;
            out <=r_d[3:0]+ r_d[11:8];
        end
        2'b11: begin    
            validout <= 1'b1;
            out <=r_d[3:0]+ r_d[15:2];
        end
        endcase
    end


//*************code***********//
endmodule

#刷题##23届找工作求助阵地#
全部评论

相关推荐

点赞 评论 收藏
分享
06-12 10:50
门头沟学院 Java
你的不定积分没加C:我怎么在学院群看到了同样的话
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

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