题解 | #位拆分与运算#

位拆分与运算

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] d0,d1,d2,d3;

always@(posedge clk or negedge rst)
    if(!rst)
        begin
            d0  <=  4'd0;
            d1  <=  4'd0;
            d2  <=  4'd0;
            d3  <=  4'd0;
        end
    else    if(sel==2'd0)
        begin
            d0  <=  d[3:0];
            d1  <=  d[7:4];
            d2  <=  d[11:8];
            d3  <=  d[15:12];
        end

assign  out = (sel==2'd3)? (d0+d3):(sel==2'd2)? (d0+d2):(sel==2'd1)? (d0+d1):5'd0;
assign  validout = (sel==2'd0)? 1'b0:1'b1;    


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

全部评论

相关推荐

点赞 评论 收藏
分享
线性袋鼠:别听牛客上一帮伪人在那说,小厂不能去,必须去大厂,听他们放屁吧。学院本+一些一本最终的归宿就是中小厂,大厂那么好进吗
我的实习日记
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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