二进制全加器设计
一位全加器使用乘积项之和的形式可以表示为:
sum=a·b·c_in+a’·b·c_in’+a’·b’·c_in+a·b’·c_in’
c_out=a·b+b·c_in+a·c_in
其中a,b和c_in为输入,sum和c_out为输出,只使用与门,或门,非门实现一个一位全加器,写出Verilog描述,限制是每个门最多只能有四个输入端。编写激励模块对其功能进行检查,并对全部的输入组合输入组合进行测试。
module fulladd(a,b,c_in,c_out,sum);
output sum,c_out;
input c_in,a,b;
wire t1,t2,t3;
wire s1,s2,s3,s4;
not (a1,a);
not (b1,b);
not (c_in1,c_in);
and (s1,a,b,c_in);
and (s2,a1,b,c_in);
and (s3,a,b1,c_in);
and (s4,a,b,c_in1);
and (t1,a,b);
and (t2,a,c_in);
and (t3,b,c_in);
or (sum,s1,s2,s3,s4);
or (c_out,t1,t2,t3);
endmodule
module stimulus;
regA,B;
regC_IN;
wireSUM;
wireC_OUT;
fulladd full(A,B,C_IN,C_OUT,SUM);
initial
begin
$monitor($time,"A=%b,B=%b,C_OUT=%b,SUM=%b\n",A,B,C_OUT,SUM);
end
initial
begin
C_IN=1;
#5A=1;B=0;
#5 A=0;B=1;
#5 A=1;B=1;
#5 A=0;B=0;
end
endmodule