补码加减运算和运算器

补码加减运算方法

补码的加法运算公式:
[X+Y]补 = [X]补 + [Y]补

补码的减法运算公式:
[X-Y]补 =[X+(-Y)]补 = [X]补 + [-Y]补

求补运算的法则:

image.png|600

补码加减运算的溢出表示

  • 方法一: 当最高有效位产生的进位和符号位产生的进位不同时,加减运算发生了溢出

image.png|800

  • 方法二: 利用变形补码,但是对硬件的要求比较高,所以不常用

image.png|800

可以看到分别为正溢出,负溢出,负数未溢出

计左起第一个符号位和第二个符号位分别为
溢出标志位为OF
则逻辑表达式为:

一位二进制全加器的Verilog实现

根据真值表和卡诺图化简,我们可以得到相应的计算表达式.

image.png|300

用verilog表示就是:

module full_adder (
    input A,
    input B,
	input Cin,     // 前一个的低位进位
    output Sum,    // 运算低位和
    output Cout    // 运算进位
);
 
    assign Sum = A ^ B ^ Cin;
    assign Cout = (A & B) | (Cin & (A ^ B));
	/*
	也可以用这种方式来表示
	assign {Cout, Sum} = A + B + Cin	
	*/
endmodule