题解 | #位拆分与运算#

位拆分与运算

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

这里有个坑:sel为0的时候,需要将输出out置0。
`timescale 1ns/1ns

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

output [4:0]out,
output validout
);
//*************code***********//

    reg [4:0] out;
    reg validout;
    reg [15:0] din;
    always@(posedge clk or negedge rst) begin
        if(!rst) begin
            out <= 0;
            validout <= 0;
        end else begin
            case(sel)
                2'b00: begin validout <= 0; din <= d; out <= 0; end
                2'b01: begin validout <= 1; out <= din[3:0] + din[7:4]; end
                2'b10: begin validout <= 1; out <= din[3:0] + din[11:8]; end
                2'b11: begin validout <= 1; out <= din[3:0] + din[15:12]; end
                default: begin validout <= 0; end
            endcase
        end
    end
//*************code***********//
endmodule


全部评论

相关推荐

评论
1
收藏
分享

创作者周榜

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