题解 | #多功能数据处理器#
多功能数据处理器
https://www.nowcoder.com/practice/e009ab1a7a4c46fb9042c09c77ee27b8
`timescale 1ns/1ns
module data_select(
input clk,
input rst_n,
input signed[7:0]a,
input signed[7:0]b,
input [1:0]select,
output reg signed [8:0]c
);
always@(posedge clk or negedge rst_n)begin
if(!rst_n)begin
c <= 9'b0;
// c_bu <= 9'b0;
end
else begin
case(select)
2'b00:c <= a;
2'b01:c <= b;
2'b10:begin
// // c_bu <= a_bu + b_bu;
// case(c_bu[8])
// 1'b0:c <= c_bu;
// 1'b1:c <= {c_bu[8],~{c_bu[7:0] - 1'b1}};
// default: c <= 9'b0;
// endcase
c <= a + b;
end
2'b11:begin
// c_bu <= cfu_bu;
// case(cfu_bu[8])
// 1'b0:c <= cfu_bu;
// 1'b1:c <= {cfu_bu[8],~{cfu_bu[7:0] - 1'b1}};
// default: c <= 9'b0;
// endcase
// end
// default:c <= 9'b0;
// endcase
c <= a - b;
end
endcase
end
end
endmodule
电路中signed类型的数据保存格式为补码而非传统二进制,所以对有符号数的加减直接进行就可以了
查看11道真题和解析