题解 | #位拆分与运算#

位拆分与运算

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 [3:0] mid0;
reg [3:0] mid1;
reg [3:0] mid2;
reg [3:0] mid3;
reg [4:0] out_reg;

assign validout = (sel == 2'b00)?1'b0:1'b1;
assign out = out_reg;

always @(posedge clk or negedge rst)begin
    if(!rst)begin
        mid0 <= 4'b0000;
        mid1 <= 4'b0000;
        mid2 <= 4'b0000;
        mid3 <= 4'b0000;
    end
    else begin
        if(sel == 2'b00)begin
            mid0 <= d;
            mid1 <= d>>4;
            mid2 <= d>>8;
            mid3 <= d>>12;
        end
        else begin
            mid0 <= mid0;
            mid1 <= mid1;
            mid2 <= mid2;
            mid3 <= mid3;
        end
    end
end

always @(posedge clk or negedge rst)begin
    if(!rst)begin
        out_reg <= 5'b00000;
    end
    else begin
        case(sel)
        2'b00:begin
            out_reg <= 5'b00000;
        end
        2'b01:begin
            out_reg <= mid0 + mid1;
        end
        2'b10:begin
            out_reg <= mid0 + mid2;
        end
        2'b11:begin
            out_reg <= mid0 + mid3;
        end
        endcase
    end
end

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

全部评论

相关推荐

点赞 评论 收藏
分享
都送什么礼物吗?如果送的话,价格大概都是多少?辛苦大家给个参考啦!
牛客73617529...:要送就送那种没必要买又很贵的,假设一个打瓦的显示屏 鼠标 键盘都很贵,你送这些突出不了价值,直接送一个很贵的鼠标垫包记住你的。
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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