题解 | #多功能数据处理器#

多功能数据处理器

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类型的数据保存格式为补码而非传统二进制,所以对有符号数的加减直接进行就可以了

全部评论

相关推荐

点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务