题解 | #位拆分与运算#

位拆分与运算

https://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
);
//*************code***********//
    reg [15:0] out_reg;
    reg validout;
    reg [4:0] out;

    always@(posedge clk or negedge rst)
        begin
            if(!rst)
                begin
                    out_reg <= 5'd0;
                    validout <= 1'b0;
                    out <= 5'd0;
                end
            else 
                begin
                    case(sel)
                        2'd0:
                            begin
                               out_reg <= d;
                               validout <= 1'b0;
                               out <= 5'd0;
                            end
                        2'd1:
                            begin
                               out <= out_reg[3:0] + out_reg[7:4];
                               validout <= 1'b1; 
                            end
                        2'd2:
                            begin
                               out <= out_reg[3:0] + out_reg[11:8];
                               validout <= 1'b1; 
                            end
                        2'd3:
                            begin
                               out <= out_reg[3:0] + out_reg[15:12];
                               validout <= 1'b1; 
                            end
                    endcase
                end
        end

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

全部评论

相关推荐

榕城小榕树:1200单休,我去干点啥别的不好
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
今天 18:05
点赞 评论 收藏
分享
06-08 22:25
门头沟学院 Java
从零开始的转码生活:这hr不会打开手机不分青红皂白给所有人群发这句话,过一会再给所有人再发一遍,这肯定会有重复的,不管,再过一会再发一遍
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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