题解 | #位拆分与运算#
位拆分与运算
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]d_reg;
always@(posedge clk or negedge rst)begin
if(!rst)begin
d_reg<=0;
end
else begin
if(sel==2'b0)begin
d_reg<=d;
end
else begin
d_reg<=d_reg;
end
end
end
assign out=sel[1]?(sel[0]?(d_reg[3:0]+d_reg[15:12]):(d_reg[3:0]+d_reg[11:8])):(sel[0]?(d_reg[3:0]+d_reg[7:4]):(0));
assign validout=((rst==0)|(sel==2'b0))?0:1;
//*************code***********//
endmodule
京东工作强度 418人发布