题解 | #位拆分与运算#
位拆分与运算
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 [4:0] out_r;
reg validout_r;
reg [15:0] data_temp_r;
always@(*)(1444584)begin
case(sel)
'd0:begin
out_r = 'b0;
validout_r = 1'b0;
data_temp_r = d;
end
'd1:begin
out_r = data_temp_r[3:0]+ data_temp_r[7:4];
validout_r = 1'b1;
end
'd2:begin
out_r = data_temp_r[3:0]+ data_temp_r[11:8];
validout_r = 1'b1;
end
'd3:begin
out_r = data_temp_r[3:0]+ data_temp_r[15:12];
validout_r = 1'b1;
end
default:begin
out_r = 'b0;
validout_r = 1'b0;
end
endcase
end
assign out = out_r;
assign validout = validout_r;
//*************code***********//
endmodule