题解 | #位拆分与运算#sel=0才输入有效
位拆分与运算
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;
reg validout;
reg[15:0] d_mid;
always@(posedge clk or negedge rst)begin
if(~rst)begin
out <= 0;validout <= 0;d_mid <= 0;
end
else if(sel == 0)begin
d_mid <= d;
end
end
always@(posedge clk or negedge rst)begin
case(sel)
0://
begin
out <= 0;
validout <= 0;
end
1://
begin
out <= d_mid[3:0] + d_mid[7:4];
validout <= 1;
end
2://
begin
out <= d_mid[3:0] + d_mid[11:8];
validout <= 1;
end
3://
begin
out <= d_mid[3:0] + d_mid[15:12];
validout <= 1;
end
endcase
end
//*************code***********//
endmodule
