一、概述
对于上一篇的使用半加器实现全加器的设计过程使我们在日常设计中使用最多也是最常见的方法。在资源使用方面相对来说也很少。在没有特殊要求我们也可以直接对输入使用逻辑运算进行全加器的实现。
二、设计文件的编写
这里新建一个f_adder.v文件,如下:
module f_adder (
input X,
input Y,
input cin,
output C,
output S
);
assign S=(X^Y)^cin;
assign C=(X&Y) | ((X^Y)&cin);
endmodule
这里和上一篇利用半加器实现的方法相比最大的差别就是不对半加器模块进行一个实例化调用,直接将三个输入端进行逻辑运算后得到最终结果。
三、测试文件的编写
这里的测试文件和上一篇的一模一样,可以直接用上一篇的测试文件。
//定义时间尺度
`timescale 1ns/1ns
module f_adder_tb ;
//输入信号定义
reg X;
reg Y;
reg cin;
//输出信号定义
wire C;
wire S;
//模块例化
f_adder fadder(
/*input */ .X (X ),
/*input */ .Y (Y ),
/*input */ .cin (cin ),
/*output*/ .C (C ),
/*output*/ .S (S )
);
//激励信号产生
initial begin
repeat (10)begin
X =$random;
Y =$random;
cin=$random;
#30;
end
$stop;
end
endmodule
四、波形仿真结果
在仿真波形图中我们可以看到仿真结果和利用半加器的方法实现的结果是一致的。