`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
);

//有符号数的定义通过关键词signed实现,如果不使用signed则默认都为无符号数。

//在设计时,任何运算的表达式中不能将有符号变量和无符号变量进行混用。必须保证全都为无符号变量或有符号变量,如果至少存在1个无符号变量,那么整个表达式的运算过程会被当作无符号数运算。


always@(posedge clk or negedge rst_n)begin
	if(!rst_n)
	    c <= 'd0;
	else begin
		case(select)
		    2'd0: c = a;
			2'd1: c = b;
			2'd2: c = a+b;
			2'd3: c = a-b;
			default: c = a;
		endcase
	end
end
endmodule