数字电子技术第四版,数字电子技术基础第6版
目录1、1位加法器1、半加法器2、1位全加法器3、n位串行进位加法器4、进位前加法器
二进制数之间的算术运算,无论加减乘除,现在在数字计算机(数字系统)中都进行多次加法运算。 因此,加法器是构成算术运算器的基本单位。
一、一位加法器1、半加法器
在不考虑有来自低位的进位输入的情况下,将两个一位二进制数相加称为半加。 实现半加法的电路是半加法器。
半加法器真值表
a、b是输入,s是加上a、b的和,CO是进位输出。 根据真值表,可以写出s和CO的公式:
s=a’Bab’
CO=AB
Verilog代码如下:
//1位半加法器moduleh_adder(inputa、//被加数input B、//加数output S、//和数output CO//进位); assign CO=A B; assign S=A ^ B; 因此,endmodule的半加法器由排他或门和门构成
2、1位全加法器如果考虑到有来自低位的进位输入,就相当于用2进制数相加3个1位,称为全加。 实现全加法的电路是全加法器。
全加法器真值表
此时的s和CO的逻辑公式很复杂,但可以用两个半加法器和一个或门来实现全加法器。
首先对两个输入ain、朴素溪流进行半加法,进位输出c1、数输出s1; 然后,将s1和进位cin进行半相加,获得最终的和数sum和进位输出c2,再将c1和c2或相加,获得最终的进位输出co。
代码如下。
modulef_adder(ain,朴素溪流,cin,cout,sum ); 输入wire ain; input wire朴素溪流; 输入wire CIN; 输出wire cout; 输出无线; wireSYNTHESIZED_WIRE_0; wireSYNTHESIZED_WIRE_1; wireSYNTHESIZED_WIRE_2; h_adderB2V_inst(.a(ain ), b )朴素溪流, co ) synthesized_wire_0), s ) S(SYNTHESIZED_WIRE_2) ) h _ adder b2v _ inst2(.a (synthesized _ wire _2), b ) CIN, co (synthesized _ wire _1), s ); assign cout=synthesized _ wire _0| synthesized _ wire _ 1; endmodule 3,n位串行进位加法器n位串行进位加法器由n个全加法器级联构成,这种电路的最大缺点是工作速度慢。
Verilog代码: n位串行进位全加法器
4、像超前进位加法器这样的加法器是在空间上改变时间的设计,这里不介绍